APIs

From Redazione
Jump to navigation Jump to search

While you are establishing your organization's page structure at an address like the following

https://culturaitaliana.org/wiki/Centro_italiano_Barcellona

that is structuring all your information optionally using semantic data through this wiki platform, you can start querying your pages (or even all your site) through the following set of APIs, for instance in order to display them in your wordpress site, or in whatever third party site written in any computer language.

The following endpoints do not directly query the standard mediawiki APIs, but an extended APIs built on top of the mediawiki APIs (called autonomously by an internal script running in the background which keeps updated all the information) providing additional data, like the detected language for each page, all the semantic data related to each page, the "title structure" (to allow the use of slashes within the title itself, ensuring at the same time the coherence of the hierarchical structure) and more.

Basically, through the following APIs you can query all the information of the created pages or a specific "folder" within it (also retrieving a structured table of contents which can be easily used to create navigation panels, and of course, html content of pages) without dealing with the complexity and lack of immediacy of the standard Mediawiki api, which would require multiple calls and further elaboration to reach that result.


pages/fetch

The following endpoint retrieves one or more wiki pages under a specific path.

If requested, it also returns a structured table of contents associated to the set of returned pages, a useful set of data for each page (including the rendered html, categories, all the related semantic properties, the detected language, the original page url, and more), and information about the organization related to the requested set of pages (if any).

It is enough flexible to make possible the front-end site corresponding to this set of pages (the link points to itself in the eventuality you are already reading herein), which provides server-side rendering, storage of pages and table of contents within a client-side database, previous/next page navigation, filtering of pages based on detected languages, and more: all that using just 2 calls (one server side, and one client side) of the following API !


Examples of API calls


Example request

https://culturaitaliana.org/api/pages/fetch?title=How_it_works/Technology_we_use&options=data

The request will return only the page set as title, with all data related to it.


Example response

{
   "success":true,
   "pages":[
      {
         "pageid":1065,
         "title":"How it works/Technology we use",
         "html":"<div class=\"mw-parser-output\"><div class=\"mf-section-0\" id=\"mf-section-0\"><p>Here is a list of the tools we use to make this platform work.\nOf course each of them depends in turn by other tools (for instance\n<a rel=\"nofollow\" class=\"external text\" href=\"https://quasar.dev/\" target=\"_blank\">Quasar Framework</a> depends on <a rel=\"nofollow\" class=\"external text\" href=\"https://vuejs.org/\" target=\"_blank\">Vue.js</a>, and Vue.js is in turn composed\nby several components), however, given a set even arbitrary of\nthe most prominent tools we use, the reader might explore the vast areas not covered by the following table both in extension and in depth.\n</p><p><br></p>\n<div class=\"wikitable_container\"><table class=\"wikitable\"><caption>\n</caption>\n<tbody><tr><th>software\n</th>\n<th>description\n</th>\n<th>use\n</th></tr><tr><td><a class=\"external text\" href=\"https://www.mediawiki.org/wiki/MediaWiki\" target=\"_blank\">Mediawiki 1.35</a>\n</td>\n<td>The collaboration and documentation platform which inspired and powers <a rel=\"nofollow\" class=\"external text\" href=\"https://www.wikipedia.org/\" target=\"_blank\">Wikipedia</a>.\n</td>\n<td>We use it for the back-end side of this site, in order to ensure collaborative creation of quality contents.\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/wiki/Special:Version\" target=\"_blank\">Mediawiki extensions</a>\n</td>\n<td>Plugins extending the set of features of Mediawiki.\n</td>\n<td>Some of the most prominent extensions include: <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Extension:Page_Forms\" target=\"_blank\">Page forms</a>, <a rel=\"nofollow\" class=\"external text\" href=\"https://www.semantic-mediawiki.org/wiki/Semantic_MediaWiki\" target=\"_blank\">Semantic Mediawiki</a>, <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Extension:VisualEditor\" target=\"_blank\">Visual editor</a>, <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Extension:MsUpload\" target=\"_blank\">Ms Upload</a>, <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Extension:MultimediaViewer\" target=\"_blank\">MultimediaViewer</a>, and more: we are also using a custom extension created by us!\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://quasar.dev/\" target=\"_blank\">Quasar framework</a>\n</td>\n<td>open-source <a rel=\"nofollow\" class=\"external text\" href=\"https://vuejs.org/\" target=\"_blank\">Vue.js</a> based framework for building apps\n</td>\n<td>We use it for all the <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/\" target=\"_blank\">Frontend part</a> of the site, taking advantage of its server side rendering feature\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://github.com/cheeriojs/cheerio#readme\" target=\"_blank\">Cheerio</a>\n</td>\n<td>DOM manipulation from an html string\n</td>\n<td>We use it to perform some adjustments to the mediawiki html output before recording the last version of a page to be served through the <a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">APIs</a>\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://github.com/jquery/esprima\" target=\"_blank\">Esprima</a>\n</td>\n<td>ECMAScript parser\n</td>\n<td>We use it to securely parse the javascript object produced by the <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/wiki/Frontend_Index\" target=\"_blank\">Frontend Index</a> storing the structure of the tree\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://github.com/macbre/nodemw\" target=\"_blank\">nodemw</a>\n</td>\n<td><a rel=\"nofollow\" class=\"external text\" href=\"https://nodejs.org/en/\" target=\"_blank\">Node.js</a> interface for the Mediawiki APIs\n</td>\n<td>We use it to call the <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/w/api.php\" target=\"_blank\">mediawiki APIs</a> from a Node.js script to retrieve and structure wiki pages before serving them through the <a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">APIs</a>\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://detectlanguage.com/\" target=\"_blank\">detectlanguage</a>\n</td>\n<td>Language identification JSON webservice\n</td>\n<td>We use it to determine the language of a wiki page, in order to filter them by language in the frontend site, or to perform hyphenation\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://cloud.google.com/translate/docs/basic/detecting-language\" target=\"_blank\">Detecting languages</a> (Google Cloud Translation)\n</td>\n<td>Language detect using Google Cloud Translation APIs\n</td>\n<td>As above, we use both of them concurrently\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"http://knexjs.org/\" target=\"_blank\">Knex</a>\n</td>\n<td>Query builder for Node.js\n</td>\n<td>We use it to assemble <a rel=\"nofollow\" class=\"external text\" href=\"https://www.mysql.com/\" target=\"_blank\">mysql</a> queries in our Node.js scripts\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://github.com/forwardemail/email-templates\" target=\"_blank\">Email templates</a>\n</td>\n<td>A wrapper for sending email using template engines (like <a rel=\"nofollow\" class=\"external text\" href=\"https://pugjs.org/api/getting-started.html\" target=\"_blank\">PUG</a>) and transports (like <a rel=\"nofollow\" class=\"external text\" href=\"https://nodemailer.com/about/\" target=\"_blank\">Nodemailer</a>)\n</td>\n<td>We use it to send email using PUG templates and Node mailer-<a rel=\"nofollow\" class=\"external text\" href=\"https://www.npmjs.com/package/nodemailer-sendgrid-transport\" target=\"_blank\">Sendgrid transport</a>\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://prismjs.com/\" target=\"_blank\">Prism</a>\n</td>\n<td>Javascript syntax highlighter\n</td>\n<td>We use it to display code snippets on the <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/How_it_works\" target=\"_blank\">Frontend site</a>\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://www.npmjs.com/package/jsonwebtoken\" target=\"_blank\">jsonwebtoken</a>\n</td>\n<td>Node.js implementation of An implementation of <a rel=\"nofollow\" class=\"external text\" href=\"https://jwt.io/\" target=\"_blank\">JSON Web Tokens</a>.\n</td>\n<td>We use it to signin a student accessing to <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/classes\" target=\"_blank\">Classes</a>\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://github.com/mar10/fancytree\" target=\"_blank\">fancytree</a>\n</td>\n<td>Javascript library providing interactive trees based on hierarchical data structures\n</td>\n<td>We use it to display a structured and editable <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/wiki/Frontend_Index\" target=\"_blank\">table of contents</a> of a given set of wiki pages to be used as navigation panel in the related front-end site.\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://mnater.github.io/Hyphenopoly/Hyphenators.html\" target=\"_blank\">Hyphenopoly</a>\n</td>\n<td>"Hyphenation for node and Polyfill for client-side hyphenation."\n</td>\n<td>We use it to hyphenate the organization or documentation's pages based on the detected language of each wiki page. Especially important on mobile devices combined with justified columns.\n</td></tr><tr><td><a rel=\"nofollow\" class=\"external text\" href=\"https://pouchdb.com/\" target=\"_blank\">pouchdb</a>\n</td>\n<td>client-side open-source JavaScript database inspired by <a rel=\"nofollow\" class=\"external text\" href=\"https://couchdb.apache.org/\" target=\"_blank\">CouchDB</a>\n</td>\n<td>We use it to store all the organization or documentation's pages on the client, to minimize loading data from the server and to allow offline navigation\n</td></tr></tbody></table></div><p><br>\n... and more ! The list is in progress !\n</p><p><br></p>\n\n\n\n\n</div></div>",
         "url":"https://culturaitaliana.org/wiki/How_it_works/Technology_we_use",
         "language_detected":"en",
         "form_name":null,
         "form_data":{

         },
         "categories":[

         ],
         "title_structure":[
            "How it works",
            "Technology we use"
         ],
         "modification_time":1594281740
      }
   ],
   "info":{
      "last_modification_time":1594281740,
      "detected_languages":{
         "en":"English"
      },
      "total_pages":1
   },
   "execution_time":"10ms"
}


