@persei/perseed-api 4.34.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +260 -0
  2. package/dist/perseed-api.mjs +177 -0
  3. package/dist/perseed-api.umd.js +1 -0
  4. package/dist/schemas/authentication_security/index.d.ts +1 -0
  5. package/dist/schemas/authentication_security/types.d.ts +29 -0
  6. package/dist/schemas/dashboard/create_dashboard_payload.schema.json +487 -0
  7. package/dist/schemas/dashboard/data_loaders/Outcomes.d.ts +6 -0
  8. package/dist/schemas/dashboard/data_loaders/index.d.ts +1 -0
  9. package/dist/schemas/dashboard/i18n.d.ts +6 -0
  10. package/dist/schemas/dashboard/index.d.ts +10 -0
  11. package/dist/schemas/dashboard/types.d.ts +51 -0
  12. package/dist/schemas/dashboard/update_dashboard_payload.schema.json +486 -0
  13. package/dist/schemas/dashboard/widgets/PatientListProps.d.ts +9 -0
  14. package/dist/schemas/dashboard/widgets/SectionCardProps.d.ts +9 -0
  15. package/dist/schemas/dashboard/widgets/ValueCardProps.d.ts +13 -0
  16. package/dist/schemas/dashboard/widgets/index.d.ts +3 -0
  17. package/dist/schemas/forms/create.schema.json +12 -0
  18. package/dist/schemas/forms/update.schema.json +22 -0
  19. package/dist/schemas/hospital/create.schema.json +23 -0
  20. package/dist/schemas/index.d.ts +15 -0
  21. package/dist/schemas/mfa/mfa-login-data.schema.json +33 -0
  22. package/dist/schemas/mobile/searchnotificationstatus.schema.json +9 -0
  23. package/dist/schemas/notification_configuration/create_trigger_payload.schema.json +170 -0
  24. package/dist/schemas/notification_configuration/index.d.ts +2 -0
  25. package/dist/schemas/notification_configuration/introspectionShema.d.ts +3 -0
  26. package/dist/schemas/notification_configuration/types.d.ts +91 -0
  27. package/dist/schemas/notification_configuration/update_trigger_payload.schema.json +169 -0
  28. package/dist/schemas/outcomes/index.d.ts +1 -0
  29. package/dist/schemas/outcomes/types.d.ts +35 -0
  30. package/dist/schemas/patient/createFullPatient.schema.json +17 -0
  31. package/dist/schemas/patient/createPatient.schema.json +12 -0
  32. package/dist/schemas/project/createCategory.schema.json +12 -0
  33. package/dist/schemas/project/export.schema.json +25 -0
  34. package/dist/schemas/project/uploadDocument.schema.json +23 -0
  35. package/dist/schemas/query/patch.schema.json +22 -0
  36. package/dist/schemas/questionnaire/createQuestionnaire.schema.json +29 -0
  37. package/dist/schemas/questionnaire/index.d.ts +1 -0
  38. package/dist/schemas/questionnaire/types.d.ts +7 -0
  39. package/dist/schemas/subform/create.schema.json +12 -0
  40. package/dist/schemas/subform/update.schema.json +12 -0
  41. package/dist/schemas/user_settings/APP_FONT_FACTOR.schema.json +10 -0
  42. package/dist/schemas/user_settings/AUTH_SECURITY_CONFIG.schema.json +41 -0
  43. package/dist/schemas/user_settings/GenericBooleanSetting.schema.json +9 -0
  44. package/dist/schemas/user_settings/index.d.ts +1 -0
  45. package/dist/schemas/user_settings/types.d.ts +5 -0
  46. package/dist/schemas/users/activate.schema.json +24 -0
  47. package/dist/schemas/users/contact.schema.json +15 -0
  48. package/dist/schemas/users/create.schema.json +92 -0
  49. package/dist/schemas/users/password.schema.json +12 -0
  50. package/dist/schemas/users/selfregister.schema.json +15 -0
  51. package/dist/schemas/users/unlinkProject.schema.json +18 -0
  52. package/package.json +176 -0
