@kohost/api-client 3.6.1 → 3.7.0

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 (47) hide show
  1. package/dist/cjs/Client/index.js +216 -72
  2. package/dist/cjs/Models/Issue.js +35 -0
  3. package/dist/cjs/Models/index.js +2 -0
  4. package/dist/cjs/schemas/definitions.json +1 -0
  5. package/dist/cjs/schemas/issue.json +44 -0
  6. package/dist/cjs/schemas/property.json +8 -0
  7. package/dist/cjs/schemas/ticket.json +3 -0
  8. package/dist/cjs/utils/entityFactory.js +2 -0
  9. package/dist/esm/Client.js +216 -72
  10. package/dist/esm/Client.js.map +3 -3
  11. package/dist/esm/Models.js +102 -1
  12. package/dist/esm/Models.js.map +3 -3
  13. package/dist/esm/utils.js +104 -1
  14. package/dist/esm/utils.js.map +3 -3
  15. package/dist/types/Models/Issue.d.ts +17 -0
  16. package/dist/types/Models/Issue.d.ts.map +1 -0
  17. package/dist/types/Models/index.d.ts +2 -1
  18. package/dist/types/schemas/AlarmSchema.d.ts +1 -0
  19. package/dist/types/schemas/CameraSchema.d.ts +1 -0
  20. package/dist/types/schemas/CategorySchema.d.ts +1 -0
  21. package/dist/types/schemas/CourtesySchema.d.ts +1 -0
  22. package/dist/types/schemas/CredentialSchema.d.ts +1 -0
  23. package/dist/types/schemas/DimmerSchema.d.ts +1 -0
  24. package/dist/types/schemas/GatewaySchema.d.ts +1 -0
  25. package/dist/types/schemas/IssueSchema.d.ts +24 -0
  26. package/dist/types/schemas/LockSchema.d.ts +1 -0
  27. package/dist/types/schemas/MediaSourceSchema.d.ts +1 -0
  28. package/dist/types/schemas/MotionSensorSchema.d.ts +1 -0
  29. package/dist/types/schemas/ProductSchema.d.ts +1 -0
  30. package/dist/types/schemas/PropertySchema.d.ts +4 -0
  31. package/dist/types/schemas/ReservationSchema.d.ts +1 -0
  32. package/dist/types/schemas/RoomSchema.d.ts +10 -0
  33. package/dist/types/schemas/SpaceSchema.d.ts +1 -0
  34. package/dist/types/schemas/SwitchSchema.d.ts +1 -0
  35. package/dist/types/schemas/SystemUserSchema.d.ts +1 -0
  36. package/dist/types/schemas/ThermostatSchema.d.ts +1 -0
  37. package/dist/types/schemas/TicketSchema.d.ts +1 -0
  38. package/dist/types/schemas/UserSchema.d.ts +1 -0
  39. package/dist/types/schemas/WindowCoveringSchema.d.ts +1 -0
  40. package/dist/types/utils/entityFactory.d.ts.map +1 -1
  41. package/dist/useCases/{AddDefaultScenesToRooms.js → CreateIssue.js} +2 -2
  42. package/dist/useCases/{AddScenesToRoom.js → DeleteIssue.js} +3 -3
  43. package/dist/useCases/DescribeIssue.js +28 -0
  44. package/dist/useCases/ListIssues.js +28 -0
  45. package/dist/useCases/UpdateIssue.js +28 -0
  46. package/dist/useCases/UpdatePropertySettings.js +28 -0
  47. package/package.json +1 -1
@@ -3711,74 +3711,6 @@ var require_SetRoomScene = __commonJS({
3711
3711
  }
3712
3712
  });
3713
3713
 
