UNPKG

27.4 kBPlain TextView Raw
1// tslint:disable
2export const schema = {
3 "$schema": "http://json-schema.org/draft-07/schema#",
4 "definitions": {
5 "FunctionRunnerSize": {
6 "enum": [
7 "m128MiB",
8 "m1GiB",
9 "m256MiB",
10 "m2GiB",
11 "m512MiB"
12 ],
13 "type": "string"
14 },
15 "Session": {
16 "type": "object",
17 "properties": {
18 "accountId": {
19 "minLength": 1,
20 "type": "string"
21 },
22 "principal": {
23 "minLength": 1,
24 "type": "string"
25 }
26 },
27 "propertyOrder": [
28 "accountId",
29 "principal"
30 ],
31 "required": [
32 "accountId",
33 "principal"
34 ]
35 },
36 "ServerOnlyContext": {
37 "type": "object",
38 "properties": {
39 "tags": {
40 "type": "object",
41 "additionalProperties": {
42 "type": "string"
43 },
44 "propertyOrder": []
45 },
46 "logLevel": {
47 "type": "string"
48 },
49 "logExtra": {
50 "type": "object",
51 "additionalProperties": {},
52 "propertyOrder": []
53 },
54 "sampleRate": {
55 "type": "number"
56 },
57 "debugId": {
58 "type": "string"
59 },
60 "session": {
61 "$ref": "#/definitions/Session"
62 }
63 },
64 "propertyOrder": [
65 "tags",
66 "logLevel",
67 "logExtra",
68 "sampleRate",
69 "debugId",
70 "session"
71 ],
72 "required": [
73 "debugId"
74 ]
75 },
76 "UnauthorizedError": {
77 "type": "object",
78 "properties": {
79 "name": {
80 "type": "string"
81 },
82 "message": {
83 "type": "string"
84 },
85 "stack": {
86 "type": "string"
87 }
88 },
89 "propertyOrder": [
90 "name",
91 "message",
92 "stack"
93 ],
94 "required": [
95 "message",
96 "name"
97 ]
98 },
99 "NotFoundError": {
100 "type": "object",
101 "properties": {
102 "name": {
103 "type": "string"
104 },
105 "message": {
106 "type": "string"
107 },
108 "stack": {
109 "type": "string"
110 }
111 },
112 "propertyOrder": [
113 "name",
114 "message",
115 "stack"
116 ],
117 "required": [
118 "message",
119 "name"
120 ]
121 },
122 "ExistsError": {
123 "type": "object",
124 "properties": {
125 "name": {
126 "type": "string"
127 },
128 "message": {
129 "type": "string"
130 },
131 "stack": {
132 "type": "string"
133 }
134 },
135 "propertyOrder": [
136 "name",
137 "message",
138 "stack"
139 ],
140 "required": [
141 "message",
142 "name"
143 ]
144 },
145 "SubDomain": {
146 "type": "object",
147 "properties": {
148 "type": {
149 "type": "string",
150 "enum": [
151 "subdomain"
152 ]
153 },
154 "name": {
155 "type": "string"
156 }
157 },
158 "propertyOrder": [
159 "type",
160 "name"
161 ],
162 "required": [
163 "name",
164 "type"
165 ]
166 },
167 "CNameDomain": {
168 "type": "object",
169 "properties": {
170 "type": {
171 "type": "string",
172 "enum": [
173 "cname"
174 ]
175 },
176 "name": {
177 "format": "hostname",
178 "type": "string"
179 },
180 "certificate": {
181 "minLength": 1,
182 "type": "string"
183 }
184 },
185 "propertyOrder": [
186 "type",
187 "name",
188 "certificate"
189 ],
190 "required": [
191 "certificate",
192 "name",
193 "type"
194 ]
195 },
196 "Domain": {
197 "anyOf": [
198 {
199 "$ref": "#/definitions/SubDomain"
200 },
201 {
202 "$ref": "#/definitions/CNameDomain"
203 }
204 ]
205 },
206 "Environment": {
207 "type": "object",
208 "properties": {
209 "name": {
210 "pattern": "^[A-Za-z][A-Za-z_\\d]{0,49}$",
211 "type": "string"
212 },
213 "domains": {
214 "type": "array",
215 "items": {
216 "anyOf": [
217 {
218 "$ref": "#/definitions/SubDomain"
219 },
220 {
221 "$ref": "#/definitions/CNameDomain"
222 }
223 ]
224 }
225 }
226 },
227 "propertyOrder": [
228 "name",
229 "domains"
230 ],
231 "required": [
232 "domains",
233 "name"
234 ]
235 },
236 "Application": {
237 "type": "object",
238 "properties": {
239 "accountId": {
240 "minLength": 1,
241 "type": "string"
242 },
243 "id": {
244 "minLength": 1,
245 "type": "string"
246 },
247 "name": {
248 "description": "Non-unique user friendly name to identify this app",
249 "minLength": 1,
250 "type": "string"
251 },
252 "createdAt": {
253 "description": "Enables basic storage and retrieval of dates and times.",
254 "type": "string",
255 "format": "date-time",
256 "coerce-date": true
257 },
258 "updatedAt": {
259 "description": "Enables basic storage and retrieval of dates and times.",
260 "type": "string",
261 "format": "date-time",
262 "coerce-date": true
263 },
264 "sourceUrl": {
265 "description": "If cloned from template, will hold the template github URL (including the git tag | digest).\nCould be used in the future to track a github repo.",
266 "format": "uri",
267 "type": "string"
268 },
269 "environments": {
270 "type": "array",
271 "items": {
272 "$ref": "#/definitions/Environment"
273 }
274 }
275 },
276 "propertyOrder": [
277 "accountId",
278 "id",
279 "name",
280 "createdAt",
281 "updatedAt",
282 "sourceUrl",
283 "environments"
284 ],
285 "required": [
286 "accountId",
287 "createdAt",
288 "environments",
289 "id",
290 "name",
291 "updatedAt"
292 ]
293 },
294 "Template": {
295 "type": "object",
296 "properties": {
297 "id": {
298 "minLength": 1,
299 "type": "string"
300 },
301 "name": {
302 "minLength": 1,
303 "type": "string"
304 },
305 "previewImageUrl": {
306 "format": "uri",
307 "type": "string"
308 },
309 "githubUrl": {
310 "format": "uri",
311 "type": "string"
312 }
313 },
314 "propertyOrder": [
315 "id",
316 "name",
317 "previewImageUrl",
318 "githubUrl"
319 ],
320 "required": [
321 "githubUrl",
322 "id",
323 "name",
324 "previewImageUrl"
325 ]
326 },
327 "ExternalAccount": {
328 "type": "object",
329 "properties": {
330 "source": {
331 "description": "e.g. github",
332 "minLength": 1,
333 "type": "string"
334 },
335 "id": {
336 "minLength": 1,
337 "type": "string"
338 }
339 },
340 "propertyOrder": [
341 "source",
342 "id"
343 ],
344 "required": [
345 "id",
346 "source"
347 ]
348 },
349 "User": {
350 "type": "object",
351 "properties": {
352 "id": {
353 "minLength": 1,
354 "type": "string"
355 },
356 "fullName": {
357 "minLength": 1,
358 "type": "string"
359 },
360 "email": {
361 "format": "email",
362 "type": "string"
363 },
364 "avatarUrl": {
365 "format": "uri",
366 "type": "string"
367 },
368 "externalAccounts": {
369 "type": "array",
370 "items": {
371 "$ref": "#/definitions/ExternalAccount"
372 }
373 }
374 },
375 "propertyOrder": [
376 "id",
377 "fullName",
378 "email",
379 "avatarUrl",
380 "externalAccounts"
381 ],
382 "required": [
383 "email",
384 "externalAccounts",
385 "fullName",
386 "id"
387 ]
388 },
389 "TimePeriod": {
390 "description": "Pattern as supported by the ms package",
391 "minLength": 1,
392 "type": "string"
393 },
394 "InvocationDetails": {
395 "type": "object",
396 "properties": {
397 "durUs": {
398 "type": "number"
399 },
400 "reqid": {
401 "type": "string"
402 }
403 },
404 "propertyOrder": [
405 "durUs",
406 "reqid"
407 ],
408 "required": [
409 "durUs",
410 "reqid"
411 ]
412 },
413 "LogRecord": {
414 "type": "object",
415 "properties": {
416 "source": {
417 "type": "string"
418 },
419 "msg": {
420 "type": "string"
421 },
422 "isErr": {
423 "type": "boolean"
424 },
425 "time": {
426 "description": "Enables basic storage and retrieval of dates and times.",
427 "type": "string",
428 "format": "date-time",
429 "coerce-date": true
430 },
431 "invocation": {
432 "$ref": "#/definitions/InvocationDetails"
433 }
434 },
435 "propertyOrder": [
436 "source",
437 "msg",
438 "isErr",
439 "time",
440 "invocation"
441 ],
442 "required": [
443 "isErr",
444 "msg",
445 "source",
446 "time"
447 ]
448 },
449 "LogReadOpts": {
450 "type": "object",
451 "properties": {
452 "since": {
453 "description": "Enables basic storage and retrieval of dates and times.",
454 "type": "string",
455 "format": "date-time",
456 "coerce-date": true
457 },
458 "limit": {
459 "minimum": 1,
460 "maximum": 10000,
461 "type": "number"
462 },
463 "follow": {
464 "type": "boolean"
465 },
466 "nextToken": {
467 "description": "Continuation token (received in response)",
468 "minLength": 1,
469 "type": "string"
470 }
471 },
472 "propertyOrder": [
473 "since",
474 "limit",
475 "follow",
476 "nextToken"
477 ],
478 "required": [
479 "follow",
480 "limit",
481 "since"
482 ]
483 },
484 "LogsResponse": {
485 "type": "object",
486 "properties": {
487 "records": {
488 "type": "array",
489 "items": {
490 "$ref": "#/definitions/LogRecord"
491 }
492 },
493 "nextToken": {
494 "minLength": 1,
495 "type": "string"
496 }
497 },
498 "propertyOrder": [
499 "records",
500 "nextToken"
501 ],
502 "required": [
503 "records"
504 ]
505 },
506 "CreateTicketResponse": {
507 "type": "object",
508 "properties": {
509 "ticket": {
510 "minLength": 1,
511 "type": "string"
512 },
513 "expires": {
514 "description": "Pattern as supported by the ms package",
515 "minLength": 1,
516 "type": "string"
517 }
518 },
519 "propertyOrder": [
520 "ticket",
521 "expires"
522 ],
523 "required": [
524 "expires",
525 "ticket"
526 ]
527 },
528 "TryTemplateResponse": {
529 "type": "object",
530 "properties": {
531 "token": {
532 "minLength": 1,
533 "type": "string"
534 },
535 "expiresAt": {
536 "description": "Enables basic storage and retrieval of dates and times.",
537 "type": "string",
538 "format": "date-time",
539 "coerce-date": true
540 },
541 "domain": {
542 "minLength": 1,
543 "type": "string"
544 }
545 },
546 "propertyOrder": [
547 "token",
548 "expiresAt",
549 "domain"
550 ],
551 "required": [
552 "domain",
553 "expiresAt",
554 "token"
555 ]
556 },
557 "Lycan": {
558 "type": "object",
559 "properties": {
560 "createTicket": {
561 "description": "Create a ticket for claiming an API key",
562 "type": "object",
563 "properties": {
564 "params": {
565 "type": "object",
566 "properties": {}
567 },
568 "returns": {
569 "$ref": "#/definitions/CreateTicketResponse"
570 }
571 },
572 "propertyOrder": [
573 "params",
574 "returns"
575 ],
576 "required": [
577 "params",
578 "returns"
579 ]
580 },
581 "claimTicket": {
582 "description": "Returns an API key in exchange for a valid ticket",
583 "type": "object",
584 "properties": {
585 "params": {
586 "type": "object",
587 "properties": {
588 "ticket": {
589 "type": "string"
590 }
591 },
592 "propertyOrder": [
593 "ticket"
594 ],
595 "required": [
596 "ticket"
597 ]
598 },
599 "throws": {
600 "$ref": "#/definitions/NotFoundError"
601 },
602 "returns": {
603 "type": "string"
604 }
605 },
606 "propertyOrder": [
607 "params",
608 "throws",
609 "returns"
610 ],
611 "required": [
612 "params",
613 "returns",
614 "throws"
615 ]
616 },
617 "listTemplates": {
618 "type": "object",
619 "properties": {
620 "params": {
621 "type": "object",
622 "properties": {}
623 },
624 "returns": {
625 "type": "array",
626 "items": {
627 "$ref": "#/definitions/Template"
628 }
629 }
630 },
631 "propertyOrder": [
632 "params",
633 "returns"
634 ],
635 "required": [
636 "params",
637 "returns"
638 ]
639 },
640 "tryTemplate": {
641 "description": "Returns a JWT token for claiming the live template\nwith claimApp",
642 "type": "object",
643 "properties": {
644 "params": {
645 "type": "object",
646 "properties": {
647 "id": {
648 "minLength": 1,
649 "type": "string"
650 }
651 },
652 "propertyOrder": [
653 "id"
654 ],
655 "required": [
656 "id"
657 ]
658 },
659 "throws": {
660 "$ref": "#/definitions/NotFoundError"
661 },
662 "returns": {
663 "$ref": "#/definitions/TryTemplateResponse"
664 }
665 },
666 "propertyOrder": [
667 "params",
668 "throws",
669 "returns"
670 ],
671 "required": [
672 "params",
673 "returns",
674 "throws"
675 ]
676 },
677 "whoami": {
678 "type": "object",
679 "properties": {
680 "params": {
681 "type": "object",
682 "properties": {}
683 },
684 "returns": {
685 "$ref": "#/definitions/User"
686 },
687 "throws": {
688 "$ref": "#/definitions/UnauthorizedError"
689 }
690 },
691 "propertyOrder": [
692 "params",
693 "returns",
694 "throws"
695 ],
696 "required": [
697 "params",
698 "returns",
699 "throws"
700 ]
701 },
702 "listApps": {
703 "type": "object",
704 "properties": {
705 "params": {
706 "type": "object",
707 "properties": {}
708 },
709 "throws": {
710 "$ref": "#/definitions/UnauthorizedError"
711 },
712 "returns": {
713 "type": "array",
714 "items": {
715 "$ref": "#/definitions/Application"
716 }
717 }
718 },
719 "propertyOrder": [
720 "params",
721 "throws",
722 "returns"
723 ],
724 "required": [
725 "params",
726 "returns",
727 "throws"
728 ]
729 },
730 "deployInitial": {
731 "type": "object",
732 "properties": {
733 "params": {
734 "type": "object",
735 "properties": {
736 "env": {
737 "pattern": "^[A-Za-z][A-Za-z_\\d]{0,49}$",
738 "type": "string"
739 },
740 "name": {
741 "minLength": 1,
742 "type": "string"
743 },
744 "digest": {
745 "minLength": 1,
746 "type": "string"
747 },
748 "envVars": {
749 "type": "array",
750 "items": {
751 "type": "array",
752 "items": [
753 {
754 "type": "string"
755 },
756 {
757 "type": "string"
758 }
759 ],
760 "minItems": 2,
761 "additionalItems": {
762 "anyOf": [
763 {
764 "type": "string"
765 },
766 {
767 "type": "string"
768 }
769 ]
770 }
771 }
772 }
773 },
774 "propertyOrder": [
775 "env",
776 "name",
777 "digest",
778 "envVars"
779 ],
780 "required": [
781 "digest",
782 "env",
783 "envVars",
784 "name"
785 ]
786 },
787 "throws": {
788 "anyOf": [
789 {
790 "$ref": "#/definitions/UnauthorizedError"
791 },
792 {
793 "$ref": "#/definitions/ExistsError"
794 }
795 ]
796 },
797 "returns": {
798 "$ref": "#/definitions/Application"
799 }
800 },
801 "propertyOrder": [
802 "params",
803 "throws",
804 "returns"
805 ],
806 "required": [
807 "params",
808 "returns",
809 "throws"
810 ]
811 },
812 "deploy": {
813 "type": "object",
814 "properties": {
815 "params": {
816 "type": "object",
817 "properties": {
818 "appId": {
819 "minLength": 1,
820 "type": "string"
821 },
822 "env": {
823 "pattern": "^[A-Za-z][A-Za-z_\\d]{0,49}$",
824 "type": "string"
825 },
826 "digest": {
827 "minLength": 1,
828 "type": "string"
829 },
830 "envVars": {
831 "type": "array",
832 "items": {
833 "type": "array",
834 "items": [
835 {
836 "type": "string"
837 },
838 {
839 "type": "string"
840 }
841 ],
842 "minItems": 2,
843 "additionalItems": {
844 "anyOf": [
845 {
846 "type": "string"
847 },
848 {
849 "type": "string"
850 }
851 ]
852 }
853 }
854 }
855 },
856 "propertyOrder": [
857 "appId",
858 "env",
859 "digest",
860 "envVars"
861 ],
862 "required": [
863 "appId",
864 "digest",
865 "env",
866 "envVars"
867 ]
868 },
869 "throws": {
870 "anyOf": [
871 {
872 "$ref": "#/definitions/UnauthorizedError"
873 },
874 {
875 "$ref": "#/definitions/NotFoundError"
876 }
877 ]
878 },
879 "returns": {
880 "$ref": "#/definitions/Application"
881 }
882 },
883 "propertyOrder": [
884 "params",
885 "throws",
886 "returns"
887 ],
888 "required": [
889 "params",
890 "returns",
891 "throws"
892 ]
893 },
894 "claimApp": {
895 "description": "Claim an anonymously deployed app into the user account\nusing the token received from tryTemplate",
896 "type": "object",
897 "properties": {
898 "params": {
899 "type": "object",
900 "properties": {
901 "token": {
902 "minLength": 1,
903 "type": "string"
904 }
905 },
906 "propertyOrder": [
907 "token"
908 ],
909 "required": [
910 "token"
911 ]
912 },
913 "throws": {
914 "anyOf": [
915 {
916 "$ref": "#/definitions/UnauthorizedError"
917 },
918 {
919 "$ref": "#/definitions/NotFoundError"
920 }
921 ]
922 },
923 "returns": {
924 "$ref": "#/definitions/Application"
925 }
926 },
927 "propertyOrder": [
928 "params",
929 "throws",
930 "returns"
931 ],
932 "required": [
933 "params",
934 "returns",
935 "throws"
936 ]
937 },
938 "getLogs": {
939 "type": "object",
940 "properties": {
941 "params": {
942 "type": "object",
943 "properties": {
944 "appId": {
945 "minLength": 1,
946 "type": "string"
947 },
948 "env": {
949 "pattern": "^[A-Za-z][A-Za-z_\\d]{0,49}$",
950 "type": "string"
951 },
952 "opts": {
953 "$ref": "#/definitions/LogReadOpts"
954 }
955 },
956 "propertyOrder": [
957 "appId",
958 "env",
959 "opts"
960 ],
961 "required": [
962 "appId",
963 "env",
964 "opts"
965 ]
966 },
967 "throws": {
968 "anyOf": [
969 {
970 "$ref": "#/definitions/UnauthorizedError"
971 },
972 {
973 "$ref": "#/definitions/NotFoundError"
974 }
975 ]
976 },
977 "returns": {
978 "$ref": "#/definitions/LogsResponse"
979 }
980 },
981 "propertyOrder": [
982 "params",
983 "throws",
984 "returns"
985 ],
986 "required": [
987 "params",
988 "returns",
989 "throws"
990 ]
991 },
992 "destroyApp": {
993 "type": "object",
994 "properties": {
995 "params": {
996 "type": "object",
997 "properties": {
998 "appId": {
999 "minLength": 1,
1000 "type": "string"
1001 }
1002 },
1003 "propertyOrder": [
1004 "appId"
1005 ],
1006 "required": [
1007 "appId"
1008 ]
1009 },
1010 "throws": {
1011 "anyOf": [
1012 {
1013 "$ref": "#/definitions/UnauthorizedError"
1014 },
1015 {
1016 "$ref": "#/definitions/NotFoundError"
1017 }
1018 ]
1019 },
1020 "returns": {
1021 "type": "null"
1022 }
1023 },
1024 "propertyOrder": [
1025 "params",
1026 "throws",
1027 "returns"
1028 ],
1029 "required": [
1030 "params",
1031 "returns",
1032 "throws"
1033 ]
1034 }
1035 },
1036 "propertyOrder": [
1037 "createTicket",
1038 "claimTicket",
1039 "listTemplates",
1040 "tryTemplate",
1041 "whoami",
1042 "listApps",
1043 "deployInitial",
1044 "deploy",
1045 "claimApp",
1046 "getLogs",
1047 "destroyApp"
1048 ],
1049 "required": [
1050 "claimApp",
1051 "claimTicket",
1052 "createTicket",
1053 "deploy",
1054 "deployInitial",
1055 "destroyApp",
1056 "getLogs",
1057 "listApps",
1058 "listTemplates",
1059 "tryTemplate",
1060 "whoami"
1061 ]
1062 }
1063 }
1064};
1065
1066export class InternalServerError extends Error {
1067 public readonly name = 'InternalServerError';
1068}
1069
1070export class UnauthorizedError extends Error {
1071 public readonly name = 'UnauthorizedError';
1072}
1073
1074export class NotFoundError extends Error {
1075 public readonly name = 'NotFoundError';
1076}
1077
1078export class ExistsError extends Error {
1079 public readonly name = 'ExistsError';
1080}
1081
1082export enum FunctionRunnerSize {
1083 M128MIB = 'm128MiB',
1084 M1GIB = 'm1GiB',
1085 M256MIB = 'm256MiB',
1086 M2GIB = 'm2GiB',
1087 M512MIB = 'm512MiB',
1088}
1089
1090export type Domain = (SubDomain) | (CNameDomain);
1091
1092export interface Session {
1093 readonly accountId: string;
1094 readonly principal: string;
1095}
1096
1097export interface ServerOnlyContext {
1098 readonly tags?: {};
1099 readonly logLevel?: string;
1100 readonly logExtra?: {};
1101 readonly sampleRate?: number;
1102 readonly debugId: string;
1103 readonly session?: Session;
1104}
1105
1106export interface SubDomain {
1107 readonly type: "subdomain";
1108 readonly name: string;
1109}
1110
1111export interface CNameDomain {
1112 readonly type: "cname";
1113 readonly name: string;
1114 readonly certificate: string;
1115}
1116
1117export interface Environment {
1118 readonly name: string;
1119 readonly domains: Array<(SubDomain) | (CNameDomain)>;
1120}
1121
1122export interface Application {
1123 readonly accountId: string;
1124 readonly id: string;
1125 readonly name: string;
1126 readonly createdAt: Date;
1127 readonly updatedAt: Date;
1128 readonly sourceUrl?: string;
1129 readonly environments: Array<Environment>;
1130}
1131
1132export interface Template {
1133 readonly id: string;
1134 readonly name: string;
1135 readonly previewImageUrl: string;
1136 readonly githubUrl: string;
1137}
1138
1139export interface ExternalAccount {
1140 readonly source: string;
1141 readonly id: string;
1142}
1143
1144export interface User {
1145 readonly id: string;
1146 readonly fullName: string;
1147 readonly email: string;
1148 readonly avatarUrl?: string;
1149 readonly externalAccounts: Array<ExternalAccount>;
1150}
1151
1152export interface InvocationDetails {
1153 readonly durUs: number;
1154 readonly reqid: string;
1155}
1156
1157export interface LogRecord {
1158 readonly source: string;
1159 readonly msg: string;
1160 readonly isErr: boolean;
1161 readonly time: Date;
1162 readonly invocation?: InvocationDetails;
1163}
1164
1165export interface LogReadOpts {
1166 readonly since: Date;
1167 readonly limit: number;
1168 readonly follow: boolean;
1169 readonly nextToken?: string;
1170}
1171
1172export interface LogsResponse {
1173 readonly records: Array<LogRecord>;
1174 readonly nextToken?: string;
1175}
1176
1177export interface CreateTicketResponse {
1178 readonly ticket: string;
1179 readonly expires: string;
1180}
1181
1182export interface TryTemplateResponse {
1183 readonly token: string;
1184 readonly expiresAt: Date;
1185 readonly domain: string;
1186}
1187
1188export interface Lycan {
1189 createTicket(): Promise<CreateTicketResponse>;
1190 claimTicket(ticket: string): Promise<string>;
1191 listTemplates(): Promise<Array<Template>>;
1192 tryTemplate(id: string): Promise<TryTemplateResponse>;
1193 whoami(): Promise<User>;
1194 listApps(): Promise<Array<Application>>;
1195 deployInitial(env: string, name: string, digest: string, envVars: Array<[string, string]>): Promise<Application>;
1196 deploy(appId: string, env: string, digest: string, envVars: Array<[string, string]>): Promise<Application>;
1197 claimApp(token: string): Promise<Application>;
1198 getLogs(appId: string, env: string, opts: LogReadOpts): Promise<LogsResponse>;
1199 destroyApp(appId: string): Promise<void>;
1200}
1201