diff --git a/docs/conf.py b/docs/conf.py index 2f0725e..e6f6bf6 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -22,7 +22,7 @@ author = 'DSW Team' # The full version, including alpha/beta/rc tags -release = '2.9.0' +release = '2.10.0' # -- General configuration --------------------------------------------------- diff --git a/docs/dev/changelog.rst b/docs/dev/changelog.rst new file mode 100644 index 0000000..0479ce8 --- /dev/null +++ b/docs/dev/changelog.rst @@ -0,0 +1,94 @@ +********* +Changelog +********* + +.. NOTE:: + + This page only summarizes the key changes for each release (since 2.0). For details please visit :ref:`roadmap` that includes links to JIRA tasks implemented in specific versions or browse git history. + + +2.10 +====== + +- Added specific users to the questionnaire as collaborators + +2.9 +====== + +- Refactored error messages +- Several bugfixes + +2.8 +====== + +- Pagination & sorting in table views +- Introduced DSW Template Development Kit +- Minor UX improvements + +2.7 +====== + +- Improved caching for speed optimization +- Reworked questionnaire detail + +2.6 +====== + +- Added questionnaire live collaboration +- Introduced Projects to relate questionnaire, TODOs, documents, and settings +- Several UI/UX improvements +- Improved design of email templates + +2.5 +====== + +- Added templates management +- Several UI/UX improvements +- Introduced backend workers for scheduled/async tasks +- Added option to disable questionnaire summary report + +2.4 +====== + +- Added RDF support step in document worker +- Improved default naming of new documents +- Minor UI/UX improvements +- Several bugfixes + +2.3 +====== + +- Enhanced backend logging for ELK +- Added document submission +- Improved integration with Registry for simpler Sign Up +- Added user avatars +- Several bugfixes and optimizations + +2.2 +====== + +- Added support for OpenID +- Added affiliations in user profiles +- Introduced settings to change configurations directly in DSW interface +- Added API documentation using Swagger +- UI/UX improvements +- Several bugfixes and optimizations + +2.1 +====== + +- Introduced document worker for better scalability +- Migrated backend to new framework +- Added dropdown actions to list views +- Several bugfixes + +2.0 +====== + +- Added move functionality for knowledge models +- Added possibility to assign template to KMs +- Added questionnaire cloning +- Added expand/collapse all in KM Editor +- Internal refactoring and structure enhancements +- Several bugfixes + diff --git a/docs/dev/roadmap.rst b/docs/dev/roadmap.rst index 5748833..bf1a4e8 100644 --- a/docs/dev/roadmap.rst +++ b/docs/dev/roadmap.rst @@ -9,15 +9,36 @@ Roadmap Planned ======= +2.11.0 +------ + +- End of development: 29 January 2021 +- Release: 1 February 2021 +- `Jira issues 2.11.0 `_ + Released ======== +2.10.0 +------ + +- End of development: 11 January 2021 +- Release: 12 January 2021 +- `Jira issues 2.10.0 `_ +- Key changes: + + - Possibility to add specific users to the questionnaire as collaborators + 2.9.0 ----- - End of development: 30 November 2020 - Release: 9 December 2020 - `Jira issues 2.9.0 `_ +- Key changes: + + - Refactored error messages + - Several bugfixes 2.8.1 ----- @@ -32,6 +53,11 @@ Released - End of development: 27 October 2020 - Release: 3 November 2020 - `Jira issues 2.8.0 `_ +- Key changes: + + - Pagination & sorting in table views + - Introduced DSW Template Development Kit + - Minor UX improvements 2.7.0 ----- @@ -39,6 +65,10 @@ Released - End of development: 29 September 2020 - Release: 5 October 2020 - `Jira issues 2.7.0 `_ +- Key changes: + + - Improved caching for speed optimization + - Reworked questionnaire detail 2.6.0 ----- @@ -46,6 +76,12 @@ Released - End of development: 5 September 2020 - Release: 9 September 2020 - `Jira issues 2.6.0 `_ +- Key changes: + + - Added questionnaire live collaboration + - Introduced Projects to relate questionnaire, TODOs, documents, and settings + - Several UI/UX improvements + - Improved design of email templates 2.5.0 ----- @@ -53,6 +89,12 @@ Released - End of development: 24 June 2020 - Release: 8 July 2020 - `Jira issues 2.5.0 `_ +- Key changes: + + - Added templates management + - Several UI/UX improvements + - Introduced backend workers for scheduled/async tasks + - Added option to disable questionnaire summary report 2.4.0 ----- @@ -60,6 +102,12 @@ Released - End of development: 27 May 2020 - Release: 3 June 2020 - `Jira issues 2.4.0 `_ +- Key changes: + + - Added RDF support step in document worker + - Improved default naming of new documents + - Minor UI/UX improvements + - Several bugfixes 2.3.0 ----- @@ -67,6 +115,13 @@ Released - End of development: 29 April 2020 - Release: 6 May 2020 - `Jira issues 2.3.0 `_ +- Key changes: + + - Enhanced backend logging for ELK + - Added document submission + - Improved integration with Registry for simpler Sign Up + - Added user avatars + - Several bugfixes and optimizations 2.2.0 ----- @@ -74,7 +129,14 @@ Released - End of development: 25 March 2020 - Release: 1 April 2020 - `Jira issues 2.2.0 `_ +- Key changes: + - Added support for OpenID + - Added affiliations in user profiles + - Introduced settings to change configurations directly in DSW interface + - Added API documentation using Swagger + - UI/UX improvements + - Several bugfixes and optimizations 2.1.0 ----- @@ -82,7 +144,12 @@ Released - End of development: 25 February 2020 - Release: 3 March 2020 - `Jira issues 2.1.0 `_ +- Key changes: + - Introduced document worker for better scalability + - Migrated backend to new framework + - Added dropdown actions to list views + - Several bugfixes 2.0.0 ----- @@ -90,6 +157,15 @@ Released - End of development: 14 January 2020 - Release: 14 January 2020 - `Jira issues 2.0.0 `_ +- Key changes: + + - Added move functionality for knowledge models + - Added possibility to assign template to KMs + - Added questionnaire cloning + - Added expand/collapse all in KM Editor + - Internal refactoring and structure enhancements + - Several bugfixes + 1.10.1 ------ diff --git a/docs/dev/schemas.rst b/docs/dev/schemas.rst index 6986c90..c373a2a 100644 --- a/docs/dev/schemas.rst +++ b/docs/dev/schemas.rst @@ -6,9 +6,10 @@ Entity Schemas This document describes the structure of various structures that developer can use. -The following documentation is generated from :download:`KMP JSON Schema `. *Knowledge Model Package* file which can be used for importing and exporting Knowledge Models in DSW. Although we usually use ``.km`` extension, it is a JSON file with defined structure. +.. toctree:: + :caption: Schemas + :maxdepth: 1 + + schemas/doc_context + schemas/kmp -.. jsonschema:: kmp_schema_v5.json - :lift_definitions: - :auto_reference: - :auto_target: diff --git a/docs/dev/schemas/doc_context.rst b/docs/dev/schemas/doc_context.rst new file mode 100644 index 0000000..42f0b05 --- /dev/null +++ b/docs/dev/schemas/doc_context.rst @@ -0,0 +1,14 @@ +.. _schema-doc-context: + +**************** +Document Context +**************** + + +The following documentation is generated from :download:`Document Context Schema ` describing *Document Context* that is passed to document templates when generating a document using Jinja2. + +.. jsonschema:: doc_context_schema_v2.json + :lift_definitions: + :auto_reference: + :auto_target: + \ No newline at end of file diff --git a/docs/dev/schemas/doc_context_schema_v2.json b/docs/dev/schemas/doc_context_schema_v2.json new file mode 100644 index 0000000..4331399 --- /dev/null +++ b/docs/dev/schemas/doc_context_schema_v2.json @@ -0,0 +1,1161 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema", + "$comment": "This schema describes KM import/export with KM metamodel 5", + "definitions": { + "uuid": { + "type": "string", + "title": "UUID", + "description": "UUID version 4 according to `RFC4122 `_", + "pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$" + }, + "optionalString": { + "title": "Optional String", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "stringMap": { + "type": "object", + "title": "String Map", + "description": "Representation of simple map where both keys and values are strings", + "patternProperties": { + ".*": { "type": "string" } + } + }, + "valueType": { + "type": "string", + "title": "Value Type", + "enum": [ + "StringQuestionValueType", + "NumberQuestionValueType", + "DateQuestionValueType", + "TextQuestionValueType" + ] + }, + "desirabilityLevel": { + "title": "Desirability Level", + "description": "Level to indicate if a question is desirable in certain phase of a questionnaire", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "semver": { + "type": "string", + "title": "SemVer", + "description": "Simple semantic version tag, e.g., ``1.0.45``", + "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" + }, + "kmId": { + "type": "string", + "title": "Knowledge Model ID", + "description": "ID of knowledge model", + "pattern": "^[a-zA-Z0-9\\-]+$" + }, + "orgId": { + "type": "string", + "title": "Organization ID", + "description": "ID of organization", + "pattern": "^[a-zA-Z0-9\\.]+$" + }, + "id": { + "type": "string", + "title": "Package ID", + "description": "Unique composed ID for a package", + "pattern": "^[a-zA-Z0-9\\.]+:^[a-zA-Z0-9\\-]+:^[0-9]+\\.[0-9]+\\.[0-9]+$" + }, + "timestamp": { + "type": "string", + "title": "Timestamp", + "description": "Standard ISO timestamp format, e.g., ``2019-06-09T14:25:58.438Z``", + "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?Z$" + }, + "metricMeasure": { + "type": "object", + "title": "Metric Measure", + "description": "Entity capturing how certain metric is affected", + "properties": { + "metricUuid": { + "$ref": "#/definitions/uuid" + }, + "measure": { + "type": "number", + "minimum": 0.0, + "maximum": 1.0 + }, + "weight": { + "type": "number", + "minimum": 0.0, + "maximum": 1.0 + } + }, + "required": [ + "metricUuid", + "measure", + "weight" + ], + "additionalProperties": false + }, + "config": { + "type": "object", + "title": "Config", + "description": "Configuration values useful for generating documents", + "properties": { + "clientUrl": { + "type": "string", + "format": "uri" + }, + "levelsEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "level": { + "type": "object", + "title": "Desirability Level (object)", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "level": { + "type": "integer" + }, + "title": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "metric": { + "type": "object", + "title": "Metric", + "properties": { + "abbreviation": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "references": { + "type": "array" + }, + "title": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "organization": { + "type": "object", + "title": "Organization", + "properties": { + "affiliations": { + "type": "array", + "items": { + "type": "string" + } + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "organizationId": { + "$ref": "#/definitions/orgId" + } + }, + "additionalProperties": false + }, + "package": { + "type": "object", + "title": "Package Metadata", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "description": { + "type": "string" + }, + "id": { + "$ref": "#/definitions/id" + }, + "kmId": { + "$ref": "#/definitions/kmId" + }, + "name": { + "type": "string" + }, + "organization": { + "anyOf": [ + { + "$ref": "#/definitions/organization" + }, + { + "type": "null" + } + ] + }, + "organizationId": { + "$ref": "#/definitions/orgId" + }, + "state": { + "type": "string" + }, + "version": { + "$ref": "#/definitions/semver" + }, + "versions": { + "type": "array", + "items": { + "$ref": "#/definitions/semver" + } + } + }, + "additionalProperties": false + }, + "indicationReport": { + "type": "object", + "title": "Indication Report", + "properties": { + "answeredQuestions": { + "type": "integer" + }, + "indicationType": { + "type": "string", + "enum": [ + "LevelsAnsweredIndication", + "AnsweredIndication" + ] + }, + "unansweredQuestions": { + "type": "integer" + } + }, + "additionalProperties": false + }, + "metricReport": { + "type": "object", + "title": "Metric Report", + "properties": { + "measure": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "metricUuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "chapterReport": { + "type": "object", + "title": "Chapter Report", + "properties": { + "chapterUuid": { + "$ref": "#/definitions/uuid" + }, + "indications": { + "type": "array", + "items": { + "$ref": "#/definitions/indicationReport" + } + }, + "metrics": { + "type": "array", + "items": { + "$ref": "#/definitions/metricReport" + } + } + }, + "additionalProperties": false + }, + "totalReport": { + "type": "object", + "title": "Total (Summary) Report", + "properties": { + "indications": { + "type": "array", + "items": { + "$ref": "#/definitions/indicationReport" + } + }, + "metrics": { + "type": "array", + "items": { + "$ref": "#/definitions/metricReport" + } + } + }, + "additionalProperties": false + }, + "report": { + "type": "object", + "title": "Report", + "properties": { + "chapterReports": { + "type": "array", + "items": { + "$ref": "#/definitions/chapterReport" + } + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "totalReport": { + "$ref": "#/definitions/totalReport" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "user": { + "type": "object", + "title": "User", + "description": "Information about a user", + "properties": { + "active": { + "type": "boolean" + }, + "affiliation": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "email": { + "type": "string", + "format": "email" + }, + "firstName": { + "type": "string" + }, + "groups": { + "type": "array" + }, + "imageUrl": { + "type": "string", + "format": "uri" + }, + "lastName": { + "type": "string" + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "role": { + "type": "string", + "enum": [ + "researcher", + "data_steward", + "admin" + ] + }, + "sources": { + "type": "array", + "items": { + "type": "string" + } + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "knowledgeModel": { + "type": "object", + "title": "Knowledge Model", + "properties": { + "chapterUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "entities": { + "type": "object", + "description": "Typed UUID-entity map of KM contents", + "properties": { + "answers": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmAnswer" } + } + }, + "chapters": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmChapter" } + } + }, + "expert": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmExpert" } + } + }, + "integrations": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmIntegration" } + } + }, + "questions": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmQuestion" } + } + }, + "references": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmReference" } + } + }, + "tags": { + "type": "object", + "patternProperties": { + ".*": { "$ref": "#/definitions/kmTag" } + } + } + }, + "additionalProperties": false + }, + "integrationUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "name": { + "type": "string" + }, + "tagUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmAnswer": { + "type": "object", + "title": "Answer", + "properties": { + "advice": { + "$ref": "#/definitions/optionalString" + }, + "followUpUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "label": { + "type": "string" + }, + "metricMeasures": { + "type": "array", + "items": { + "$ref": "#/definitions/metricMeasure" + } + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmChapter": { + "type": "object", + "title": "Chapter", + "properties": { + "questionUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "text": { + "type": "string" + }, + "title": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmExpert": { + "type": "object", + "title": "Expert", + "properties": { + "name": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmIntegration": { + "type": "object", + "title": "Integration", + "properties": { + "id": { + "type": "string" + }, + "itemUrl": { + "type": "string" + }, + "logo": { + "type": "string" + }, + "name": { + "type": "string" + }, + "props": { + "type": "array", + "items": { + "type": "string" + } + }, + "requestBody": { + "type": "string" + }, + "requestHeaders": { + "$ref": "#/definitions/stringMap" + }, + "requestMethod": { + "type": "string" + }, + "responseIdField": { + "type": "string" + }, + "responseListField": { + "type": "string" + }, + "responseNameField": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmValueQuestion": { + "type": "object", + "title": "Value Question", + "properties": { + "expertUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "questionType": { + "type": "string", + "enum": [ + "ValueQuestion" + ] + }, + "referenceUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "requiredLevel": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "tagUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "text": { + "$ref": "#/definitions/optionalString" + }, + "title": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + }, + "valueType": { + "type": "string", + "enum": [ + "DateQuestionValueType", + "NumberQuestionValueType", + "StringQuestionValueType", + "TextQuestionValueType" + ] + } + }, + "additionalProperties": false + }, + "kmIntegrationQuestion": { + "type": "object", + "title": "Integration Question", + "properties": { + "expertUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "integrationUuid": { + "$ref": "#/definitions/uuid" + }, + "props": { + "$ref": "#/definitions/stringMap" + }, + "questionType": { + "type": "string", + "enum": [ + "IntegrationQuestion" + ] + }, + "referenceUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "requiredLevel": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "tagUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "text": { + "$ref": "#/definitions/optionalString" + }, + "title": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmListQuestion": { + "type": "object", + "title": "List Question", + "properties": { + "expertUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "itemTemplateQuestionUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "questionType": { + "type": "string", + "enum": [ + "ListQuestion" + ] + }, + "referenceUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "requiredLevel": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "tagUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "text": { + "$ref": "#/definitions/optionalString" + }, + "title": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmOptionsQuestion": { + "type": "object", + "title": "Options Question", + "properties": { + "answerUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "expertUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "questionType": { + "type": "string", + "enum": [ + "OptionsQuestion" + ] + }, + "referenceUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "requiredLevel": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "tagUuids": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + }, + "text": { + "$ref": "#/definitions/optionalString" + }, + "title": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmQuestion": { + "title": "Question", + "anyOf": [ + { + "$ref": "#/definitions/kmValueQuestion" + }, + { + "$ref": "#/definitions/kmIntegrationQuestion" + }, + { + "$ref": "#/definitions/kmListQuestion" + }, + { + "$ref": "#/definitions/kmOptionsQuestion" + } + ] + }, + "kmResourcePageReference": { + "type": "object", + "title": "Resource Page Reference", + "properties": { + "referenceType": { + "type": "string", + "enum": [ + "ResourcePageReference" + ] + }, + "shortUuid": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmURLReference": { + "type": "object", + "title": "URL Reference", + "properties": { + "label": { + "type": "string" + }, + "referenceType": { + "type": "string", + "enum": [ + "URLReference" + ] + }, + "url": { + "type": "string", + "format": "uri" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmCrossReference": { + "type": "object", + "title": "Cross Reference", + "properties": { + "description": { + "type": "string" + }, + "referenceType": { + "type": "string", + "enum": [ + "CrossReference" + ] + }, + "targetUuid": { + "$ref": "#/definitions/uuid" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "kmReference": { + "title": "Reference", + "anyOf": [ + { + "$ref": "#/definitions/kmResourcePageReference" + }, + { + "$ref": "#/definitions/kmURLReference" + }, + { + "$ref": "#/definitions/kmCrossReference" + } + ] + }, + "kmTag": { + "type": "object", + "title": "Tag", + "properties": { + "color": { + "type": "string" + }, + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "uuid": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "replyAnswer": { + "type": "object", + "title": "Answer Reply", + "properties": { + "type": { + "type": "string", + "enum": [ + "AnswerReply" + ] + }, + "value": { + "$ref": "#/definitions/uuid" + } + }, + "additionalProperties": false + }, + "replyValue": { + "type": "object", + "title": "Value Reply", + "properties": { + "type": { + "type": "string", + "enum": [ + "StringReply" + ] + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + }, + "replyIntegrationValuePlain": { + "type": "object", + "title": "Integration Plain Value", + "properties": { + "type": { + "type": "string", + "enum": [ + "PlainValue" + ] + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + }, + "replyIntegrationValueIntegration": { + "type": "object", + "title": "Integration Value", + "properties": { + "type": { + "type": "string", + "enum": [ + "IntegrationValue" + ] + }, + "id": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "additionalProperties": false + }, + "replyIntegration": { + "type": "object", + "title": "Integration Reply", + "properties": { + "type": { + "type": "string", + "enum": [ + "IntegrationReply" + ] + }, + "value": { + "anyOf": [ + { + "$ref": "#/definitions/replyIntegrationValuePlain" + }, + { + "$ref": "#/definitions/replyIntegrationValueIntegration" + } + ] + + } + }, + "additionalProperties": false + }, + "replyList": { + "type": "object", + "title": "List Reply", + "properties": { + "type": { + "type": "string", + "enum": [ + "ItemListReply" + ] + }, + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/uuid" + } + } + }, + "additionalProperties": false + }, + "reply": { + "title": "Reply", + "anyOf": [ + { + "$ref": "#/definitions/replyAnswer" + }, + { + "$ref": "#/definitions/replyValue" + }, + { + "$ref": "#/definitions/replyIntegration" + }, + { + "$ref": "#/definitions/replyList" + } + ] + }, + "documentContext": { + "type": "object", + "title": "Document Context (object)", + "description": "Entity capturing how certain metric is affected", + "properties": { + "config": { + "$ref": "#/definitions/config" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "When the document was created" + }, + "createdBy": { + "$ref": "#/definitions/user", + "description": "Issuer/author of the document" + }, + "knowledgeModel": { + "$ref": "#/definitions/knowledgeModel", + "description": "Compiled KM used in the questionnaire" + }, + "level": { + "type": "integer", + "description": "The current desirability level in the questionnaire" + }, + "levels": { + "type": "array", + "items": { + "$ref": "#/definitions/level" + }, + "description": "Levels defined for the questionnaire" + }, + "metrics": { + "type": "array", + "items": { + "$ref": "#/definitions/metric" + }, + "description": "Metrics defined for the questionnaire" + }, + "organization": { + "$ref": "#/definitions/organization", + "description": "Organization configured for the DSW instance" + }, + "package": { + "$ref": "#/definitions/package", + "description": "Metadata about the used KM package" + }, + "questionnaireName": { + "type": "string", + "minLength": 1, + "description": "Name of the questionnaire" + }, + "questionnaireReplies": { + "type": "object", + "description": "Replies in the questionnaire stored in map/dictionary where key is UUID path and value is the reply to question in that path", + "patternProperties": { + ".*": { "$ref": "#/definitions/reply" } + } + }, + "questionnaireUuid": { + "$ref": "#/definitions/uuid", + "description": "UUID of the questionnaire" + }, + "report": { + "$ref": "#/definitions/report", + "description": "Report computed for the questionnaire" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "When the document was last updated" + }, + "uuid": { + "$ref": "#/definitions/uuid", + "description": "UUID of the document" + } + }, + "required": [ + "metricUuid", + "measure", + "weight" + ], + "additionalProperties": false + } + }, + "title": "Document Context", + "description": "The JSON representation of document context object provided to document templates in DSW.", + "$ref": "#/definitions/documentContext" +} \ No newline at end of file diff --git a/docs/dev/schemas/kmp.rst b/docs/dev/schemas/kmp.rst new file mode 100644 index 0000000..cf418d9 --- /dev/null +++ b/docs/dev/schemas/kmp.rst @@ -0,0 +1,10 @@ +Package Bundle (KMP JSON) +------------------------- + +The following documentation is generated from :download:`KMP JSON Schema ` describing *Knowledge Model Package* (or *Package Bundle*) file which can be used for importing and exporting Knowledge Models in DSW. Although we usually use ``.km`` extension, it is a JSON file with defined structure. + +.. jsonschema:: kmp_schema_v5.json + :lift_definitions: + :auto_reference: + :auto_target: + \ No newline at end of file diff --git a/docs/dev/kmp_schema_v5.json b/docs/dev/schemas/kmp_schema_v5.json similarity index 99% rename from docs/dev/kmp_schema_v5.json rename to docs/dev/schemas/kmp_schema_v5.json index 95132c9..3878430 100644 --- a/docs/dev/kmp_schema_v5.json +++ b/docs/dev/schemas/kmp_schema_v5.json @@ -39,6 +39,7 @@ }, "desirabilityLevel": { "title": "Desirability Level", + "description": "Level to indicate if a question is desirable in certain phase of a questionnaire", "anyOf": [ { "type": "integer" @@ -106,7 +107,7 @@ }, "packageBundle": { "type": "object", - "title": "Package Bundle", + "title": "Package Bundle (object)", "description": "Collection of potentially multiple linked Knowledge Model packages that is commonly used for import and export in DSW.", "properties": { "metamodelVersion": { @@ -1595,7 +1596,7 @@ }, "DeleteAnswerEvent": { "type": "object", - "title": "DeleteAnswerEvent", + "title": "Delete Answer Event", "description": "Delete an existing answer from the KM", "properties": { "eventType": { @@ -2685,7 +2686,7 @@ "additionalProperties": false } }, - "title": "Package Bundle JSON", - "description": "The JSON file used for import and export of KMs uses packages (event containers) bundled in a single object:", + "title": "Package Bundle", + "description": "The JSON representation used for import and export of KMs uses packages (event containers) bundled in a single object.", "$ref": "#/definitions/packageBundle" } \ No newline at end of file diff --git a/docs/index.rst b/docs/index.rst index 8ed95b3..107d761 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -38,4 +38,5 @@ The `Data Stewardship Wizard `_ is an international proje dev/schemas dev/contributing dev/roadmap + dev/changelog