cloud-ide-model-schema 1.1.156 → 1.1.158
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.
- package/lib/schema/academics/aca_class_program_master.js +1 -0
- package/lib/schema/academics/academics_education_board.d.ts +8 -0
- package/lib/schema/academics/academics_education_board.js +144 -0
- package/lib/schema/academics/index.d.ts +1 -0
- package/lib/schema/academics/index.js +1 -0
- package/lib/schema/admission/admission_application_main.js +10 -69
- package/lib/schema/admission/index.d.ts +0 -1
- package/lib/schema/admission/index.js +0 -1
- package/lib/schema/core/core_board_exam_pattern.js +1 -1
- package/lib/schema/core/core_board_grade_system.js +1 -1
- package/lib/schema/core/core_school_board_affiliation.js +1 -1
- package/lib/schema/core/index.d.ts +0 -3
- package/lib/schema/core/index.js +1 -3
- package/package.json +1 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { AcademicsEducationBoard } from "cloud-ide-lms-model";
|
|
2
|
+
import mongoose from "mongoose";
|
|
3
|
+
declare const CAcademicsEducationBoard: mongoose.Model<AcademicsEducationBoard, {}, {}, {}, mongoose.Document<unknown, {}, AcademicsEducationBoard, {}> & AcademicsEducationBoard & Required<{
|
|
4
|
+
_id: string;
|
|
5
|
+
}> & {
|
|
6
|
+
__v: number;
|
|
7
|
+
}, any>;
|
|
8
|
+
export { CAcademicsEducationBoard };
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CAcademicsEducationBoard = void 0;
|
|
4
|
+
var mongoose_1 = require("mongoose");
|
|
5
|
+
/* SCHEMA START */
|
|
6
|
+
var academics_education_board = new mongoose_1.Schema({
|
|
7
|
+
edbrd_code: {
|
|
8
|
+
type: String,
|
|
9
|
+
required: true,
|
|
10
|
+
unique: true,
|
|
11
|
+
maxlength: 50,
|
|
12
|
+
trim: true,
|
|
13
|
+
uppercase: true,
|
|
14
|
+
comment: "Board code (e.g., CBSE, ICSE, MAH-SSC, KAR-SSC, etc.)"
|
|
15
|
+
},
|
|
16
|
+
edbrd_name: {
|
|
17
|
+
type: String,
|
|
18
|
+
required: true,
|
|
19
|
+
maxlength: 200,
|
|
20
|
+
trim: true,
|
|
21
|
+
comment: "Board name (e.g., Central Board of Secondary Education)"
|
|
22
|
+
},
|
|
23
|
+
edbrd_short_name: {
|
|
24
|
+
type: String,
|
|
25
|
+
required: true,
|
|
26
|
+
maxlength: 50,
|
|
27
|
+
trim: true,
|
|
28
|
+
comment: "Short name (e.g., CBSE, ICSE, State Board)"
|
|
29
|
+
},
|
|
30
|
+
edbrd_type_sygms: {
|
|
31
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
32
|
+
ref: "core_general_master",
|
|
33
|
+
required: true,
|
|
34
|
+
comment: "Board type (National, State, International, Higher Education, Other) - Reference to core_general_master with type 'EDUCATION_BOARD_TYPE'"
|
|
35
|
+
},
|
|
36
|
+
edbrd_category_sygms: {
|
|
37
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
38
|
+
ref: "core_general_master",
|
|
39
|
+
required: true,
|
|
40
|
+
comment: "Board category (School, Higher Education, Both) - Reference to core_general_master with type 'EDUCATION_BOARD_CATEGORY'"
|
|
41
|
+
},
|
|
42
|
+
edbrd_state: {
|
|
43
|
+
type: String,
|
|
44
|
+
maxlength: 100,
|
|
45
|
+
trim: true,
|
|
46
|
+
comment: "State name (for state boards, e.g., Maharashtra, Karnataka)"
|
|
47
|
+
},
|
|
48
|
+
edbrd_country_id_syctr: {
|
|
49
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
50
|
+
ref: "core_system_country",
|
|
51
|
+
comment: "Country ID (default: India)"
|
|
52
|
+
},
|
|
53
|
+
edbrd_website: {
|
|
54
|
+
type: String,
|
|
55
|
+
maxlength: 255,
|
|
56
|
+
trim: true,
|
|
57
|
+
comment: "Board official website"
|
|
58
|
+
},
|
|
59
|
+
edbrd_contact_email: {
|
|
60
|
+
type: String,
|
|
61
|
+
maxlength: 255,
|
|
62
|
+
trim: true,
|
|
63
|
+
lowercase: true,
|
|
64
|
+
comment: "Board contact email"
|
|
65
|
+
},
|
|
66
|
+
edbrd_contact_phone: {
|
|
67
|
+
type: String,
|
|
68
|
+
maxlength: 50,
|
|
69
|
+
trim: true,
|
|
70
|
+
comment: "Board contact phone"
|
|
71
|
+
},
|
|
72
|
+
edbrd_address: {
|
|
73
|
+
type: String,
|
|
74
|
+
maxlength: 500,
|
|
75
|
+
trim: true,
|
|
76
|
+
comment: "Board address"
|
|
77
|
+
},
|
|
78
|
+
edbrd_pin_sypin: {
|
|
79
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
80
|
+
ref: "core_pin_code",
|
|
81
|
+
comment: "PIN ID - Auto-populated from PIN search"
|
|
82
|
+
},
|
|
83
|
+
edbrd_city_sypin: {
|
|
84
|
+
type: String,
|
|
85
|
+
maxlength: 100,
|
|
86
|
+
trim: true,
|
|
87
|
+
comment: "City - Auto-populated from PIN"
|
|
88
|
+
},
|
|
89
|
+
edbrd_state_sypin: {
|
|
90
|
+
type: String,
|
|
91
|
+
maxlength: 100,
|
|
92
|
+
trim: true,
|
|
93
|
+
comment: "State - Auto-populated from PIN"
|
|
94
|
+
},
|
|
95
|
+
edbrd_udise_format_sygms: {
|
|
96
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
97
|
+
ref: "core_general_master",
|
|
98
|
+
comment: "UDISE code format - Reference to core_general_master with type 'EDUCATION_BOARD_UDISE_FORMAT'"
|
|
99
|
+
},
|
|
100
|
+
edbrd_affiliation_format_sygms: {
|
|
101
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
102
|
+
ref: "core_general_master",
|
|
103
|
+
comment: "Affiliation number format - Reference to core_general_master with type 'EDUCATION_BOARD_AFFILIATION_FORMAT'"
|
|
104
|
+
},
|
|
105
|
+
edbrd_roll_number_format_sygms: {
|
|
106
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
107
|
+
ref: "core_general_master",
|
|
108
|
+
comment: "Roll number format - Reference to core_general_master with type 'EDUCATION_BOARD_ROLL_NUMBER_FORMAT'"
|
|
109
|
+
},
|
|
110
|
+
edbrd_registration_number_format_sygms: {
|
|
111
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
112
|
+
ref: "core_general_master",
|
|
113
|
+
comment: "Registration number format - Reference to core_general_master with type 'EDUCATION_BOARD_REGISTRATION_NUM_FORMAT'"
|
|
114
|
+
},
|
|
115
|
+
edbrd_grading_system_sygms: {
|
|
116
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
117
|
+
ref: "core_general_master",
|
|
118
|
+
comment: "Grading system (Percentage, CGPA, Letter Grade, Both) - Reference to core_general_master with type 'EDUCATION_BOARD_GRADING_SYSTEM'"
|
|
119
|
+
},
|
|
120
|
+
edbrd_grade_scale_sygms: {
|
|
121
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
122
|
+
ref: "core_general_master",
|
|
123
|
+
comment: "Grade scale - Reference to core_general_master with type 'EDUCATION_BOARD_GRADE_SCALE'"
|
|
124
|
+
},
|
|
125
|
+
edbrd_configuration: {
|
|
126
|
+
type: Object,
|
|
127
|
+
default: {},
|
|
128
|
+
comment: "Board-specific configuration (subjects, streams, etc.) - Note: Exam patterns are managed in core_board_exam_pattern table"
|
|
129
|
+
},
|
|
130
|
+
edbrd_isactive: {
|
|
131
|
+
type: Boolean,
|
|
132
|
+
default: true,
|
|
133
|
+
comment: "Board active status"
|
|
134
|
+
}
|
|
135
|
+
}, { collection: 'academics_education_board' });
|
|
136
|
+
// Indexes for performance
|
|
137
|
+
// Note: edbrd_code index is automatically created by unique: true, so we don't need to add it explicitly
|
|
138
|
+
academics_education_board.index({ edbrd_type_sygms: 1 });
|
|
139
|
+
academics_education_board.index({ edbrd_category_sygms: 1 });
|
|
140
|
+
academics_education_board.index({ edbrd_state: 1 });
|
|
141
|
+
academics_education_board.index({ edbrd_pin_sypin: 1 });
|
|
142
|
+
academics_education_board.index({ edbrd_isactive: 1 });
|
|
143
|
+
var CAcademicsEducationBoard = mongoose_1.default.model("academics_education_board", academics_education_board);
|
|
144
|
+
exports.CAcademicsEducationBoard = CAcademicsEducationBoard;
|
|
@@ -20,4 +20,5 @@ __exportStar(require("./aca_class_program_master"), exports);
|
|
|
20
20
|
__exportStar(require("./aca_class_program_term"), exports);
|
|
21
21
|
__exportStar(require("./aca_prg_trm_section"), exports);
|
|
22
22
|
__exportStar(require("./aca_class_prg_branch"), exports);
|
|
23
|
+
__exportStar(require("./academics_education_board"), exports);
|
|
23
24
|
__exportStar(require("./academics_bonafide_request"), exports);
|
|
@@ -117,7 +117,7 @@ var admission_application_main = new mongoose_1.Schema({
|
|
|
117
117
|
},
|
|
118
118
|
admap_grn_authority_id_edbrd: {
|
|
119
119
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
120
|
-
ref: "
|
|
120
|
+
ref: "academics_education_board",
|
|
121
121
|
comment: "Education board/authority that assigned GRN - Reference to core_education_board"
|
|
122
122
|
},
|
|
123
123
|
admap_handicap_certificate_id_cyfm: {
|
|
@@ -288,7 +288,7 @@ var admission_application_main = new mongoose_1.Schema({
|
|
|
288
288
|
// BOARD INFORMATION - Previous Education Board
|
|
289
289
|
admap_previous_education_board_id_edbrd: {
|
|
290
290
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
291
|
-
ref: "
|
|
291
|
+
ref: "academics_education_board",
|
|
292
292
|
comment: "Previous education board (CBSE, State Board, ICSE, etc.)"
|
|
293
293
|
},
|
|
294
294
|
admap_previous_board_name: {
|
|
@@ -388,84 +388,20 @@ var admission_application_main = new mongoose_1.Schema({
|
|
|
388
388
|
// BOARD INFORMATION - Current School Board
|
|
389
389
|
admap_current_school_board_id_edbrd: {
|
|
390
390
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
391
|
-
ref: "
|
|
391
|
+
ref: "academics_education_board",
|
|
392
392
|
comment: "Current school's education board"
|
|
393
393
|
},
|
|
394
394
|
admap_applying_for_board_id_edbrd: {
|
|
395
395
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
396
|
-
ref: "
|
|
396
|
+
ref: "academics_education_board",
|
|
397
397
|
comment: "Board student is applying for (if different from current)"
|
|
398
398
|
},
|
|
399
399
|
// SECTION 4: EMERGENCY CONTACT
|
|
400
400
|
// Note: Guardian information is managed through Family Members & Guardians section
|
|
401
|
-
admap_emergency_contact_name: {
|
|
402
|
-
type: String,
|
|
403
|
-
maxlength: 255,
|
|
404
|
-
trim: true
|
|
405
|
-
},
|
|
406
|
-
admap_emergency_contact_relationship_id_sygms: {
|
|
407
|
-
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
408
|
-
ref: "core_general_master",
|
|
409
|
-
comment: "Emergency contact relationship - Reference to core_general_master (type code: family_relationship)"
|
|
410
|
-
},
|
|
411
|
-
admap_emergency_contact_phone: {
|
|
412
|
-
type: String,
|
|
413
|
-
maxlength: 50,
|
|
414
|
-
trim: true
|
|
415
|
-
},
|
|
416
|
-
admap_emergency_contact_country_code: {
|
|
417
|
-
type: String,
|
|
418
|
-
maxlength: 10,
|
|
419
|
-
trim: true
|
|
420
|
-
},
|
|
421
|
-
admap_authorized_pick_up_list: {
|
|
422
|
-
type: String,
|
|
423
|
-
maxlength: 500,
|
|
424
|
-
trim: true,
|
|
425
|
-
comment: "Comma-separated list of authorized persons"
|
|
426
|
-
},
|
|
427
401
|
admap_parent_volunteer_interest: {
|
|
428
402
|
type: Boolean,
|
|
429
403
|
default: false
|
|
430
404
|
},
|
|
431
|
-
admap_language_spoken_at_home: {
|
|
432
|
-
type: String,
|
|
433
|
-
maxlength: 100,
|
|
434
|
-
trim: true
|
|
435
|
-
},
|
|
436
|
-
admap_sibling_information: {
|
|
437
|
-
type: String,
|
|
438
|
-
maxlength: 500,
|
|
439
|
-
trim: true,
|
|
440
|
-
comment: "Sibling information (names, grades, schools)"
|
|
441
|
-
},
|
|
442
|
-
admap_transportation_method_id_sygms: {
|
|
443
|
-
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
444
|
-
ref: "core_general_master",
|
|
445
|
-
comment: "Transportation method - Reference to core_general_master (type code: transportation_method)"
|
|
446
|
-
},
|
|
447
|
-
admap_bus_route_number: {
|
|
448
|
-
type: String,
|
|
449
|
-
maxlength: 50,
|
|
450
|
-
trim: true
|
|
451
|
-
},
|
|
452
|
-
admap_after_school_care_required: {
|
|
453
|
-
type: Boolean,
|
|
454
|
-
default: false
|
|
455
|
-
},
|
|
456
|
-
admap_after_school_care_provider: {
|
|
457
|
-
type: String,
|
|
458
|
-
maxlength: 255,
|
|
459
|
-
trim: true
|
|
460
|
-
},
|
|
461
|
-
admap_early_drop_off_required: {
|
|
462
|
-
type: Boolean,
|
|
463
|
-
default: false
|
|
464
|
-
},
|
|
465
|
-
admap_late_pick_up_required: {
|
|
466
|
-
type: Boolean,
|
|
467
|
-
default: false
|
|
468
|
-
},
|
|
469
405
|
admap_custody_documentation_status: {
|
|
470
406
|
type: Boolean,
|
|
471
407
|
default: false,
|
|
@@ -498,7 +434,12 @@ var admission_application_main = new mongoose_1.Schema({
|
|
|
498
434
|
type: String,
|
|
499
435
|
maxlength: 100,
|
|
500
436
|
trim: true,
|
|
501
|
-
|
|
437
|
+
comment: "Legacy string field"
|
|
438
|
+
},
|
|
439
|
+
admap_intended_payment_method_id_sygms: {
|
|
440
|
+
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
441
|
+
ref: "core_general_master",
|
|
442
|
+
comment: "Intended payment method - Reference to core_general_master (type code: payment_method)"
|
|
502
443
|
},
|
|
503
444
|
admap_application_fee_payment_status: {
|
|
504
445
|
type: Boolean,
|
|
@@ -3,7 +3,6 @@ export * from "./admission_elective_detail";
|
|
|
3
3
|
export * from "./admission_status_history";
|
|
4
4
|
export * from "./admission_document_uploads";
|
|
5
5
|
export * from "./admission_contact_addresses";
|
|
6
|
-
export * from "./admission_family_members";
|
|
7
6
|
export * from "./admission_fee_snapshot";
|
|
8
7
|
export * from "./admission_rte_details";
|
|
9
8
|
export * from "./admission_vital_information";
|
|
@@ -19,7 +19,6 @@ __exportStar(require("./admission_elective_detail"), exports);
|
|
|
19
19
|
__exportStar(require("./admission_status_history"), exports);
|
|
20
20
|
__exportStar(require("./admission_document_uploads"), exports);
|
|
21
21
|
__exportStar(require("./admission_contact_addresses"), exports);
|
|
22
|
-
__exportStar(require("./admission_family_members"), exports);
|
|
23
22
|
__exportStar(require("./admission_fee_snapshot"), exports);
|
|
24
23
|
__exportStar(require("./admission_rte_details"), exports);
|
|
25
24
|
__exportStar(require("./admission_vital_information"), exports);
|
|
@@ -6,7 +6,7 @@ var mongoose_1 = require("mongoose");
|
|
|
6
6
|
var core_board_exam_pattern = new mongoose_1.Schema({
|
|
7
7
|
cbept_board_id_edbrd: {
|
|
8
8
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
9
|
-
ref: "
|
|
9
|
+
ref: "academics_education_board",
|
|
10
10
|
required: true,
|
|
11
11
|
comment: "Education Board ID"
|
|
12
12
|
},
|
|
@@ -6,7 +6,7 @@ var mongoose_1 = require("mongoose");
|
|
|
6
6
|
var core_board_grade_system = new mongoose_1.Schema({
|
|
7
7
|
cbgs_board_id_edbrd: {
|
|
8
8
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
9
|
-
ref: "
|
|
9
|
+
ref: "academics_education_board",
|
|
10
10
|
required: true,
|
|
11
11
|
comment: "Education Board ID"
|
|
12
12
|
},
|
|
@@ -12,7 +12,7 @@ var core_school_board_affiliation = new mongoose_1.Schema({
|
|
|
12
12
|
},
|
|
13
13
|
scbaf_board_id_edbrd: {
|
|
14
14
|
type: mongoose_1.default.Schema.Types.ObjectId,
|
|
15
|
-
ref: "
|
|
15
|
+
ref: "academics_education_board",
|
|
16
16
|
required: true,
|
|
17
17
|
comment: "Education Board ID"
|
|
18
18
|
},
|
|
@@ -30,7 +30,6 @@ import { CCoreUserRole } from './core_user_role';
|
|
|
30
30
|
import { CCoreUserRoleRights } from './core_user_role_rights';
|
|
31
31
|
import { CCoreUserRoleExceptions } from './core_user_role_exceptions';
|
|
32
32
|
import { CCoreUserTypeMapping } from './core_user_type_mapping';
|
|
33
|
-
import { CCoreEducationBoard } from './core_education_board';
|
|
34
33
|
import { CCoreSchoolBoardAffiliation } from './core_school_board_affiliation';
|
|
35
34
|
import { CCoreEntityUdise } from './core_entity_udise';
|
|
36
35
|
import { CCoreBoardExamPattern } from './core_board_exam_pattern';
|
|
@@ -71,8 +70,6 @@ CCoreUserRole,
|
|
|
71
70
|
CCoreUserRoleRights,
|
|
72
71
|
/** User Role Exceptions schemas */
|
|
73
72
|
CCoreUserRoleExceptions,
|
|
74
|
-
/** Education Board schemas */
|
|
75
|
-
CCoreEducationBoard,
|
|
76
73
|
/** School Board Affiliation schemas */
|
|
77
74
|
CCoreSchoolBoardAffiliation,
|
|
78
75
|
/** Entity UDISE schemas */
|
package/lib/schema/core/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.CCoreWorkflowTransactionHistory = exports.CCoreWorkflowApproverRules = exports.CCoreWorkflowConfig = exports.CCoreWorkflowRegistry = exports.CCoreDashboardCards = exports.CCoreUserTypeMapping = exports.CCoreBoardGradeSystem = exports.CCoreBoardExamPattern = exports.CCoreEntityUdise = exports.CCoreSchoolBoardAffiliation = exports.
|
|
17
|
+
exports.CCoreWorkflowTransactionHistory = exports.CCoreWorkflowApproverRules = exports.CCoreWorkflowConfig = exports.CCoreWorkflowRegistry = exports.CCoreDashboardCards = exports.CCoreUserTypeMapping = exports.CCoreBoardGradeSystem = exports.CCoreBoardExamPattern = exports.CCoreEntityUdise = exports.CCoreSchoolBoardAffiliation = exports.CCoreUserRoleExceptions = exports.CCoreUserRoleRights = exports.CCoreUserRole = exports.CCoreUserFamilyDetails = exports.CCoreUserDocuments = exports.CCoreSydept = exports.CCoreSydsgl = exports.CCoreSydsg = exports.CCoreSycr = exports.CCoreSypn = exports.CCoreSyoth = exports.CCoreSyupth = exports.CCoreSyth = exports.CCoreSylang = exports.CCoreSynat = exports.CCoreSyctr = exports.CCoreCyfm = exports.CCoreSyenm = exports.CCoreSygmt = exports.CCoreSygms = exports.CCoreSype = exports.CCoreSypgr = exports.CCoreSyptb = exports.CCoreSypin = exports.CCoreFinancialConfig = exports.CCoreSyco = exports.CCoreSyen = exports.CCoreSylog = exports.CCoreSyme = exports.CCoreSytm = exports.CCoreSypg = void 0;
|
|
18
18
|
var core_system_pages_1 = require("./core_system_pages");
|
|
19
19
|
Object.defineProperty(exports, "CCoreSypg", { enumerable: true, get: function () { return core_system_pages_1.CCoreSypg; } });
|
|
20
20
|
var core_system_pages_theme_1 = require("./core_system_pages_theme");
|
|
@@ -79,8 +79,6 @@ var core_user_role_exceptions_1 = require("./core_user_role_exceptions");
|
|
|
79
79
|
Object.defineProperty(exports, "CCoreUserRoleExceptions", { enumerable: true, get: function () { return core_user_role_exceptions_1.CCoreUserRoleExceptions; } });
|
|
80
80
|
var core_user_type_mapping_1 = require("./core_user_type_mapping");
|
|
81
81
|
Object.defineProperty(exports, "CCoreUserTypeMapping", { enumerable: true, get: function () { return core_user_type_mapping_1.CCoreUserTypeMapping; } });
|
|
82
|
-
var core_education_board_1 = require("./core_education_board");
|
|
83
|
-
Object.defineProperty(exports, "CCoreEducationBoard", { enumerable: true, get: function () { return core_education_board_1.CCoreEducationBoard; } });
|
|
84
82
|
var core_school_board_affiliation_1 = require("./core_school_board_affiliation");
|
|
85
83
|
Object.defineProperty(exports, "CCoreSchoolBoardAffiliation", { enumerable: true, get: function () { return core_school_board_affiliation_1.CCoreSchoolBoardAffiliation; } });
|
|
86
84
|
var core_entity_udise_1 = require("./core_entity_udise");
|
package/package.json
CHANGED