diff --git a/bun.lockb b/bun.lockb index 845289c4..d7c880e7 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/config/config.example.toml b/config/config.example.toml index 628bd9cc..a8819f85 100644 --- a/config/config.example.toml +++ b/config/config.example.toml @@ -1,3 +1,5 @@ +#:schema config.schema.json + [database] # Main PostgreSQL database connection host = "localhost" @@ -412,7 +414,7 @@ duration_coeff = 1.0 # Amount to multiply every route's max requests per [duration] by max_coeff = 1.0 -[custom_ratelimits] +[ratelimits.custom] # Add in any API route in this style here # Applies before the global ratelimit changes # "/api/v1/accounts/:id/block" = { duration = 30, max = 60 } diff --git a/config/config.schema.json b/config/config.schema.json new file mode 100644 index 00000000..86e65ba0 --- /dev/null +++ b/config/config.schema.json @@ -0,0 +1,4012 @@ +{ + "type": "object", + "properties": { + "database": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1, + "default": "localhost" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "default": 5432 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "default": "" + }, + "database": { + "type": "string", + "minLength": 1, + "default": "lysand" + } + }, + "required": ["username"], + "additionalProperties": false + }, + "redis": { + "type": "object", + "properties": { + "queue": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1, + "default": "localhost" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "default": 6379 + }, + "password": { + "type": "string", + "default": "" + }, + "database": { + "type": "integer", + "default": 0 + }, + "enabled": { + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "default": { + "host": "localhost", + "port": 6379, + "password": "", + "database": 0, + "enabled": false + } + }, + "cache": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1, + "default": "localhost" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "default": 6379 + }, + "password": { + "type": "string", + "default": "" + }, + "database": { + "type": "integer", + "default": 1 + }, + "enabled": { + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "default": { + "host": "localhost", + "port": 6379, + "password": "", + "database": 1, + "enabled": false + } + } + }, + "additionalProperties": false + }, + "sonic": { + "type": "object", + "properties": { + "host": { + "type": "string", + "minLength": 1, + "default": "localhost" + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "default": 7700 + }, + "password": { + "type": "string" + }, + "enabled": { + "type": "boolean", + "default": false + } + }, + "required": ["password"], + "additionalProperties": false + }, + "signups": { + "type": "object", + "properties": { + "registration": { + "type": "boolean", + "default": true + }, + "rules": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false + }, + "oidc": { + "type": "object", + "properties": { + "forced": { + "type": "boolean", + "default": false + }, + "allow_registration": { + "type": "boolean", + "default": true + }, + "providers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1 + }, + "id": { + "type": "string", + "minLength": 1 + }, + "url": { + "type": "string", + "minLength": 1 + }, + "client_id": { + "type": "string", + "minLength": 1 + }, + "client_secret": { + "type": "string", + "minLength": 1 + }, + "icon": { + "type": "string", + "minLength": 1 + } + }, + "required": [ + "name", + "id", + "url", + "client_id", + "client_secret" + ], + "additionalProperties": false + }, + "default": [] + }, + "jwt_key": { + "anyOf": [ + { + "type": "string", + "minLength": 3, + "pattern": "\\;", + "default": "" + }, + { + "type": "string", + "const": "" + } + ] + } + }, + "required": ["jwt_key"], + "additionalProperties": false + }, + "http": { + "type": "object", + "properties": { + "base_url": { + "type": "string", + "minLength": 1, + "default": "http://lysand.social" + }, + "bind": { + "type": "string", + "minLength": 1, + "default": "0.0.0.0" + }, + "bind_port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "default": 8080 + }, + "banned_ips": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "banned_user_agents": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "proxy": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "address": { + "anyOf": [ + { + "type": "string", + "minLength": 1 + }, + { + "type": "string", + "const": "" + } + ] + } + }, + "required": ["address"], + "additionalProperties": false, + "default": { + "enabled": false, + "address": "" + } + }, + "tls": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "key": { + "type": "string" + }, + "cert": { + "type": "string" + }, + "passphrase": { + "type": "string" + }, + "ca": { + "type": "string" + } + }, + "required": ["key", "cert"], + "additionalProperties": false, + "default": { + "enabled": false, + "key": "", + "cert": "", + "passphrase": "", + "ca": "" + } + }, + "bait": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "send_file": { + "type": "string" + }, + "bait_ips": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "bait_user_agents": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false, + "default": { + "enabled": false, + "send_file": "", + "bait_ips": [], + "bait_user_agents": [] + } + } + }, + "additionalProperties": false + }, + "frontend": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true + }, + "url": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0", + "default": "http://localhost:3000" + }, + "glitch": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "assets": { + "type": "string", + "minLength": 1, + "default": "glitch" + }, + "server": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + } + }, + "additionalProperties": false, + "default": { + "enabled": false, + "assets": "glitch", + "server": [] + } + }, + "routes": { + "type": "object", + "properties": { + "home": { + "type": "string", + "minLength": 1, + "default": "/" + }, + "login": { + "$ref": "#/properties/frontend/properties/routes/properties/home", + "default": "/oauth/authorize" + }, + "consent": { + "$ref": "#/properties/frontend/properties/routes/properties/home", + "default": "/oauth/consent" + }, + "register": { + "$ref": "#/properties/frontend/properties/routes/properties/home", + "default": "/register" + }, + "password_reset": { + "$ref": "#/properties/frontend/properties/routes/properties/home", + "default": "/oauth/reset" + } + }, + "additionalProperties": false, + "default": { + "home": "/", + "login": "/oauth/authorize", + "consent": "/oauth/consent", + "register": "/register", + "password_reset": "/oauth/reset" + } + }, + "settings": { + "type": "object", + "additionalProperties": {}, + "default": {} + } + }, + "additionalProperties": false, + "default": { + "enabled": true, + "url": "http://localhost:3000", + "glitch": { + "enabled": false, + "assets": "glitch", + "server": [] + }, + "settings": {} + } + }, + "smtp": { + "type": "object", + "properties": { + "server": { + "type": "string", + "minLength": 1 + }, + "port": { + "type": "integer", + "minimum": 1, + "maximum": 65535, + "default": 465 + }, + "username": { + "type": "string", + "minLength": 1 + }, + "password": { + "type": "string", + "minLength": 1 + }, + "tls": { + "type": "boolean", + "default": true + }, + "enabled": { + "type": "boolean", + "default": false + } + }, + "required": ["server", "username"], + "additionalProperties": false, + "default": { + "server": "", + "port": 465, + "username": "", + "password": "", + "tls": true, + "enabled": false + } + }, + "media": { + "type": "object", + "properties": { + "backend": { + "type": "string", + "enum": ["local", "s3"], + "default": "local" + }, + "deduplicate_media": { + "type": "boolean", + "default": true + }, + "local_uploads_folder": { + "type": "string", + "minLength": 1, + "default": "uploads" + }, + "conversion": { + "type": "object", + "properties": { + "convert_images": { + "type": "boolean", + "default": false + }, + "convert_to": { + "type": "string", + "default": "image/webp" + }, + "convert_vector": { + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "default": { + "convert_images": false, + "convert_to": "image/webp", + "convert_vector": false + } + } + }, + "additionalProperties": false, + "default": { + "backend": "local", + "deduplicate_media": true, + "local_uploads_folder": "uploads", + "conversion": { + "convert_images": false, + "convert_to": "image/webp" + } + } + }, + "s3": { + "type": "object", + "properties": { + "endpoint": { + "type": "string" + }, + "access_key": { + "type": "string" + }, + "secret_access_key": { + "type": "string" + }, + "region": { + "type": "string" + }, + "bucket_name": { + "type": "string", + "default": "lysand" + }, + "public_url": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + } + }, + "required": [ + "endpoint", + "access_key", + "secret_access_key", + "public_url" + ], + "additionalProperties": false, + "default": { + "endpoint": "", + "access_key": "", + "secret_access_key": "", + "bucket_name": "lysand", + "public_url": "https://cdn.example.com" + } + }, + "validation": { + "type": "object", + "properties": { + "max_displayname_size": { + "type": "integer", + "default": 50 + }, + "max_bio_size": { + "type": "integer", + "default": 160 + }, + "max_note_size": { + "type": "integer", + "default": 5000 + }, + "max_avatar_size": { + "type": "integer", + "default": 5000000 + }, + "max_header_size": { + "type": "integer", + "default": 5000000 + }, + "max_media_size": { + "type": "integer", + "default": 40000000 + }, + "max_media_attachments": { + "type": "integer", + "default": 10 + }, + "max_media_description_size": { + "type": "integer", + "default": 1000 + }, + "max_poll_options": { + "type": "integer", + "default": 20 + }, + "max_poll_option_size": { + "type": "integer", + "default": 500 + }, + "min_poll_duration": { + "type": "integer", + "default": 60 + }, + "max_poll_duration": { + "type": "integer", + "default": 1893456000 + }, + "max_username_size": { + "type": "integer", + "default": 30 + }, + "max_field_count": { + "type": "integer", + "default": 10 + }, + "max_field_name_size": { + "type": "integer", + "default": 1000 + }, + "max_field_value_size": { + "type": "integer", + "default": 1000 + }, + "username_blacklist": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + ".well-known", + "~", + "about", + "activities", + "api", + "auth", + "dev", + "inbox", + "internal", + "main", + "media", + "nodeinfo", + "notice", + "oauth", + "objects", + "proxy", + "push", + "registration", + "relay", + "settings", + "status", + "tag", + "users", + "web", + "search", + "mfa" + ] + }, + "blacklist_tempmail": { + "type": "boolean", + "default": false + }, + "email_blacklist": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "url_scheme_whitelist": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "http", + "https", + "ftp", + "dat", + "dweb", + "gopher", + "hyper", + "ipfs", + "ipns", + "irc", + "xmpp", + "ircs", + "magnet", + "mailto", + "mumble", + "ssb", + "gemini" + ] + }, + "enforce_mime_types": { + "type": "boolean", + "default": false + }, + "allowed_mime_types": { + "type": "array", + "items": { + "type": "string" + }, + "default": [ + "application/vnd.lotus-1-2-3", + "application/andrew-inset", + "application/applixware", + "application/atom+xml", + "application/atomcat+xml", + "application/atomdeleted+xml", + "application/atomsvc+xml", + "application/atsc-dwd+xml", + "application/atsc-held+xml", + "application/atsc-rsat+xml", + "application/bdoc", + "application/calendar+xml", + "application/ccxml+xml", + "application/cdfx+xml", + "application/cdmi-capability", + "application/cdmi-container", + "application/cdmi-domain", + "application/cdmi-object", + "application/cdmi-queue", + "application/cpl+xml", + "application/cu-seeme", + "application/dash+xml", + "application/dash-patch+xml", + "application/davmount+xml", + "application/docbook+xml", + "application/dssc+der", + "application/dssc+xml", + "application/ecmascript", + "application/ecmascript", + "application/emma+xml", + "application/emotionml+xml", + "application/epub+zip", + "application/exi", + "application/express", + "application/fdt+xml", + "application/font-tdpfr", + "application/geo+json", + "application/gml+xml", + "application/gpx+xml", + "application/gxf", + "application/gzip", + "application/hjson", + "application/hyperstudio", + "application/inkml+xml", + "application/inkml+xml", + "application/ipfix", + "application/its+xml", + "application/java-archive", + "application/java-archive", + "application/java-archive", + "application/java-serialized-object", + "application/java-vm", + "application/javascript", + "application/javascript", + "application/json", + "application/json", + "application/json5", + "application/jsonml+json", + "application/ld+json", + "application/lgr+xml", + "application/lost+xml", + "application/mac-binhex40", + "application/mac-compactpro", + "application/mads+xml", + "application/manifest+json", + "application/marc", + "application/marcxml+xml", + "application/mathematica", + "application/mathematica", + "application/mathematica", + "application/mathml+xml", + "application/mbox", + "application/media-policy-dataset+xml", + "application/mediaservercontrol+xml", + "application/metalink+xml", + "application/metalink4+xml", + "application/mets+xml", + "application/mmt-aei+xml", + "application/mmt-usd+xml", + "application/mods+xml", + "application/mp21", + "application/mp21", + "application/mp4", + "application/mp4", + "application/msword", + "application/msword", + "application/mxf", + "application/n-quads", + "application/n-triples", + "application/node", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/x-msdos-program", + "application/x-msdownload", + "application/x-debian-package", + "application/x-apple-diskimage", + "application/x-iso9660-image", + "application/octet-stream", + "application/x-msdownload", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/oda", + "application/oebps-package+xml", + "application/ogg", + "application/omdoc+xml", + "application/onenote", + "application/onenote", + "application/onenote", + "application/onenote", + "application/oxps", + "application/p2p-overlay+xml", + "application/patch-ops-error+xml", + "application/pdf", + "application/pgp-encrypted", + "application/pgp-keys", + "application/pgp-signature", + "application/pics-rules", + "application/pkcs10", + "application/pkcs7-mime", + "application/pkcs7-mime", + "application/pkcs7-signature", + "application/pkcs8", + "application/pkix-attr-cert", + "application/pkix-cert", + "application/pkix-crl", + "application/pkix-pkipath", + "application/pkixcmp", + "application/pls+xml", + "application/postscript", + "application/postscript", + "application/postscript", + "application/provenance+xml", + "application/prs.cww", + "application/pskc+xml", + "application/raml+yaml", + "application/rdf+xml", + "application/rdf+xml", + "application/reginfo+xml", + "application/relax-ng-compact-syntax", + "application/resource-lists+xml", + "application/resource-lists-diff+xml", + "application/rls-services+xml", + "application/route-apd+xml", + "application/route-s-tsid+xml", + "application/route-usd+xml", + "application/rpki-ghostbusters", + "application/rpki-manifest", + "application/rpki-roa", + "application/rsd+xml", + "application/rss+xml", + "application/rtf", + "application/sbml+xml", + "application/scvp-cv-request", + "application/scvp-cv-response", + "application/scvp-vp-request", + "application/scvp-vp-response", + "application/sdp", + "application/senml+xml", + "application/sensml+xml", + "application/set-payment-initiation", + "application/set-registration-initiation", + "application/shf+xml", + "application/sieve", + "application/sieve", + "application/smil+xml", + "application/smil+xml", + "application/sparql-query", + "application/sparql-results+xml", + "application/srgs", + "application/srgs+xml", + "application/sru+xml", + "application/ssdl+xml", + "application/ssml+xml", + "application/swid+xml", + "application/tei+xml", + "application/tei+xml", + "application/thraud+xml", + "application/timestamped-data", + "application/toml", + "application/trig", + "application/ttml+xml", + "application/ubjson", + "application/urc-ressheet+xml", + "application/urc-targetdesc+xml", + "application/vnd.1000minds.decision-model+xml", + "application/vnd.3gpp.pic-bw-large", + "application/vnd.3gpp.pic-bw-small", + "application/vnd.3gpp.pic-bw-var", + "application/vnd.3gpp2.tcap", + "application/vnd.3m.post-it-notes", + "application/vnd.accpac.simply.aso", + "application/vnd.accpac.simply.imp", + "application/vnd.acucobol", + "application/vnd.acucorp", + "application/vnd.acucorp", + "application/vnd.adobe.air-application-installer-package+zip", + "application/vnd.adobe.formscentral.fcdt", + "application/vnd.adobe.fxp", + "application/vnd.adobe.fxp", + "application/vnd.adobe.xdp+xml", + "application/vnd.adobe.xfdf", + "application/vnd.age", + "application/vnd.ahead.space", + "application/vnd.airzip.filesecure.azf", + "application/vnd.airzip.filesecure.azs", + "application/vnd.amazon.ebook", + "application/vnd.americandynamics.acc", + "application/vnd.amiga.ami", + "application/vnd.android.package-archive", + "application/vnd.anser-web-certificate-issue-initiation", + "application/vnd.anser-web-funds-transfer-initiation", + "application/vnd.antix.game-component", + "application/vnd.apple.installer+xml", + "application/vnd.apple.keynote", + "application/vnd.apple.mpegurl", + "application/vnd.apple.numbers", + "application/vnd.apple.pages", + "application/vnd.apple.pkpass", + "application/vnd.aristanetworks.swi", + "application/vnd.astraea-software.iota", + "application/vnd.audiograph", + "application/vnd.balsamiq.bmml+xml", + "application/vnd.blueice.multipass", + "application/vnd.bmi", + "application/vnd.businessobjects", + "application/vnd.chemdraw+xml", + "application/vnd.chipnuts.karaoke-mmd", + "application/vnd.cinderella", + "application/vnd.citationstyles.style+xml", + "application/vnd.claymore", + "application/vnd.cloanto.rp9", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.cluetrust.cartomobile-config", + "application/vnd.cluetrust.cartomobile-config-pkg", + "application/vnd.commonspace", + "application/vnd.contact.cmsg", + "application/vnd.cosmocaller", + "application/vnd.crick.clicker", + "application/vnd.crick.clicker.keyboard", + "application/vnd.crick.clicker.palette", + "application/vnd.crick.clicker.template", + "application/vnd.crick.clicker.wordbank", + "application/vnd.criticaltools.wbs+xml", + "application/vnd.ctc-posml", + "application/vnd.cups-ppd", + "application/vnd.curl.car", + "application/vnd.curl.pcurl", + "application/vnd.dart", + "application/vnd.data-vision.rdz", + "application/vnd.dbf", + "application/vnd.dece.data", + "application/vnd.dece.data", + "application/vnd.dece.data", + "application/vnd.dece.data", + "application/vnd.dece.ttml+xml", + "application/vnd.dece.ttml+xml", + "application/vnd.dece.unspecified", + "application/vnd.dece.unspecified", + "application/vnd.dece.zip", + "application/vnd.dece.zip", + "application/vnd.denovo.fcselayout-link", + "application/vnd.dna", + "application/vnd.dolby.mlp", + "application/vnd.dpgraph", + "application/vnd.dreamfactory", + "application/vnd.ds-keypoint", + "application/vnd.dvb.ait", + "application/vnd.dvb.service", + "application/vnd.dynageo", + "application/vnd.ecowin.chart", + "application/vnd.enliven", + "application/vnd.epson.esf", + "application/vnd.epson.msf", + "application/vnd.epson.quickanime", + "application/vnd.epson.salt", + "application/vnd.epson.ssf", + "application/vnd.eszigno3+xml", + "application/vnd.eszigno3+xml", + "application/vnd.ezpix-album", + "application/vnd.ezpix-package", + "application/vnd.fdf", + "application/vnd.fdsn.mseed", + "application/vnd.fdsn.seed", + "application/vnd.fdsn.seed", + "application/vnd.flographit", + "application/vnd.fluxtime.clip", + "application/vnd.framemaker", + "application/vnd.framemaker", + "application/vnd.framemaker", + "application/vnd.framemaker", + "application/vnd.frogans.fnc", + "application/vnd.frogans.ltf", + "application/vnd.fsc.weblaunch", + "application/vnd.fujitsu.oasys", + "application/vnd.fujitsu.oasys2", + "application/vnd.fujitsu.oasys3", + "application/vnd.fujitsu.oasysgp", + "application/vnd.fujitsu.oasysprs", + "application/vnd.fujixerox.ddd", + "application/vnd.fujixerox.docuworks", + "application/vnd.fujixerox.docuworks.binder", + "application/vnd.fuzzysheet", + "application/vnd.genomatix.tuxedo", + "application/vnd.geogebra.file", + "application/vnd.geogebra.tool", + "application/vnd.geometry-explorer", + "application/vnd.geometry-explorer", + "application/vnd.geonext", + "application/vnd.geoplan", + "application/vnd.geospace", + "application/vnd.gmx", + "application/vnd.google-apps.document", + "application/vnd.google-apps.presentation", + "application/vnd.google-apps.spreadsheet", + "application/vnd.google-earth.kml+xml", + "application/vnd.google-earth.kmz", + "application/vnd.grafeq", + "application/vnd.grafeq", + "application/vnd.groove-account", + "application/vnd.groove-help", + "application/vnd.groove-identity-message", + "application/vnd.groove-injector", + "application/vnd.groove-tool-message", + "application/vnd.groove-tool-template", + "application/vnd.groove-vcard", + "application/vnd.hal+xml", + "application/vnd.handheld-entertainment+xml", + "application/vnd.hbci", + "application/vnd.hhe.lesson-player", + "application/vnd.hp-hpgl", + "application/vnd.hp-hpid", + "application/vnd.hp-hps", + "application/vnd.hp-jlyt", + "application/vnd.hp-pcl", + "application/vnd.hp-pclxl", + "application/vnd.hydrostatix.sof-data", + "application/vnd.ibm.minipay", + "application/vnd.ibm.modcap", + "application/vnd.ibm.modcap", + "application/vnd.ibm.modcap", + "application/vnd.ibm.rights-management", + "application/vnd.ibm.secure-container", + "application/vnd.iccprofile", + "application/vnd.iccprofile", + "application/vnd.igloader", + "application/vnd.immervision-ivp", + "application/vnd.immervision-ivu", + "application/vnd.insors.igm", + "application/vnd.intercon.formnet", + "application/vnd.intercon.formnet", + "application/vnd.intergeo", + "application/vnd.intu.qbo", + "application/vnd.intu.qfx", + "application/vnd.ipunplugged.rcprofile", + "application/vnd.irepository.package+xml", + "application/vnd.is-xpr", + "application/vnd.isac.fcs", + "application/vnd.jam", + "application/vnd.jcp.javame.midlet-rms", + "application/vnd.jisp", + "application/vnd.joost.joda-archive", + "application/vnd.kahootz", + "application/vnd.kahootz", + "application/vnd.kde.karbon", + "application/vnd.kde.kchart", + "application/vnd.kde.kformula", + "application/vnd.kde.kivio", + "application/vnd.kde.kontour", + "application/vnd.kde.kpresenter", + "application/vnd.kde.kpresenter", + "application/vnd.kde.kspread", + "application/vnd.kde.kword", + "application/vnd.kde.kword", + "application/vnd.kenameaapp", + "application/vnd.kidspiration", + "application/vnd.kinar", + "application/vnd.kinar", + "application/vnd.koan", + "application/vnd.koan", + "application/vnd.koan", + "application/vnd.koan", + "application/vnd.kodak-descriptor", + "application/vnd.las.las+xml", + "application/vnd.llamagraphics.life-balance.desktop", + "application/vnd.llamagraphics.life-balance.exchange+xml", + "application/vnd.lotus-approach", + "application/vnd.lotus-freelance", + "application/vnd.lotus-notes", + "application/vnd.lotus-organizer", + "application/vnd.lotus-screencam", + "application/vnd.lotus-wordpro", + "application/vnd.macports.portpkg", + "application/vnd.mapbox-vector-tile", + "application/vnd.mcd", + "application/vnd.medcalcdata", + "application/vnd.mediastation.cdkey", + "application/vnd.mfer", + "application/vnd.mfmp", + "application/vnd.micrografx.flo", + "application/vnd.micrografx.igx", + "application/vnd.mif", + "application/vnd.mobius.daf", + "application/vnd.mobius.dis", + "application/vnd.mobius.mbk", + "application/vnd.mobius.mqy", + "application/vnd.mobius.msl", + "application/vnd.mobius.plc", + "application/vnd.mobius.txf", + "application/vnd.mophun.application", + "application/vnd.mophun.certificate", + "application/vnd.mozilla.xul+xml", + "application/vnd.ms-artgalry", + "application/vnd.ms-cab-compressed", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel.addin.macroenabled.12", + "application/vnd.ms-excel.sheet.binary.macroenabled.12", + "application/vnd.ms-excel.sheet.macroenabled.12", + "application/vnd.ms-excel.template.macroenabled.12", + "application/vnd.ms-fontobject", + "application/vnd.ms-htmlhelp", + "application/vnd.ms-ims", + "application/vnd.ms-lrm", + "application/vnd.ms-officetheme", + "application/vnd.ms-outlook", + "application/vnd.ms-pki.seccat", + "model/stl", + "application/vnd.ms-powerpoint", + "application/vnd.ms-powerpoint", + "application/vnd.ms-powerpoint", + "application/vnd.ms-powerpoint.addin.macroenabled.12", + "application/vnd.ms-powerpoint.presentation.macroenabled.12", + "application/vnd.ms-powerpoint.slide.macroenabled.12", + "application/vnd.ms-powerpoint.slideshow.macroenabled.12", + "application/vnd.ms-powerpoint.template.macroenabled.12", + "application/vnd.ms-project", + "application/vnd.ms-word.document.macroenabled.12", + "application/vnd.ms-word.template.macroenabled.12", + "application/vnd.ms-works", + "application/vnd.ms-works", + "application/vnd.ms-works", + "application/vnd.ms-works", + "application/vnd.ms-wpl", + "application/vnd.ms-xpsdocument", + "application/vnd.mseq", + "application/vnd.musician", + "application/vnd.muvee.style", + "application/vnd.mynfc", + "application/vnd.neurolanguage.nlu", + "application/vnd.nitf", + "application/vnd.nitf", + "application/vnd.noblenet-directory", + "application/vnd.noblenet-sealer", + "application/vnd.noblenet-web", + "application/vnd.nokia.n-gage.data", + "application/vnd.nokia.n-gage.symbian.install", + "application/vnd.nokia.radio-preset", + "application/vnd.nokia.radio-presets", + "application/vnd.novadigm.edm", + "application/vnd.novadigm.edx", + "application/vnd.novadigm.ext", + "application/vnd.oasis.opendocument.chart", + "application/vnd.oasis.opendocument.chart-template", + "application/vnd.oasis.opendocument.database", + "application/vnd.oasis.opendocument.formula", + "application/vnd.oasis.opendocument.formula-template", + "application/vnd.oasis.opendocument.graphics", + "application/vnd.oasis.opendocument.graphics-template", + "application/vnd.oasis.opendocument.image", + "application/vnd.oasis.opendocument.image-template", + "application/vnd.oasis.opendocument.presentation", + "application/vnd.oasis.opendocument.presentation-template", + "application/vnd.oasis.opendocument.spreadsheet", + "application/vnd.oasis.opendocument.spreadsheet-template", + "application/vnd.oasis.opendocument.text", + "application/vnd.oasis.opendocument.text-master", + "application/vnd.oasis.opendocument.text-template", + "application/vnd.oasis.opendocument.text-web", + "application/vnd.olpc-sugar", + "application/vnd.oma.dd2+xml", + "application/vnd.openblox.game+xml", + "application/vnd.openofficeorg.extension", + "application/vnd.openstreetmap.data+xml", + "application/vnd.openxmlformats-officedocument.presentationml.presentation", + "application/vnd.openxmlformats-officedocument.presentationml.slide", + "application/vnd.openxmlformats-officedocument.presentationml.slideshow", + "application/vnd.openxmlformats-officedocument.presentationml.template", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "application/vnd.openxmlformats-officedocument.wordprocessingml.template", + "application/vnd.osgeo.mapguide.package", + "application/vnd.osgi.dp", + "application/vnd.osgi.subsystem", + "application/vnd.palm", + "application/vnd.palm", + "application/vnd.palm", + "application/vnd.pawaafile", + "application/vnd.pg.format", + "application/vnd.pg.osasli", + "application/vnd.picsel", + "application/vnd.pmi.widget", + "application/vnd.pocketlearn", + "application/vnd.powerbuilder6", + "application/vnd.previewsystems.box", + "application/vnd.proteus.magazine", + "application/vnd.publishare-delta-tree", + "application/vnd.pvi.ptid1", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.rar", + "application/vnd.realvnc.bed", + "application/vnd.recordare.musicxml", + "application/vnd.recordare.musicxml+xml", + "application/vnd.rig.cryptonote", + "application/vnd.rim.cod", + "application/vnd.rn-realmedia", + "application/vnd.rn-realmedia-vbr", + "application/vnd.route66.link66+xml", + "application/vnd.sailingtracker.track", + "application/vnd.seemail", + "application/vnd.sema", + "application/vnd.semd", + "application/vnd.semf", + "application/vnd.shana.informed.formdata", + "application/vnd.shana.informed.formtemplate", + "application/vnd.shana.informed.interchange", + "application/vnd.shana.informed.package", + "application/vnd.simtech-mindmapper", + "application/vnd.simtech-mindmapper", + "application/vnd.smaf", + "application/vnd.smart.teacher", + "application/vnd.software602.filler.form+xml", + "application/vnd.solent.sdkm+xml", + "application/vnd.solent.sdkm+xml", + "application/vnd.spotfire.dxp", + "application/vnd.spotfire.sfs", + "application/vnd.stardivision.calc", + "application/vnd.stardivision.draw", + "application/vnd.stardivision.impress", + "application/vnd.stardivision.math", + "application/vnd.stardivision.writer", + "application/vnd.stardivision.writer", + "application/vnd.stardivision.writer-global", + "application/vnd.stepmania.package", + "application/vnd.stepmania.stepchart", + "application/vnd.sun.wadl+xml", + "application/vnd.sun.xml.calc", + "application/vnd.sun.xml.calc.template", + "application/vnd.sun.xml.draw", + "application/vnd.sun.xml.draw.template", + "application/vnd.sun.xml.impress", + "application/vnd.sun.xml.impress.template", + "application/vnd.sun.xml.math", + "application/vnd.sun.xml.writer", + "application/vnd.sun.xml.writer.global", + "application/vnd.sun.xml.writer.template", + "application/vnd.sus-calendar", + "application/vnd.sus-calendar", + "application/vnd.svd", + "application/vnd.symbian.install", + "application/vnd.symbian.install", + "application/vnd.syncml+xml", + "application/vnd.syncml.dm+wbxml", + "application/vnd.syncml.dm+xml", + "application/vnd.syncml.dmddf+xml", + "application/vnd.tao.intent-module-archive", + "application/vnd.tcpdump.pcap", + "application/vnd.tcpdump.pcap", + "application/vnd.tcpdump.pcap", + "application/vnd.tmobile-livetv", + "application/vnd.trid.tpt", + "application/vnd.triscape.mxs", + "application/vnd.trueapp", + "application/vnd.ufdl", + "application/vnd.ufdl", + "application/vnd.uiq.theme", + "application/vnd.umajin", + "application/vnd.unity", + "application/vnd.uoml+xml", + "application/vnd.vcx", + "application/vnd.visio", + "application/vnd.visio", + "application/vnd.visio", + "application/vnd.visio", + "application/vnd.visionary", + "application/vnd.vsf", + "application/vnd.wap.wbxml", + "application/vnd.wap.wmlc", + "application/vnd.wap.wmlscriptc", + "application/vnd.webturbo", + "application/vnd.wolfram.player", + "application/vnd.wordperfect", + "application/vnd.wqd", + "application/vnd.wt.stf", + "application/vnd.xara", + "application/vnd.xfdl", + "application/vnd.yamaha.hv-dic", + "application/vnd.yamaha.hv-script", + "application/vnd.yamaha.hv-voice", + "application/vnd.yamaha.openscoreformat", + "application/vnd.yamaha.openscoreformat.osfpvg+xml", + "application/vnd.yamaha.smaf-audio", + "application/vnd.yamaha.smaf-phrase", + "application/vnd.yellowriver-custom-menu", + "application/vnd.zul", + "application/vnd.zul", + "application/vnd.zzazz.deck+xml", + "application/voicexml+xml", + "application/wasm", + "application/watcherinfo+xml", + "application/widget", + "application/winhlp", + "application/wsdl+xml", + "application/wspolicy+xml", + "application/x-7z-compressed", + "application/x-abiword", + "application/x-ace-compressed", + "application/x-arj", + "application/x-authorware-bin", + "application/x-authorware-bin", + "application/x-authorware-bin", + "application/x-authorware-bin", + "application/x-authorware-map", + "application/x-authorware-seg", + "application/x-bcpio", + "application/x-bittorrent", + "application/x-blorb", + "application/x-blorb", + "application/x-bzip", + "application/x-bzip2", + "application/x-bzip2", + "application/x-cbr", + "application/x-cbr", + "application/x-cbr", + "application/x-cbr", + "application/x-cbr", + "application/x-cdlink", + "application/x-cfs-compressed", + "application/x-chat", + "application/x-chess-pgn", + "application/x-chrome-extension", + "application/x-cocoa", + "application/x-conference", + "application/x-cpio", + "application/x-csh", + "application/x-debian-package", + "application/x-dgc-compressed", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-doom", + "application/x-dtbncx+xml", + "application/x-dtbook+xml", + "application/x-dtbresource+xml", + "application/x-dvi", + "application/x-envoy", + "application/x-eva", + "application/x-font-bdf", + "application/x-font-ghostscript", + "application/x-font-linux-psf", + "application/x-font-pcf", + "application/x-font-snf", + "application/x-font-type1", + "application/x-font-type1", + "application/x-font-type1", + "application/x-font-type1", + "application/x-freearc", + "application/x-futuresplash", + "application/x-gca-compressed", + "application/x-glulx", + "application/x-gnumeric", + "application/x-gramps-xml", + "application/x-gtar", + "application/x-hdf", + "application/x-httpd-php", + "application/x-install-instructions", + "application/x-java-archive-diff", + "application/x-java-jnlp-file", + "application/x-keepass2", + "application/x-latex", + "application/x-lua-bytecode", + "application/x-lzh-compressed", + "application/x-lzh-compressed", + "application/x-makeself", + "application/x-mie", + "application/x-mobipocket-ebook", + "application/x-mobipocket-ebook", + "application/x-ms-application", + "application/x-ms-shortcut", + "application/x-ms-wmd", + "application/x-ms-wmz", + "application/x-ms-xbap", + "application/x-msaccess", + "application/x-msbinder", + "application/x-mscardfile", + "application/x-msclip", + "application/x-msdownload", + "application/x-msdownload", + "application/x-msmediaview", + "application/x-msmediaview", + "application/x-msmediaview", + "image/wmf", + "image/emf", + "application/x-msmetafile", + "application/x-msmoney", + "application/x-mspublisher", + "application/x-msschedule", + "application/x-msterminal", + "application/x-mswrite", + "application/x-netcdf", + "application/x-netcdf", + "application/x-ns-proxy-autoconfig", + "application/x-nzb", + "application/x-perl", + "application/x-perl", + "application/x-pkcs12", + "application/x-pkcs12", + "application/x-pkcs7-certificates", + "application/x-pkcs7-certificates", + "application/x-pkcs7-certreqresp", + "application/x-redhat-package-manager", + "application/x-research-info-systems", + "application/x-sea", + "application/x-sh", + "application/x-shar", + "application/x-shockwave-flash", + "application/x-silverlight-app", + "application/x-sql", + "application/x-stuffit", + "application/x-stuffitx", + "application/x-subrip", + "application/x-sv4cpio", + "application/x-sv4crc", + "application/x-t3vm-image", + "application/x-tads", + "application/x-tar", + "application/x-tcl", + "application/x-tcl", + "application/x-tex", + "application/x-tex-tfm", + "application/x-texinfo", + "application/x-texinfo", + "model/obj", + "application/x-ustar", + "application/x-virtualbox-hdd", + "application/x-virtualbox-ova", + "application/x-virtualbox-ovf", + "application/x-virtualbox-vbox", + "application/x-virtualbox-vbox-extpack", + "application/x-virtualbox-vdi", + "application/x-virtualbox-vhd", + "application/x-virtualbox-vmdk", + "application/x-wais-source", + "application/x-web-app-manifest+json", + "application/x-x509-ca-cert", + "application/x-x509-ca-cert", + "application/x-x509-ca-cert", + "application/x-xfig", + "application/xliff+xml", + "application/x-xpinstall", + "application/x-xz", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/xaml+xml", + "application/xcap-att+xml", + "application/xcap-caps+xml", + "application/xcap-diff+xml", + "application/xcap-el+xml", + "application/xcap-ns+xml", + "application/xenc+xml", + "application/xhtml+xml", + "application/xhtml+xml", + "application/xml", + "application/xml", + "application/xml", + "application/xml", + "application/xml-dtd", + "application/xop+xml", + "application/xproc+xml", + "application/xslt+xml", + "application/xspf+xml", + "application/xv+xml", + "application/xv+xml", + "application/xv+xml", + "application/xv+xml", + "application/yang", + "application/yin+xml", + "application/zip", + "video/3gpp", + "audio/adpcm", + "audio/amr", + "audio/basic", + "audio/basic", + "audio/midi", + "audio/midi", + "audio/midi", + "audio/midi", + "audio/mobile-xmf", + "audio/mpeg", + "audio/mp4", + "audio/mp4", + "audio/mpeg", + "audio/mpeg", + "audio/mpeg", + "audio/mpeg", + "audio/mpeg", + "audio/ogg", + "audio/ogg", + "audio/ogg", + "audio/ogg", + "audio/s3m", + "audio/silk", + "audio/vnd.dece.audio", + "audio/vnd.dece.audio", + "audio/vnd.digital-winds", + "audio/vnd.dra", + "audio/vnd.dts", + "audio/vnd.dts.hd", + "audio/vnd.lucent.voice", + "audio/vnd.ms-playready.media.pya", + "audio/vnd.nuera.ecelp4800", + "audio/vnd.nuera.ecelp7470", + "audio/vnd.nuera.ecelp9600", + "audio/vnd.rip", + "audio/wave", + "audio/webm", + "audio/x-aac", + "audio/x-aiff", + "audio/x-aiff", + "audio/x-aiff", + "audio/x-caf", + "audio/x-flac", + "audio/x-matroska", + "audio/x-mpegurl", + "audio/x-ms-wax", + "audio/x-ms-wma", + "audio/x-pn-realaudio", + "audio/x-pn-realaudio", + "audio/x-pn-realaudio-plugin", + "audio/xm", + "chemical/x-cdx", + "chemical/x-cif", + "chemical/x-cmdf", + "chemical/x-cml", + "chemical/x-csml", + "chemical/x-xyz", + "font/collection", + "font/otf", + "font/ttf", + "font/woff", + "font/woff2", + "image/aces", + "image/apng", + "image/avci", + "image/avcs", + "image/avif", + "image/bmp", + "image/cgm", + "image/dicom-rle", + "image/fits", + "image/g3fax", + "image/gif", + "image/heic", + "image/heic-sequence", + "image/heif", + "image/heif-sequence", + "image/hej2k", + "image/hsj2", + "image/ief", + "image/jls", + "image/jp2", + "image/jp2", + "image/jpeg", + "image/jpeg", + "image/jpeg", + "image/jph", + "image/jphc", + "image/jpm", + "image/jpx", + "image/jpx", + "image/jxr", + "image/jxra", + "image/jxrs", + "image/jxs", + "image/jxsc", + "image/jxsi", + "image/jxss", + "image/ktx", + "image/ktx2", + "image/png", + "image/prs.btif", + "image/prs.pti", + "image/sgi", + "image/svg+xml", + "image/svg+xml", + "image/t38", + "image/tiff", + "image/tiff", + "image/tiff-fx", + "image/vnd.adobe.photoshop", + "image/vnd.airzip.accelerator.azv", + "image/vnd.dece.graphic", + "image/vnd.dece.graphic", + "image/vnd.dece.graphic", + "image/vnd.dece.graphic", + "image/vnd.djvu", + "image/vnd.djvu", + "text/vnd.dvb.subtitle", + "image/vnd.dwg", + "image/vnd.dxf", + "image/vnd.fastbidsheet", + "image/vnd.fpx", + "image/vnd.fst", + "image/vnd.fujixerox.edmics-mmr", + "image/vnd.fujixerox.edmics-rlc", + "image/vnd.microsoft.icon", + "image/vnd.ms-dds", + "image/vnd.ms-modi", + "image/vnd.ms-photo", + "image/vnd.net-fpx", + "image/vnd.pco.b16", + "image/vnd.tencent.tap", + "image/vnd.valve.source.texture", + "image/vnd.wap.wbmp", + "image/vnd.xiff", + "image/vnd.zbrush.pcx", + "image/webp", + "image/x-3ds", + "image/x-cmu-raster", + "image/x-cmx", + "image/x-freehand", + "image/x-freehand", + "image/x-freehand", + "image/x-freehand", + "image/x-freehand", + "image/x-jng", + "image/x-mrsid-image", + "image/x-pict", + "image/x-pict", + "image/x-portable-anymap", + "image/x-portable-bitmap", + "image/x-portable-graymap", + "image/x-portable-pixmap", + "image/x-rgb", + "image/x-tga", + "image/x-xbitmap", + "image/x-xpixmap", + "image/x-xwindowdump", + "message/disposition-notification", + "message/global", + "message/global-delivery-status", + "message/global-disposition-notification", + "message/global-headers", + "message/rfc822", + "message/rfc822", + "message/vnd.wfa.wsc", + "model/3mf", + "model/gltf+json", + "model/gltf-binary", + "model/iges", + "model/iges", + "model/mesh", + "model/mesh", + "model/mesh", + "model/mtl", + "model/step+xml", + "model/step+zip", + "model/step-xml+zip", + "model/vnd.collada+xml", + "model/vnd.dwf", + "model/vnd.gdl", + "model/vnd.gtw", + "model/vnd.mts", + "model/vnd.opengex", + "model/vnd.parasolid.transmit.binary", + "model/vnd.parasolid.transmit.text", + "model/vnd.sap.vds", + "model/vnd.usdz+zip", + "model/vnd.valve.source.compiled-map", + "model/vnd.vtu", + "model/vrml", + "model/vrml", + "model/x3d+fastinfoset", + "model/x3d+binary", + "model/x3d-vrml", + "model/x3d+vrml", + "model/x3d+xml", + "model/x3d+xml", + "text/cache-manifest", + "text/cache-manifest", + "text/calendar", + "text/calendar", + "text/coffeescript", + "text/coffeescript", + "text/css", + "text/csv", + "text/html", + "text/html", + "text/html", + "text/jade", + "text/jsx", + "text/less", + "text/markdown", + "text/markdown", + "text/mathml", + "text/mdx", + "text/n3", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/prs.lines.tag", + "text/richtext", + "text/sgml", + "text/sgml", + "text/shex", + "text/slim", + "text/slim", + "text/spdx", + "text/stylus", + "text/stylus", + "text/tab-separated-values", + "text/troff", + "text/troff", + "text/troff", + "text/troff", + "text/troff", + "text/troff", + "text/turtle", + "text/uri-list", + "text/uri-list", + "text/uri-list", + "text/vcard", + "text/vnd.curl", + "text/vnd.curl.dcurl", + "text/vnd.curl.mcurl", + "text/vnd.curl.scurl", + "text/vnd.familysearch.gedcom", + "text/vnd.fly", + "text/vnd.fmi.flexstor", + "text/vnd.graphviz", + "text/vnd.in3d.3dml", + "text/vnd.in3d.spot", + "text/vnd.sun.j2me.app-descriptor", + "text/vnd.wap.wml", + "text/vnd.wap.wmlscript", + "text/vtt", + "text/x-asm", + "text/x-asm", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-component", + "text/x-fortran", + "text/x-fortran", + "text/x-fortran", + "text/x-fortran", + "text/x-handlebars-template", + "text/x-java-source", + "text/x-lua", + "text/x-markdown", + "text/x-nfo", + "text/x-opml", + "text/x-pascal", + "text/x-pascal", + "text/x-processing", + "text/x-sass", + "text/x-scss", + "text/x-setext", + "text/x-sfv", + "text/x-suse-ymp", + "text/x-uuencode", + "text/x-vcalendar", + "text/x-vcard", + "text/yaml", + "text/yaml", + "video/3gpp", + "video/3gpp2", + "video/h261", + "video/h263", + "video/h264", + "video/iso.segment", + "video/jpeg", + "video/jpm", + "video/mj2", + "video/mj2", + "video/mp2t", + "video/mp4", + "video/mp4", + "video/mp4", + "video/mpeg", + "video/mpeg", + "video/mpeg", + "video/mpeg", + "video/mpeg", + "video/ogg", + "video/quicktime", + "video/quicktime", + "video/vnd.dece.hd", + "video/vnd.dece.hd", + "video/vnd.dece.mobile", + "video/vnd.dece.mobile", + "video/vnd.dece.pd", + "video/vnd.dece.pd", + "video/vnd.dece.sd", + "video/vnd.dece.sd", + "video/vnd.dece.video", + "video/vnd.dece.video", + "video/vnd.dvb.file", + "video/vnd.fvt", + "video/vnd.mpegurl", + "video/vnd.mpegurl", + "video/vnd.ms-playready.media.pyv", + "video/vnd.uvvu.mp4", + "video/vnd.uvvu.mp4", + "video/vnd.vivo", + "video/webm", + "video/x-f4v", + "video/x-fli", + "video/x-flv", + "video/x-m4v", + "video/x-matroska", + "video/x-matroska", + "video/x-matroska", + "video/x-mng", + "video/x-ms-asf", + "video/x-ms-asf", + "video/x-ms-vob", + "video/x-ms-wm", + "video/x-ms-wmv", + "video/x-ms-wmx", + "video/x-ms-wvx", + "video/x-msvideo", + "video/x-sgi-movie", + "video/x-smv", + "x-conference/x-cooltalk" + ] + }, + "challenges": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": true + }, + "difficulty": { + "type": "integer", + "exclusiveMinimum": 0, + "default": 50000 + }, + "expiration": { + "type": "integer", + "exclusiveMinimum": 0, + "default": 300 + }, + "key": { + "type": "string", + "default": "" + } + }, + "additionalProperties": false, + "default": { + "enabled": true, + "difficulty": 50000, + "expiration": 300, + "key": "" + } + } + }, + "additionalProperties": false, + "default": { + "max_displayname_size": 50, + "max_bio_size": 160, + "max_note_size": 5000, + "max_avatar_size": 5000000, + "max_header_size": 5000000, + "max_media_size": 40000000, + "max_media_attachments": 10, + "max_media_description_size": 1000, + "max_poll_options": 20, + "max_poll_option_size": 500, + "min_poll_duration": 60, + "max_poll_duration": 1893456000, + "max_username_size": 30, + "max_field_count": 10, + "max_field_name_size": 1000, + "max_field_value_size": 1000, + "username_blacklist": [ + ".well-known", + "~", + "about", + "activities", + "api", + "auth", + "dev", + "inbox", + "internal", + "main", + "media", + "nodeinfo", + "notice", + "oauth", + "objects", + "proxy", + "push", + "registration", + "relay", + "settings", + "status", + "tag", + "users", + "web", + "search", + "mfa" + ], + "blacklist_tempmail": false, + "email_blacklist": [], + "url_scheme_whitelist": [ + "http", + "https", + "ftp", + "dat", + "dweb", + "gopher", + "hyper", + "ipfs", + "ipns", + "irc", + "xmpp", + "ircs", + "magnet", + "mailto", + "mumble", + "ssb", + "gemini" + ], + "enforce_mime_types": false, + "allowed_mime_types": [ + "application/vnd.lotus-1-2-3", + "application/andrew-inset", + "application/applixware", + "application/atom+xml", + "application/atomcat+xml", + "application/atomdeleted+xml", + "application/atomsvc+xml", + "application/atsc-dwd+xml", + "application/atsc-held+xml", + "application/atsc-rsat+xml", + "application/bdoc", + "application/calendar+xml", + "application/ccxml+xml", + "application/cdfx+xml", + "application/cdmi-capability", + "application/cdmi-container", + "application/cdmi-domain", + "application/cdmi-object", + "application/cdmi-queue", + "application/cpl+xml", + "application/cu-seeme", + "application/dash+xml", + "application/dash-patch+xml", + "application/davmount+xml", + "application/docbook+xml", + "application/dssc+der", + "application/dssc+xml", + "application/ecmascript", + "application/ecmascript", + "application/emma+xml", + "application/emotionml+xml", + "application/epub+zip", + "application/exi", + "application/express", + "application/fdt+xml", + "application/font-tdpfr", + "application/geo+json", + "application/gml+xml", + "application/gpx+xml", + "application/gxf", + "application/gzip", + "application/hjson", + "application/hyperstudio", + "application/inkml+xml", + "application/inkml+xml", + "application/ipfix", + "application/its+xml", + "application/java-archive", + "application/java-archive", + "application/java-archive", + "application/java-serialized-object", + "application/java-vm", + "application/javascript", + "application/javascript", + "application/json", + "application/json", + "application/json5", + "application/jsonml+json", + "application/ld+json", + "application/lgr+xml", + "application/lost+xml", + "application/mac-binhex40", + "application/mac-compactpro", + "application/mads+xml", + "application/manifest+json", + "application/marc", + "application/marcxml+xml", + "application/mathematica", + "application/mathematica", + "application/mathematica", + "application/mathml+xml", + "application/mbox", + "application/media-policy-dataset+xml", + "application/mediaservercontrol+xml", + "application/metalink+xml", + "application/metalink4+xml", + "application/mets+xml", + "application/mmt-aei+xml", + "application/mmt-usd+xml", + "application/mods+xml", + "application/mp21", + "application/mp21", + "application/mp4", + "application/mp4", + "application/msword", + "application/msword", + "application/mxf", + "application/n-quads", + "application/n-triples", + "application/node", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/x-msdos-program", + "application/x-msdownload", + "application/x-debian-package", + "application/x-apple-diskimage", + "application/x-iso9660-image", + "application/octet-stream", + "application/x-msdownload", + "application/octet-stream", + "application/octet-stream", + "application/octet-stream", + "application/oda", + "application/oebps-package+xml", + "application/ogg", + "application/omdoc+xml", + "application/onenote", + "application/onenote", + "application/onenote", + "application/onenote", + "application/oxps", + "application/p2p-overlay+xml", + "application/patch-ops-error+xml", + "application/pdf", + "application/pgp-encrypted", + "application/pgp-keys", + "application/pgp-signature", + "application/pics-rules", + "application/pkcs10", + "application/pkcs7-mime", + "application/pkcs7-mime", + "application/pkcs7-signature", + "application/pkcs8", + "application/pkix-attr-cert", + "application/pkix-cert", + "application/pkix-crl", + "application/pkix-pkipath", + "application/pkixcmp", + "application/pls+xml", + "application/postscript", + "application/postscript", + "application/postscript", + "application/provenance+xml", + "application/prs.cww", + "application/pskc+xml", + "application/raml+yaml", + "application/rdf+xml", + "application/rdf+xml", + "application/reginfo+xml", + "application/relax-ng-compact-syntax", + "application/resource-lists+xml", + "application/resource-lists-diff+xml", + "application/rls-services+xml", + "application/route-apd+xml", + "application/route-s-tsid+xml", + "application/route-usd+xml", + "application/rpki-ghostbusters", + "application/rpki-manifest", + "application/rpki-roa", + "application/rsd+xml", + "application/rss+xml", + "application/rtf", + "application/sbml+xml", + "application/scvp-cv-request", + "application/scvp-cv-response", + "application/scvp-vp-request", + "application/scvp-vp-response", + "application/sdp", + "application/senml+xml", + "application/sensml+xml", + "application/set-payment-initiation", + "application/set-registration-initiation", + "application/shf+xml", + "application/sieve", + "application/sieve", + "application/smil+xml", + "application/smil+xml", + "application/sparql-query", + "application/sparql-results+xml", + "application/srgs", + "application/srgs+xml", + "application/sru+xml", + "application/ssdl+xml", + "application/ssml+xml", + "application/swid+xml", + "application/tei+xml", + "application/tei+xml", + "application/thraud+xml", + "application/timestamped-data", + "application/toml", + "application/trig", + "application/ttml+xml", + "application/ubjson", + "application/urc-ressheet+xml", + "application/urc-targetdesc+xml", + "application/vnd.1000minds.decision-model+xml", + "application/vnd.3gpp.pic-bw-large", + "application/vnd.3gpp.pic-bw-small", + "application/vnd.3gpp.pic-bw-var", + "application/vnd.3gpp2.tcap", + "application/vnd.3m.post-it-notes", + "application/vnd.accpac.simply.aso", + "application/vnd.accpac.simply.imp", + "application/vnd.acucobol", + "application/vnd.acucorp", + "application/vnd.acucorp", + "application/vnd.adobe.air-application-installer-package+zip", + "application/vnd.adobe.formscentral.fcdt", + "application/vnd.adobe.fxp", + "application/vnd.adobe.fxp", + "application/vnd.adobe.xdp+xml", + "application/vnd.adobe.xfdf", + "application/vnd.age", + "application/vnd.ahead.space", + "application/vnd.airzip.filesecure.azf", + "application/vnd.airzip.filesecure.azs", + "application/vnd.amazon.ebook", + "application/vnd.americandynamics.acc", + "application/vnd.amiga.ami", + "application/vnd.android.package-archive", + "application/vnd.anser-web-certificate-issue-initiation", + "application/vnd.anser-web-funds-transfer-initiation", + "application/vnd.antix.game-component", + "application/vnd.apple.installer+xml", + "application/vnd.apple.keynote", + "application/vnd.apple.mpegurl", + "application/vnd.apple.numbers", + "application/vnd.apple.pages", + "application/vnd.apple.pkpass", + "application/vnd.aristanetworks.swi", + "application/vnd.astraea-software.iota", + "application/vnd.audiograph", + "application/vnd.balsamiq.bmml+xml", + "application/vnd.blueice.multipass", + "application/vnd.bmi", + "application/vnd.businessobjects", + "application/vnd.chemdraw+xml", + "application/vnd.chipnuts.karaoke-mmd", + "application/vnd.cinderella", + "application/vnd.citationstyles.style+xml", + "application/vnd.claymore", + "application/vnd.cloanto.rp9", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.clonk.c4group", + "application/vnd.cluetrust.cartomobile-config", + "application/vnd.cluetrust.cartomobile-config-pkg", + "application/vnd.commonspace", + "application/vnd.contact.cmsg", + "application/vnd.cosmocaller", + "application/vnd.crick.clicker", + "application/vnd.crick.clicker.keyboard", + "application/vnd.crick.clicker.palette", + "application/vnd.crick.clicker.template", + "application/vnd.crick.clicker.wordbank", + "application/vnd.criticaltools.wbs+xml", + "application/vnd.ctc-posml", + "application/vnd.cups-ppd", + "application/vnd.curl.car", + "application/vnd.curl.pcurl", + "application/vnd.dart", + "application/vnd.data-vision.rdz", + "application/vnd.dbf", + "application/vnd.dece.data", + "application/vnd.dece.data", + "application/vnd.dece.data", + "application/vnd.dece.data", + "application/vnd.dece.ttml+xml", + "application/vnd.dece.ttml+xml", + "application/vnd.dece.unspecified", + "application/vnd.dece.unspecified", + "application/vnd.dece.zip", + "application/vnd.dece.zip", + "application/vnd.denovo.fcselayout-link", + "application/vnd.dna", + "application/vnd.dolby.mlp", + "application/vnd.dpgraph", + "application/vnd.dreamfactory", + "application/vnd.ds-keypoint", + "application/vnd.dvb.ait", + "application/vnd.dvb.service", + "application/vnd.dynageo", + "application/vnd.ecowin.chart", + "application/vnd.enliven", + "application/vnd.epson.esf", + "application/vnd.epson.msf", + "application/vnd.epson.quickanime", + "application/vnd.epson.salt", + "application/vnd.epson.ssf", + "application/vnd.eszigno3+xml", + "application/vnd.eszigno3+xml", + "application/vnd.ezpix-album", + "application/vnd.ezpix-package", + "application/vnd.fdf", + "application/vnd.fdsn.mseed", + "application/vnd.fdsn.seed", + "application/vnd.fdsn.seed", + "application/vnd.flographit", + "application/vnd.fluxtime.clip", + "application/vnd.framemaker", + "application/vnd.framemaker", + "application/vnd.framemaker", + "application/vnd.framemaker", + "application/vnd.frogans.fnc", + "application/vnd.frogans.ltf", + "application/vnd.fsc.weblaunch", + "application/vnd.fujitsu.oasys", + "application/vnd.fujitsu.oasys2", + "application/vnd.fujitsu.oasys3", + "application/vnd.fujitsu.oasysgp", + "application/vnd.fujitsu.oasysprs", + "application/vnd.fujixerox.ddd", + "application/vnd.fujixerox.docuworks", + "application/vnd.fujixerox.docuworks.binder", + "application/vnd.fuzzysheet", + "application/vnd.genomatix.tuxedo", + "application/vnd.geogebra.file", + "application/vnd.geogebra.tool", + "application/vnd.geometry-explorer", + "application/vnd.geometry-explorer", + "application/vnd.geonext", + "application/vnd.geoplan", + "application/vnd.geospace", + "application/vnd.gmx", + "application/vnd.google-apps.document", + "application/vnd.google-apps.presentation", + "application/vnd.google-apps.spreadsheet", + "application/vnd.google-earth.kml+xml", + "application/vnd.google-earth.kmz", + "application/vnd.grafeq", + "application/vnd.grafeq", + "application/vnd.groove-account", + "application/vnd.groove-help", + "application/vnd.groove-identity-message", + "application/vnd.groove-injector", + "application/vnd.groove-tool-message", + "application/vnd.groove-tool-template", + "application/vnd.groove-vcard", + "application/vnd.hal+xml", + "application/vnd.handheld-entertainment+xml", + "application/vnd.hbci", + "application/vnd.hhe.lesson-player", + "application/vnd.hp-hpgl", + "application/vnd.hp-hpid", + "application/vnd.hp-hps", + "application/vnd.hp-jlyt", + "application/vnd.hp-pcl", + "application/vnd.hp-pclxl", + "application/vnd.hydrostatix.sof-data", + "application/vnd.ibm.minipay", + "application/vnd.ibm.modcap", + "application/vnd.ibm.modcap", + "application/vnd.ibm.modcap", + "application/vnd.ibm.rights-management", + "application/vnd.ibm.secure-container", + "application/vnd.iccprofile", + "application/vnd.iccprofile", + "application/vnd.igloader", + "application/vnd.immervision-ivp", + "application/vnd.immervision-ivu", + "application/vnd.insors.igm", + "application/vnd.intercon.formnet", + "application/vnd.intercon.formnet", + "application/vnd.intergeo", + "application/vnd.intu.qbo", + "application/vnd.intu.qfx", + "application/vnd.ipunplugged.rcprofile", + "application/vnd.irepository.package+xml", + "application/vnd.is-xpr", + "application/vnd.isac.fcs", + "application/vnd.jam", + "application/vnd.jcp.javame.midlet-rms", + "application/vnd.jisp", + "application/vnd.joost.joda-archive", + "application/vnd.kahootz", + "application/vnd.kahootz", + "application/vnd.kde.karbon", + "application/vnd.kde.kchart", + "application/vnd.kde.kformula", + "application/vnd.kde.kivio", + "application/vnd.kde.kontour", + "application/vnd.kde.kpresenter", + "application/vnd.kde.kpresenter", + "application/vnd.kde.kspread", + "application/vnd.kde.kword", + "application/vnd.kde.kword", + "application/vnd.kenameaapp", + "application/vnd.kidspiration", + "application/vnd.kinar", + "application/vnd.kinar", + "application/vnd.koan", + "application/vnd.koan", + "application/vnd.koan", + "application/vnd.koan", + "application/vnd.kodak-descriptor", + "application/vnd.las.las+xml", + "application/vnd.llamagraphics.life-balance.desktop", + "application/vnd.llamagraphics.life-balance.exchange+xml", + "application/vnd.lotus-approach", + "application/vnd.lotus-freelance", + "application/vnd.lotus-notes", + "application/vnd.lotus-organizer", + "application/vnd.lotus-screencam", + "application/vnd.lotus-wordpro", + "application/vnd.macports.portpkg", + "application/vnd.mapbox-vector-tile", + "application/vnd.mcd", + "application/vnd.medcalcdata", + "application/vnd.mediastation.cdkey", + "application/vnd.mfer", + "application/vnd.mfmp", + "application/vnd.micrografx.flo", + "application/vnd.micrografx.igx", + "application/vnd.mif", + "application/vnd.mobius.daf", + "application/vnd.mobius.dis", + "application/vnd.mobius.mbk", + "application/vnd.mobius.mqy", + "application/vnd.mobius.msl", + "application/vnd.mobius.plc", + "application/vnd.mobius.txf", + "application/vnd.mophun.application", + "application/vnd.mophun.certificate", + "application/vnd.mozilla.xul+xml", + "application/vnd.ms-artgalry", + "application/vnd.ms-cab-compressed", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel", + "application/vnd.ms-excel.addin.macroenabled.12", + "application/vnd.ms-excel.sheet.binary.macroenabled.12", + "application/vnd.ms-excel.sheet.macroenabled.12", + "application/vnd.ms-excel.template.macroenabled.12", + "application/vnd.ms-fontobject", + "application/vnd.ms-htmlhelp", + "application/vnd.ms-ims", + "application/vnd.ms-lrm", + "application/vnd.ms-officetheme", + "application/vnd.ms-outlook", + "application/vnd.ms-pki.seccat", + "model/stl", + "application/vnd.ms-powerpoint", + "application/vnd.ms-powerpoint", + "application/vnd.ms-powerpoint", + "application/vnd.ms-powerpoint.addin.macroenabled.12", + "application/vnd.ms-powerpoint.presentation.macroenabled.12", + "application/vnd.ms-powerpoint.slide.macroenabled.12", + "application/vnd.ms-powerpoint.slideshow.macroenabled.12", + "application/vnd.ms-powerpoint.template.macroenabled.12", + "application/vnd.ms-project", + "application/vnd.ms-word.document.macroenabled.12", + "application/vnd.ms-word.template.macroenabled.12", + "application/vnd.ms-works", + "application/vnd.ms-works", + "application/vnd.ms-works", + "application/vnd.ms-works", + "application/vnd.ms-wpl", + "application/vnd.ms-xpsdocument", + "application/vnd.mseq", + "application/vnd.musician", + "application/vnd.muvee.style", + "application/vnd.mynfc", + "application/vnd.neurolanguage.nlu", + "application/vnd.nitf", + "application/vnd.nitf", + "application/vnd.noblenet-directory", + "application/vnd.noblenet-sealer", + "application/vnd.noblenet-web", + "application/vnd.nokia.n-gage.data", + "application/vnd.nokia.n-gage.symbian.install", + "application/vnd.nokia.radio-preset", + "application/vnd.nokia.radio-presets", + "application/vnd.novadigm.edm", + "application/vnd.novadigm.edx", + "application/vnd.novadigm.ext", + "application/vnd.oasis.opendocument.chart", + "application/vnd.oasis.opendocument.chart-template", + "application/vnd.oasis.opendocument.database", + "application/vnd.oasis.opendocument.formula", + "application/vnd.oasis.opendocument.formula-template", + "application/vnd.oasis.opendocument.graphics", + "application/vnd.oasis.opendocument.graphics-template", + "application/vnd.oasis.opendocument.image", + "application/vnd.oasis.opendocument.image-template", + "application/vnd.oasis.opendocument.presentation", + "application/vnd.oasis.opendocument.presentation-template", + "application/vnd.oasis.opendocument.spreadsheet", + "application/vnd.oasis.opendocument.spreadsheet-template", + "application/vnd.oasis.opendocument.text", + "application/vnd.oasis.opendocument.text-master", + "application/vnd.oasis.opendocument.text-template", + "application/vnd.oasis.opendocument.text-web", + "application/vnd.olpc-sugar", + "application/vnd.oma.dd2+xml", + "application/vnd.openblox.game+xml", + "application/vnd.openofficeorg.extension", + "application/vnd.openstreetmap.data+xml", + "application/vnd.openxmlformats-officedocument.presentationml.presentation", + "application/vnd.openxmlformats-officedocument.presentationml.slide", + "application/vnd.openxmlformats-officedocument.presentationml.slideshow", + "application/vnd.openxmlformats-officedocument.presentationml.template", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template", + "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + "application/vnd.openxmlformats-officedocument.wordprocessingml.template", + "application/vnd.osgeo.mapguide.package", + "application/vnd.osgi.dp", + "application/vnd.osgi.subsystem", + "application/vnd.palm", + "application/vnd.palm", + "application/vnd.palm", + "application/vnd.pawaafile", + "application/vnd.pg.format", + "application/vnd.pg.osasli", + "application/vnd.picsel", + "application/vnd.pmi.widget", + "application/vnd.pocketlearn", + "application/vnd.powerbuilder6", + "application/vnd.previewsystems.box", + "application/vnd.proteus.magazine", + "application/vnd.publishare-delta-tree", + "application/vnd.pvi.ptid1", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.quark.quarkxpress", + "application/vnd.rar", + "application/vnd.realvnc.bed", + "application/vnd.recordare.musicxml", + "application/vnd.recordare.musicxml+xml", + "application/vnd.rig.cryptonote", + "application/vnd.rim.cod", + "application/vnd.rn-realmedia", + "application/vnd.rn-realmedia-vbr", + "application/vnd.route66.link66+xml", + "application/vnd.sailingtracker.track", + "application/vnd.seemail", + "application/vnd.sema", + "application/vnd.semd", + "application/vnd.semf", + "application/vnd.shana.informed.formdata", + "application/vnd.shana.informed.formtemplate", + "application/vnd.shana.informed.interchange", + "application/vnd.shana.informed.package", + "application/vnd.simtech-mindmapper", + "application/vnd.simtech-mindmapper", + "application/vnd.smaf", + "application/vnd.smart.teacher", + "application/vnd.software602.filler.form+xml", + "application/vnd.solent.sdkm+xml", + "application/vnd.solent.sdkm+xml", + "application/vnd.spotfire.dxp", + "application/vnd.spotfire.sfs", + "application/vnd.stardivision.calc", + "application/vnd.stardivision.draw", + "application/vnd.stardivision.impress", + "application/vnd.stardivision.math", + "application/vnd.stardivision.writer", + "application/vnd.stardivision.writer", + "application/vnd.stardivision.writer-global", + "application/vnd.stepmania.package", + "application/vnd.stepmania.stepchart", + "application/vnd.sun.wadl+xml", + "application/vnd.sun.xml.calc", + "application/vnd.sun.xml.calc.template", + "application/vnd.sun.xml.draw", + "application/vnd.sun.xml.draw.template", + "application/vnd.sun.xml.impress", + "application/vnd.sun.xml.impress.template", + "application/vnd.sun.xml.math", + "application/vnd.sun.xml.writer", + "application/vnd.sun.xml.writer.global", + "application/vnd.sun.xml.writer.template", + "application/vnd.sus-calendar", + "application/vnd.sus-calendar", + "application/vnd.svd", + "application/vnd.symbian.install", + "application/vnd.symbian.install", + "application/vnd.syncml+xml", + "application/vnd.syncml.dm+wbxml", + "application/vnd.syncml.dm+xml", + "application/vnd.syncml.dmddf+xml", + "application/vnd.tao.intent-module-archive", + "application/vnd.tcpdump.pcap", + "application/vnd.tcpdump.pcap", + "application/vnd.tcpdump.pcap", + "application/vnd.tmobile-livetv", + "application/vnd.trid.tpt", + "application/vnd.triscape.mxs", + "application/vnd.trueapp", + "application/vnd.ufdl", + "application/vnd.ufdl", + "application/vnd.uiq.theme", + "application/vnd.umajin", + "application/vnd.unity", + "application/vnd.uoml+xml", + "application/vnd.vcx", + "application/vnd.visio", + "application/vnd.visio", + "application/vnd.visio", + "application/vnd.visio", + "application/vnd.visionary", + "application/vnd.vsf", + "application/vnd.wap.wbxml", + "application/vnd.wap.wmlc", + "application/vnd.wap.wmlscriptc", + "application/vnd.webturbo", + "application/vnd.wolfram.player", + "application/vnd.wordperfect", + "application/vnd.wqd", + "application/vnd.wt.stf", + "application/vnd.xara", + "application/vnd.xfdl", + "application/vnd.yamaha.hv-dic", + "application/vnd.yamaha.hv-script", + "application/vnd.yamaha.hv-voice", + "application/vnd.yamaha.openscoreformat", + "application/vnd.yamaha.openscoreformat.osfpvg+xml", + "application/vnd.yamaha.smaf-audio", + "application/vnd.yamaha.smaf-phrase", + "application/vnd.yellowriver-custom-menu", + "application/vnd.zul", + "application/vnd.zul", + "application/vnd.zzazz.deck+xml", + "application/voicexml+xml", + "application/wasm", + "application/watcherinfo+xml", + "application/widget", + "application/winhlp", + "application/wsdl+xml", + "application/wspolicy+xml", + "application/x-7z-compressed", + "application/x-abiword", + "application/x-ace-compressed", + "application/x-arj", + "application/x-authorware-bin", + "application/x-authorware-bin", + "application/x-authorware-bin", + "application/x-authorware-bin", + "application/x-authorware-map", + "application/x-authorware-seg", + "application/x-bcpio", + "application/x-bittorrent", + "application/x-blorb", + "application/x-blorb", + "application/x-bzip", + "application/x-bzip2", + "application/x-bzip2", + "application/x-cbr", + "application/x-cbr", + "application/x-cbr", + "application/x-cbr", + "application/x-cbr", + "application/x-cdlink", + "application/x-cfs-compressed", + "application/x-chat", + "application/x-chess-pgn", + "application/x-chrome-extension", + "application/x-cocoa", + "application/x-conference", + "application/x-cpio", + "application/x-csh", + "application/x-debian-package", + "application/x-dgc-compressed", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-director", + "application/x-doom", + "application/x-dtbncx+xml", + "application/x-dtbook+xml", + "application/x-dtbresource+xml", + "application/x-dvi", + "application/x-envoy", + "application/x-eva", + "application/x-font-bdf", + "application/x-font-ghostscript", + "application/x-font-linux-psf", + "application/x-font-pcf", + "application/x-font-snf", + "application/x-font-type1", + "application/x-font-type1", + "application/x-font-type1", + "application/x-font-type1", + "application/x-freearc", + "application/x-futuresplash", + "application/x-gca-compressed", + "application/x-glulx", + "application/x-gnumeric", + "application/x-gramps-xml", + "application/x-gtar", + "application/x-hdf", + "application/x-httpd-php", + "application/x-install-instructions", + "application/x-java-archive-diff", + "application/x-java-jnlp-file", + "application/x-keepass2", + "application/x-latex", + "application/x-lua-bytecode", + "application/x-lzh-compressed", + "application/x-lzh-compressed", + "application/x-makeself", + "application/x-mie", + "application/x-mobipocket-ebook", + "application/x-mobipocket-ebook", + "application/x-ms-application", + "application/x-ms-shortcut", + "application/x-ms-wmd", + "application/x-ms-wmz", + "application/x-ms-xbap", + "application/x-msaccess", + "application/x-msbinder", + "application/x-mscardfile", + "application/x-msclip", + "application/x-msdownload", + "application/x-msdownload", + "application/x-msmediaview", + "application/x-msmediaview", + "application/x-msmediaview", + "image/wmf", + "image/emf", + "application/x-msmetafile", + "application/x-msmoney", + "application/x-mspublisher", + "application/x-msschedule", + "application/x-msterminal", + "application/x-mswrite", + "application/x-netcdf", + "application/x-netcdf", + "application/x-ns-proxy-autoconfig", + "application/x-nzb", + "application/x-perl", + "application/x-perl", + "application/x-pkcs12", + "application/x-pkcs12", + "application/x-pkcs7-certificates", + "application/x-pkcs7-certificates", + "application/x-pkcs7-certreqresp", + "application/x-redhat-package-manager", + "application/x-research-info-systems", + "application/x-sea", + "application/x-sh", + "application/x-shar", + "application/x-shockwave-flash", + "application/x-silverlight-app", + "application/x-sql", + "application/x-stuffit", + "application/x-stuffitx", + "application/x-subrip", + "application/x-sv4cpio", + "application/x-sv4crc", + "application/x-t3vm-image", + "application/x-tads", + "application/x-tar", + "application/x-tcl", + "application/x-tcl", + "application/x-tex", + "application/x-tex-tfm", + "application/x-texinfo", + "application/x-texinfo", + "model/obj", + "application/x-ustar", + "application/x-virtualbox-hdd", + "application/x-virtualbox-ova", + "application/x-virtualbox-ovf", + "application/x-virtualbox-vbox", + "application/x-virtualbox-vbox-extpack", + "application/x-virtualbox-vdi", + "application/x-virtualbox-vhd", + "application/x-virtualbox-vmdk", + "application/x-wais-source", + "application/x-web-app-manifest+json", + "application/x-x509-ca-cert", + "application/x-x509-ca-cert", + "application/x-x509-ca-cert", + "application/x-xfig", + "application/xliff+xml", + "application/x-xpinstall", + "application/x-xz", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/x-zmachine", + "application/xaml+xml", + "application/xcap-att+xml", + "application/xcap-caps+xml", + "application/xcap-diff+xml", + "application/xcap-el+xml", + "application/xcap-ns+xml", + "application/xenc+xml", + "application/xhtml+xml", + "application/xhtml+xml", + "application/xml", + "application/xml", + "application/xml", + "application/xml", + "application/xml-dtd", + "application/xop+xml", + "application/xproc+xml", + "application/xslt+xml", + "application/xspf+xml", + "application/xv+xml", + "application/xv+xml", + "application/xv+xml", + "application/xv+xml", + "application/yang", + "application/yin+xml", + "application/zip", + "video/3gpp", + "audio/adpcm", + "audio/amr", + "audio/basic", + "audio/basic", + "audio/midi", + "audio/midi", + "audio/midi", + "audio/midi", + "audio/mobile-xmf", + "audio/mpeg", + "audio/mp4", + "audio/mp4", + "audio/mpeg", + "audio/mpeg", + "audio/mpeg", + "audio/mpeg", + "audio/mpeg", + "audio/ogg", + "audio/ogg", + "audio/ogg", + "audio/ogg", + "audio/s3m", + "audio/silk", + "audio/vnd.dece.audio", + "audio/vnd.dece.audio", + "audio/vnd.digital-winds", + "audio/vnd.dra", + "audio/vnd.dts", + "audio/vnd.dts.hd", + "audio/vnd.lucent.voice", + "audio/vnd.ms-playready.media.pya", + "audio/vnd.nuera.ecelp4800", + "audio/vnd.nuera.ecelp7470", + "audio/vnd.nuera.ecelp9600", + "audio/vnd.rip", + "audio/wave", + "audio/webm", + "audio/x-aac", + "audio/x-aiff", + "audio/x-aiff", + "audio/x-aiff", + "audio/x-caf", + "audio/x-flac", + "audio/x-matroska", + "audio/x-mpegurl", + "audio/x-ms-wax", + "audio/x-ms-wma", + "audio/x-pn-realaudio", + "audio/x-pn-realaudio", + "audio/x-pn-realaudio-plugin", + "audio/xm", + "chemical/x-cdx", + "chemical/x-cif", + "chemical/x-cmdf", + "chemical/x-cml", + "chemical/x-csml", + "chemical/x-xyz", + "font/collection", + "font/otf", + "font/ttf", + "font/woff", + "font/woff2", + "image/aces", + "image/apng", + "image/avci", + "image/avcs", + "image/avif", + "image/bmp", + "image/cgm", + "image/dicom-rle", + "image/fits", + "image/g3fax", + "image/gif", + "image/heic", + "image/heic-sequence", + "image/heif", + "image/heif-sequence", + "image/hej2k", + "image/hsj2", + "image/ief", + "image/jls", + "image/jp2", + "image/jp2", + "image/jpeg", + "image/jpeg", + "image/jpeg", + "image/jph", + "image/jphc", + "image/jpm", + "image/jpx", + "image/jpx", + "image/jxr", + "image/jxra", + "image/jxrs", + "image/jxs", + "image/jxsc", + "image/jxsi", + "image/jxss", + "image/ktx", + "image/ktx2", + "image/png", + "image/prs.btif", + "image/prs.pti", + "image/sgi", + "image/svg+xml", + "image/svg+xml", + "image/t38", + "image/tiff", + "image/tiff", + "image/tiff-fx", + "image/vnd.adobe.photoshop", + "image/vnd.airzip.accelerator.azv", + "image/vnd.dece.graphic", + "image/vnd.dece.graphic", + "image/vnd.dece.graphic", + "image/vnd.dece.graphic", + "image/vnd.djvu", + "image/vnd.djvu", + "text/vnd.dvb.subtitle", + "image/vnd.dwg", + "image/vnd.dxf", + "image/vnd.fastbidsheet", + "image/vnd.fpx", + "image/vnd.fst", + "image/vnd.fujixerox.edmics-mmr", + "image/vnd.fujixerox.edmics-rlc", + "image/vnd.microsoft.icon", + "image/vnd.ms-dds", + "image/vnd.ms-modi", + "image/vnd.ms-photo", + "image/vnd.net-fpx", + "image/vnd.pco.b16", + "image/vnd.tencent.tap", + "image/vnd.valve.source.texture", + "image/vnd.wap.wbmp", + "image/vnd.xiff", + "image/vnd.zbrush.pcx", + "image/webp", + "image/x-3ds", + "image/x-cmu-raster", + "image/x-cmx", + "image/x-freehand", + "image/x-freehand", + "image/x-freehand", + "image/x-freehand", + "image/x-freehand", + "image/x-jng", + "image/x-mrsid-image", + "image/x-pict", + "image/x-pict", + "image/x-portable-anymap", + "image/x-portable-bitmap", + "image/x-portable-graymap", + "image/x-portable-pixmap", + "image/x-rgb", + "image/x-tga", + "image/x-xbitmap", + "image/x-xpixmap", + "image/x-xwindowdump", + "message/disposition-notification", + "message/global", + "message/global-delivery-status", + "message/global-disposition-notification", + "message/global-headers", + "message/rfc822", + "message/rfc822", + "message/vnd.wfa.wsc", + "model/3mf", + "model/gltf+json", + "model/gltf-binary", + "model/iges", + "model/iges", + "model/mesh", + "model/mesh", + "model/mesh", + "model/mtl", + "model/step+xml", + "model/step+zip", + "model/step-xml+zip", + "model/vnd.collada+xml", + "model/vnd.dwf", + "model/vnd.gdl", + "model/vnd.gtw", + "model/vnd.mts", + "model/vnd.opengex", + "model/vnd.parasolid.transmit.binary", + "model/vnd.parasolid.transmit.text", + "model/vnd.sap.vds", + "model/vnd.usdz+zip", + "model/vnd.valve.source.compiled-map", + "model/vnd.vtu", + "model/vrml", + "model/vrml", + "model/x3d+fastinfoset", + "model/x3d+binary", + "model/x3d-vrml", + "model/x3d+vrml", + "model/x3d+xml", + "model/x3d+xml", + "text/cache-manifest", + "text/cache-manifest", + "text/calendar", + "text/calendar", + "text/coffeescript", + "text/coffeescript", + "text/css", + "text/csv", + "text/html", + "text/html", + "text/html", + "text/jade", + "text/jsx", + "text/less", + "text/markdown", + "text/markdown", + "text/mathml", + "text/mdx", + "text/n3", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/plain", + "text/prs.lines.tag", + "text/richtext", + "text/sgml", + "text/sgml", + "text/shex", + "text/slim", + "text/slim", + "text/spdx", + "text/stylus", + "text/stylus", + "text/tab-separated-values", + "text/troff", + "text/troff", + "text/troff", + "text/troff", + "text/troff", + "text/troff", + "text/turtle", + "text/uri-list", + "text/uri-list", + "text/uri-list", + "text/vcard", + "text/vnd.curl", + "text/vnd.curl.dcurl", + "text/vnd.curl.mcurl", + "text/vnd.curl.scurl", + "text/vnd.familysearch.gedcom", + "text/vnd.fly", + "text/vnd.fmi.flexstor", + "text/vnd.graphviz", + "text/vnd.in3d.3dml", + "text/vnd.in3d.spot", + "text/vnd.sun.j2me.app-descriptor", + "text/vnd.wap.wml", + "text/vnd.wap.wmlscript", + "text/vtt", + "text/x-asm", + "text/x-asm", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-c", + "text/x-component", + "text/x-fortran", + "text/x-fortran", + "text/x-fortran", + "text/x-fortran", + "text/x-handlebars-template", + "text/x-java-source", + "text/x-lua", + "text/x-markdown", + "text/x-nfo", + "text/x-opml", + "text/x-pascal", + "text/x-pascal", + "text/x-processing", + "text/x-sass", + "text/x-scss", + "text/x-setext", + "text/x-sfv", + "text/x-suse-ymp", + "text/x-uuencode", + "text/x-vcalendar", + "text/x-vcard", + "text/yaml", + "text/yaml", + "video/3gpp", + "video/3gpp2", + "video/h261", + "video/h263", + "video/h264", + "video/iso.segment", + "video/jpeg", + "video/jpm", + "video/mj2", + "video/mj2", + "video/mp2t", + "video/mp4", + "video/mp4", + "video/mp4", + "video/mpeg", + "video/mpeg", + "video/mpeg", + "video/mpeg", + "video/mpeg", + "video/ogg", + "video/quicktime", + "video/quicktime", + "video/vnd.dece.hd", + "video/vnd.dece.hd", + "video/vnd.dece.mobile", + "video/vnd.dece.mobile", + "video/vnd.dece.pd", + "video/vnd.dece.pd", + "video/vnd.dece.sd", + "video/vnd.dece.sd", + "video/vnd.dece.video", + "video/vnd.dece.video", + "video/vnd.dvb.file", + "video/vnd.fvt", + "video/vnd.mpegurl", + "video/vnd.mpegurl", + "video/vnd.ms-playready.media.pyv", + "video/vnd.uvvu.mp4", + "video/vnd.uvvu.mp4", + "video/vnd.vivo", + "video/webm", + "video/x-f4v", + "video/x-fli", + "video/x-flv", + "video/x-m4v", + "video/x-matroska", + "video/x-matroska", + "video/x-matroska", + "video/x-mng", + "video/x-ms-asf", + "video/x-ms-asf", + "video/x-ms-vob", + "video/x-ms-wm", + "video/x-ms-wmv", + "video/x-ms-wmx", + "video/x-ms-wvx", + "video/x-msvideo", + "video/x-sgi-movie", + "video/x-smv", + "x-conference/x-cooltalk" + ], + "challenges": { + "enabled": true, + "difficulty": 50000, + "expiration": 300, + "key": "" + } + } + }, + "defaults": { + "type": "object", + "properties": { + "visibility": { + "type": "string", + "default": "public" + }, + "language": { + "type": "string", + "default": "en" + }, + "avatar": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "header": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "placeholder_style": { + "type": "string", + "default": "thumbs" + } + }, + "additionalProperties": false, + "default": { + "visibility": "public", + "language": "en", + "placeholder_style": "thumbs" + } + }, + "federation": { + "type": "object", + "properties": { + "blocked": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "followers_only": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "discard": { + "type": "object", + "properties": { + "reports": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "deletes": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "updates": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "media": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "follows": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "likes": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "reactions": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "banners": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + }, + "avatars": { + "type": "array", + "items": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "default": [] + } + }, + "additionalProperties": false + }, + "bridge": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "software": { + "anyOf": [ + { + "type": "string", + "enum": ["lysand-ap"] + }, + { + "type": "string" + } + ] + }, + "allowed_ips": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "token": { + "type": "string", + "default": "" + }, + "url": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + } + }, + "required": ["software"], + "additionalProperties": false, + "default": { + "enabled": false, + "software": "lysand-ap", + "allowed_ips": [], + "token": "" + } + } + }, + "required": ["discard"], + "additionalProperties": false, + "default": { + "blocked": [], + "followers_only": [], + "discard": { + "reports": [], + "deletes": [], + "updates": [], + "media": [], + "follows": [], + "likes": [], + "reactions": [], + "banners": [], + "avatars": [] + }, + "bridge": { + "enabled": false, + "software": "lysand-ap", + "allowed_ips": [], + "token": "" + } + } + }, + "instance": { + "type": "object", + "properties": { + "name": { + "type": "string", + "minLength": 1, + "default": "Lysand" + }, + "description": { + "type": "string", + "minLength": 1, + "default": "A Lysand instance" + }, + "extended_description_path": { + "type": "string" + }, + "tos_path": { + "type": "string" + }, + "privacy_policy_path": { + "type": "string" + }, + "logo": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "banner": { + "$ref": "#/properties/http/properties/proxy/properties/address/anyOf/0" + }, + "keys": { + "type": "object", + "properties": { + "public": { + "anyOf": [ + { + "type": "string", + "minLength": 3, + "default": "" + }, + { + "type": "string", + "const": "" + } + ] + }, + "private": { + "anyOf": [ + { + "type": "string", + "minLength": 3, + "default": "" + }, + { + "type": "string", + "const": "" + } + ] + } + }, + "required": ["public", "private"], + "additionalProperties": false, + "default": { + "public": "", + "private": "" + } + } + }, + "additionalProperties": false, + "default": { + "name": "Lysand", + "description": "A Lysand instance", + "keys": { + "public": "", + "private": "" + } + } + }, + "permissions": { + "type": "object", + "properties": { + "anonymous": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "notes", + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "accounts", + "owner:account", + "read:account_follows", + "likes", + "owner:like", + "boosts", + "owner:boost", + "read:account", + "emojis", + "read:emoji", + "owner:emoji", + "media", + "owner:media", + "blocks", + "owner:block", + "filters", + "owner:filter", + "mutes", + "owner:mute", + "reports", + "owner:report", + "settings", + "owner:settings", + "roles", + "notifications", + "owner:notification", + "follows", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "ignore_rate_limits", + "impersonate", + "instance", + "instance:federation", + "instance:settings", + "oauth" + ] + }, + "default": [ + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "owner:account", + "read:account_follows", + "owner:like", + "owner:boost", + "read:account", + "owner:emoji", + "read:emoji", + "owner:media", + "owner:block", + "owner:filter", + "owner:mute", + "owner:report", + "owner:settings", + "owner:notification", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "oauth" + ] + }, + "default": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "notes", + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "accounts", + "owner:account", + "read:account_follows", + "likes", + "owner:like", + "boosts", + "owner:boost", + "read:account", + "emojis", + "read:emoji", + "owner:emoji", + "media", + "owner:media", + "blocks", + "owner:block", + "filters", + "owner:filter", + "mutes", + "owner:mute", + "reports", + "owner:report", + "settings", + "owner:settings", + "roles", + "notifications", + "owner:notification", + "follows", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "ignore_rate_limits", + "impersonate", + "instance", + "instance:federation", + "instance:settings", + "oauth" + ] + }, + "default": [ + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "owner:account", + "read:account_follows", + "owner:like", + "owner:boost", + "read:account", + "owner:emoji", + "read:emoji", + "owner:media", + "owner:block", + "owner:filter", + "owner:mute", + "owner:report", + "owner:settings", + "owner:notification", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "oauth" + ] + }, + "admin": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "notes", + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "accounts", + "owner:account", + "read:account_follows", + "likes", + "owner:like", + "boosts", + "owner:boost", + "read:account", + "emojis", + "read:emoji", + "owner:emoji", + "media", + "owner:media", + "blocks", + "owner:block", + "filters", + "owner:filter", + "mutes", + "owner:mute", + "reports", + "owner:report", + "settings", + "owner:settings", + "roles", + "notifications", + "owner:notification", + "follows", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "ignore_rate_limits", + "impersonate", + "instance", + "instance:federation", + "instance:settings", + "oauth" + ] + }, + "default": [ + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "owner:account", + "read:account_follows", + "owner:like", + "owner:boost", + "read:account", + "owner:emoji", + "read:emoji", + "owner:media", + "owner:block", + "owner:filter", + "owner:mute", + "owner:report", + "owner:settings", + "owner:notification", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "oauth", + "notes", + "accounts", + "likes", + "boosts", + "emojis", + "media", + "blocks", + "filters", + "mutes", + "reports", + "settings", + "roles", + "notifications", + "follows", + "impersonate", + "ignore_rate_limits", + "instance", + "instance:federation", + "instance:settings" + ] + } + }, + "additionalProperties": false, + "default": { + "anonymous": [ + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "owner:account", + "read:account_follows", + "owner:like", + "owner:boost", + "read:account", + "owner:emoji", + "read:emoji", + "owner:media", + "owner:block", + "owner:filter", + "owner:mute", + "owner:report", + "owner:settings", + "owner:notification", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "oauth" + ], + "default": [ + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "owner:account", + "read:account_follows", + "owner:like", + "owner:boost", + "read:account", + "owner:emoji", + "read:emoji", + "owner:media", + "owner:block", + "owner:filter", + "owner:mute", + "owner:report", + "owner:settings", + "owner:notification", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "oauth" + ], + "admin": [ + "owner:note", + "read:note", + "read:note_likes", + "read:note_boosts", + "owner:account", + "read:account_follows", + "owner:like", + "owner:boost", + "read:account", + "owner:emoji", + "read:emoji", + "owner:media", + "owner:block", + "owner:filter", + "owner:mute", + "owner:report", + "owner:settings", + "owner:notification", + "owner:follow", + "owner:app", + "search", + "public_timelines", + "private_timelines", + "oauth", + "notes", + "accounts", + "likes", + "boosts", + "emojis", + "media", + "blocks", + "filters", + "mutes", + "reports", + "settings", + "roles", + "notifications", + "follows", + "impersonate", + "ignore_rate_limits", + "instance", + "instance:federation", + "instance:settings" + ] + } + }, + "filters": { + "type": "object", + "properties": { + "note_content": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "emoji": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "username": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "displayname": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + }, + "bio": { + "type": "array", + "items": { + "type": "string" + }, + "default": [] + } + }, + "additionalProperties": false + }, + "logging": { + "type": "object", + "properties": { + "log_requests": { + "type": "boolean", + "default": false + }, + "log_requests_verbose": { + "type": "boolean", + "default": false + }, + "log_level": { + "type": "string", + "enum": ["debug", "info", "warning", "error", "fatal"], + "default": "info" + }, + "log_ip": { + "type": "boolean", + "default": false + }, + "log_filters": { + "type": "boolean", + "default": true + }, + "sentry": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "default": false + }, + "dsn": { + "anyOf": [ + { + "type": "string", + "format": "uri" + }, + { + "type": "string", + "const": "" + } + ] + }, + "debug": { + "type": "boolean", + "default": false + }, + "sample_rate": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "traces_sample_rate": { + "type": "number", + "minimum": 0, + "maximum": 1, + "default": 1 + }, + "max_breadcrumbs": { + "type": "number", + "default": 100 + }, + "environment": { + "type": "string" + } + }, + "additionalProperties": false, + "default": { + "enabled": false, + "debug": false, + "sample_rate": 1, + "traces_sample_rate": 1, + "max_breadcrumbs": 100 + } + }, + "storage": { + "type": "object", + "properties": { + "requests": { + "type": "string", + "default": "logs/requests.log" + } + }, + "additionalProperties": false, + "default": { + "requests": "logs/requests.log" + } + } + }, + "additionalProperties": false, + "default": { + "log_requests": false, + "log_requests_verbose": false, + "log_level": "info", + "log_ip": false, + "log_filters": true, + "sentry": { + "enabled": false, + "debug": false, + "sample_rate": 1, + "traces_sample_rate": 1, + "max_breadcrumbs": 100 + }, + "storage": { + "requests": "logs/requests.log" + } + } + }, + "ratelimits": { + "type": "object", + "properties": { + "duration_coeff": { + "type": "number", + "default": 1 + }, + "max_coeff": { + "type": "number", + "default": 1 + }, + "custom": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "duration": { + "type": "number", + "default": 30 + }, + "max": { + "type": "number", + "default": 60 + } + }, + "additionalProperties": false + }, + "default": {} + } + }, + "additionalProperties": false + }, + "debug": { + "type": "object", + "properties": { + "federation": { + "type": "boolean", + "default": false + } + }, + "additionalProperties": false, + "default": { + "federation": false + } + } + }, + "required": [ + "database", + "redis", + "sonic", + "signups", + "oidc", + "http", + "smtp", + "filters", + "ratelimits" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" +} diff --git a/package.json b/package.json index a431a752..57131cca 100644 --- a/package.json +++ b/package.json @@ -89,7 +89,8 @@ "drizzle-kit": "^0.23.0", "oclif": "^4.14.9", "ts-prune": "^0.10.3", - "typescript": "^5.5.4" + "typescript": "^5.5.4", + "zod-to-json-schema": "^3.23.1" }, "peerDependencies": { "typescript": "^5.3.2" diff --git a/packages/config-manager/json-schema.ts b/packages/config-manager/json-schema.ts new file mode 100644 index 00000000..cd4d48b8 --- /dev/null +++ b/packages/config-manager/json-schema.ts @@ -0,0 +1,6 @@ +import { zodToJsonSchema } from "zod-to-json-schema"; +import { configValidator } from "./config.type"; + +const jsonSchema = zodToJsonSchema(configValidator); + +console.write(`${JSON.stringify(jsonSchema, null, 4)}\n`);