3714
- // dist/useCases/AddScenesToRoom.js
3715
- var require_AddScenesToRoom = __commonJS({
3716
- "dist/useCases/AddScenesToRoom.js"(exports2, module2) {
3717
- module2.exports = /* @__PURE__ */ __name(function AddScenesToRoom2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
3718
- if (!requestData) requestData = {};
3719
- const pathParams = [":id"];
3720
- const { data, query, headers } = requestData;
3721
- let url = "/rooms/:id/scenes";
3722
- if (pathParams && data) {
3723
- for (const param of pathParams) {
3724
- const paramName = param.replace(":", "");
3725
- url = url.replace(param, data[paramName]);
3726
- }
3727
- }
3728
- if (url.match(/:[a-zA-Z0-9]+/g)) {
3729
- const missingParams = url.match(/:[a-zA-Z0-9]+/g);
3730
- const missing = missingParams.map((param) => param.replace(":", ""));
3731
- return Promise.reject(
3732
- new Error("Missing parameters: " + missing.join(", "))
3733
- );
3734
- }
3735
- const config = {
3736
- method: "post",
3737
- url,
3738
- ...httpConfigOptions
3739
- };
3740
- if (data) config.data = data;
3741
- if (query) config.params = query;
3742
- if (headers) config.headers = headers;
3743
- return this._http.request(config);
3744
- }, "AddScenesToRoom");
3745
- }
3746
- });
3747
-
3748
- // dist/useCases/AddDefaultScenesToRooms.js
3749
- var require_AddDefaultScenesToRooms = __commonJS({
3750
- "dist/useCases/AddDefaultScenesToRooms.js"(exports2, module2) {
3751
- module2.exports = /* @__PURE__ */ __name(function AddDefaultScenesToRooms2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
3752
- if (!requestData) requestData = {};
3753
- const pathParams = null;
3754
- const { data, query, headers } = requestData;
3755
- let url = "/rooms/scenes/default";
3756
- if (pathParams && data) {
3757
- for (const param of pathParams) {
3758
- const paramName = param.replace(":", "");
3759
- url = url.replace(param, data[paramName]);
3760
- }
3761
- }
3762
- if (url.match(/:[a-zA-Z0-9]+/g)) {
3763
- const missingParams = url.match(/:[a-zA-Z0-9]+/g);
3764
- const missing = missingParams.map((param) => param.replace(":", ""));
3765
- return Promise.reject(
3766
- new Error("Missing parameters: " + missing.join(", "))
3767
- );
3768
- }
3769
- const config = {
3770
- method: "post",
3771
- url,
3772
- ...httpConfigOptions
3773
- };
3774
- if (data) config.data = data;
3775
- if (query) config.params = query;
3776
- if (headers) config.headers = headers;
3777
- return this._http.request(config);
3778
- }, "AddDefaultScenesToRooms");
3779
- }
3780
- });
3781
-
3782
3714
  // dist/useCases/AutoCloseTickets.js