@@ -0,0 +1,170 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/CreateTriggerPayload",
4
+ "definitions": {
5
+ "CreateTriggerPayload": {
6
+ "type": "object",
7
+ "properties": {
8
+ "notified_about": {
9
+ "$ref": "#/definitions/NotifiedAboutType"
10
+ },
11
+ "text_content": {
12
+ "type": "string"
13
+ },
14
+ "configuration": {
15
+ "$ref": "#/definitions/NotificationConfigurationConf"
16
+ }
17
+ },
18
+ "required": ["notified_about"],
19
+ "additionalProperties": false
20
+ },
21
+ "NotifiedAboutType": {
22
+ "type": ["string"]
23
+ },
24
+ "NotificationConfigurationConf": {
25
+ "type": "object",
26
+ "properties": {
27
+ "conditions": {
28
+ "$ref": "#/definitions/ConditionsRules"
29
+ },
30
+ "join": {
31
+ "type": "array",
32
+ "items": {
33
+ "type": "string"
34
+ }
35
+ },
36
+ "load_patient": {
37
+ "type": "object",
38
+ "properties": {
39
+ "join": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string"
43
+ }
44
+ },
45
+ "where": {
46
+ "anyOf": [
47
+ {
48
+ "type": "object",
49
+ "additionalProperties": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ {
54
+ "type": "string",
55
+ "const": "auto"
56
+ }
57
+ ]
58
+ }
59
+ },
60
+ "required": ["where"],
61
+ "additionalProperties": false
62
+ },
63
+ "action": {
64
+ "$ref": "#/definitions/ApiAction"
65
+ },
66
+ "conditionsFormat": {
67
+ "$ref": "#/definitions/ConditionsFormat"
68
+ }
69
+ },
70
+ "additionalProperties": false
71
+ },
72
+ "ConditionsRules": {
73
+ "anyOf": [
74
+ {
75
+ "$ref": "#/definitions/Conditions"
76
+ },
77
+ {}
78
+ ],
79
+ "description": "Importing the types from json-logic-js makes the process of generating schema.json fails so we use any instead"
80
+ },
81
+ "Conditions": {
82
+ "anyOf": [
83
+ {
84
+ "$ref": "#/definitions/ConditionExpression"
85
+ },
86
+ {
87
+ "$ref": "#/definitions/ConditionOperator"
88
+ }
89
+ ]
90
+ },
91
+ "ConditionExpression": {
92
+ "type": "object",
93
+ "additionalProperties": {
94
+ "$ref": "#/definitions/ConditionValue"
95
+ }
96
+ },
97
+ "ConditionValue": {
98
+ "type": "object",
99
+ "properties": {
100
+ "equal": {
101
+ "type": ["string", "number", "boolean"]
102
+ },
103
+ "not_equal": {
104
+ "type": ["string", "number", "boolean"]
105
+ },
106
+ "contains": {
107
+ "type": "string"
108
+ },
109
+ "not_contains": {
110
+ "type": "string"
111
+ },
112
+ "greater_than": {
113
+ "type": ["string", "number"]
114
+ },
115
+ "less_than": {
116
+ "type": ["string", "number"]
117
+ },
118
+ "empty": {
119
+ "type": ["string", "number", "boolean"]
120
+ },
121
+ "not_empty": {
122
+ "type": ["string", "number", "boolean"]
123
+ },
124
+ "parseValue": {
125
+ "type": "boolean"
126
+ },
127
+ "operator": {
128
+ "type": "string",
129
+ "enum": ["AND", "OR"]
130
+ }
131
+ },
132
+ "additionalProperties": false
133
+ },
134
+ "ConditionOperator": {
135
+ "type": "object",
136
+ "properties": {
137
+ "AND": {
138
+ "type": "array",
139
+ "items": {
140
+ "$ref": "#/definitions/Conditions"
141
+ }
142
+ },
143
+ "OR": {
144
+ "type": "array",
145
+ "items": {
146
+ "$ref": "#/definitions/Conditions"
147
+ }
148
+ },
149
+ "NOT": {
150
+ "type": "array",
151
+ "items": {
152
+ "$ref": "#/definitions/Conditions"
153
+ }
154
+ },
155
+ "JQ": {
156
+ "type": "string"
157
+ }
158
+ },
159
+ "additionalProperties": false
160
+ },
161
+ "ApiAction": {
162
+ "type": "string",
163
+ "enum": ["questionnaire.create", "crf.create", "crf.update", "crf.delete"]
164
+ },
165
+ "ConditionsFormat": {
166
+ "type": "string",
167
+ "enum": ["jsonLogic", "custom"]
168
+ }
169
+ }
170
+ }
@@ -0,0 +1,2 @@
1
+ export * from './types';
2
+ export * from './introspectionShema';
@@ -0,0 +1,3 @@
1
+ import { TFunction } from 'i18next';
2
+ import { IntrospectionSchema } from './types';
3
+ export declare function getIntrospectionSchema(t: TFunction): IntrospectionSchema;
@@ -0,0 +1,91 @@
1
+ type ModelName = string;
2
+ export declare enum ApiAction {
3
+ QUESTIONNAIRE_CREATE = "questionnaire.create",
4
+ CRF_CREATE = "crf.create",
5
+ CRF_UPDATE = "crf.update",
6
+ CRF_DELETE = "crf.delete"
7
+ }
8
+ export type NotifiedAboutType = `model_${ModelName}` | `model_displayer_${ModelName}` | `model_${ModelName}_${TriggerAction}` | `model_displayer_${ModelName}_${TriggerAction}`;
9
+ export interface CreateTriggerPayload {
10
+ notified_about: NotifiedAboutType;
11
+ text_content?: string;
12
+ configuration?: NotificationConfigurationConf;
13
+ }
14
+ export type UpdateTriggerPayload = Partial<CreateTriggerPayload>;
15
+ export interface ConditionExpression {
16
+ [field: string]: ConditionValue;
17
+ }
18
+ export interface ConditionOperator {
19
+ AND?: Conditions[];
20
+ OR?: Conditions[];
21
+ NOT?: Conditions[];
22
+ JQ?: string;
23
+ }
24
+ export type Conditions = ConditionExpression | ConditionOperator;
25
+ export interface ConditionValue {
26
+ equal?: string | number | boolean;
27
+ not_equal?: string | number | boolean;
28
+ contains?: string;
29
+ not_contains?: string;
30
+ greater_than?: string | number;
31
+ less_than?: string | number;
32
+ empty?: string | number | boolean;
33
+ not_empty?: string | number | boolean;
34
+ parseValue?: boolean;
35
+ operator?: 'AND' | 'OR';
36
+ }
37
+ interface LoadPatientDataType {
38
+ join?: string[];
39
+ where: Record<string, string> | 'auto';
40
+ }
41
+ export declare enum ConditionsFormat {
42
+ JSON_LOGIC = "jsonLogic",
43
+ CUSTOM = "custom"
44
+ }
45
+ /**
46
+ * Importing the types from json-logic-js makes the process of generating schema.json fails so we use any instead
47
+ */
48
+ export type ConditionsRules = Conditions | any;
49
+ export interface NotificationConfigurationConf {
50
+ conditions?: ConditionsRules;
51
+ join?: string[];
52
+ load_patient?: LoadPatientDataType;
53
+ action?: ApiAction;
54
+ conditionsFormat?: ConditionsFormat;
55
+ }
56
+ export declare enum TriggerAction {
57
+ CREATION = "creation",
58
+ UPDATE = "update"
59
+ }
60
+ export declare enum IntrospectionSchemaType {
61
+ TEXT = "text",
62
+ DATE = "date",
63
+ TIME = "time",
64
+ BOOLEAN = "boolean",
65
+ NUMBER = "number",
66
+ SELECT = "select",
67
+ MULTISELECT = "multiselect"
68
+ }
69
+ export interface IntrospectionField {
70
+ name: string;
71
+ type: IntrospectionSchemaType;
72
+ options?: {
73
+ value: string;
74
+ title: string;
75
+ }[];
76
+ label: string;
77
+ }
78
+ export interface IntrospectionOption {
79
+ value: string;
80
+ label: string;
81
+ }
82
+ export interface IntrospectionSchemaModel {
83
+ label: string;
84
+ fields: IntrospectionField[];
85
+ relations?: IntrospectionOption[];
86
+ canJoinPatient?: boolean;
87
+ }
88
+ export interface IntrospectionSchema {
89
+ models: Record<string, IntrospectionSchemaModel>;
90
+ }
91
+ export {};
@@ -0,0 +1,169 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/UpdateTriggerPayload",
4
+ "definitions": {
5
+ "UpdateTriggerPayload": {
6
+ "type": "object",
7
+ "properties": {
8
+ "notified_about": {
9
+ "$ref": "#/definitions/NotifiedAboutType"
10
+ },
11
+ "text_content": {
12
+ "type": "string"
13
+ },
14
+ "configuration": {
15
+ "$ref": "#/definitions/NotificationConfigurationConf"
16
+ }
17
+ },
18
+ "additionalProperties": false
19
+ },
20
+ "NotifiedAboutType": {
21
+ "type": ["string"]
22
+ },
23
+ "NotificationConfigurationConf": {
24
+ "type": "object",
25
+ "properties": {
26
+ "conditions": {
27
+ "$ref": "#/definitions/ConditionsRules"
28
+ },
29
+ "join": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "string"
33
+ }
34
+ },
35
+ "load_patient": {
36
+ "type": "object",
37
+ "properties": {
38
+ "join": {
39
+ "type": "array",
40
+ "items": {
41
+ "type": "string"
42
+ }
43
+ },
44
+ "where": {
45
+ "anyOf": [
46
+ {
47
+ "type": "object",
48
+ "additionalProperties": {
49
+ "type": "string"
50
+ }
51
+ },
52
+ {
53
+ "type": "string",
54
+ "const": "auto"
55
+ }
56
+ ]
57
+ }
58
+ },
59
+ "required": ["where"],
60
+ "additionalProperties": false
61
+ },
62
+ "action": {
63
+ "$ref": "#/definitions/ApiAction"
64
+ },
65
+ "conditionsFormat": {
66
+ "$ref": "#/definitions/ConditionsFormat"
67
+ }
68
+ },
69
+ "additionalProperties": false
70
+ },
71
+ "ConditionsRules": {
72
+ "anyOf": [
73
+ {
74
+ "$ref": "#/definitions/Conditions"
75
+ },
76
+ {}
77
+ ],
78
+ "description": "Importing the types from json-logic-js makes the process of generating schema.json fails so we use any instead"
79
+ },
80
+ "Conditions": {
81
+ "anyOf": [
82
+ {
83
+ "$ref": "#/definitions/ConditionExpression"
84
+ },
85
+ {
86
+ "$ref": "#/definitions/ConditionOperator"
87
+ }
88
+ ]
89
+ },
90
+ "ConditionExpression": {
91
+ "type": "object",
92
+ "additionalProperties": {
93
+ "$ref": "#/definitions/ConditionValue"
94
+ }
95
+ },
96
+ "ConditionValue": {
97
+ "type": "object",
98
+ "properties": {
99
+ "equal": {
100
+ "type": ["string", "number", "boolean"]
101
+ },
102
+ "not_equal": {
103
+ "type": ["string", "number", "boolean"]
104
+ },
105
+ "contains": {
106
+ "type": "string"
107
+ },
108
+ "not_contains": {
109
+ "type": "string"
110
+ },
111
+ "greater_than": {
112
+ "type": ["string", "number"]
113
+ },
114
+ "less_than": {
115
+ "type": ["string", "number"]
116
+ },
117
+ "empty": {
118
+ "type": ["string", "number", "boolean"]
119
+ },
120
+ "not_empty": {
121
+ "type": ["string", "number", "boolean"]
122
+ },
123
+ "parseValue": {
124
+ "type": "boolean"
125
+ },
126
+ "operator": {
127
+ "type": "string",
128
+ "enum": ["AND", "OR"]
129
+ }
130
+ },
131
+ "additionalProperties": false
132
+ },
133
+ "ConditionOperator": {
134
+ "type": "object",
135
+ "properties": {
136
+ "AND": {
137
+ "type": "array",
138
+ "items": {
139
+ "$ref": "#/definitions/Conditions"
140
+ }
141
+ },
142
+ "OR": {
143
+ "type": "array",
144
+ "items": {
145
+ "$ref": "#/definitions/Conditions"
146
+ }
147
+ },
148
+ "NOT": {
149
+ "type": "array",
150
+ "items": {
151
+ "$ref": "#/definitions/Conditions"
152
+ }
153
+ },
154
+ "JQ": {
155
+ "type": "string"
156
+ }
157
+ },
158
+ "additionalProperties": false
159
+ },
160
+ "ApiAction": {
161
+ "type": "string",
162
+ "enum": ["questionnaire.create", "crf.create", "crf.update", "crf.delete"]
163
+ },
164
+ "ConditionsFormat": {
165
+ "type": "string",
166
+ "enum": ["jsonLogic", "custom"]
167
+ }
168
+ }
169
+ }
@@ -0,0 +1 @@
1
+ export * from './types';
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Any changes here may need changes in Caaring-js packages/perseed-api-client/src/PerseedApiClient.ts
3
+ */
4
+ type OrderDir = 'asc' | 'desc';
5
+ type AggFunction = 'avg' | 'count' | 'max' | 'min' | 'sum';
6
+ type OutcomesDateFields = 'from' | 'to';
7
+ type OutcomesDateFunctions = 'date' | 'day' | 'dayname' | 'dayofmonth' | 'dayofweek' | 'dayofyear' | 'hour' | 'minute' | 'month' | 'monthname' | 'time' | 'second' | 'week' | 'weekday' | 'weekofyear' | 'year' | 'yearweek';
8
+ type OutcomeDateField = `${OutcomesDateFields}.${OutcomesDateFunctions}`;
9
+ export type OutcomesGroupBy = 'name' | 'identifier' | 'value' | OutcomesDateFields | OutcomeDateField;
10
+ interface OutcomeDateGroup {
11
+ [dateGroup: string]: string;
12
+ }
13
+ export type Outcome = OutcomeDateGroup & {
14
+ name: string;
15
+ identifier: string;
16
+ from: string;
17
+ to: string;
18
+ value: number;
19
+ };
20
+ export interface OutcomesParams {
21
+ ecosystem: string;
22
+ projectName: string;
23
+ clinicId?: number;
24
+ name: string | string[];
25
+ identifier?: string | string[];
26
+ from?: string;
27
+ to?: string;
28
+ datesContained?: boolean;
29
+ aggType?: AggFunction;
30
+ groupBy?: OutcomesGroupBy | OutcomesGroupBy[];
31
+ limit?: number;
32
+ orderBy?: string;
33
+ orderDir?: OrderDir;
34
+ }
35
+ export {};
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for create new full patient (all forms at once)",
4
+ "type": "object",
5
+ "required": ["patient"],
6
+ "properties": {
7
+ "patient": {
8
+ "type": "object",
9
+ "additionalProperties": {
10
+ "type": ["integer", "string", "boolean", "null", "array", "object"]
11
+ }
12
+ }
13
+ },
14
+ "additionalProperties": {
15
+ "type": ["object", "array"]
16
+ }
17
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for create new patient",
4
+ "type": "array",
5
+ "items": {
6
+ "type": "object",
7
+ "additionalProperties": {
8
+ "type": ["integer", "string", "boolean", "null", "array", "object"]
9
+ }
10
+ },
11
+ "maxLength": 1
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for create a new Category of Documents Upload",
4
+ "type": "object",
5
+ "required": ["name"],
6
+ "properties": {
7
+ "name": {
8
+ "type": "string"
9
+ }
10
+ },
11
+ "additionalProperties": false
12
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for request a DB exportation to microservice",
4
+ "type": "object",
5
+ "required": ["exportFormat"],
6
+ "properties": {
7
+ "exportID": {
8
+ "type": ["null", "integer"]
9
+ },
10
+ "filterID": {
11
+ "type": ["null", "integer"]
12
+ },
13
+ "exportRaw": {
14
+ "type": ["null", "integer"]
15
+ },
16
+ "exportFormat": {
17
+ "type": "string",
18
+ "enum": ["xls", "csv", "spss"]
19
+ },
20
+ "selectedClinics": {
21
+ "type": ["null", "string"]
22
+ }
23
+ },
24
+ "additionalProperties": false
25
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for upload a file to document seed inside a project",
4
+ "type": "object",
5
+ "required": ["document_name", "url"],
6
+ "properties": {
7
+ "document_name": {
8
+ "type": "string"
9
+ },
10
+ "category_id": {
11
+ "type": "integer",
12
+ "minimum": 1
13
+ },
14
+ "url": {
15
+ "type": "string"
16
+ },
17
+ "clinic_id": {
18
+ "type": ["null", "integer"],
19
+ "minimum": 0
20
+ }
21
+ },
22
+ "additionalProperties": false
23
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for patch query endpoints",
4
+ "type": "object",
5
+ "required": ["description"],
6
+ "properties": {
7
+ "description": {
8
+ "type": "array",
9
+ "items": {
10
+ "type": "object",
11
+ "required": ["type", "actions", "content"],
12
+ "properties": {
13
+ "type": { "type": "string" },
14
+ "actions": { "type": "string" },
15
+ "content": { "type": "string" }
16
+ },
17
+ "additionalProperties": false
18
+ },
19
+ "minItems": 1
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/CreateQuestionnairePayload",
4
+ "definitions": {
5
+ "CreateQuestionnairePayload": {
6
+ "type": "object",
7
+ "properties": {
8
+ "patientId": {
9
+ "type": "number"
10
+ },
11
+ "type": {
12
+ "type": "string",
13
+ "enum": ["unique", "periodic"]
14
+ },
15
+ "date": {
16
+ "type": "string"
17
+ },
18
+ "untilDate": {
19
+ "type": "string"
20
+ },
21
+ "formName": {
22
+ "type": "string"
23
+ }
24
+ },
25
+ "required": ["type", "date", "formName"],
26
+ "additionalProperties": false
27
+ }
28
+ }
29
+ }
@@ -0,0 +1 @@
1
+ export * from './types';
@@ -0,0 +1,7 @@
1
+ export interface CreateQuestionnairePayload {
2
+ patientId?: number;
3
+ type: 'unique' | 'periodic';
4
+ date: string;
5
+ untilDate?: string;
6
+ formName: string;
7
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for create subform",
4
+ "type": "array",
5
+ "items": {
6
+ "type": "object",
7
+ "additionalProperties": {
8
+ "type": ["integer", "string", "boolean", "null", "array", "object"]
9
+ }
10
+ },
11
+ "maxLength": 1
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "description": "schema for update subform",
4
+ "type": "array",
5
+ "items": {
6
+ "type": "object",
7
+ "additionalProperties": {
8
+ "type": ["integer", "string", "boolean", "null", "array", "object"]
9
+ }
10
+ },
11
+ "maxLength": 1
12
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$ref": "#/definitions/AppFontFactor",
4
+ "definitions": {
5
+ "AppFontFactor": {
6
+ "type": "number",
7
+ "description": "App font factor"
8
+ }
9
+ }
10
+ }