Example request

https://culturaitaliana.org/api/pages/fetch?root_page=How_it_works&pages=Application_form|Join_team&subpages_data=modification_time|title_structure&options=TOC

The request will return all sub-pages of the indicated root_page, retrieving only modification_time and title_structure for each of them, and all the available data (including html content) of the pages 'Application_form' and 'Join_team'. It will also include the table of contents (TOC) related to the root_page (if the root page itself or one of the parent page have any).


Example response

{
   "success":true,
   "TOC":[
      {
         "id":1042,
         "language":"en",
         "path":"How it works",
         "text":"How it works",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "language":"en",
         "text":"For administrators",
         "children":[
            {
               "id":1052,
               "language":"en",
               "path":"How it works/For administrators",
               "text":"For administrators",
               "children":[

               ],
               "state":{
                  "selected":true,
                  "opened":true
               }
            },
            {
               "id":1053,
               "language":"en",
               "path":"How it works/For administrators/Instructions for use",
               "text":"Instructions for use",
               "children":[

               ],
               "state":{
                  "selected":true,
                  "opened":true
               }
            },
            {
               "id":1069,
               "language":"en",
               "path":"How it works/For administrators/To-do",
               "text":"To-do",
               "children":[

               ],
               "state":{
                  "selected":true,
                  "opened":true
               }
            }
         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1049,
         "language":"en",
         "path":"How it works/Banner",
         "text":"Banner",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1058,
         "language":"en",
         "path":"How it works/Private wiki",
         "text":"Private wiki",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1043,
         "language":"en",
         "path":"How it works/Introduction",
         "text":"Introduction",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1050,
         "language":"en",
         "path":"How it works/Pages structure",
         "text":"Pages structure",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1057,
         "language":"en",
         "path":"How it works/Images upload & gallery",
         "text":"Images upload & gallery",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1054,
         "language":"en",
         "path":"How it works/Parser functions",
         "text":"Parser functions",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":66,
         "language":"en",
         "path":"How it works/Application form",
         "text":"Application form",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1074,
         "language":"en",
         "path":"How it works/Editing guidelines & tips",
         "text":"Editing guidelines & tips",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1065,
         "language":"en",
         "path":"How it works/Technology we use",
         "text":"Technology we use",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":68,
         "language":"en",
         "path":"How it works/Join team",
         "text":"Join team",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1075,
         "language":"en",
         "path":"How it works/Forms & semantic data (naming convention)",
         "text":"Forms & semantic data (naming convention)",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1041,
         "language":"en",
         "path":"How it works/APIs",
         "text":"APIs",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1055,
         "language":"en",
         "path":"How it works/Forms & semantic data",
         "text":"Forms & semantic data",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1056,
         "language":"en",
         "path":"How it works/Logically related questions",
         "text":"Logically related questions",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      }
   ],
   "pages":[
      {
         "pageid":1042,
         "title":"How it works",
         "title_structure":[
            "How it works"
         ],
         "modification_time":1594371519
      },
      {
         "pageid":1052,
         "title":"How it works/For administrators",
         "title_structure":[
            "How it works",
            "For administrators"
         ],
         "modification_time":1592737278
      },
      {
         "pageid":1053,
         "title":"How it works/For administrators/Instructions for use",
         "title_structure":[
            "How it works",
            "For administrators",
            "Instructions for use"
         ],
         "modification_time":1594282604
      },
      {
         "pageid":1069,
         "title":"How it works/For administrators/To-do",
         "title_structure":[
            "How it works",
            "For administrators",
            "To-do"
         ],
         "modification_time":1594332193
      },
      {
         "pageid":1049,
         "title":"How it works/Banner",
         "title_structure":[
            "How it works",
            "Banner"
         ],
         "modification_time":1592935299
      },
      {
         "pageid":1058,
         "title":"How it works/Private wiki",
         "title_structure":[
            "How it works",
            "Private wiki"
         ],
         "modification_time":1592935383
      },
      {
         "pageid":1043,
         "title":"How it works/Introduction",
         "title_structure":[
            "How it works",
            "Introduction"
         ],
         "modification_time":1593347951
      },
      {
         "pageid":1050,
         "title":"How it works/Pages structure",
         "title_structure":[
            "How it works",
            "Pages structure"
         ],
         "modification_time":1593377929
      },
      {
         "pageid":1057,
         "title":"How it works/Images upload & gallery",
         "title_structure":[
            "How it works",
            "Images upload & gallery"
         ],
         "modification_time":1593378154
      },
      {
         "pageid":1054,
         "title":"How it works/Parser functions",
         "title_structure":[
            "How it works",
            "Parser functions"
         ],
         "modification_time":1593382757
      },
      {
         "pageid":66,
         "title":"How it works/Application form",
         "title_structure":[
            "How it works",
            "Application form"
         ],
         "modification_time":1593383639
      },
      {
         "pageid":1074,
         "title":"How it works/Editing guidelines & tips",
         "title_structure":[
            "How it works",
            "Editing guidelines & tips"
         ],
         "modification_time":1594199251
      },
      {
         "pageid":1065,
         "title":"How it works/Technology we use",
         "title_structure":[
            "How it works",
            "Technology we use"
         ],
         "modification_time":1594281740
      },
      {
         "pageid":68,
         "title":"How it works/Join team",
         "title_structure":[
            "How it works",
            "Join team"
         ],
         "modification_time":1594283045
      },
      {
         "pageid":1075,
         "title":"How it works/Forms & semantic data (naming convention)",
         "title_structure":[
            "How it works",
            "Forms & semantic data (naming convention)"
         ],
         "modification_time":1594309124
      },
      {
         "pageid":1041,
         "title":"How it works/APIs",
         "title_structure":[

         ],
         "modification_time":1594621984
      },
      {
         "pageid":1055,
         "title":"How it works/Forms & semantic data",
         "title_structure":[
            "How it works",
            "Forms & semantic data"
         ],
         "modification_time":1594322635
      },
      {
         "pageid":1056,
         "title":"How it works/Logically related questions",
         "title_structure":[
            "How it works",
            "Logically related questions"
         ],
         "modification_time":1594375188
      }
   ],
   "info":{
      "last_modification_time":1594621984,
      "detected_languages":{
         "en":"English"
      },
      "total_pages":18
   },
   "execution_time":"9ms"
}



Example request

https://culturaitaliana.org/api/pages/fetch?root_page=How_it_works&newer=1594363044&options=all_subpages_data

The request will return all the sub-pages of the indicated root_page newer than the provided timestamp, with all page's data of each of them.


Example response

{
   "success":true,
   "TOC":[
      {
         "id":1042,
         "language":"en",
         "path":"How it works",
         "text":"How it works",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "language":"en",
         "text":"For administrators",
         "children":[
            {
               "id":1052,
               "language":"en",
               "path":"How it works/For administrators",
               "text":"For administrators",
               "children":[

               ],
               "state":{
                  "selected":true,
                  "opened":true
               }
            },
            {
               "id":1053,
               "language":"en",
               "path":"How it works/For administrators/Instructions for use",
               "text":"Instructions for use",
               "children":[

               ],
               "state":{
                  "selected":true,
                  "opened":true
               }
            },
            {
               "id":1069,
               "language":"en",
               "path":"How it works/For administrators/To-do",
               "text":"To-do",
               "children":[

               ],
               "state":{
                  "selected":true,
                  "opened":true
               }
            }
         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1049,
         "language":"en",
         "path":"How it works/Banner",
         "text":"Banner",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1058,
         "language":"en",
         "path":"How it works/Private wiki",
         "text":"Private wiki",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1043,
         "language":"en",
         "path":"How it works/Introduction",
         "text":"Introduction",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1050,
         "language":"en",
         "path":"How it works/Pages structure",
         "text":"Pages structure",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1057,
         "language":"en",
         "path":"How it works/Images upload & gallery",
         "text":"Images upload & gallery",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1054,
         "language":"en",
         "path":"How it works/Parser functions",
         "text":"Parser functions",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":66,
         "language":"en",
         "path":"How it works/Application form",
         "text":"Application form",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1074,
         "language":"en",
         "path":"How it works/Editing guidelines & tips",
         "text":"Editing guidelines & tips",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1065,
         "language":"en",
         "path":"How it works/Technology we use",
         "text":"Technology we use",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":68,
         "language":"en",
         "path":"How it works/Join team",
         "text":"Join team",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1075,
         "language":"en",
         "path":"How it works/Forms & semantic data (naming convention)",
         "text":"Forms & semantic data (naming convention)",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1041,
         "language":"en",
         "path":"How it works/APIs",
         "text":"APIs",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1055,
         "language":"en",
         "path":"How it works/Forms & semantic data",
         "text":"Forms & semantic data",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      },
      {
         "id":1056,
         "language":"en",
         "path":"How it works/Logically related questions",
         "text":"Logically related questions",
         "children":[

         ],
         "state":{
            "selected":true,
            "opened":true
         }
      }
   ],
   "pages":[
      {
         "pageid":1042,
         "title":"How it works",
         "html":"<div class=\"mw-parser-output\"><div class=\"mf-section-0\" id=\"mf-section-0\">\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Introduction\">Introduction</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=1\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Introduction\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=1\" title=\"Edit section: Introduction\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-1\" id=\"mf-section-1\">\n<p><span style=\"font-size: 32px;line-height: 1em;padding-right: 6px\" class=\"BroadcastMatter\">Cultura italiana</span> is a project aiming to create a network and to enhance cooperation among centers of Italian culture and language at abroad.\n</p><p>It is meant to be composed of at least 2 components: a back-end platform, represented by <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/wiki\" target=\"_blank\">this mediawiki site</a> where authorized staff of centers of Italian culture and language can add or structure the organization information in a collaborative way and with attention for semantic data, and by a front-end platform, currently represented by <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/\" target=\"_blank\">this site</a>, where the created contents can be viewed, searched and enjoyed by visitors in an attractive and modern way, including from mobile devices.\n</p><p>The project is being implemented within the frame of a <a rel=\"nofollow\" class=\"external text\" href=\"https://eacea.ec.europa.eu/sites/european-solidarity-corps_en\" target=\"_blank\">Solidarity Corps</a> project (funded by European Union), is supported at the moment by the center of Italian culture and language in charge of the project which ensures its continuity over time (as well as that the requirements of the project are met) and foresees the inclusion of other institutions and organizations interested in taking part to the initiative.\n</p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Introduction\" title=\"How it works/Introduction\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Application_form\">Application form</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=2\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Application form\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=2\" title=\"Edit section: Application form\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-2\" id=\"mf-section-2\">\n<p>The use of this platform is free for all Italian language and culture\norganizations world-wide.\n</p><p>Just fill in the form below and we will contact you promptly in order\nto set up your account and to send you any useful information.\nYou will be able to create and edit any content within your subpages,\nhowever on a first time their \nactual publishing will be subjected to moderation by the administrators\nof this site, in order to ensure consistency of data, and the quality of\ncontents.\n</p><p>In a second time (supposedly by January 2021) as soon as the general site \nand contents structure get consolidated, contents will be allowed\nfor editing by managers of any organization without any internal\nmoderation.\n</p><p><br></p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Application_form\" title=\"How it works/Application form\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Pages_structure\">Pages structure</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=3\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Pages structure\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=3\" title=\"Edit section: Pages structure\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-3\" id=\"mf-section-3\">\n<p>After the registration, you will be assigned with a specific\n"domain" corresponding to a page in the form\n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/wiki/[organization name]\n</pre>\n<p><br>\nand an arbitrary number of subpages within it. Here are some information of a subpage from wikipedia:\n</p>\n<blockquote>\n<p>Making a new <i>[[link]]</i> that begins with a / (slash) is the common way to start a subpage. The page to which this link points is considered "subordinate" to its host page, and is titled and linked as <i>[[Parentpage/Subpage]]</i>.  It is possible to create a subpage of a subpage (or a sub-subpage). At the top of each subpage or sub-subpage, you can find a <a rel=\"nofollow\" class=\"external text\" href=\"https://en.wikipedia.org/wiki/backlink\" target=\"_blank\">backlink</a> (a.k.a. <a rel=\"nofollow\" class=\"external text\" href=\"https://en.wikipedia.org/wiki/breadcrumb_(navigation)\" target=\"_blank\">breadcrumb</a>) to the higher levels of the page.\n</p>\n</blockquote>\n<p>In short all the pages of your organization will be located under a dedicated address but at the same time they will reside in a shared environment, both to ensure collaborativeness among organizations, and because by this way you can enjoy, de facto, a fully maintained platform, where site's administrators (meant to be IT professionals) will take care of the consistency of the wikicode (which entails some complexity) as well as of extensions, templates, modules, semantic properties, and all other elements which guarantee a profitable and rich experience both from the side of visitors, and the organizations themselves.\n</p><p><br></p><p><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Pages_structure\" title=\"How it works/Pages structure\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span id=\"Forms_&_semantic_data\"></span><span class=\"mw-headline\" id=\"Forms_.26_semantic_data\">Forms & semantic data</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=4\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Forms & semantic data\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=4\" title=\"Edit section: Forms & semantic data\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-4\" id=\"mf-section-4\">\n<p>Semantic data allow a data consumer to accurately retrieve data based on their semantic meaning.\nFor instance, an internal search engine might serve all your pages marked as "article" to a user searching for articles created by your organization, or articles of a given author, written in a specific time frame, courses of a given languages, delivered by a specific teacher, and so forth.\n</p><p>In order to reach this purpose, we have created a rich set of semantic properties and forms (a form might be considered a container of a consistent set of semantic properties) which can be simply inserted in any wiki page, can be edited as a form therein, and which will transform an "anonymous" wiki page (or html page as soon as it is served) in a database of semantic contents which can be used in the most profitable ways.\n</p><p>For instance, if you create a wiki page describing one of your language courses for a given academic year, that information can be displayed within the main portal of this platform (or by whatever other data consumer which will query the <a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">APIs</a>) within a list of available language courses, and to fuel interactive functions, for instance the purchase of a number of lessons by a student, a chat between a prospective student and school's manager, and more.\n</p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Forms_%26_semantic_data\" title=\"How it works/Forms & semantic data\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span id=\"Forms_&_semantic_data_(naming_convention)\"></span><span class=\"mw-headline\" id=\"Forms_.26_semantic_data_.28naming_convention.29\">Forms & semantic data (naming convention)</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=5\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Forms & semantic data (naming convention)\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=5\" title=\"Edit section: Forms & semantic data (naming convention)\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-5\" id=\"mf-section-5\">\n<p>By design, we are using the following conventions to set forms/templates/properties names related to semantic properties.\n</p>\n<h3 class=\"in-block\"><span class=\"mw-headline\" id=\"Templates\">Templates</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/Forms_%26_semantic_data_(naming_convention)&veaction=edit&section=T-1\" class=\"mw-editsection-visualeditor\" title=\"Edit section: \">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/Forms_%26_semantic_data_(naming_convention)&action=edit&section=T-1\" title=\"Edit section: \">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h3>\n<p>Names of templates intended to forms are written in the following form:\n</p>\n<pre class=\"language-xxxx\">Template:Form article\n</pre>\n<p>that is the prefix "Template:", the keyword "Form" (uppercase) followed by the form name (lowercase). The form name might be composed by multiple words, e.g.: "Form language course"\n</p><p><br></p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Forms_%26_semantic_data_(naming_convention)\" title=\"How it works/Forms & semantic data (naming convention)\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span id=\"Images_upload_&_gallery\"></span><span class=\"mw-headline\" id=\"Images_upload_.26_gallery\">Images upload & gallery</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=6\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Images upload & gallery\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=6\" title=\"Edit section: Images upload & gallery\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-6\" id=\"mf-section-6\">\n<p>The mediawiki version (1.35) powering this platform has been enhanced in order\nto support the storage of images and media files at a specific path, so that each\norganization can save all their images within a specific "folder" (under the main\npage itself of the organization, or whatever subpage within it) and can easily\nretrieve them from the visual editor media gallery, without mixing up their files\nwith those of other organizations, and without file names conflicts or restrictions.\n</p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Upload_multiple_images_through_WikiEditor\">Upload multiple images through <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Extension:WikiEditor\" target=\"_blank\">WikiEditor</a></span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/Images_upload_%26_gallery&veaction=edit&section=T-1\" class=\"mw-editsection-visualeditor\" title=\"Edit section: \">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/Images_upload_%26_gallery&action=edit&section=T-1\" title=\"Edit section: \">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-7\" id=\"mf-section-7\">\n<p><span style=\"font-size: 32px;line-height: 1em;padding-right: 6px\" class=\"BroadcastMatter\">Cultura italiana</span> offers a forked version of <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Extension:MsUpload\" target=\"_blank\">MsUpload</a> in order to automatically upload multiple pictures at a given path. Just click the button below\n</p>\n<div class=\"thumb tnone\"><div class=\"thumbinner\" style=\"width:302px;\"><a href=\"https://culturaitaliana.org/wiki/File:Instructions_for_use/Upload-screenshot_a.jpg\" class=\"image\"><img alt src=\"https://culturaitaliana.org/w/images/thumb/Instructions_for_use/Upload-screenshot_a.jpg/300px-Upload-screenshot_a.jpg\" decoding=\"async\" width=\"300\" height=\"146\" class=\"thumbimage\" srcset=\"https://culturaitaliana.org/w/images/thumb/Instructions_for_use/Upload-screenshot_a.jpg/450px-Upload-screenshot_a.jpg 1.5x, https://culturaitaliana.org/w/images/thumb/Instructions_for_use/Upload-screenshot_a.jpg/600px-Upload-screenshot_a.jpg 2x\" data-file-width=\"1280\" data-file-height=\"621\"></a>  <div class=\"thumbcaption\"><div class=\"magnify\"><a href=\"https://culturaitaliana.org/wiki/File:Instructions_for_use/Upload-screenshot_a.jpg\" class=\"internal\" title=\"Enlarge\"></a></div></div></div></div>\n<p>and include the uploaded pictures using the interface.\n</p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Images_upload_%26_gallery\" title=\"How it works/Images upload & gallery\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Frontend_Index\">Frontend Index</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=7\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Frontend Index\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=7\" title=\"Edit section: Frontend Index\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-8\" id=\"mf-section-8\">\n<p>The wiki page 'Frontend Index' contains a structured index of all your organization's page\nautomatically created and updated by a server-side script.\n</p><p>This index is the editable instance of the index provided by the APIs <a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">pages/fetch</a> and it is used as well from the official front end version of your\nwebsite (for instance of this <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/organizations/Istituto_cultura_italiana_(NGO)\" target=\"_blank\">organization</a>) in order to display the navigation menu on the left.\n</p><p>Through the editable Index on that wiki page, you can hide/unhide pages on the front end site (and therefore not present in the index) and even to rearrange them.\n</p><p>This is the <a href=\"https://culturaitaliana.org/wiki/Frontend_Index\" title=\"Frontend Index\">Frontend Index</a> of the root pages of this wiki and the Frontend Index of each organization will reside at the path \n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/wiki/[organization name]/Frontend_Index\n</pre>\n<p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Banner\">Banner</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=8\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Banner\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=8\" title=\"Edit section: Banner\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-9\" id=\"mf-section-9\">\n<p>Every wikipage of your organization can be headed by your organization's banner.\nJust upload a banner at an address like the following\n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/wiki/[organization name]/Banner.jpg\n</pre>\n<p>(the banner is therefore expected to be in jpeg format) and the system\nwill automatically display it before each of your pages!\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"APIs\">APIs</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=9\" class=\"mw-editsection-visualeditor\" title=\"Edit section: APIs\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=9\" title=\"Edit section: APIs\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-10\" id=\"mf-section-10\">\n<p>While you are establishing your organization's page structure at an address like \nthe following \n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/wiki/Centro_italiano_Barcellona\n</pre>\n<p>that is structuring all your information optionally using\nsemantic data through this wiki platform, you can start\nquerying your pages (or even all your site) through the\nfollowing set of APIs, for instance in order to display\nthem in your wordpress site, or in whatever third party site\nwritten in any computer language.\n</p><p>The following endpoints do not directly query the standard mediawiki APIs,\nbut an extended APIs built on top of the mediawiki APIs (called \nautonomously by an internal script which keeps updated all\nthe information) providing additional data, like the detected language\nfor each page, all the semantic data related to each page, the "title\nstructure" (to allow the use of slashes within the title itself, ensuring\nat the same time the coherence of the hierarchical structure) and more.\n</p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Parser_functions\">Parser functions</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=10\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Parser functions\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=10\" title=\"Edit section: Parser functions\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-11\" id=\"mf-section-11\">\n<p>Currently this platform offers the additional parser functions.\nThey are prefixed with the prefix "ci_" to distinguish them easily from the standard mediawiki <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Help:Magic_words\" target=\"_blank\">magic words</a> and <a class=\"external text\" href=\"https://www.mediawiki.org/wiki/Help:Extension:ParserFunctions\" target=\"_blank\">parser functions</a>.\n</p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Basic_functions\">Basic functions</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/Parser_functions&veaction=edit&section=T-1\" class=\"mw-editsection-visualeditor\" title=\"Edit section: \">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/Parser_functions&action=edit&section=T-1\" title=\"Edit section: \">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-12\" id=\"mf-section-12\">\n<p>(to be converted to <i>magic words</i> in a second time)\n</p>\n<div class=\"wikitable_container\"><table class=\"wikitable\"><caption>\n</caption>\n<tbody><tr><th>function name\n</th>\n<th>return value\n</th>\n<th>example\n</th>\n<th>result\n</th></tr><tr><td>ci_userAffiliatedTo\n</td>\n<td>logged in user affiliation\n</td>\n<td>{{#ci_userAffiliatedTo:}}\n</td>\n<td>\n</td></tr><tr><td>ci_userRealName\n</td>\n<td>logged in user real name\n</td>\n<td>{{#ci_userRealName:}}\n</td>\n<td>\n</td></tr><tr><td>ci_isSysop\n</td>\n<td>whether the logged in user is an administrator or not\n</td>\n<td>{{#ci_isSysop:}}\n</td>\n<td>\n</td></tr><tr><td>ci_loggedIn\n</td>\n<td>whether the user is logged in or not\n</td>\n<td>{{#ci_loggedIn:}}\n</td>\n<td>\n</td></tr><tr><td>ci_visitorIsoCode\n</td>\n<td>country code of user (based on the ip)\n</td>\n<td>{{#ci_visitorIsoCode:}}\n</td>\n<td>RO\n</td></tr><tr><td>ci_visitorCountry\n</td>\n<td>country of user (based on the ip)\n</td>\n<td>{{#ci_visitorCountry:}}\n</td>\n<td>Romania\n</td></tr></tbody></table></div><p><br></p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Parser_functions\" title=\"How it works/Parser functions\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Join_team\">Join team</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=11\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Join team\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=11\" title=\"Edit section: Join team\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-13\" id=\"mf-section-13\">\n<p>If you want to participate with the maintenance, management and/or \ndevelopment of this platform just fill in the form below and we will contact you promptly.\n</p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Join_team\" title=\"How it works/Join team\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Private_wiki\">Private wiki</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=12\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Private wiki\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=12\" title=\"Edit section: Private wiki\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-14\" id=\"mf-section-14\">\n<p>Optionally, we can provide you with a private wiki hosted at an address like\n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/private-wiki/[organization username]\n</pre>\n<p>which differs from the public wiki in that it is not a shared environment, \nwhile it remains managed as its codebase, modules, templates, available \nforms and so on.\n</p><p>A private wiki allows you to store any private information (without using specific\nextension in the public wiki which would make some of your pages private, posing\nnonetheless security risks) with the maximum level of security (inasmuch as the wiki\nitself can be accessed only by authorized users) complementing the information you\nhave on your public wiki.\n</p><p>For instance we allow the creation of pages representing language courses in the \npublic wiki, and the creation of pages representing classes and students (registered\ntogether with their personal information) in the private wiki. This way, we can offer\nan additional platform, named 'classes', which combines the public as well private\ninformation of your courses, and provides a reserved area for your students where to \nretrieve their teaching material and even to interact with their class. [... to be continued]\n</p><p><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Private_wiki\" title=\"How it works/Private wiki\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"For_administrators\">For administrators</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=13\" class=\"mw-editsection-visualeditor\" title=\"Edit section: For administrators\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=13\" title=\"Edit section: For administrators\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-15\" id=\"mf-section-15\">\n<p><a href=\"https://culturaitaliana.org/wiki/How_it_works/For_administrators/Instructions_for_use\" title=\"How it works/For administrators/Instructions for use\">Instructions for use</a>\n</p><p><a href=\"https://culturaitaliana.org/wiki/How_it_works/For_administrators/To-do\" title=\"How it works/For administrators/To-do\">To-do</a>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"Technology_we_use\">Technology we use</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=14\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Technology we use\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=14\" title=\"Edit section: Technology we use\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-16\" id=\"mf-section-16\">\n<p>Here is a list of the tools we use to make this platform work.\nOf course each of them depends in turn by other tools (for instance\n<a rel=\"nofollow\" class=\"external text\" href=\"https://quasar.dev/\" target=\"_blank\">Quasar Framework</a> depends on <a rel=\"nofollow\" class=\"external text\" href=\"https://vuejs.org/\" target=\"_blank\">Vue.js</a>, and Vue.js is in turn composed\nby several components), however, given a set even arbitrary of\nthe most prominent tools we use, the reader might explore the vast areas not covered by the following table both in extension and in depth.\n</p><p><br></p><p><br><b><a href=\"https://culturaitaliana.org/wiki/How_it_works/Technology_we_use\" title=\"How it works/Technology we use\">Find out more...</a></b>\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span id=\"Logically_related_questions_(L.R.Q.)\"></span><span class=\"mw-headline\" id=\"Logically_related_questions_.28L.R.Q..29\">Logically related questions (L.R.Q.)</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&veaction=edit&section=15\" class=\"mw-editsection-visualeditor\" title=\"Edit section: Logically related questions (L.R.Q.)\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works&action=edit&section=15\" title=\"Edit section: Logically related questions (L.R.Q.)\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-17\" id=\"mf-section-17\">\n<p>(another way of indicating "frequently asked questions" which \nhave not yet been asked)\n</p>\n<div class=\"toccolours mw-collapsible mw-collapsed\">\n<p>Why Mediawiki rather than Wordpress ?\n</p>\n<div class=\"mw-collapsible-content\">\n<p>Well, first Mediawiki is actually being used by the team behind Wordpress\n(<a rel=\"nofollow\" class=\"external text\" href=\"https://automattic.com/\" target=\"_blank\">Automattic</a>) for their <a rel=\"nofollow\" class=\"external text\" href=\"https://developer.wordpress.org\" target=\"_blank\">developer documentation</a> as proof of powerfulness of its features. \n</p><p>Then, because the business model of Mediawiki and Wordpress are completely different. Wordpress allows an easy use but as soon as you want to expand or complete your website you are pushed (or constrained) to adopt paying solutions.\nMediawiki (as well as our platform) is completely free, including any desirable\nadvanced feature, at cost to deal yourself with the code (starting from wikicode\nitself, and proceeding with the creation of dedicated extensions).\n</p><p>Then, because the intrinsic anti-immediacy of Mediawiki constrains the creation of quality of contents: dealing with the <a rel=\"nofollow\" class=\"external text\" href=\"https://en.wikipedia.org/wiki/Help:Wikitext\" target=\"_blank\">wiki text</a> (either created through the help of visual editor, or directly) on the one hand slows down the content creation, and on the other provides you with a set of formatting and structuring tools specifically aimed at quality and complexity.\n</p><p>Then because Mediawiki offers a strong versioning controlling and allows a collaborativeness that Wordpress is not able to offer: many people can work on the same content in the same time, and notwithstanding the integrity of the content is preserved, and you can access all the changes made by each of editors at any time.\n</p><p>Finally because through the general design of our platform (where Mediawiki is used as back-end site) the presentation of the content (i.e. the appearance of the website) can be completely decoupled by the content itself: a part of your team can solely take care of contents, and their organization or pages structure, and another part of the team can design whatever data consumer application querying the APIs, and to use the data and the semantic data returned by them, in any conceivable way, apart from creating client-side applications, of course for <a rel=\"nofollow\" class=\"external text\" href=\"https://d3js.org/\" target=\"_blank\">data visualization</a> as well.\n</p>\n</div>\n</div>\n<div class=\"toccolours mw-collapsible mw-collapsed\" style=\"border-top:none\">\n<p>Why a platform representing the Italian culture is conceived in English ?\n</p>\n<div class=\"mw-collapsible-content\">\n<p>Well, surely because English is the <i>lingua franca</i> of our times.\n</p><p>Then because the native language of world of technology, to which this platform refers to, is English.\n</p><p>Then because this would be also a demonstration of the ability of a kind of "Italian culture" to speak a technological language without diverting from its authentic nature, which is intrinsically humanistic.\n</p><p>Then of course because the audience for this platform is meant to be international, that is being able to speak only partially Italian language: <span style=\"background-color:yellow\">but where "prospective students" would find that an international and common language (English and computer language) originates, in this specific case, from a web of ideas of which the natural language or mother tongue is Italian language itself, will devote himself to the study of it with the feeling to keep up with the times and possibly to participate to the development of them from a privileged side. </span> <b>this text has been added in a subsequent edit and might be not consistent to the the natural flow of the initial statement</b>\n</p>\n</div>\n</div>\n<div class=\"toccolours mw-collapsible mw-collapsed\" style=\"border-top:none\">\n<p>How the front-end counterpart of this site is created ?\n</p>\n<div class=\"mw-collapsible-content\">\n<p>Well, while the back-end side of this platform is built upon a Apache/PHP/MySQL technology, the front-end side is built on <a rel=\"nofollow\" class=\"external text\" href=\"https://nodejs.org/en/\" target=\"_blank\">Node.js</a>, possibly <a rel=\"nofollow\" class=\"external text\" href=\"https://www.nginx.com/\" target=\"_blank\">Nginx</a>, and a client side Javascript framework like <a rel=\"nofollow\" class=\"external text\" href=\"https://vuejs.org/\" target=\"_blank\">Vue.js</a>. \n</p><p>The latter side is fueled with data retrieved from Mediawiki (a forked version with some extended features, mainly an enhanced support for pages and files with a path involving subpages/subfolders) through a Node.js script querying the Mediawiki database every few minutes for changes.\n</p><p>This is actually the core of the bridge between the two sides, as the script during this process performs some convoluted operation structuring data in such a way that they can be retrieved or even "consumed" by a front-end interface in a way that would be not possible without some intermediate operation and a further elaboration of data.\n</p><p>The front-end itself, however, while dynamically takes data from the Node.js back-end (as a middleware to the Mediawiki database, not directly queried), and is fundamentally decoupled by it, is created <i>ad hoc</i> and is just one of the possible data consumer application of the data organized by the Node.js script and exposed through a <a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">dedicated API</a>.\n</p>\n</div>\n</div>\n\n\n</div></div>",
         "url":"https://culturaitaliana.org/wiki/How_it_works",
         "language_detected":"en",
         "form_name":null,
         "form_data":{

         },
         "categories":[

         ],
         "title_structure":[
            "How it works"
         ],
         "modification_time":1594371519
      },
      {
         "pageid":1041,
         "title":"How it works/APIs",
         "html":"<div class=\"mw-parser-output\"><div class=\"mf-section-0\" id=\"mf-section-0\"><p>While you are establishing your organization's page structure at an address like \nthe following \n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/wiki/Centro_italiano_Barcellona\n</pre>\n<p>that is structuring all your information optionally using\nsemantic data through this wiki platform, you can start\nquerying your pages (or even all your site) through the\nfollowing set of APIs, for instance in order to display\nthem in your wordpress site, or in whatever third party site\nwritten in any computer language.\n</p><p>The following endpoints do not directly query the standard mediawiki APIs,\nbut an extended APIs built on top of the mediawiki APIs (called \nautonomously by an internal script which keeps updated all\nthe information) providing additional data, like the detected language\nfor each page, all the semantic data related to each page, the "title\nstructure" (to allow the use of slashes within the title itself, ensuring\nat the same time the coherence of the hierarchical structure) and more.\n</p><p>Basically, through the following APIs you can query all the information\nof the created pages or a specific "folder" within it (also retrieving a structured\nindex which can be easily used to create navigation menus, and of course,\ntheir html content) without dealing \nwith the complexity and lack of immediacy of the standard mediawiki api,\nwhich would require multiple calls and further elaboration to reach that result.\n</p><p><br></p>\n</div><h2 class=\"section-heading\"><div class=\"mw-ui-icon mw-ui-icon-element indicator mw-ui-icon-small mw-ui-icon-flush-left\"></div><span class=\"mw-headline\" id=\"wikipages\">wikipages</span><span class=\"mw-editsection\"><span class=\"mw-editsection-bracket\">[</span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/APIs&veaction=edit&section=1\" class=\"mw-editsection-visualeditor\" title=\"Edit section: wikipages\">edit</a><span class=\"mw-editsection-divider\"> | </span><a href=\"https://culturaitaliana.org/w/index.php?title=How_it_works/APIs&action=edit&section=1\" title=\"Edit section: wikipages\">edit source</a><span class=\"mw-editsection-bracket\">]</span></span></h2><div class=\"mf-section-1\" id=\"mf-section-1\">\n<p>The following endpoint retrieves one or more wiki pages under a specific path. \n</p><p>If requested, it also returns a structured index related to the set of returned pages, a useful set of data for each page (including the rendered html, categories, all the related semantic properties, the detected language, the original page url, and more), and information on the related organization.\n</p><p>It is enough flexible to make possible the <a rel=\"nofollow\" class=\"external text\" href=\"https://culturaitaliana.org/pages/How_it_works\" target=\"_blank\">front-end site corresponding to this set of pages</a> (the link points to itself in the eventuality you are already reading herein), which provides server-side rendering, storage of pages and table of contents within a client-side database, previous/next page navigation, filter of pages based on detected languages, and more: all that using just 2 calls (one server side, and one client side) of the following API !\n</p><p><br><b>Examples of API calls</b> \n</p><p><br><b>Example request</b>\n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/api/wikipages?title=How_it_works/Technology_we_use&options=data\n</pre>\n<p>The request will return only the page set as title, with all data related to it, and the organization information.\n</p><p><br><b>Example response</b>\n</p>\n<pre style=\"max-height:12em\" class=\"language-json\">abc\n</pre>\n<p><br><b>Example request</b>\n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/api/wikipages?root_page=How_it_works&pages=Application_form|Join_team&subpages_data=modification_time|title_structure&options=index|organization_information\n</pre>\n<p>The request will return all subpages of the indicated root_page, retrieving only modification_time and title_structure for each of them, and all the available data (including html content) of the pages 'Application_form' and 'Join_team'.\n</p><p><br><b>Example response</b>\n</p>\n<pre style=\"max-height:12em\" class=\"language-json\">\n\n</pre>\n<p><br></p><p><br><b>Example request</b>\n</p>\n<pre class=\"language-xxxx\">https://culturaitaliana.org/api/wikipages?root_page=How_it_works&newer=[timestamp]&options=all_subpages_data\n</pre>\n<p>The request will return all the subpages of the indicated root_page newer than the provided timestamp, with all page data for each of them.\n</p><p><br><b>Example response</b>\n</p>\n<pre style=\"max-height:12em\" class=\"language-json\">\n\n</pre>\n<p><br></p><p><br><b>Parameters</b>\n</p>\n<div class=\"wikitable_container\"><table class=\"wikitable\"><caption>\n</caption>\n<tbody><tr><th>keys\n</th>\n<th>description\n</th>\n<th>values\n</th>\n<th>protocol\n</th></tr><tr><td>wiki\n</td>\n<td>name of the wiki to be queried. Can be omitted for the public wiki)\n</td>\n<td>wiki username\n</td>\n<td>POST\n</td></tr><tr><td>title\n</td>\n<td>single page to be queried\n</td>\n<td>page title (complete path, with or without underscores)\n</td>\n<td>POST or GET\n</td></tr><tr><td>root_page\n</td>\n<td>a page title to be queried together with all its subpages\n</td>\n<td>page title (complete path, with or without underscores)\n</td>\n<td>POST or GET\n</td></tr><tr><td>pages\n</td>\n<td>a list of page titles which will be served with the full set of page data\n</td>\n<td>list of page titles (pipe separated)\n</td>\n<td>suggested POST\n</td></tr><tr><td>newer\n</td>\n<td>a timestamp less then the last modification time of pages to be retrieved\n</td>\n<td><a rel=\"nofollow\" class=\"external text\" href=\"https://www.unixtimestamp.com/\" target=\"_blank\">Unix timestamp</a>\n</td>\n<td>POST or GET\n</td></tr><tr><td>subpages data\n</td>\n<td>Page data to be retrieved for all subpages of the root_page\n</td>\n<td>one or more of the following: (pipe separated) html, url, language_detected, form_name, form_data, categories, title_structure, modification_time\n</td>\n<td>POST or GET\n</td></tr><tr><td>options\n</td>\n<td>Query options (see dedicated table below for a description of each option)\n</td>\n<td>one or more of the following: (pipe separated) index, complete_index, data, organization_information, include_hidden\n</td>\n<td>POST or GET\n</td></tr><tr><td>organization_id\n</td>\n<td>to be used to retrieve all organization pages when the root_page is null (i.e. for private wikis or pages not related to an organization on the public wiki)\n</td>\n<td>the id of the organization returned among the "info" by a previous call of this API\n</td>\n<td>POST or GET\n</td></tr><tr><td>username\n</td>\n<td>only required for private wikis, a username with sysop privileges\n</td>\n<td>username\n</td>\n<td>POST\n</td></tr><tr><td>password\n</td>\n<td>only required for private wikis, the password of related username\n</td>\n<td>password\n</td>\n<td>POST\n</td></tr></tbody></table></div><p><br><b>Options</b>\n</p>\n<div class=\"wikitable_container\"><table class=\"wikitable\"><caption>\n</caption>\n<tbody><tr><th>parameter\n</th>\n<th>description\n</th></tr><tr><td>index\n</td>\n<td>retrieve the index related to the provided root_page\n</td></tr><tr><td>complete_index\n</td>\n<td>retrieve the complete organization index even if the provided root_page is a subpage of a given organization\n</td></tr><tr><td>data\n</td>\n<td>retrieve all page's data\n</td></tr><tr><td>organization_information\n</td>\n<td>retrieve organization information (id and name)\n</td></tr><tr><td>include_hidden\n</td>\n<td>include pages hidden in the <a href=\"https://culturaitaliana.org/wiki/How_it_works/Frontend_Index\" title=\"How it works/Frontend Index\">Frontend Index</a> of a given organization\n</td></tr></tbody></table></div><p><br><b>Returned data for each page</b>\n</p>\n<div class=\"wikitable_container\"><table class=\"wikitable\"><caption>\n</caption>\n<tbody><tr><th>key\n</th>\n<th>description\n</th></tr><tr><td>pageid\n</td>\n<td>wiki page id\n</td></tr><tr><td>title\n</td>\n<td>page title (without underscores)\n</td></tr><tr><td>index\n</td>\n<td>page index (starting from 0) as set in the table of contents (the related <a href=\"https://culturaitaliana.org/wiki/How_it_works/Frontend_Index\" title=\"How it works/Frontend Index\">Frontend Index</a>)\n</td></tr><tr><td>html\n</td>\n<td>html as rendered by the wiki engine\n</td></tr><tr><td>url\n</td>\n<td>absolute url of the page\n</td></tr><tr><td>language_detected\n</td>\n<td>detected language, in the form {"en": "English"}\n</td></tr><tr><td>form_name\n</td>\n<td>name of the first <a href=\"https://culturaitaliana.org/wiki/How_it_works/Forms_%26_semantic_data\" title=\"How it works/Forms & semantic data\">template/form</a> possibly found in the page\n</td></tr><tr><td>form_data\n</td>\n<td>set of key/value pairs with form data, complying with our <a href=\"https://culturaitaliana.org/wiki/How_it_works/Forms_%26_semantic_data_(naming_convention)\" title=\"How it works/Forms & semantic data (naming convention)\">naming conventions</a>\n</td></tr><tr><td>categories\n</td>\n<td>array of categories\n</td></tr><tr><td>title_structure\n</td>\n<td>array of titles corresponding to the complete page's path. This allows to use a slash as part of the title at the same time handling the page path correctly\n</td></tr><tr><td>modification_time\n</td>\n<td>timestamp of last modification time of the page\n</td></tr></tbody></table></div><p><br></p><p><br></p>\n\n\n\n\n</div></div>",
         "url":"https://culturaitaliana.org/wiki/How_it_works/APIs",
         "language_detected":"en",
         "form_name":null,
         "form_data":{

         },
         "categories":[

         ],
         "title_structure":[

         ],
         "modification_time":1594621984
      },
      {
         "pageid":1056,
         "title":"How it works/Logically related questions",
         "html":"<div class=\"mw-parser-output\"><div class=\"mf-section-0\" id=\"mf-section-0\"><div class=\"toccolours mw-collapsible mw-collapsed\">\n<p>Why Mediawiki rather than Wordpress ?\n</p>\n<div class=\"mw-collapsible-content\">\n<p>Well, first Mediawiki is actually being used by the team behind Wordpress\n(<a rel=\"nofollow\" class=\"external text\" href=\"https://automattic.com/\" target=\"_blank\">Automattic</a>) for their <a rel=\"nofollow\" class=\"external text\" href=\"https://developer.wordpress.org\" target=\"_blank\">developer documentation</a> as proof of powerfulness of its features. \n</p><p>Then, because the business model of Mediawiki and Wordpress are completely different. Wordpress allows an easy use but as soon as you want to expand or complete your website you are pushed (or constrained) to adopt paying solutions.\nMediawiki (as well as our platform) is completely free, including any desirable\nadvanced feature, at cost to deal yourself with the code (starting from wikicode\nitself, and proceeding with the creation of dedicated extensions).\n</p><p>Then, because the intrinsic anti-immediacy of Mediawiki constrains the creation of quality of contents: dealing with the <a rel=\"nofollow\" class=\"external text\" href=\"https://en.wikipedia.org/wiki/Help:Wikitext\" target=\"_blank\">wiki text</a> (either created through the help of visual editor, or directly) on the one hand slows down the content creation, and on the other provides you with a set of formatting and structuring tools specifically aimed at quality and complexity.\n</p><p>Then because Mediawiki offers a strong versioning controlling and allows a collaborativeness that Wordpress is not able to offer: many people can work on the same content in the same time, and notwithstanding the integrity of the content is preserved, and you can access all the changes made by each of editors at any time.\n</p><p>Finally because through the general design of our platform (where Mediawiki is used as back-end site) the presentation of the content (i.e. the appearance of the website) can be completely decoupled by the content itself: a part of your team can solely take care of contents, and their organization or pages structure, and another part of the team can design whatever data consumer application querying the APIs, and to use the data and the semantic data returned by them, in any conceivable way, apart from creating client-side applications, of course for <a rel=\"nofollow\" class=\"external text\" href=\"https://d3js.org/\" target=\"_blank\">data visualization</a> as well.\n</p>\n</div>\n</div>\n<div class=\"toccolours mw-collapsible mw-collapsed\" style=\"border-top:none\">\n<p>Why a platform representing the Italian culture is conceived in English ?\n</p>\n<div class=\"mw-collapsible-content\">\n<p>Well, surely because English is the <i>lingua franca</i> of our times.\n</p><p>Then because the native language of world of technology, to which this platform refers to, is English.\n</p><p>Then because this would be also a demonstration of the ability of a kind of "Italian culture" to speak a technological language without diverting from its authentic nature, which is intrinsically humanistic.\n</p><p>Then of course because the audience for this platform is meant to be international, that is being able to speak only partially Italian language: <span style=\"background-color:yellow\">but where "prospective students" would find that an international and common language (English and computer language) originates, in this specific case, from a web of ideas of which the natural language or mother tongue is Italian language itself, will devote himself to the study of it with the feeling to keep up with the times and possibly to participate to the development of them from a privileged side. </span> <b>this text has been added in a subsequent edit and might be not consistent to the the natural flow of the initial statement</b>\n</p>\n</div>\n</div>\n<div class=\"toccolours mw-collapsible mw-collapsed\" style=\"border-top:none\">\n<p>How the front-end counterpart of this site is created ?\n</p>\n<div class=\"mw-collapsible-content\">\n<p>Well, while the back-end side of this platform is built upon a Apache/PHP/MySQL technology, the front-end side is built on <a rel=\"nofollow\" class=\"external text\" href=\"https://nodejs.org/en/\" target=\"_blank\">Node.js</a>, possibly <a rel=\"nofollow\" class=\"external text\" href=\"https://www.nginx.com/\" target=\"_blank\">Nginx</a>, and a client side Javascript framework like <a rel=\"nofollow\" class=\"external text\" href=\"https://vuejs.org/\" target=\"_blank\">Vue.js</a>. \n</p><p>The latter side is fueled with data retrieved from Mediawiki (a forked version with some extended features, mainly an enhanced support for pages and files with a path involving subpages/subfolders) through a Node.js script querying the Mediawiki database every few minutes for changes.\n</p><p>This is actually the core of the bridge between the two sides, as the script during this process performs some convoluted operation structuring data in such a way that they can be retrieved or even "consumed" by a front-end interface in a way that would be not possible without some intermediate operation and a further elaboration of data.\n</p><p>The front-end itself, however, while dynamically takes data from the Node.js back-end (as a middleware to the Mediawiki database, not directly queried), and is fundamentally decoupled by it, is created <i>ad hoc</i> and is just one of the possible data consumer application of the data organized by the Node.js script and exposed through a <a href=\"https://culturaitaliana.org/wiki/How_it_works/APIs\" title=\"How it works/APIs\">dedicated API</a>.\n</p>\n</div>\n</div>\n\n\n\n\n</div></div>",
         "url":"https://culturaitaliana.org/wiki/How_it_works/Logically_related_questions",
         "language_detected":"en",
         "form_name":null,
         "form_data":{

         },
         "categories":[

         ],
         "title_structure":[
            "How it works",
            "Logically related questions"
         ],
         "modification_time":1594375188
      }
   ],
   "info":{
      "last_modification_time":1594621984,
      "detected_languages":{
         "en":"English"
      },
      "total_pages":3
   },
   "execution_time":"12ms"
}


Note Currently (September 2020) the TOC also includes a property "active_kids" on folder nodes (nodes with the "path" property are supposed to be pages, otherwise folders) to let UIs determine whether display a branch or not without looping through its direct children. The feature is used on the front-end as well: for instance this organization's page contains one or more "News" pages (pages with the form "News") which are not direct children of it, or whose "parent" page is inactive, so they are shown when browsing through semantic data but not on the organization's page itself.


Parameters

keys description values protocol
title single page to be queried page title (complete path, with or without underscores) POST or GET
root_page a page title to be queried together with all its subpages page title (complete path, with or without underscores) POST or GET
pages a list of page titles which will be served with the full set of page's data list of page titles (pipe separated) suggested POST
newer a timestamp less then the last modification time of pages to be retrieved Unix timestamp POST or GET
forms retrieve all the pages containing the given form(s) name(s) (if no pages titles are set) or retrieve only the pages containing the given form(s) name(s) (if pages titles are set) list of form names (pipe separated) (e.g. "Paid content|Opportunity|Reading suggestion|Advertisement") POST or GET
subpages data Page's data to be retrieved for all sub-pages of the root_page one or more of the following: (pipe separated) html, url, language_detected, form_name, form_data, categories, title_structure, modification_time POST or GET
options Query options (see dedicated table below for a description of each option) one or more of the following: (pipe separated) TOC, complete_TOC, all_subpages_data, organization_information, include_hidden POST or GET
private_wiki username of the private wiki to be queried (only required to retrieve data from a private wiki) username of private wiki (e.g. "culturaitaliana") POST or GET
username only required for private wikis, a username with sysop privileges username POST
password only required for private wikis, the password of related username password POST

Note: The key "title" is an alias for the key "pages" when the latter contains only one record.

The key "root_page" can be combined with the key "pages" (one can ask a set of sub-pages, requiring full page's data only for some of them, or for others pages under the same TOC)


Options

parameter description
TOC retrieves the table of contents related to the provided root_page
complete_TOC retrieves the complete TOC of all the sub-pages of a given n even if the provided root_page is a subpage of it
all_subpages_data retrieves all subpages' data
organization_information retrieves information of the organization (if any) related to the set of pages
include_hidden includes pages hidden in the related TOC

Note: The APIs search the TOC of a given root_page either as direct child of it, for instance /How_it_works/TOC, or among the children of the nearest parent except the root level. For instance if you want to visualize all the books of a given author, you can create a single TOC for all the authors, for instance at /Authors/Table_of_contents, and then querying the root_page "Authors/Dante_Alighieri", requiring the TOC, which will contain all the sub-pages of that author (unless you have not set "complete_TOC" among the options). Then your front-end might either have a single page for "Dante Alighieri" and his works, or for all the authors: the first solution is preferable to allow a more comfortable navigation, but thanks to this design it's not necessary to have a single TOC for each of them.

Also note that a TOC can be created at any place simply creating a form with the Template:Form TOC, then the structure will be generated automatically.


Available data for each page

key description
pageid wiki page id
title page title (without underscores)
html html as rendered by the wiki engine
url absolute url of the page
language_detected detected language, in the form {"en": "English"}
form_name name of the first template/form possibly found in the page
form_data set of key/value pairs with form data, complying with our naming conventions
categories array of categories
title_structure array of titles corresponding to the complete page's path. This allows to use a slash as part of the title at the same time handling the page path correctly
creation_time timestamp of creation time of the page
modification_time timestamp of last modification time of the page