3783
3715
  var require_AutoCloseTickets = __commonJS({
3784
3716
  "dist/useCases/AutoCloseTickets.js"(exports2, module2) {
@@ -5989,6 +5921,40 @@ var require_DescribeProperty = __commonJS({
5989
5921
  }
5990
5922
  });
5991
5923
 
5924
+ // dist/useCases/UpdatePropertySettings.js
5925
+ var require_UpdatePropertySettings = __commonJS({
5926
+ "dist/useCases/UpdatePropertySettings.js"(exports2, module2) {
5927
+ module2.exports = /* @__PURE__ */ __name(function UpdatePropertySettings2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
5928
+ if (!requestData) requestData = {};
5929
+ const pathParams = [":id"];
5930
+ const { data, query, headers } = requestData;
5931
+ let url = "/properties/:id/settings";
5932
+ if (pathParams && data) {
5933
+ for (const param of pathParams) {
5934
+ const paramName = param.replace(":", "");
5935
+ url = url.replace(param, data[paramName]);
5936
+ }
5937
+ }
5938
+ if (url.match(/:[a-zA-Z0-9]+/g)) {
5939
+ const missingParams = url.match(/:[a-zA-Z0-9]+/g);
5940
+ const missing = missingParams.map((param) => param.replace(":", ""));
5941
+ return Promise.reject(
5942
+ new Error("Missing parameters: " + missing.join(", "))
5943
+ );
5944
+ }
5945
+ const config = {
5946
+ method: "put",
5947
+ url,
5948
+ ...httpConfigOptions
5949
+ };
5950
+ if (data) config.data = data;
5951
+ if (query) config.params = query;
5952
+ if (headers) config.headers = headers;
5953
+ return this._http.request(config);
5954
+ }, "UpdatePropertySettings");
5955
+ }
5956
+ });
5957
+
5992
5958
  // dist/useCases/EmailUserAccountSetup.js
5993
5959
  var require_EmailUserAccountSetup = __commonJS({
5994
5960
  "dist/useCases/EmailUserAccountSetup.js"(exports2, module2) {
@@ -6873,6 +6839,176 @@ var require_DescribeSOS = __commonJS({
6873
6839
  }
6874
6840
  });
6875
6841
 
6842
+ // dist/useCases/DescribeIssue.js
6843
+ var require_DescribeIssue = __commonJS({
6844
+ "dist/useCases/DescribeIssue.js"(exports2, module2) {
6845
+ module2.exports = /* @__PURE__ */ __name(function DescribeIssue2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
6846
+ if (!requestData) requestData = {};
6847
+ const pathParams = [":id"];
6848
+ const { data, query, headers } = requestData;
6849
+ let url = "/issues/:id";
6850
+ if (pathParams && data) {
6851
+ for (const param of pathParams) {
6852
+ const paramName = param.replace(":", "");
6853
+ url = url.replace(param, data[paramName]);
6854
+ }
6855
+ }
6856
+ if (url.match(/:[a-zA-Z0-9]+/g)) {
6857
+ const missingParams = url.match(/:[a-zA-Z0-9]+/g);
6858
+ const missing = missingParams.map((param) => param.replace(":", ""));
6859
+ return Promise.reject(
6860
+ new Error("Missing parameters: " + missing.join(", "))
6861
+ );
6862
+ }
6863
+ const config = {
6864
+ method: "get",
6865
+ url,
6866
+ ...httpConfigOptions
6867
+ };
6868
+ if (data) config.data = data;
6869
+ if (query) config.params = query;
6870
+ if (headers) config.headers = headers;
6871
+ return this._http.request(config);
6872
+ }, "DescribeIssue");
6873
+ }
6874
+ });
6875
+
6876
+ // dist/useCases/ListIssues.js
6877
+ var require_ListIssues = __commonJS({
6878
+ "dist/useCases/ListIssues.js"(exports2, module2) {
6879
+ module2.exports = /* @__PURE__ */ __name(function ListIssues2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
6880
+ if (!requestData) requestData = {};
6881
+ const pathParams = null;
6882
+ const { data, query, headers } = requestData;
6883
+ let url = "/issues";
6884
+ if (pathParams && data) {
6885
+ for (const param of pathParams) {
6886
+ const paramName = param.replace(":", "");
6887
+ url = url.replace(param, data[paramName]);
6888
+ }
6889
+ }
6890
+ if (url.match(/:[a-zA-Z0-9]+/g)) {
6891
+ const missingParams = url.match(/:[a-zA-Z0-9]+/g);
6892
+ const missing = missingParams.map((param) => param.replace(":", ""));
6893
+ return Promise.reject(
6894
+ new Error("Missing parameters: " + missing.join(", "))
6895
+ );
6896
+ }
6897
+ const config = {
6898
+ method: "get",
6899
+ url,
6900
+ ...httpConfigOptions
6901
+ };
6902
+ if (data) config.data = data;
6903
+ if (query) config.params = query;
6904
+ if (headers) config.headers = headers;
6905
+ return this._http.request(config);
6906
+ }, "ListIssues");
6907
+ }
6908
+ });
6909
+
6910
+ // dist/useCases/DeleteIssue.js
6911
+ var require_DeleteIssue = __commonJS({
6912
+ "dist/useCases/DeleteIssue.js"(exports2, module2) {
6913
+ module2.exports = /* @__PURE__ */ __name(function DeleteIssue2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
6914
+ if (!requestData) requestData = {};
6915
+ const pathParams = [":id"];
6916
+ const { data, query, headers } = requestData;
6917
+ let url = "/issues/:id";
6918
+ if (pathParams && data) {
6919
+ for (const param of pathParams) {
6920
+ const paramName = param.replace(":", "");
6921
+ url = url.replace(param, data[paramName]);
6922
+ }
6923
+ }
6924
+ if (url.match(/:[a-zA-Z0-9]+/g)) {
6925
+ const missingParams = url.match(/:[a-zA-Z0-9]+/g);
6926
+ const missing = missingParams.map((param) => param.replace(":", ""));
6927
+ return Promise.reject(
6928
+ new Error("Missing parameters: " + missing.join(", "))
6929
+ );
6930
+ }
6931
+ const config = {
6932
+ method: "delete",
6933
+ url,
6934
+ ...httpConfigOptions
6935
+ };
6936
+ if (data) config.data = data;
6937
+ if (query) config.params = query;
6938
+ if (headers) config.headers = headers;
6939
+ return this._http.request(config);
6940
+ }, "DeleteIssue");
6941
+ }
6942
+ });
6943
+
6944
+ // dist/useCases/CreateIssue.js
6945
+ var require_CreateIssue = __commonJS({
6946
+ "dist/useCases/CreateIssue.js"(exports2, module2) {
6947
+ module2.exports = /* @__PURE__ */ __name(function CreateIssue2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
6948
+ if (!requestData) requestData = {};
6949
+ const pathParams = null;
6950
+ const { data, query, headers } = requestData;
6951
+ let url = "/issues";
6952
+ if (pathParams && data) {
6953
+ for (const param of pathParams) {
6954
+ const paramName = param.replace(":", "");
6955
+ url = url.replace(param, data[paramName]);
6956
+ }
6957
+ }
6958
+ if (url.match(/:[a-zA-Z0-9]+/g)) {
6959
+ const missingParams = url.match(/:[a-zA-Z0-9]+/g);
6960
+ const missing = missingParams.map((param) => param.replace(":", ""));
6961
+ return Promise.reject(
6962
+ new Error("Missing parameters: " + missing.join(", "))
6963
+ );
6964
+ }
6965
+ const config = {
6966
+ method: "post",
6967
+ url,
6968
+ ...httpConfigOptions
6969
+ };
6970
+ if (data) config.data = data;
6971
+ if (query) config.params = query;
6972
+ if (headers) config.headers = headers;
6973
+ return this._http.request(config);
6974
+ }, "CreateIssue");
6975
+ }
6976
+ });
6977
+
6978
+ // dist/useCases/UpdateIssue.js
6979
+ var require_UpdateIssue = __commonJS({
6980
+ "dist/useCases/UpdateIssue.js"(exports2, module2) {
6981
+ module2.exports = /* @__PURE__ */ __name(function UpdateIssue2(requestData = { data: null, query: null, headers: null }, httpConfigOptions = {}) {
6982
+ if (!requestData) requestData = {};
6983
+ const pathParams = [":id"];
6984
+ const { data, query, headers } = requestData;
6985
+ let url = "/issues/:id";
6986
+ if (pathParams && data) {
6987
+ for (const param of pathParams) {
6988
+ const paramName = param.replace(":", "");
6989
+ url = url.replace(param, data[paramName]);
6990
+ }
6991
+ }
6992
+ if (url.match(/:[a-zA-Z0-9]+/g)) {
6993
+ const missingParams = url.match(/:[a-zA-Z0-9]+/g);
6994
+ const missing = missingParams.map((param) => param.replace(":", ""));
6995
+ return Promise.reject(
6996
+ new Error("Missing parameters: " + missing.join(", "))
6997
+ );
6998
+ }
6999
+ const config = {
7000
+ method: "put",
7001
+ url,
7002
+ ...httpConfigOptions
7003
+ };
7004
+ if (data) config.data = data;
7005
+ if (query) config.params = query;
7006
+ if (headers) config.headers = headers;
7007
+ return this._http.request(config);
7008
+ }, "UpdateIssue");
7009
+ }
7010
+ });
7011
+
6876
7012
  // src/Client/index.js
6877
7013
  var LoginStart = require_LoginStart();
6878
7014
  var RefreshToken = require_RefreshToken();
@@ -6983,8 +7119,6 @@ var DeleteWindowCovering = require_DeleteWindowCovering();
6983
7119
  var DescribeWindowCovering = require_DescribeWindowCovering();
6984
7120
  var SetWindowCovering = require_SetWindowCovering();
6985
7121
  var SetRoomScene = require_SetRoomScene();
6986
- var AddScenesToRoom = require_AddScenesToRoom();
6987
- var AddDefaultScenesToRooms = require_AddDefaultScenesToRooms();
6988
7122
  var AutoCloseTickets = require_AutoCloseTickets();
6989
7123
  var DescribeTicketStats = require_DescribeTicketStats();
6990
7124
  var CreateTicket = require_CreateTicket();
@@ -7050,6 +7184,7 @@ var ListMyProperties = require_ListMyProperties();
7050
7184
  var CreateProperty = require_CreateProperty();
7051
7185
  var UpdateProperty = require_UpdateProperty();
7052
7186
  var DescribeProperty = require_DescribeProperty();
7187
+ var UpdatePropertySettings = require_UpdatePropertySettings();
7053
7188
  var EmailUserAccountSetup = require_EmailUserAccountSetup();
7054
7189
  var CreateImageUploadEndpoint = require_CreateImageUploadEndpoint();
7055
7190
  var DeleteMediaFile = require_DeleteMediaFile();
@@ -7076,6 +7211,11 @@ var UpdateTimeSheetTimeEntry = require_UpdateTimeSheetTimeEntry();
7076
7211
  var StartSOS = require_StartSOS();
7077
7212
  var StopSOS = require_StopSOS();
7078
7213
  var DescribeSOS = require_DescribeSOS();
7214
+ var DescribeIssue = require_DescribeIssue();
7215
+ var ListIssues = require_ListIssues();
7216
+ var DeleteIssue = require_DeleteIssue();
7217
+ var CreateIssue = require_CreateIssue();
7218
+ var UpdateIssue = require_UpdateIssue();
7079
7219
  var { EventEmitter } = require("events");
7080
7220
  var axios = require("axios");
7081
7221
  var KohostApiClient = class _KohostApiClient extends EventEmitter {
@@ -7331,8 +7471,6 @@ KohostApiClient.prototype.DeleteWindowCovering = DeleteWindowCovering;
7331
7471
  KohostApiClient.prototype.DescribeWindowCovering = DescribeWindowCovering;
7332
7472
  KohostApiClient.prototype.SetWindowCovering = SetWindowCovering;
7333
7473
  KohostApiClient.prototype.SetRoomScene = SetRoomScene;
7334
- KohostApiClient.prototype.AddScenesToRoom = AddScenesToRoom;
7335
- KohostApiClient.prototype.AddDefaultScenesToRooms = AddDefaultScenesToRooms;
7336
7474
  KohostApiClient.prototype.AutoCloseTickets = AutoCloseTickets;
7337
7475
  KohostApiClient.prototype.DescribeTicketStats = DescribeTicketStats;
7338
7476
  KohostApiClient.prototype.CreateTicket = CreateTicket;
@@ -7398,6 +7536,7 @@ KohostApiClient.prototype.ListMyProperties = ListMyProperties;
7398
7536
  KohostApiClient.prototype.CreateProperty = CreateProperty;
7399
7537
  KohostApiClient.prototype.UpdateProperty = UpdateProperty;
7400
7538
  KohostApiClient.prototype.DescribeProperty = DescribeProperty;
7539
+ KohostApiClient.prototype.UpdatePropertySettings = UpdatePropertySettings;
7401
7540
  KohostApiClient.prototype.EmailUserAccountSetup = EmailUserAccountSetup;
7402
7541
  KohostApiClient.prototype.CreateImageUploadEndpoint = CreateImageUploadEndpoint;
7403
7542
  KohostApiClient.prototype.DeleteMediaFile = DeleteMediaFile;
@@ -7424,4 +7563,9 @@ KohostApiClient.prototype.UpdateTimeSheetTimeEntry = UpdateTimeSheetTimeEntry;
7424
7563
  KohostApiClient.prototype.StartSOS = StartSOS;
7425
7564
  KohostApiClient.prototype.StopSOS = StopSOS;
7426
7565
  KohostApiClient.prototype.DescribeSOS = DescribeSOS;
7566
+ KohostApiClient.prototype.DescribeIssue = DescribeIssue;
7567
+ KohostApiClient.prototype.ListIssues = ListIssues;
7568
+ KohostApiClient.prototype.DeleteIssue = DeleteIssue;
7569
+ KohostApiClient.prototype.CreateIssue = CreateIssue;
7570
+ KohostApiClient.prototype.UpdateIssue = UpdateIssue;
7427
7571
  module.exports = KohostApiClient;
@@ -0,0 +1,35 @@
1
+ // Create the Issue Model
2
+ const schemas = require("../utils/schema");
3
+ const schema = require("../schemas/issue.json");
4
+ const Entity = require("./Entity");
5
+
6
+ schemas.add(schema);
7
+ const validator = schemas.compile(schema);
8
+
9
+ class Issue extends Entity {
10
+ /**
11
+ * @typedef {import("../schemas/IssueSchema").Issue} IssueType
12
+ * Create a Ticket instance.
13
+ * @constructor
14
+ * @param {IssueType} issue - The ticket object of type Ticket.
15
+ */
16
+ constructor(issue) {
17
+ super(issue);
18
+ }
19
+ }
20
+
21
+ Object.defineProperty(Issue.prototype, "schema", {
22
+ value: schema,
23
+ });
24
+
25
+ Object.defineProperty(Issue.prototype, "validator", {
26
+ get: function () {
27
+ return validator;
28
+ },
29
+ });
30
+
31
+ Object.defineProperty(Issue, "validProperties", {
32
+ value: Object.keys(schema.properties),
33
+ });
34
+
35
+ module.exports = Issue;
@@ -32,6 +32,7 @@ const SMSMessage = require("./SmsMessage");
32
32
  const EmailMessage = require("./EmailMessage");
33
33
  const Announcement = require("./Announcement");
34
34
  const TimeSheet = require("./TimeSheet");
35
+ const Issue = require("./Issue");
35
36
 
36
37
  const Property = require("./Property");
37
38
  const Organization = require("./Organization");
@@ -76,4 +77,5 @@ module.exports = {
76
77
  Announcement,
77
78
  TimeSheet,
78
79
  Policy,
80
+ Issue,
79
81
  };
@@ -108,6 +108,7 @@
108
108
  "pelican-wireless",
109
109
  "power-shades",
110
110
  "rebrandly",
111
+ "rtsp",
111
112
  "salto",
112
113
  "salto-irn",
113
114
  "se",
@@ -0,0 +1,44 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "$id": "issue.json",
4
+ "title": "Issue",
5
+ "description": "An issue associated with ticketing and concierge.",
6
+ "type": "object",
7
+ "properties": {
8
+ "id": {
9
+ "$ref": "definitions.json#/definitions/id"
10
+ },
11
+ "type": {
12
+ "type": "string",
13
+ "enum": ["issue"],
14
+ "default": "issue"
15
+ },
16
+ "name": {
17
+ "type": "string"
18
+ },
19
+ "description": {
20
+ "type": "string"
21
+ },
22
+ "department": {
23
+ "type": "string"
24
+ },
25
+ "autoAssign": {
26
+ "type": "object",
27
+ "properties": {
28
+ "userId": {
29
+ "type": "string"
30
+ },
31
+ "priority": {
32
+ "$ref": "ticket.json#/properties/priority"
33
+ },
34
+ "tags": {
35
+ "type": "array",
36
+ "items": {
37
+ "type": "string"
38
+ }
39
+ }
40
+ }
41
+ }
42
+ },
43
+ "required": ["id", "type", "name", "department"]
44
+ }
@@ -225,6 +225,14 @@
225
225
  },
226
226
  "required": ["name", "description", "image"]
227
227
  }
228
+ },
229
+ "issues": {
230
+ "type": "object",
231
+ "properties": {
232
+ "syncWithPropertyId": {
233
+ "type": "string"
234
+ }
235
+ }
228
236
  }
229
237
  }
230
238
  },
@@ -16,6 +16,9 @@
16
16
  "number": {
17
17
  "type": "string"
18
18
  },
19
+ "issueId": {
20
+ "type": "string"
21
+ },
19
22
  "conversation": {
20
23
  "type": "array",
21
24
  "default": [],
@@ -74,6 +74,8 @@ module.exports = function entityFactory(type) {
74
74
  return Models.Property;
75
75
  case "organization":
76
76
  return Models.Organization;
77
+ case "issue":
78
+ return Models.Issue;
77
79
  default:
78
80
  throw new Error("Unknown entity type: " + type);
79
81
  }