• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1{
2  "title": "JSON schema for HarmonyProfile.json",
3  "$schema": "http://json-schema.org/draft-07/schema#",
4  "type": "object",
5  "additionalProperties": true,
6  "required": [
7    "app",
8    "deviceConfig",
9    "module"
10  ],
11  "propertyNames": {
12    "enum": [
13      "app",
14      "deviceConfig",
15      "module"
16    ]
17  },
18  "properties": {
19    "app": {
20      "description": "Indicates the global configuration of an application. Different .hap files of the same application must use the same app configuration.",
21      "type": "object",
22      "required": [
23        "bundleName",
24        "version"
25      ],
26      "propertyNames": {
27        "enum": [
28          "bundleName",
29          "vendor",
30          "version",
31          "apiVersion",
32          "type",
33          "relatedBundleName",
34          "smartWindowSize",
35          "smartWindowDeviceType",
36          "targetBundleList",
37          "singleton",
38          "removable",
39          "userDataClearable",
40          "asanEnabled"
41        ]
42      },
43      "properties": {
44        "bundleName": {
45          "description": "Indicates the bundle name of the application. It uniquely identifies the application. The value is a string with 7 to 128 bytes of a reverse domain name, for example, com.huawei.himusic. It is recommended that the first label of this attribute is the top-level domain com, the second label is the vendor or individual name, and the third label is the application name. This label is a string type and cannot be defaulted.",
46          "type": "string",
47          "maxLength": 128,
48          "minLength": 7,
49          "pattern": "^(([a-zA-Z]|[a-zA-Z][0-9a-zA-Z_]+)[.]([0-9a-zA-Z_.]+))|([{]([a-zA-Z]|[a-zA-Z][0-9a-zA-Z_]+)[}](.huawei.com))|[{](bundleName)[}]$"
50        },
51        "vendor": {
52          "description": "Describes the application vendor. The value is a string with a maximum of 255 bytes. This label is a string type and can be defaulted.",
53          "type": "string",
54          "maxLength": 255
55        },
56        "removable": {
57          "description": "Describes the application can remove or not. This attribute takes effect only when the system application or privilege application is used.@deprecated",
58          "type": "boolean"
59        },
60        "version": {
61          "description": "Indicates the version information of the application.Includes two sub-labels:”code” and ”name”.This label cannot be left blank.",
62          "type": "object",
63          "required": [
64            "code",
65            "name"
66          ],
67          "propertyNames": {
68            "enum": [
69              "code",
70              "name",
71              "minCompatibleVersionCode"
72            ]
73          },
74          "properties": {
75            "code": {
76              "description": "Indicates the version number of the application. The value is an integer greater than 0. A larger value generally represents a later version.The system determines the application version based on the tag value.This label cannot be left blank.",
77              "type": "integer",
78              "minimum": 0,
79              "maximum": 2147483647
80            },
81            "name": {
82              "description": "Indicates the text description of the application version.Used for displaying to users.A string can contain a maximum of 127 bytes.This label cannot be left blank.",
83              "type": "string",
84              "maxLength": 127,
85              "pattern": "^[0-9.]+|(?=.*[{])(?=.*[}])[0-9a-zA-Z_.{}]+$"
86            },
87            "minCompatibleVersionCode": {
88              "description": "This label identifies the earliest historical version compatible with the app pack, which is used for cross-device compatibility determination.This label is an integer and can be defaulted.",
89              "type": "integer",
90              "minimum": 0,
91              "maximum": 2147483647
92            }
93          }
94        },
95        "apiVersion": {
96          "description": "This tag identifies the Harmony API version on which the application depends.",
97          "type": "object",
98          "propertyNames": {
99            "enum": [
100              "compatible",
101              "target",
102              "releaseType"
103            ]
104          },
105          "properties": {
106            "compatible": {
107              "description": "Indicates the minimum API version required for running an application. This label is an integer and can be defaulted.",
108              "type": "integer",
109              "minimum": 0
110            },
111            "target": {
112              "description": "This tag identifies the target API version required for application running. The value is an integer.",
113              "type": "integer",
114              "minimum": 0
115            },
116            "releaseType": {
117              "description": "This tag identifies the type of the target API version required for application running. The tag is a string.",
118              "type": "string",
119              "pattern": "^(Canary[1-9][0-9]+|Canary[1-9]|Beta[1-9][0-9]+|Beta[1-9]|Release)$"
120            }
121          }
122        },
123        "type": {
124          "description": "Describes the application type. The value is a string with 'normal' or 'shareLib'. If the value of label is 'normal', This label can be left blank by default.",
125          "type": "string",
126          "enum": [
127            "normal",
128            "shareLib"
129          ]
130        },
131        "relatedBundleName": {
132          "description": "Indicates the name of the Android package associated with the Harmony application in the independent packaging scenario. The value is a character string. This tag is valid only for system applications.",
133          "type": "string"
134        },
135        "smartWindowSize": {
136          "description": "Indicates the size of the simulation window. The value is a character string.",
137          "type": "string",
138          "pattern": "^([2-9][0-9]{2}|[1][0-9]{3}|2000)\\*([2-9][0-9]{2}|[1][0-9]{3}|2000)$"
139        },
140        "smartWindowDeviceType": {
141          "description": "This label indicates the device on which the application is opened using the simulation window, a string array.",
142          "type": "array",
143          "items": {
144            "type": "string",
145            "enum": [
146              "default",
147              "car",
148              "tablet",
149              "tv",
150              "wearable",
151              "2in1"
152            ]
153          }
154        },
155        "targetBundleList": {
156          "description": "This tag specifies the list of Harmony services that can be installed without the application. The list contains the bundle name of each Harmony service. A maximum of five bundle names can be configured. This label is a string array type and can be defaulted.",
157          "type": "array",
158          "maxItems": 5,
159          "items": {
160            "type": "string"
161          }
162        },
163        "singleton": {
164          "description": "Specifies whether the application is multi-instance according to the memory situation. If this attribute is set to true, the application is system application.@deprecated",
165          "type": "boolean"
166        },
167        "userDataClearable": {
168          "description": "Specifies whether to allow clear data. only for system application.@deprecated",
169          "type": "boolean"
170        },
171        "asanEnabled": {
172          "description": "Indicates whether to support asan. Release version is not configurable",
173          "type": "boolean",
174          "default": false
175        }
176      }
177    },
178    "deviceConfig": {
179      "description": "Indicates the application configuration applied to a specific type of devices. When compiling and generating the HAP package, copy the device type configuration supported by the HAP package to the generated config file. The compilation is not required for the devices that are not supported by the HAP package.",
180      "type": "object",
181      "propertyNames": {
182        "enum": [
183          "car",
184          "default",
185          "tablet",
186          "tv",
187          "wearable",
188          "2in1"
189        ]
190      },
191      "properties": {
192        "default": {
193          "description": "The configuration in the default tag is applicable to all devices. If the configuration is different for other device types, you need to configure the configuration under the configuration tag of the device type.",
194          "type": "object",
195          "propertyNames": {
196            "enum": [
197              "keepAlive",
198              "jointUserId",
199              "process",
200              "ark",
201              "directLaunch",
202              "network",
203              "supportBackup",
204              "compressNativeLibs",
205              "allowComponentsProxy"
206            ]
207          },
208          "properties": {
209            "keepAlive": {
210              "description": "Specifies whether the application will keep alive.If this attribute is set to true, the application will start during the OS startup. If the application process exits, the OS will restart it. This attribute applies only to system applications.This attribute is not supported by basic watches.This label can be left blank by default.@deprecated",
211              "type": "boolean"
212            },
213            "jointUserId": {
214              "description": "Indicates the user ID shared by applications.Generally, applications run in different processes, and resources used by the applications are isolated. However, in some cases, you may develop multiple applications that need to share resources with each other. This resource sharing is implemented based on the same jointUserId value on the premise that the applications have the same signature.This attribute is not supported by devices running the OHOS.",
215              "type": "string"
216            },
217            "process": {
218              "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
219              "type": "string",
220              "maxLength": 31
221            },
222            "ark": {
223              "description": "This tag identifies maple configuration information.",
224              "type": "object",
225              "propertyNames": {
226                "enum": [
227                  "reqVersion",
228                  "flag"
229                ]
230              },
231              "properties": {
232                "reqVersion": {
233                  "description": "Maple version number that supports the application.",
234                  "type": "object",
235                  "propertyNames": {
236                    "enum": [
237                      "compatible",
238                      "target"
239                    ]
240                  },
241                  "properties": {
242                    "compatible": {
243                      "description": "Indicates the minimum maple version that supports the application. This label is an integer.",
244                      "type": "integer",
245                      "minimum": 0
246                    },
247                    "target": {
248                      "description": "Specifies the target maple version of the application. This label is an integer.",
249                      "type": "integer",
250                      "minimum": 0
251                    }
252                  }
253                },
254                "flag": {
255                  "description": "Specifies the type of the maple application.",
256                  "type": "string",
257                  "enum": [
258                    "m",
259                    "mo",
260                    "z"
261                  ]
262                }
263              }
264            },
265            "directLaunch": {
266              "description": "Specifies whether the application can be started when the device is locked. Set this attribute to true if you want to start the application without unlocking the device.This attribute is not supported by devices running the OHOS.",
267              "type": "boolean"
268            },
269            "network": {
270              "description": "Indicates the network security configuration. You can customize the network security settings of the application in a security statement configuration file without modifying the application code.",
271              "type": "object",
272              "propertyNames": {
273                "enum": [
274                  "cleartextTraffic",
275                  "securityConfig"
276                ]
277              },
278              "properties": {
279                "cleartextTraffic": {
280                  "description": "Specifies whether an application can use plaintext network transmission. The value is of the Boolean type. The value true indicates that plaintext network transmission is enabled.",
281                  "type": "boolean"
282                },
283                "securityConfig": {
284                  "description": "Indicates the network security configuration of the application.",
285                  "type": "object",
286                  "propertyNames": {
287                    "enum": [
288                      "domainSettings"
289                    ]
290                  },
291                  "properties": {
292                    "domainSettings": {
293                      "description": "Indicates the security settings of the custom network domain. This attribute allows nested domains. To be more specific, the domainSettings object of a large domain can be nested with the domainSettings objects of small network domains.",
294                      "type": "object",
295                      "propertyNames": {
296                        "enum": [
297                          "cleartextPermitted",
298                          "domains"
299                        ]
300                      },
301                      "properties": {
302                        "cleartextPermitted": {
303                          "description": "Specifies whether plaintext traffic can be transmitted in the custom network domain. If both cleartextTraffic and securityConfig are declared, whether plaintext traffic can be transmitted in the custom network domain is determined by the cleartextPermitted attribute.",
304                          "type": "boolean"
305                        },
306                        "domains": {
307                          "description": "Indicates the domain name configuration. This attribute consists of the subDomains and name sub-attributes.",
308                          "type": "array",
309                          "items": {
310                            "type": "object",
311                            "propertyNames": {
312                              "enum": [
313                                "subdomains",
314                                "name"
315                              ]
316                            },
317                            "properties": {
318                              "subdomains": {
319                                "description": "Subdomain name",
320                                "type": "boolean"
321                              },
322                              "name": {
323                                "description": "Domain name",
324                                "type": "string"
325                              }
326                            }
327                          }
328                        }
329                      }
330                    }
331                  }
332                }
333              }
334            },
335            "supportBackup": {
336              "description": "Specifies whether the application supports backup and restoration. If this attribute is set to false, backup or restoration will never be performed for the application.This attribute is not supported by devices running the OHOS.",
337              "type": "boolean"
338            },
339            "compressNativeLibs": {
340              "description": "Specifies whether the libs libraries of the .hap file are compressed for storage. If this attribute is set to false, the libs libraries are stored without being compressed and will be directly loaded during the installation of the .hap file.This attribute is not supported by devices running the OHOS.",
341              "type": "boolean"
342            },
343            "allowComponentsProxy": {
344              "description": "Indicates whether the application supports the ability proxy.If this property is set to true, the ability component can be hooked.",
345              "type": "boolean"
346            }
347          }
348        },
349        "tv": {
350          "description": "The configuration in the default tag is applicable to all devices. If the configuration is different for other device types, you need to configure the configuration under the configuration tag of the device type.",
351          "type": "object",
352          "propertyNames": {
353            "enum": [
354              "keepAlive",
355              "jointUserId",
356              "process",
357              "ark",
358              "directLaunch",
359              "network",
360              "supportBackup",
361              "compressNativeLibs",
362              "allowComponentsProxy"
363            ]
364          },
365          "properties": {
366            "keepAlive": {
367              "description": "Specifies whether the application will keep alive.If this attribute is set to true, the application will start during the OS startup. If the application process exits, the OS will restart it. This attribute applies only to system applications.This attribute is not supported by basic watches.This label can be left blank by default.",
368              "type": "boolean"
369            },
370            "jointUserId": {
371              "description": "Indicates the user ID shared by applications.Generally, applications run in different processes, and resources used by the applications are isolated. However, in some cases, you may develop multiple applications that need to share resources with each other. This resource sharing is implemented based on the same jointUserId value on the premise that the applications have the same signature.This attribute is not supported by devices running the OHOS.",
372              "type": "string"
373            },
374            "process": {
375              "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
376              "type": "string",
377              "maxLength": 31
378            },
379            "ark": {
380              "description": "This tag identifies maple configuration information.",
381              "type": "object",
382              "propertyNames": {
383                "enum": [
384                  "reqVersion",
385                  "flag"
386                ]
387              },
388              "properties": {
389                "reqVersion": {
390                  "description": "Maple version number that supports the application.",
391                  "type": "object",
392                  "propertyNames": {
393                    "enum": [
394                      "compatible",
395                      "target"
396                    ]
397                  },
398                  "properties": {
399                    "compatible": {
400                      "description": "Indicates the minimum maple version that supports the application. This label is an integer.",
401                      "type": "integer",
402                      "minimum": 0
403                    },
404                    "target": {
405                      "description": "Specifies the target maple version of the application. This label is an integer.",
406                      "type": "integer",
407                      "minimum": 0
408                    }
409                  }
410                },
411                "flag": {
412                  "description": "Specifies the type of the maple application.",
413                  "type": "string",
414                  "enum": [
415                    "m",
416                    "mo",
417                    "z"
418                  ]
419                }
420              }
421            },
422            "directLaunch": {
423              "description": "Specifies whether the application can be started when the device is locked. Set this attribute to true if you want to start the application without unlocking the device.This attribute is not supported by devices running the OHOS.",
424              "type": "boolean"
425            },
426            "network": {
427              "description": "Indicates the network security configuration. You can customize the network security settings of the application in a security statement configuration file without modifying the application code.",
428              "type": "object",
429              "propertyNames": {
430                "enum": [
431                  "cleartextTraffic",
432                  "securityConfig"
433                ]
434              },
435              "properties": {
436                "cleartextTraffic": {
437                  "description": "Specifies whether an application can use plaintext network transmission. The value is of the Boolean type. The value true indicates that plaintext network transmission is enabled.",
438                  "type": "boolean"
439                },
440                "securityConfig": {
441                  "description": "Indicates the network security configuration of the application.",
442                  "type": "object",
443                  "propertyNames": {
444                    "enum": [
445                      "domainSettings"
446                    ]
447                  },
448                  "properties": {
449                    "domainSettings": {
450                      "description": "Indicates the security settings of the custom network domain. This attribute allows nested domains. To be more specific, the domainSettings object of a large domain can be nested with the domainSettings objects of small network domains.",
451                      "type": "object",
452                      "propertyNames": {
453                        "enum": [
454                          "cleartextPermitted",
455                          "domains"
456                        ]
457                      },
458                      "properties": {
459                        "cleartextPermitted": {
460                          "description": "Specifies whether plaintext traffic can be transmitted in the custom network domain. If both cleartextTraffic and securityConfig are declared, whether plaintext traffic can be transmitted in the custom network domain is determined by the cleartextPermitted attribute.",
461                          "type": "boolean"
462                        },
463                        "domains": {
464                          "description": "Indicates the domain name configuration. This attribute consists of the subDomains and name sub-attributes.",
465                          "type": "array",
466                          "items": {
467                            "type": "object",
468                            "propertyNames": {
469                              "enum": [
470                                "subdomains",
471                                "name"
472                              ]
473                            },
474                            "properties": {
475                              "subdomains": {
476                                "description": "Subdomain name",
477                                "type": "boolean"
478                              },
479                              "name": {
480                                "description": "Domain name",
481                                "type": "string"
482                              }
483                            }
484                          }
485                        }
486                      }
487                    }
488                  }
489                }
490              }
491            },
492            "supportBackup": {
493              "description": "Specifies whether the application supports backup and restoration. If this attribute is set to false, backup or restoration will never be performed for the application.This attribute is not supported by devices running the OHOS.",
494              "type": "boolean"
495            },
496            "compressNativeLibs": {
497              "description": "Specifies whether the libs libraries of the .hap file are compressed for storage. If this attribute is set to false, the libs libraries are stored without being compressed and will be directly loaded during the installation of the .hap file.This attribute is not supported by devices running the OHOS.",
498              "type": "boolean"
499            },
500            "allowComponentsProxy": {
501              "description": "Indicates whether the application supports the ability proxy.If this property is set to true, the ability component can be hooked.",
502              "type": "boolean"
503            }
504          }
505        },
506        "wearable": {
507          "description": "The configuration in the default tag is applicable to all devices. If the configuration is different for other device types, you need to configure the configuration under the configuration tag of the device type.",
508          "type": "object",
509          "propertyNames": {
510            "enum": [
511              "keepAlive",
512              "jointUserId",
513              "process",
514              "ark",
515              "directLaunch",
516              "network",
517              "supportBackup",
518              "compressNativeLibs",
519              "allowComponentsProxy"
520            ]
521          },
522          "properties": {
523            "keepAlive": {
524              "description": "Specifies whether the application will keep alive.If this attribute is set to true, the application will start during the OS startup. If the application process exits, the OS will restart it. This attribute applies only to system applications.This attribute is not supported by basic watches.This label can be left blank by default.",
525              "type": "boolean"
526            },
527            "jointUserId": {
528              "description": "Indicates the user ID shared by applications.Generally, applications run in different processes, and resources used by the applications are isolated. However, in some cases, you may develop multiple applications that need to share resources with each other. This resource sharing is implemented based on the same jointUserId value on the premise that the applications have the same signature.This attribute is not supported by devices running the OHOS.",
529              "type": "string"
530            },
531            "process": {
532              "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
533              "type": "string",
534              "maxLength": 31
535            },
536            "ark": {
537              "description": "This tag identifies maple configuration information.",
538              "type": "object",
539              "propertyNames": {
540                "enum": [
541                  "reqVersion",
542                  "flag"
543                ]
544              },
545              "properties": {
546                "reqVersion": {
547                  "description": "Maple version number that supports the application.",
548                  "type": "object",
549                  "propertyNames": {
550                    "enum": [
551                      "compatible",
552                      "target"
553                    ]
554                  },
555                  "properties": {
556                    "compatible": {
557                      "description": "Indicates the minimum maple version that supports the application. This label is an integer.",
558                      "type": "integer",
559                      "minimum": 0
560                    },
561                    "target": {
562                      "description": "Specifies the target maple version of the application. This label is an integer.",
563                      "type": "integer",
564                      "minimum": 0
565                    }
566                  }
567                },
568                "flag": {
569                  "description": "Specifies the type of the maple application.",
570                  "type": "string",
571                  "enum": [
572                    "m",
573                    "mo",
574                    "z"
575                  ]
576                }
577              }
578            },
579            "directLaunch": {
580              "description": "Specifies whether the application can be started when the device is locked. Set this attribute to true if you want to start the application without unlocking the device.This attribute is not supported by devices running the OHOS.",
581              "type": "boolean"
582            },
583            "network": {
584              "description": "Indicates the network security configuration. You can customize the network security settings of the application in a security statement configuration file without modifying the application code.",
585              "type": "object",
586              "propertyNames": {
587                "enum": [
588                  "cleartextTraffic",
589                  "securityConfig"
590                ]
591              },
592              "properties": {
593                "cleartextTraffic": {
594                  "description": "Specifies whether an application can use plaintext network transmission. The value is of the Boolean type. The value true indicates that plaintext network transmission is enabled.",
595                  "type": "boolean"
596                },
597                "securityConfig": {
598                  "description": "Indicates the network security configuration of the application.",
599                  "type": "object",
600                  "propertyNames": {
601                    "enum": [
602                      "domainSettings"
603                    ]
604                  },
605                  "properties": {
606                    "domainSettings": {
607                      "description": "Indicates the security settings of the custom network domain. This attribute allows nested domains. To be more specific, the domainSettings object of a large domain can be nested with the domainSettings objects of small network domains.",
608                      "type": "object",
609                      "propertyNames": {
610                        "enum": [
611                          "cleartextPermitted",
612                          "domains"
613                        ]
614                      },
615                      "properties": {
616                        "cleartextPermitted": {
617                          "description": "Specifies whether plaintext traffic can be transmitted in the custom network domain. If both cleartextTraffic and securityConfig are declared, whether plaintext traffic can be transmitted in the custom network domain is determined by the cleartextPermitted attribute.",
618                          "type": "boolean"
619                        },
620                        "domains": {
621                          "description": "Indicates the domain name configuration. This attribute consists of the subDomains and name sub-attributes.",
622                          "type": "array",
623                          "items": {
624                            "type": "object",
625                            "propertyNames": {
626                              "enum": [
627                                "subdomains",
628                                "name"
629                              ]
630                            },
631                            "properties": {
632                              "subdomains": {
633                                "description": "Subdomain name",
634                                "type": "boolean"
635                              },
636                              "name": {
637                                "description": "Domain name",
638                                "type": "string"
639                              }
640                            }
641                          }
642                        }
643                      }
644                    }
645                  }
646                }
647              }
648            },
649            "supportBackup": {
650              "description": "Specifies whether the application supports backup and restoration. If this attribute is set to false, backup or restoration will never be performed for the application.This attribute is not supported by devices running the OHOS.",
651              "type": "boolean"
652            },
653            "compressNativeLibs": {
654              "description": "Specifies whether the libs libraries of the .hap file are compressed for storage. If this attribute is set to false, the libs libraries are stored without being compressed and will be directly loaded during the installation of the .hap file.This attribute is not supported by devices running the OHOS.",
655              "type": "boolean"
656            },
657            "allowComponentsProxy": {
658              "description": "Indicates whether the application supports the ability proxy.If this property is set to true, the ability component can be hooked.",
659              "type": "boolean"
660            }
661          }
662        },
663        "tablet": {
664          "description": "The configuration in the default tag is applicable to all devices. If the configuration is different for other device types, you need to configure the configuration under the configuration tag of the device type.",
665          "type": "object",
666          "propertyNames": {
667            "enum": [
668              "keepAlive",
669              "jointUserId",
670              "process",
671              "ark",
672              "directLaunch",
673              "network",
674              "supportBackup",
675              "compressNativeLibs",
676              "allowComponentsProxy"
677            ]
678          },
679          "properties": {
680            "keepAlive": {
681              "description": "Specifies whether the application will keep alive.If this attribute is set to true, the application will start during the OS startup. If the application process exits, the OS will restart it. This attribute applies only to system applications.This attribute is not supported by basic watches.This label can be left blank by default.",
682              "type": "boolean"
683            },
684            "jointUserId": {
685              "description": "Indicates the user ID shared by applications.Generally, applications run in different processes, and resources used by the applications are isolated. However, in some cases, you may develop multiple applications that need to share resources with each other. This resource sharing is implemented based on the same jointUserId value on the premise that the applications have the same signature.This attribute is not supported by devices running the OHOS.",
686              "type": "string"
687            },
688            "process": {
689              "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
690              "type": "string",
691              "maxLength": 31
692            },
693            "ark": {
694              "description": "This tag identifies maple configuration information.",
695              "type": "object",
696              "propertyNames": {
697                "enum": [
698                  "reqVersion",
699                  "flag"
700                ]
701              },
702              "properties": {
703                "reqVersion": {
704                  "description": "Maple version number that supports the application.",
705                  "type": "object",
706                  "propertyNames": {
707                    "enum": [
708                      "compatible",
709                      "target"
710                    ]
711                  },
712                  "properties": {
713                    "compatible": {
714                      "description": "Indicates the minimum maple version that supports the application. This label is an integer.",
715                      "type": "integer",
716                      "minimum": 0
717                    },
718                    "target": {
719                      "description": "Specifies the target maple version of the application. This label is an integer.",
720                      "type": "integer",
721                      "minimum": 0
722                    }
723                  }
724                },
725                "flag": {
726                  "description": "Specifies the type of the maple application.",
727                  "type": "string",
728                  "enum": [
729                    "m",
730                    "mo",
731                    "z"
732                  ]
733                }
734              }
735            },
736            "directLaunch": {
737              "description": "Specifies whether the application can be started when the device is locked. Set this attribute to true if you want to start the application without unlocking the device.This attribute is not supported by devices running the OHOS.",
738              "type": "boolean"
739            },
740            "network": {
741              "description": "Indicates the network security configuration. You can customize the network security settings of the application in a security statement configuration file without modifying the application code.",
742              "type": "object",
743              "propertyNames": {
744                "enum": [
745                  "cleartextTraffic",
746                  "securityConfig"
747                ]
748              },
749              "properties": {
750                "cleartextTraffic": {
751                  "description": "Specifies whether an application can use plaintext network transmission. The value is of the Boolean type. The value true indicates that plaintext network transmission is enabled.",
752                  "type": "boolean"
753                },
754                "securityConfig": {
755                  "description": "Indicates the network security configuration of the application.",
756                  "type": "object",
757                  "propertyNames": {
758                    "enum": [
759                      "domainSettings"
760                    ]
761                  },
762                  "properties": {
763                    "domainSettings": {
764                      "description": "Indicates the security settings of the custom network domain. This attribute allows nested domains. To be more specific, the domainSettings object of a large domain can be nested with the domainSettings objects of small network domains.",
765                      "type": "object",
766                      "propertyNames": {
767                        "enum": [
768                          "cleartextPermitted",
769                          "domains"
770                        ]
771                      },
772                      "properties": {
773                        "cleartextPermitted": {
774                          "description": "Specifies whether plaintext traffic can be transmitted in the custom network domain. If both cleartextTraffic and securityConfig are declared, whether plaintext traffic can be transmitted in the custom network domain is determined by the cleartextPermitted attribute.",
775                          "type": "boolean"
776                        },
777                        "domains": {
778                          "description": "Indicates the domain name configuration. This attribute consists of the subDomains and name sub-attributes.",
779                          "type": "array",
780                          "items": {
781                            "type": "object",
782                            "propertyNames": {
783                              "enum": [
784                                "subdomains",
785                                "name"
786                              ]
787                            },
788                            "properties": {
789                              "subdomains": {
790                                "description": "Indicates whether a subdomain name is available.This label is a boolean type.",
791                                "type": "boolean"
792                              },
793                              "name": {
794                                "description": "Indicates the domain name.This label is a string type",
795                                "type": "string"
796                              }
797                            }
798                          }
799                        }
800                      }
801                    }
802                  }
803                }
804              }
805            },
806            "supportBackup": {
807              "description": "Specifies whether the application supports backup and restoration. If this attribute is set to false, backup or restoration will never be performed for the application.This attribute is not supported by devices running the OHOS.",
808              "type": "boolean"
809            },
810            "compressNativeLibs": {
811              "description": "Specifies whether the libs libraries of the .hap file are compressed for storage. If this attribute is set to false, the libs libraries are stored without being compressed and will be directly loaded during the installation of the .hap file.This attribute is not supported by devices running the OHOS.",
812              "type": "boolean"
813            },
814            "allowComponentsProxy": {
815              "description": "Indicates whether the application supports the ability proxy.If this property is set to true, the ability component can be hooked.",
816              "type": "boolean"
817            }
818          }
819        },
820        "car": {
821          "description": "The configuration in the default tag is applicable to all devices. If the configuration is different for other device types, you need to configure the configuration under the configuration tag of the device type.",
822          "type": "object",
823          "propertyNames": {
824            "enum": [
825              "keepAlive",
826              "jointUserId",
827              "process",
828              "ark",
829              "directLaunch",
830              "network",
831              "supportBackup",
832              "compressNativeLibs",
833              "allowComponentsProxy"
834            ]
835          },
836          "properties": {
837            "keepAlive": {
838              "description": "Specifies whether the application will keep alive.If this attribute is set to true, the application will start during the OS startup. If the application process exits, the OS will restart it. This attribute applies only to system applications.This attribute is not supported by basic watches.This label can be left blank by default.",
839              "type": "boolean"
840            },
841            "jointUserId": {
842              "description": "Indicates the user ID shared by applications.Generally, applications run in different processes, and resources used by the applications are isolated. However, in some cases, you may develop multiple applications that need to share resources with each other. This resource sharing is implemented based on the same jointUserId value on the premise that the applications have the same signature.This attribute is not supported by devices running the OHOS.",
843              "type": "string"
844            },
845            "process": {
846              "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
847              "type": "string",
848              "maxLength": 31
849            },
850            "ark": {
851              "description": "This tag identifies maple configuration information.",
852              "type": "object",
853              "propertyNames": {
854                "enum": [
855                  "reqVersion",
856                  "flag"
857                ]
858              },
859              "properties": {
860                "reqVersion": {
861                  "description": "Maple version number that supports the application.",
862                  "type": "object",
863                  "propertyNames": {
864                    "enum": [
865                      "compatible",
866                      "target"
867                    ]
868                  },
869                  "properties": {
870                    "compatible": {
871                      "description": "Indicates the minimum maple version that supports the application. This label is an integer.",
872                      "type": "integer",
873                      "minimum": 0
874                    },
875                    "target": {
876                      "description": "Specifies the target maple version of the application. This label is an integer.",
877                      "type": "integer",
878                      "minimum": 0
879                    }
880                  }
881                },
882                "flag": {
883                  "description": "Specifies the type of the maple application.",
884                  "type": "string",
885                  "enum": [
886                    "m",
887                    "mo",
888                    "z"
889                  ]
890                }
891              }
892            },
893            "directLaunch": {
894              "description": "Specifies whether the application can be started when the device is locked. Set this attribute to true if you want to start the application without unlocking the device.This attribute is not supported by devices running the OHOS.",
895              "type": "boolean"
896            },
897            "network": {
898              "description": "Indicates the network security configuration. You can customize the network security settings of the application in a security statement configuration file without modifying the application code.",
899              "type": "object",
900              "propertyNames": {
901                "enum": [
902                  "cleartextTraffic",
903                  "securityConfig"
904                ]
905              },
906              "properties": {
907                "cleartextTraffic": {
908                  "description": "Specifies whether an application can use plaintext network transmission. The value is of the Boolean type. The value true indicates that plaintext network transmission is enabled.",
909                  "type": "boolean"
910                },
911                "securityConfig": {
912                  "description": "Indicates the network security configuration of the application.",
913                  "type": "object",
914                  "propertyNames": {
915                    "enum": [
916                      "domainSettings"
917                    ]
918                  },
919                  "properties": {
920                    "domainSettings": {
921                      "description": "Indicates the security settings of the custom network domain. This attribute allows nested domains. To be more specific, the domainSettings object of a large domain can be nested with the domainSettings objects of small network domains.",
922                      "type": "object",
923                      "propertyNames": {
924                        "enum": [
925                          "cleartextPermitted",
926                          "domains"
927                        ]
928                      },
929                      "properties": {
930                        "cleartextPermitted": {
931                          "description": "Specifies whether plaintext traffic can be transmitted in the custom network domain. If both cleartextTraffic and securityConfig are declared, whether plaintext traffic can be transmitted in the custom network domain is determined by the cleartextPermitted attribute.",
932                          "type": "boolean"
933                        },
934                        "domains": {
935                          "description": "Indicates the domain name configuration. This attribute consists of the subDomains and name sub-attributes.",
936                          "type": "array",
937                          "items": {
938                            "type": "object",
939                            "propertyNames": {
940                              "enum": [
941                                "subdomains",
942                                "name"
943                              ]
944                            },
945                            "properties": {
946                              "subdomains": {
947                                "description": "Subdomain name",
948                                "type": "boolean"
949                              },
950                              "name": {
951                                "description": "Domain name",
952                                "type": "string"
953                              }
954                            }
955                          }
956                        }
957                      }
958                    }
959                  }
960                }
961              }
962            },
963            "supportBackup": {
964              "description": "Specifies whether the application supports backup and restoration. If this attribute is set to false, backup or restoration will never be performed for the application.This attribute is not supported by devices running the OHOS.",
965              "type": "boolean"
966            },
967            "compressNativeLibs": {
968              "description": "Specifies whether the libs libraries of the .hap file are compressed for storage. If this attribute is set to false, the libs libraries are stored without being compressed and will be directly loaded during the installation of the .hap file.This attribute is not supported by devices running the OHOS.",
969              "type": "boolean"
970            },
971            "allowComponentsProxy": {
972              "description": "Indicates whether the application supports the ability proxy.If this property is set to true, the ability component can be hooked.",
973              "type": "boolean"
974            }
975          }
976        },
977        "2in1": {
978          "description": "The configuration in the default tag is applicable to all devices. If the configuration is different for other device types, you need to configure the configuration under the configuration tag of the device type.",
979          "type": "object",
980          "propertyNames": {
981            "enum": [
982              "keepAlive",
983              "jointUserId",
984              "process",
985              "ark",
986              "directLaunch",
987              "network",
988              "supportBackup",
989              "compressNativeLibs",
990              "allowComponentsProxy"
991            ]
992          },
993          "properties": {
994            "keepAlive": {
995              "description": "Specifies whether the application will keep alive.If this attribute is set to true, the application will start during the OS startup. If the application process exits, the OS will restart it. This attribute applies only to system applications.This attribute is not supported by basic watches.This label can be left blank by default.",
996              "type": "boolean"
997            },
998            "jointUserId": {
999              "description": "Indicates the user ID shared by applications.Generally, applications run in different processes, and resources used by the applications are isolated. However, in some cases, you may develop multiple applications that need to share resources with each other. This resource sharing is implemented based on the same jointUserId value on the premise that the applications have the same signature.This attribute is not supported by devices running the OHOS.",
1000              "type": "string"
1001            },
1002            "process": {
1003              "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
1004              "type": "string",
1005              "maxLength": 31
1006            },
1007            "ark": {
1008              "description": "This tag identifies maple configuration information.",
1009              "type": "object",
1010              "propertyNames": {
1011                "enum": [
1012                  "reqVersion",
1013                  "flag"
1014                ]
1015              },
1016              "properties": {
1017                "reqVersion": {
1018                  "description": "Maple version number that supports the application.",
1019                  "type": "object",
1020                  "propertyNames": {
1021                    "enum": [
1022                      "compatible",
1023                      "target"
1024                    ]
1025                  },
1026                  "properties": {
1027                    "compatible": {
1028                      "description": "Indicates the minimum maple version that supports the application. This label is an integer.",
1029                      "type": "integer",
1030                      "minimum": 0
1031                    },
1032                    "target": {
1033                      "description": "Specifies the target maple version of the application. This label is an integer.",
1034                      "type": "integer",
1035                      "minimum": 0
1036                    }
1037                  }
1038                },
1039                "flag": {
1040                  "description": "Specifies the type of the maple application.",
1041                  "type": "string",
1042                  "enum": [
1043                    "m",
1044                    "mo",
1045                    "z"
1046                  ]
1047                }
1048              }
1049            },
1050            "directLaunch": {
1051              "description": "Specifies whether the application can be started when the device is locked. Set this attribute to true if you want to start the application without unlocking the device.This attribute is not supported by devices running the OHOS.",
1052              "type": "boolean"
1053            },
1054            "network": {
1055              "description": "Indicates the network security configuration. You can customize the network security settings of the application in a security statement configuration file without modifying the application code.",
1056              "type": "object",
1057              "propertyNames": {
1058                "enum": [
1059                  "cleartextTraffic",
1060                  "securityConfig"
1061                ]
1062              },
1063              "properties": {
1064                "cleartextTraffic": {
1065                  "description": "Specifies whether an application can use plaintext network transmission. The value is of the Boolean type. The value true indicates that plaintext network transmission is enabled.",
1066                  "type": "boolean"
1067                },
1068                "securityConfig": {
1069                  "description": "Indicates the network security configuration of the application.",
1070                  "type": "object",
1071                  "propertyNames": {
1072                    "enum": [
1073                      "domainSettings"
1074                    ]
1075                  },
1076                  "properties": {
1077                    "domainSettings": {
1078                      "description": "Indicates the security settings of the custom network domain. This attribute allows nested domains. To be more specific, the domainSettings object of a large domain can be nested with the domainSettings objects of small network domains.",
1079                      "type": "object",
1080                      "propertyNames": {
1081                        "enum": [
1082                          "cleartextPermitted",
1083                          "domains"
1084                        ]
1085                      },
1086                      "properties": {
1087                        "cleartextPermitted": {
1088                          "description": "Specifies whether plaintext traffic can be transmitted in the custom network domain. If both cleartextTraffic and securityConfig are declared, whether plaintext traffic can be transmitted in the custom network domain is determined by the cleartextPermitted attribute.",
1089                          "type": "boolean"
1090                        },
1091                        "domains": {
1092                          "description": "Indicates the domain name configuration. This attribute consists of the subDomains and name sub-attributes.",
1093                          "type": "array",
1094                          "items": {
1095                            "type": "object",
1096                            "propertyNames": {
1097                              "enum": [
1098                                "subdomains",
1099                                "name"
1100                              ]
1101                            },
1102                            "properties": {
1103                              "subdomains": {
1104                                "description": "Subdomain name",
1105                                "type": "boolean"
1106                              },
1107                              "name": {
1108                                "description": "Domain name",
1109                                "type": "string"
1110                              }
1111                            }
1112                          }
1113                        }
1114                      }
1115                    }
1116                  }
1117                }
1118              }
1119            },
1120            "supportBackup": {
1121              "description": "Specifies whether the application supports backup and restoration. If this attribute is set to false, backup or restoration will never be performed for the application.This attribute is not supported by devices running the OHOS.",
1122              "type": "boolean"
1123            },
1124            "compressNativeLibs": {
1125              "description": "Specifies whether the libs libraries of the .hap file are compressed for storage. If this attribute is set to false, the libs libraries are stored without being compressed and will be directly loaded during the installation of the .hap file.This attribute is not supported by devices running the OHOS.",
1126              "type": "boolean"
1127            },
1128            "allowComponentsProxy": {
1129              "description": "Indicates whether the application supports the ability proxy.If this property is set to true, the ability component can be hooked.",
1130              "type": "boolean"
1131            }
1132          }
1133        }
1134      }
1135    },
1136    "module": {
1137      "description": "Indicates the configuration of a .hap file. The module configuration is valid only for the current .hap file.",
1138      "type": "object",
1139      "required": [
1140        "package",
1141        "deviceType",
1142        "distro"
1143      ],
1144      "propertyNames": {
1145        "enum": [
1146          "commonEvents",
1147          "description",
1148          "abilities",
1149          "js",
1150          "reqPermissions",
1151          "definePermissions",
1152          "deviceType",
1153          "distro",
1154          "reqCapabilities",
1155          "metaData",
1156          "package",
1157          "name",
1158          "supportedModes",
1159          "shortcuts",
1160          "defPermissions",
1161          "defPermissionGroups",
1162          "allowClassMap",
1163          "colorMode",
1164          "theme",
1165          "mainAbility",
1166          "srcPath",
1167          "resizeable",
1168          "entryTheme",
1169          "distroFilter",
1170          "uiSyntax",
1171          "testRunner",
1172          "libIsolation",
1173          "generateBuildHash"
1174        ]
1175      },
1176      "properties": {
1177        "package": {
1178          "description": "Indicates the name of the .hap file. It cannot be used as the bundle name of the application. The value is a string with a maximum of 127 bytes, in the reverse domain name notation. It is that the value be the same as the project directory of the .hap file.This attribute is not supported by bas recommendedic watches.",
1179          "type": "string",
1180          "maxLength": 127,
1181          "minLength": 1
1182        },
1183        "name": {
1184          "description": "Indicates the class name of the .hap file. The value is a string with a maximum of 255 bytes, in the reverse domain name notation. The prefix must be the same as the package value specified for this module. Alternatively, the value can start with a period (.) followed by the class name.This attribute is not supported by basic watches.",
1185          "type": "string",
1186          "maxLength": 255
1187        },
1188        "description": {
1189          "description": "Describes the .hap file. The value can be a string or a resource index to descriptions in multiple languages. A string can contain a maximum of 255 bytes. If the value exceeds 255 bytes, use the resource index.The tag can be left blank by default.",
1190          "type": "string",
1191          "maxLength": 255
1192        },
1193        "deviceType": {
1194          "description": "Indicates the type of devices on which the abilities can run. The value can be default, tv (smart TVs), wearable (smart watches), liteWearable (basic watches), smartVision, car, tablet or any combination of these values.This label cannot be left blank.",
1195          "type": "array",
1196          "uniqueItems": true,
1197          "items": {
1198            "type": "string",
1199            "enum": [
1200              "car",
1201              "default",
1202              "tablet",
1203              "tv",
1204              "wearable",
1205              "2in1"
1206            ]
1207          }
1208        },
1209        "distro": {
1210          "description": "Indicates the description of the current .hap file.This label cannot be left blank.",
1211          "type": "object",
1212          "propertyNames": {
1213            "enum": [
1214              "deliveryWithInstall",
1215              "moduleName",
1216              "moduleType",
1217              "installationFree"
1218            ]
1219          },
1220          "required": [
1221            "deliveryWithInstall",
1222            "moduleName",
1223            "moduleType"
1224          ],
1225          "properties": {
1226            "deliveryWithInstall": {
1227              "description": "Specifies whether the .hap file is installed when the user installs the application.true: The .hap file is installed during the application installation.false: The .hap file is not installed during the application installation.This label cannot be left blank.",
1228              "type": "boolean"
1229            },
1230            "moduleName": {
1231              "description": "Indicates the name of the current .hap file.This label cannot be left blank.",
1232              "type": "string",
1233              "maxLength": 31
1234            },
1235            "moduleType": {
1236              "description": "Indicates the type of the current .hap file. The value can be entry or feature.This label cannot be left blank.",
1237              "type": "string",
1238              "enum": [
1239                "entry",
1240                "feature",
1241                "har"
1242              ]
1243            },
1244            "installationFree": {
1245              "description": "Indicates whether free installation of the current hap is supported. If moduleType is feature, this item label is mandatory, else this item label is optional.",
1246              "type": "boolean"
1247            }
1248          },
1249          "if": {
1250            "properties": {
1251              "moduleType": {
1252                "const": "har"
1253              }
1254            }
1255          },
1256          "then": {
1257            "propertyNames": {
1258              "enum": [
1259                "deliveryWithInstall",
1260                "moduleName",
1261                "moduleType",
1262                "installationFree"
1263              ]
1264            }
1265          },
1266          "else": {
1267            "required": [
1268              "installationFree"
1269            ]
1270          }
1271        },
1272        "abilities": {
1273          "description": "Indicates all abilities in the current module. The value is an array of objects, each of which represents an ability.This label can be left blank by default,and indicates no capability exists in the current module.",
1274          "type": "array",
1275          "items": {
1276            "type": "object",
1277            "allOf": [
1278              {
1279                "if": {
1280                  "properties": {
1281                    "type": {
1282                      "const": "page"
1283                    }
1284                  }
1285                },
1286                "then": {
1287                  "propertyNames": {
1288                    "enum": [
1289                      "priority",
1290                      "process",
1291                      "mergeRule",
1292                      "name",
1293                      "description",
1294                      "icon",
1295                      "type",
1296                      "label",
1297                      "visible",
1298                      "launchType",
1299                      "metaData",
1300                      "orientation",
1301                      "permissions",
1302                      "skills",
1303                      "configChanges",
1304                      "mission",
1305                      "targetAbility",
1306                      "supportPipMode",
1307                      "formsEnabled",
1308                      "forms",
1309                      "deviceCapability",
1310                      "resizeable",
1311                      "srcLanguage",
1312                      "srcPath",
1313                      "continuable",
1314                      "startWindowIcon",
1315                      "startWindowBackground",
1316                      "removeMissionAfterTerminate"
1317                    ]
1318                  },
1319                  "required": [
1320                    "name",
1321                    "type",
1322                    "srcPath"
1323                  ]
1324                }
1325              },
1326              {
1327                "if": {
1328                  "properties": {
1329                    "type": {
1330                      "const": "data"
1331                    }
1332                  }
1333                },
1334                "then": {
1335                  "propertyNames": {
1336                    "enum": [
1337                      "priority",
1338                      "process",
1339                      "mergeRule",
1340                      "name",
1341                      "description",
1342                      "icon",
1343                      "type",
1344                      "label",
1345                      "visible",
1346                      "uri",
1347                      "launchType",
1348                      "metaData",
1349                      "permissions",
1350                      "skills",
1351                      "grantPermission",
1352                      "readPermission",
1353                      "writePermission",
1354                      "uriPermission",
1355                      "configChanges",
1356                      "multiUserShared",
1357                      "formsEnabled",
1358                      "forms",
1359                      "deviceCapability",
1360                      "resizeable",
1361                      "srcLanguage",
1362                      "srcPath"
1363                    ]
1364                  },
1365                  "required": [
1366                    "name",
1367                    "type",
1368                    "uri",
1369                    "srcPath"
1370                  ],
1371                  "properties": {
1372                    "formsEnabled": {
1373                      "const": false
1374                    }
1375                  }
1376                }
1377              },
1378              {
1379                "if": {
1380                  "properties": {
1381                    "type": {
1382                      "const": "service"
1383                    }
1384                  }
1385                },
1386                "then": {
1387                  "propertyNames": {
1388                    "enum": [
1389                      "priority",
1390                      "process",
1391                      "mergeRule",
1392                      "name",
1393                      "description",
1394                      "icon",
1395                      "type",
1396                      "label",
1397                      "visible",
1398                      "launchType",
1399                      "metaData",
1400                      "permissions",
1401                      "skills",
1402                      "backgroundModes",
1403                      "configChanges",
1404                      "formsEnabled",
1405                      "forms",
1406                      "deviceCapability",
1407                      "resizeable",
1408                      "srcLanguage",
1409                      "srcPath"
1410                    ]
1411                  },
1412                  "required": [
1413                    "name",
1414                    "type",
1415                    "srcPath"
1416                  ]
1417                }
1418              },
1419              {
1420                "if": {
1421                  "properties": {
1422                    "type": {
1423                      "const": "CA"
1424                    }
1425                  }
1426                },
1427                "then": {
1428                  "propertyNames": {
1429                    "enum": [
1430                      "priority",
1431                      "process",
1432                      "mergeRule",
1433                      "name",
1434                      "description",
1435                      "icon",
1436                      "type",
1437                      "label",
1438                      "visible",
1439                      "launchType",
1440                      "metaData",
1441                      "permissions",
1442                      "skills",
1443                      "configChanges",
1444                      "formsEnabled",
1445                      "forms",
1446                      "deviceCapability",
1447                      "resizeable",
1448                      "srcLanguage",
1449                      "srcPath"
1450                    ]
1451                  },
1452                  "required": [
1453                    "name",
1454                    "type",
1455                    "srcPath"
1456                  ],
1457                  "properties": {
1458                    "formsEnabled": {
1459                      "const": false
1460                    }
1461                  }
1462                }
1463              }
1464            ],
1465            "properties": {
1466              "priority": {
1467                "description": "Indicates the priority of the ability.Only for system application.This field is used for implicit query.Range from 0 to 10, default value is 0.",
1468                "type": "integer",
1469                "minimum": 0,
1470                "maximum": 10
1471              },
1472              "name": {
1473                "description": "Indicates the name of the ability. The value is a reverse domain name, in the format of \"Complete bundle name.Class name\", for example, \"com.example.myapplication.MainAbility\", where com.example.myapplication indicates the bundle name and MainAbility indicates the class name. Alternatively, the value can start with a period (.) followed by the class name, for example, \".MainAbility\", which will be resolved into a complete name prefixed with the bundle name of the application.",
1474                "type": "string",
1475                "maxLength": 127
1476              },
1477              "description": {
1478                "description": "Describes the ability. The value can be a string or a resource index to descriptions in multiple languages.This label can be left blank by default.",
1479                "type": "string",
1480                "maxLength": 255
1481              },
1482              "icon": {
1483                "description": "Indicates the index to the ability icon file, in the format of \"$media:ability_icon\".This label can be left blank by default.",
1484                "type": "string"
1485              },
1486              "type": {
1487                "description": "Indicates the template used by the ability. The value can be page, service, or provider.The \"page\" indicates FA developed using the Page template to provide the capability of interacting with users.The \"service\" indicates AA developed using the Service template to provide the capability of running tasks in the background.The \"provider\" indicates AA developed using the Data template to provide unified data access for external systems.This label cannot be left blank.",
1488                "type": "string",
1489                "enum": [
1490                  "page",
1491                  "service",
1492                  "data",
1493                  "CA"
1494                ]
1495              },
1496              "process": {
1497                "description": "Indicates the name of the process running the application or ability.If a process is configured in the deviceConfig tag, all abilities of the application run in this process. You can also set the process attribute for a specific ability, so that the ability can run in this process. If this attribute is set to the same process name as other applications, all these applications can run in the same process on the premise that they have the same jointUserId and the same signature.This attribute is not supported by devices running the OHOS.",
1498                "type": "string",
1499                "maxLength": 31
1500              },
1501              "mergeRule": {
1502                "description": "Tags identify the rule for merging configs.",
1503                "type": "object",
1504                "propertyNames": {
1505                  "enum": [
1506                    "remove",
1507                    "replace"
1508                  ]
1509                },
1510                "properties": {
1511                  "remove": {
1512                    "description": "Attributes to Be Removed After Marking Merge",
1513                    "type": "array",
1514                    "uniqueItems": true,
1515                    "items": {
1516                      "type": "string"
1517                    }
1518                  },
1519                  "replace": {
1520                    "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
1521                    "type": "array",
1522                    "uniqueItems": true,
1523                    "items": {
1524                      "type": "string"
1525                    }
1526                  }
1527                }
1528              },
1529              "formsEnabled": {
1530                "description": "Indicates whether the capability of the page type provides the embedded card capability. The value is of the Boolean type. The value true indicates that the capability is provided, and the value false indicates that the capability is not provided.",
1531                "type": "boolean"
1532              },
1533              "label": {
1534                "description": "Indicates the ability name visible to users. The tag value is set to the resource index of this name to support multiple languages.",
1535                "type": "string",
1536                "pattern": "^[$]string:[0-9a-zA-Z_.]+|(?=.*[{])(?=.*[}])[0-9a-zA-Z_.{}]+$",
1537                "maxLength": 255
1538              },
1539              "visible": {
1540                "description": "Specifies whether the ability can be called by other applications.The \"true\" indicates the ability can be called by other applications.The \"false\" indicates the ability cannot be called by other applications.This tag is optional. The default value is false.",
1541                "type": "boolean"
1542              },
1543              "uri": {
1544                "description": "Indicates the Uniform Resource Identifier (URI) of the ability, in the format of \"[scheme:][//authority][path][?query][#fragment]\".",
1545                "type": "string",
1546                "maxLength": 255
1547              },
1548              "launchType": {
1549                "description": "Indicates the startup type of the ability. The value can be singleton (only a single Ability instance can be created during startup) or standard (multiple Ability instances can be created during startup).This attribute is not supported by basic watches.",
1550                "type": "string",
1551                "enum": [
1552                  "singleton",
1553                  "standard"
1554                ]
1555              },
1556              "metaData": {
1557                "description": "Indicates the metadata of the ability.",
1558                "type": "object",
1559                "propertyNames": {
1560                  "enum": [
1561                    "parameters",
1562                    "results",
1563                    "customizeData",
1564                    "mergeRule"
1565                  ]
1566                },
1567                "properties": {
1568                  "mergeRule": {
1569                    "description": "Tags identify the rule for merging configs.",
1570                    "type": "object",
1571                    "propertyNames": {
1572                      "enum": [
1573                        "remove",
1574                        "replace"
1575                      ]
1576                    },
1577                    "properties": {
1578                      "remove": {
1579                        "description": "Attributes to Be Removed After Marking Merge",
1580                        "type": "array",
1581                        "uniqueItems": true,
1582                        "items": {
1583                          "type": "string"
1584                        }
1585                      },
1586                      "replace": {
1587                        "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
1588                        "type": "array",
1589                        "uniqueItems": true,
1590                        "items": {
1591                          "type": "string"
1592                        }
1593                      }
1594                    }
1595                  },
1596                  "parameters": {
1597                    "description": "Indicates the metadata of the parameters to be passed for calling the ability. The metadata of each parameter consists of the description, name, and type sub-attributes.",
1598                    "type": "array",
1599                    "items": {
1600                      "type": "object",
1601                      "propertyNames": {
1602                        "enum": [
1603                          "description",
1604                          "name",
1605                          "type"
1606                        ]
1607                      },
1608                      "required": [
1609                        "name",
1610                        "type"
1611                      ],
1612                      "properties": {
1613                        "name": {
1614                          "description": "Indicates the name of the parameter.",
1615                          "type": "string",
1616                          "maxLength": 255
1617                        },
1618                        "type": {
1619                          "description": "Indicates the type of the parameter, for example, Integer.",
1620                          "type": "string"
1621                        },
1622                        "description": {
1623                          "description": "Describes the parameter. The value can be a string or a resource index to descriptions in multiple languages.",
1624                          "type": "string",
1625                          "maxLength": 255
1626                        }
1627                      }
1628                    }
1629                  },
1630                  "results": {
1631                    "description": "Indicates the metadata of the ability return value. The metadata of each return value consists of the description, name, and type sub-attributes.",
1632                    "type": "array",
1633                    "items": {
1634                      "type": "object",
1635                      "propertyNames": {
1636                        "enum": [
1637                          "description",
1638                          "name",
1639                          "type"
1640                        ]
1641                      },
1642                      "required": [
1643                        "type"
1644                      ],
1645                      "properties": {
1646                        "name": {
1647                          "description": "Indicates the name of the return value.",
1648                          "type": "string",
1649                          "maxLength": 255
1650                        },
1651                        "type": {
1652                          "description": "Indicates the type of the return value, for example, Integer.",
1653                          "type": "string"
1654                        },
1655                        "description": {
1656                          "description": "Describes the return value. The value can be a string or a resource index to descriptions in multiple languages.",
1657                          "type": "string",
1658                          "maxLength": 255
1659                        }
1660                      }
1661                    }
1662                  },
1663                  "customizeData": {
1664                    "description": "Indicates the custom metadata of the parent component. The parameters and results attributes are not configurable in the module tag.",
1665                    "type": "array",
1666                    "items": {
1667                      "type": "object",
1668                      "propertyNames": {
1669                        "enum": [
1670                          "name",
1671                          "value",
1672                          "extra"
1673                        ]
1674                      },
1675                      "properties": {
1676                        "name": {
1677                          "description": "Indicates the key of a data element. The value is a string with a maximum of 255 bytes.",
1678                          "type": "string",
1679                          "maxLength": 255
1680                        },
1681                        "value": {
1682                          "description": "Indicates the value of a data element. The value is a string with a maximum of 255 bytes.",
1683                          "type": "string",
1684                          "maxLength": 255
1685                        },
1686                        "extra": {
1687                          "description": "Indicates the custom format of the data element. The value is an index to the resource that identifies the data.",
1688                          "type": "string"
1689                        }
1690                      }
1691                    }
1692                  }
1693                }
1694              },
1695              "orientation": {
1696                "description": "Indicates the display orientation of the ability. This attribute is valid only for abilities using the Page template.",
1697                "enum": [
1698                  "unspecified",
1699                  "landscape",
1700                  "portrait",
1701                  "followRecent"
1702                ],
1703                "type": "string"
1704              },
1705              "permissions": {
1706                "description": "Indicates the permissions required for abilities of another application to call the current ability, generally in the format of a reverse domain name. The value can be either the permissions predefined in the OS or those customized by your application. If a custom permission is used, the value must be the same as the name value of a specific permission defined in the defPermissions attribute.",
1707                "type": "array",
1708                "items": {
1709                  "type": "string",
1710                  "maxLength": 255
1711                }
1712              },
1713              "skills": {
1714                "description": "Indicates the types of the intent that can be accepted by the ability.",
1715                "type": "array",
1716                "items": {
1717                  "type": "object",
1718                  "propertyNames": {
1719                    "enum": [
1720                      "actions",
1721                      "entities",
1722                      "uris"
1723                    ]
1724                  },
1725                  "properties": {
1726                    "actions": {
1727                      "description": "Indicates the actions of the intent that can be accepted by the ability. The value can have one or multiple actions predefined in the system.",
1728                      "type": "array",
1729                      "items": {
1730                        "type": "string"
1731                      }
1732                    },
1733                    "entities": {
1734                      "description": "Indicates the entities of the intent that can be accepted by the ability, such as video and Home application. The value can have one or multiple entities either predefined in the system or be customized.",
1735                      "type": "array",
1736                      "items": {
1737                        "type": "string"
1738                      }
1739                    },
1740                    "uris": {
1741                      "description": "This tag identifies the collection of data specifications to be added to the Intent filter.",
1742                      "type": "array",
1743                      "items": {
1744                        "anyOf": [
1745                          {
1746                            "type": "object",
1747                            "propertyNames": {
1748                              "enum": [
1749                                "scheme",
1750                                "host",
1751                                "port",
1752                                "pathStartWith",
1753                                "path",
1754                                "pathRegx",
1755                                "type"
1756                              ]
1757                            },
1758                            "required": [
1759                              "scheme"
1760                            ],
1761                            "properties": {
1762                              "scheme": {
1763                                "description": "This label is a string type.",
1764                                "type": "string"
1765                              },
1766                              "host": {
1767                                "description": "This label is a string type.",
1768                                "type": "string"
1769                              },
1770                              "port": {
1771                                "description": "This label is a string type.",
1772                                "type": "string"
1773                              },
1774                              "pathStartWith": {
1775                                "description": "This label is a string type.",
1776                                "type": "string"
1777                              },
1778                              "path": {
1779                                "description": "This label is a string type.",
1780                                "type": "string"
1781                              },
1782                              "pathRegx": {
1783                                "description": "This label is a string type.",
1784                                "type": "string"
1785                              },
1786                              "type": {
1787                                "description": "This label is a string type.",
1788                                "type": "string"
1789                              }
1790                            }
1791                          },
1792                          {
1793                            "type": "object",
1794                            "propertyNames": {
1795                              "enum": [
1796                                "type"
1797                              ]
1798                            },
1799                            "properties": {
1800                              "type": {
1801                                "description": "This label is a string type.",
1802                                "type": "string"
1803                              }
1804                            }
1805                          }
1806                        ]
1807                      }
1808                    }
1809                  }
1810                }
1811              },
1812              "backgroundModes": {
1813                "description": "Indicates the background service addressing a specific usage scenario. This attribute is dedicated to the abilities using the Service template. You can assign multiple background service types to a specific ability using the Service template.",
1814                "type": "array",
1815                "items": {
1816                  "type": "string",
1817                  "enum": [
1818                    "dataTransfer",
1819                    "audioPlayback",
1820                    "audioRecording",
1821                    "location",
1822                    "bluetoothInteraction",
1823                    "multiDeviceConnection",
1824                    "wifiInteraction",
1825                    "voip",
1826                    "taskKeeping"
1827                  ]
1828                }
1829              },
1830              "grantPermission": {
1831                "description": "Specifies whether a permission can be granted to any data within the ability.",
1832                "type": "boolean"
1833              },
1834              "readPermission": {
1835                "description": "Indicates the permission required for reading ability data. The value is a string with a maximum of 255 bytes. This attribute is valid only for the abilities whose type is provider.This attribute is not supported by devices running the OHOS.",
1836                "type": "string",
1837                "maxLength": 255
1838              },
1839              "writePermission": {
1840                "description": "Indicates the permission required for writing data to the ability. The value is string of a maximum of 255 bytes. This attribute is valid only for the abilities whose type is provider.This attribute is not supported by devices running the OHOS.",
1841                "type": "string",
1842                "maxLength": 255
1843              },
1844              "uriPermission": {
1845                "description": "Indicates the application data that the ability has the permission to access. This attribute consists of the mode and path sub-attributes. This attribute is valid only for the abilities whose type is provider.This attribute is not supported by devices running the OHOS.",
1846                "type": "object",
1847                "required": [
1848                  "path"
1849                ],
1850                "propertyNames": {
1851                  "enum": [
1852                    "mode",
1853                    "path"
1854                  ]
1855                },
1856                "properties": {
1857                  "mode": {
1858                    "description": "This tag identifies the matching mode of uriPermission.",
1859                    "type": "string",
1860                    "enum": [
1861                      "default",
1862                      "prefix",
1863                      "pattern"
1864                    ]
1865                  },
1866                  "path": {
1867                    "description": "Path of the tag uriPermission.",
1868                    "type": "string",
1869                    "maxLength": 255
1870                  }
1871                }
1872              },
1873              "configChanges": {
1874                "description": "Indicates the system configurations that the ability concerns. Upon any changes on the configurations, the onConfigurationChanged callback will be invoked to notify the ability.",
1875                "type": "array",
1876                "uniqueItems": true,
1877                "items": {
1878                  "type": "string",
1879                  "enum": [
1880                    "density",
1881                    "fontSize",
1882                    "layout",
1883                    "locale",
1884                    "mcc",
1885                    "mnc",
1886                    "orientation",
1887                    "size",
1888                    "smallestSize",
1889                    "colorMode"
1890                  ]
1891                }
1892              },
1893              "mission": {
1894                "description": "Indicates the task stack of the ability. By default, all abilities in an application belong to the same task stack. This attribute is specific to the abilities using the Page template.This attribute is not supported by devices running the OHOS.",
1895                "type": "string"
1896              },
1897              "targetAbility": {
1898                "description": "Indicates the target ability that this ability alias points to. This attribute is specific to the abilities using the Page template. The target ability must belong to the same application as the alias and must be declared in config.json ahead of the alias.This attribute is not supported by devices running the OHOS.",
1899                "type": "string"
1900              },
1901              "multiUserShared": {
1902                "description": "Specifies whether the ability supports data sharing among multiple users. This attribute is specific to the abilities whose type is provider. Note that this attribute will invalidate the visible attribute. If this attribute is set to true, only one copy of data is stored for multiple users.This attribute is not supported by devices running the OHOS.",
1903                "type": "boolean"
1904              },
1905              "supportPipMode": {
1906                "description": "Specifies whether the ability allows the user to enter the Picture in Picture (PiP) mode. The PiP mode enables the user to watch a video in a small window that hovers on top of a full screen window (main window). This attribute is specific to the abilities using the Page template.This attribute is not supported by devices running the OHOS.",
1907                "type": "boolean"
1908              },
1909              "deviceCapability": {
1910                "description": "This label indicates the capability required by the device when the capability is running.",
1911                "type": "array",
1912                "maxItems": 512,
1913                "uniqueItems": true,
1914                "items": {
1915                  "type": "string",
1916                  "maxLength": 64
1917                }
1918              },
1919              "resizeable": {
1920                "description": "Indicates whether the ability supports the multi-window feature.",
1921                "type": "boolean"
1922              },
1923              "srcLanguage": {
1924                "description": "Type of the capability development language. The value can be java, js, or ets.The label cannot be defaulted.",
1925                "type": "string",
1926                "enum": [
1927                  "java",
1928                  "js",
1929                  "ets"
1930                ]
1931              },
1932              "srcPath": {
1933                "description": "This tag indicates the JS component code path corresponding to the ability. The tag value is a character string (a maximum of 127 bytes). When srcLanguage is set to js or ets, this tag cannot be defaulted.",
1934                "type": "string",
1935                "maxLength": 127
1936              },
1937              "forms": {
1938                "description": "This tag identifies the embedded card attribute of the capability. This tag is valid only when formsEnabled is set to true. This tag can be left blank by default.",
1939                "type": "array",
1940                "items": {
1941                  "type": "object",
1942                  "propertyNames": {
1943                    "enum": [
1944                      "name",
1945                      "description",
1946                      "isDefault",
1947                      "type",
1948                      "colorMode",
1949                      "supportDimensions",
1950                      "defaultDimension",
1951                      "landscapeLayouts",
1952                      "portraitLayouts",
1953                      "updateEnabled",
1954                      "scheduledUpdateTime",
1955                      "updateDuration",
1956                      "metaData",
1957                      "jsComponentName",
1958                      "formConfigAbility",
1959                      "formVisibleNotify"
1960                    ]
1961                  },
1962                  "properties": {
1963                    "name": {
1964                      "description": "Indicates the name of the form class. The tag value is a string of up to 127 bytes. The tag cannot be default.",
1965                      "type": "string",
1966                      "maxLength": 127
1967                    },
1968                    "description": {
1969                      "description": "This tag identifies the description of the form. The tag value can be a string indicating the description content (a string of up to 255 bytes. If the length exceeds 255 bytes, use the resource index mode) or the resource index of the description content to support multiple languages. This tag can be left blank by default.",
1970                      "type": "string",
1971                      "maxLength": 255
1972                    },
1973                    "isDefault": {
1974                      "description": "Indicates whether the card is the default icon. The value is of the Boolean type. The value true indicates that the card is the default card, and the value false indicates that the card is not the default card. Each capability can have only one default card.",
1975                      "type": "boolean"
1976                    },
1977                    "type": {
1978                      "description": "Indicates the card type. The value can be Java or JavaScript.",
1979                      "type": "string",
1980                      "enum": [
1981                        "Java",
1982                        "JS"
1983                      ]
1984                    },
1985                    "colorMode": {
1986                      "description": "This tag identifies the card hue. The value can be auto, dark, or light. dark indicates that the card supports the dark color mode, light indicates that the card does not support the dark color mode, and auto indicates that the card hue is the same as the system hue.",
1987                      "type": "string",
1988                      "enum": [
1989                        "auto",
1990                        "dark",
1991                        "light"
1992                      ]
1993                    },
1994                    "supportDimensions": {
1995                      "description": "This label identifies the card appearance specification. The value is \"1*2\", \"2*1\", \" 2*2\", \"2*4\", \"4*4\" and cannot be default. At least one card specification must be specified when defining a card.",
1996                      "type": "array",
1997                      "items": {
1998                        "type": "string",
1999                        "enum": [
2000                          "1*2",
2001                          "2*1",
2002                          "2*2",
2003                          "2*4",
2004                          "4*4"
2005                        ]
2006                      }
2007                    },
2008                    "defaultDimension": {
2009                      "description": "This label identifies the default appearance specifications of the card.",
2010                      "type": "string",
2011                      "enum": [
2012                        "1*2",
2013                        "2*1",
2014                        "2*2",
2015                        "2*4",
2016                        "4*4"
2017                      ]
2018                    },
2019                    "landscapeLayouts": {
2020                      "description": "This label identifies the horizontal layout file corresponding to the card appearance specifications. It corresponds to the specifications in supportDimensions. It cannot be defaulted. If the type is JS, this label does not need to be specified.",
2021                      "type": "array",
2022                      "items": {
2023                        "type": "string"
2024                      }
2025                    },
2026                    "portraitLayouts": {
2027                      "description": "This label identifies the vertical layout file corresponding to the card appearance specifications. It corresponds to the specifications in supportDimensions and cannot be defaulted. This label does not need to be specified when the type is JS.",
2028                      "type": "array",
2029                      "items": {
2030                        "type": "string"
2031                      }
2032                    },
2033                    "updateEnabled": {
2034                      "description": "Indicates whether the card supports scheduled refresh. The value is of the Boolean type. true indicates that the card supports scheduled vertical refresh, and false indicates that the card does not support scheduled vertical refresh.",
2035                      "type": "boolean"
2036                    },
2037                    "scheduledUpdateTime": {
2038                      "description": "Indicates the time when a card is refreshed at a fixed time. The value is counted in 24 hours, accurate to minute. This tag can be set to the default value.",
2039                      "type": "string",
2040                      "pattern": "^(([0-1][0-9])|([2][0-3]))[:]+([0-5][0-9])$"
2041                    },
2042                    "updateDuration": {
2043                      "description": "This tag identifies the update frequency of the card. The unit is 30 minutes. The value is a multiple of 30. The maximum frequency of a card is refreshed every 30 minutes. You can select either refresh or refresh at a fixed point. If both are configured, the card is refreshed at a scheduled time. This label is an integer.",
2044                      "type": "integer",
2045                      "minimum": 0
2046                    },
2047                    "metaData": {
2048                      "description": "This tag indicates the customized information of a card, including the customizeData array tag. This tag can be left blank by default.",
2049                      "type": "object",
2050                      "propertyNames": {
2051                        "enum": [
2052                          "mergeRule",
2053                          "customizeData"
2054                        ]
2055                      },
2056                      "properties": {
2057                        "mergeRule": {
2058                          "description": "Tags identify the rule for merging configs.",
2059                          "type": "object",
2060                          "propertyNames": {
2061                            "enum": [
2062                              "remove",
2063                              "replace"
2064                            ]
2065                          },
2066                          "properties": {
2067                            "remove": {
2068                              "description": "Attributes to Be Removed After Marking Merge",
2069                              "type": "array",
2070                              "uniqueItems": true,
2071                              "items": {
2072                                "type": "string"
2073                              }
2074                            },
2075                            "replace": {
2076                              "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
2077                              "type": "array",
2078                              "uniqueItems": true,
2079                              "items": {
2080                                "type": "string"
2081                              }
2082                            }
2083                          }
2084                        },
2085                        "customizeData": {
2086                          "description": "Indicates the custom metadata of the parent component. The parameters and results attributes are not configurable in the module tag.",
2087                          "type": "array",
2088                          "items": {
2089                            "type": "object",
2090                            "propertyNames": {
2091                              "enum": [
2092                                "name",
2093                                "value",
2094                                "extra"
2095                              ]
2096                            },
2097                            "properties": {
2098                              "name": {
2099                                "description": "Indicates the key of a data element. The value is a string with a maximum of 255 bytes.",
2100                                "type": "string",
2101                                "maxLength": 255
2102                              },
2103                              "value": {
2104                                "description": "Indicates the value of a data element. The value is a string with a maximum of 255 bytes.",
2105                                "type": "string",
2106                                "maxLength": 255
2107                              },
2108                              "extra": {
2109                                "description": "Indicates the custom format of the data element. The value is an index to the resource that identifies the data.",
2110                                "type": "string"
2111                              }
2112                            }
2113                          }
2114                        }
2115                      }
2116                    },
2117                    "jsComponentName": {
2118                      "description": "Component name of a JS card. This tag is mandatory only for JS cards.",
2119                      "type": "string",
2120                      "maxLength": 127
2121                    },
2122                    "formConfigAbility": {
2123                      "description": "Indicates the name of the facility or activity for card adjustment.",
2124                      "type": "string",
2125                      "maxLength": 127,
2126                      "pattern": "^activity://(.*)|ability://(.*)$"
2127                    },
2128                    "formVisibleNotify": {
2129                      "description": "This tag identifies whether the card is allowed to use card visibility notifications.",
2130                      "type": "boolean"
2131                    }
2132                  },
2133                  "if": {
2134                    "properties": {
2135                      "type": {
2136                        "const": "JS"
2137                      }
2138                    }
2139                  },
2140                  "then": {
2141                    "propertyNames": {
2142                      "enum": [
2143                        "name",
2144                        "description",
2145                        "isDefault",
2146                        "type",
2147                        "colorMode",
2148                        "supportDimensions",
2149                        "defaultDimension",
2150                        "updateEnabled",
2151                        "scheduledUpdateTime",
2152                        "updateDuration",
2153                        "metaData",
2154                        "jsComponentName",
2155                        "formConfigAbility",
2156                        "formVisibleNotify"
2157                      ]
2158                    },
2159                    "required": [
2160                      "name",
2161                      "isDefault",
2162                      "type",
2163                      "supportDimensions",
2164                      "defaultDimension",
2165                      "updateEnabled"
2166                    ]
2167                  },
2168                  "else": {
2169                    "propertyNames": {
2170                      "enum": [
2171                        "name",
2172                        "description",
2173                        "isDefault",
2174                        "type",
2175                        "colorMode",
2176                        "supportDimensions",
2177                        "defaultDimension",
2178                        "landscapeLayouts",
2179                        "portraitLayouts",
2180                        "updateEnabled",
2181                        "scheduledUpdateTime",
2182                        "updateDuration",
2183                        "metaData",
2184                        "jsComponentName",
2185                        "formConfigAbility",
2186                        "formVisibleNotify"
2187                      ]
2188                    },
2189                    "required": [
2190                      "name",
2191                      "isDefault",
2192                      "type",
2193                      "supportDimensions",
2194                      "defaultDimension",
2195                      "updateEnabled",
2196                      "landscapeLayouts",
2197                      "portraitLayouts"
2198                    ]
2199                  }
2200                }
2201              },
2202              "continuable": {
2203                "description": "Identifies whether the ability can be migrated. The default value is false.",
2204                "type": "boolean"
2205              },
2206              "startWindowIcon": {
2207                "description": "Indicates the icon of the startup page. The value is the index to the resource file.",
2208                "type": "string",
2209                "pattern": "^[$]media:[0-9a-zA-Z_.]+|(?=.*[{])(?=.*[}])[0-9a-zA-Z_.{}]+$",
2210                "maxLength": 255
2211              },
2212              "startWindowBackground": {
2213                "description": "Indicates the color of the startup page. The value is the index to the resource file.",
2214                "type": "string",
2215                "pattern": "^[$]color:[0-9a-zA-Z_.]+|(?=.*[{])(?=.*[}])[0-9a-zA-Z_.{}]+$",
2216                "maxLength": 255
2217              },
2218              "removeMissionAfterTerminate": {
2219                "description": "Specifies whether to remove the mission after the ability termination.",
2220                "type": "boolean",
2221                "default": false
2222              }
2223            }
2224          }
2225        },
2226        "js": {
2227          "description": "Indicates a set of all modules developed using the JavaScript UI framework. Each element in the set represents the information about a JavaScript module.",
2228          "type": "array",
2229          "items": {
2230            "type": "object",
2231            "required": [
2232              "name",
2233              "pages"
2234            ],
2235            "propertyNames": {
2236              "enum": [
2237                "mergeRule",
2238                "name",
2239                "pages",
2240                "window",
2241                "type",
2242                "mode"
2243              ]
2244            },
2245            "properties": {
2246              "name": {
2247                "description": "Indicates the name of the JavaScript module.This label can be left blank by default.",
2248                "type": "string"
2249              },
2250              "pages": {
2251                "description": "Describes the route information about all pages in the JavaScript module, including the page path and page name. The value is an array, in which each element represents a page. The first element in the array represents the home page of the JavaScript FA.",
2252                "type": "array",
2253                "minItems": 1,
2254                "items": {
2255                  "type": "string"
2256                }
2257              },
2258              "window": {
2259                "description": "Defines window-related configurations. This attribute is not supported by devices running the OHOS.",
2260                "type": "object",
2261                "propertyNames": {
2262                  "enum": [
2263                    "designWidth",
2264                    "autoDesignWidth"
2265                  ]
2266                },
2267                "properties": {
2268                  "designWidth": {
2269                    "description": "Indicates the baseline width for page design, in pixels. The size of an element is scaled by the actual device width. This label is an integer.",
2270                    "type": "integer",
2271                    "minimum": 0
2272                  },
2273                  "autoDesignWidth": {
2274                    "description": "Specifies whether to automatically calculate the baseline width for page design. If it is set to true, the designWidth attribute becomes invalid. The baseline width is calculated based on the device width and screen density.",
2275                    "type": "boolean"
2276                  }
2277                }
2278              },
2279              "type": {
2280                "description": "Indicates whether a JS card or a JS application is used. The default value is normal.",
2281                "type": "string",
2282                "enum": [
2283                  "normal",
2284                  "form"
2285                ]
2286              },
2287              "mode": {
2288                "description": "Defines the development mode of the JS component. This tag can be defaulted. The tag value is an object and contains two subtags: type and syntax.",
2289                "type": "object",
2290                "propertyNames": {
2291                  "enum": [
2292                    "type",
2293                    "syntax"
2294                  ]
2295                },
2296                "properties": {
2297                  "type": {
2298                    "description": "Defines the function type of the JS component. The tag can be defaulted. The default value is pageAbility. The combination of type to form and syntax to ets is not supported.",
2299                    "type": "string",
2300                    "enum": [
2301                      "pageAbility",
2302                      "form"
2303                    ]
2304                  },
2305                  "syntax": {
2306                    "description": "Defines the syntax type of the JS component. The tag can be defaulted. The default value is hml. The combination of type to form and syntax to ets is not supported.",
2307                    "type": "string",
2308                    "enum": [
2309                      "hml",
2310                      "ets"
2311                    ]
2312                  }
2313                },
2314                "if": {
2315                  "properties": {
2316                    "type": {
2317                      "const": "form"
2318                    }
2319                  }
2320                },
2321                "then": {
2322                  "properties": {
2323                    "syntax": {
2324                      "const": "hml"
2325                    }
2326                  }
2327                }
2328              },
2329              "mergeRule": {
2330                "description": "Tags identify the rule for merging configs.",
2331                "type": "object",
2332                "propertyNames": {
2333                  "enum": [
2334                    "remove",
2335                    "replace"
2336                  ]
2337                },
2338                "properties": {
2339                  "remove": {
2340                    "description": "Attributes to Be Removed After Marking Merge",
2341                    "type": "array",
2342                    "uniqueItems": true,
2343                    "items": {
2344                      "type": "string"
2345                    }
2346                  },
2347                  "replace": {
2348                    "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
2349                    "type": "array",
2350                    "uniqueItems": true,
2351                    "items": {
2352                      "type": "string"
2353                    }
2354                  }
2355                }
2356              }
2357            }
2358          }
2359        },
2360        "defPermissions": {
2361          "description": "Indicates the permissions required by the application. The callers must acquire these permissions before calling the application.",
2362          "type": "array",
2363          "items": {
2364            "type": "object",
2365            "propertyNames": {
2366              "enum": [
2367                "mergeRule",
2368                "name",
2369                "grantMode",
2370                "availableScope",
2371                "label",
2372                "description",
2373                "group"
2374              ]
2375            },
2376            "required": [
2377              "name"
2378            ],
2379            "properties": {
2380              "name": {
2381                "description": "Specifies the permission name. The value is a character string.",
2382                "type": "string"
2383              },
2384              "grantMode": {
2385                "description": "This tag identifies the permission granting mode.",
2386                "type": "string",
2387                "enum": [
2388                  "system_grant",
2389                  "user_grant"
2390                ]
2391              },
2392              "availableScope": {
2393                "description": "This tag identifies the permission scope.",
2394                "type": "array",
2395                "items": {
2396                  "type": "string",
2397                  "enum": [
2398                    "restricted",
2399                    "signature",
2400                    "privileged"
2401                  ]
2402                }
2403              },
2404              "label": {
2405                "description": "This tag identifies the short description of the permission.",
2406                "type": "string"
2407              },
2408              "description": {
2409                "description": "This tag indicates the detailed description of the permission.",
2410                "type": "string"
2411              },
2412              "group": {
2413                "description": "",
2414                "type": "string"
2415              },
2416              "mergeRule": {
2417                "description": "Tags identify the rule for merging configs.",
2418                "type": "object",
2419                "propertyNames": {
2420                  "enum": [
2421                    "remove",
2422                    "replace"
2423                  ]
2424                },
2425                "properties": {
2426                  "remove": {
2427                    "description": "Attributes to Be Removed After Marking Merge",
2428                    "type": "array",
2429                    "uniqueItems": true,
2430                    "items": {
2431                      "type": "string"
2432                    }
2433                  },
2434                  "replace": {
2435                    "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
2436                    "type": "array",
2437                    "uniqueItems": true,
2438                    "items": {
2439                      "type": "string"
2440                    }
2441                  }
2442                }
2443              }
2444            }
2445          }
2446        },
2447        "reqPermissions": {
2448          "description": "Indicates the permissions that the application applies for from the system before its running.This label can be left blank by default.",
2449          "type": "array",
2450          "items": {
2451            "type": "object",
2452            "propertyNames": {
2453              "enum": [
2454                "mergeRule",
2455                "name",
2456                "reason",
2457                "usedScene"
2458              ]
2459            },
2460            "required": [
2461              "name"
2462            ],
2463            "properties": {
2464              "name": {
2465                "description": "Specifies the permission name to be used.",
2466                "type": "string"
2467              },
2468              "reason": {
2469                "description": "Describe the reason for applying for the permission.",
2470                "type": "string"
2471              },
2472              "usedScene": {
2473                "description": "This section describes the scenarios and timing of permission usage.",
2474                "type": "object",
2475                "propertyNames": {
2476                  "enum": [
2477                    "ability",
2478                    "when"
2479                  ]
2480                },
2481                "properties": {
2482                  "ability": {
2483                    "description": "This tag identifies the abilities that need the permission.",
2484                    "type": "array",
2485                    "items": {
2486                      "type": "string"
2487                    }
2488                  },
2489                  "when": {
2490                    "description": "This tag identifies the time when the permission is used.",
2491                    "type": "string",
2492                    "enum": [
2493                      "inuse",
2494                      "always"
2495                    ]
2496                  }
2497                }
2498              },
2499              "mergeRule": {
2500                "description": "Tags identify the rule for merging configs.",
2501                "type": "object",
2502                "propertyNames": {
2503                  "enum": [
2504                    "remove",
2505                    "replace"
2506                  ]
2507                },
2508                "properties": {
2509                  "remove": {
2510                    "description": "Attributes to Be Removed After Marking Merge",
2511                    "type": "array",
2512                    "uniqueItems": true,
2513                    "items": {
2514                      "type": "string"
2515                    }
2516                  },
2517                  "replace": {
2518                    "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
2519                    "type": "array",
2520                    "uniqueItems": true,
2521                    "items": {
2522                      "type": "string"
2523                    }
2524                  }
2525                }
2526              }
2527            }
2528          }
2529        },
2530        "definePermissions": {
2531          "description": "Indicates the permissions required by the application. The callers must acquire these permissions before calling the application.",
2532          "type": "array",
2533          "items": {
2534            "type": "object",
2535            "propertyNames": {
2536              "enum": [
2537                "name",
2538                "grantMode",
2539                "availableLevel",
2540                "provisionEnable",
2541                "distributedSceneEnable",
2542                "label",
2543                "description"
2544              ]
2545            },
2546            "required": [
2547              "name"
2548            ],
2549            "properties": {
2550              "name": {
2551                "description": "Specifies the permission name. The value is a character string.",
2552                "type": "string",
2553                "minLength": 1,
2554                "maxLength": 255
2555              },
2556              "grantMode": {
2557                "description": "This tag identifies the permission granting mode.",
2558                "type": "string",
2559                "enum": [
2560                  "system_grant",
2561                  "user_grant"
2562                ]
2563              },
2564              "availableLevel": {
2565                "description": "This tag identifies the permission available level.",
2566                "type": "string",
2567                "enum": [
2568                  "normal",
2569                  "system_basic",
2570                  "system_core"
2571                ]
2572              },
2573              "provisionEnable": {
2574                "description": "This tag identifies whether the permission can be applied for by provision certificate.",
2575                "type": "boolean"
2576              },
2577              "distributedSceneEnable": {
2578                "description": "This tag identifies whether the permission can be used in distributed scene.",
2579                "type": "boolean"
2580              },
2581              "label": {
2582                "description": "This tag identifies the short description of the permission.",
2583                "type": "string",
2584                "minLength": 0,
2585                "maxLength": 255
2586              },
2587              "description": {
2588                "description": "This tag indicates the detailed description of the permission.",
2589                "type": "string",
2590                "minLength": 0,
2591                "maxLength": 255
2592              }
2593            }
2594          }
2595        },
2596        "reqCapabilities": {
2597          "description": "indicates the device capabilities required to run the application. The value is an array of strings, each of which represents a device capability. Device capabilities are defined by the device OS.",
2598          "type": "array",
2599          "items": {
2600            "type": "string"
2601          }
2602        },
2603        "commonEvents": {
2604          "description": "This tag and subtag are not supported on lightweight devices.",
2605          "type": "array",
2606          "items": {
2607            "type": "object",
2608            "required": [
2609              "name",
2610              "events"
2611            ],
2612            "propertyNames": {
2613              "enum": [
2614                "mergeRule",
2615                "name",
2616                "permission",
2617                "data",
2618                "type",
2619                "events"
2620              ]
2621            },
2622            "properties": {
2623              "mergeRule": {
2624                "description": "Tags identify the rule for merging configs.",
2625                "type": "object",
2626                "propertyNames": {
2627                  "enum": [
2628                    "remove",
2629                    "replace"
2630                  ]
2631                },
2632                "properties": {
2633                  "remove": {
2634                    "description": "Attributes to Be Removed After Marking Merge",
2635                    "type": "array",
2636                    "uniqueItems": true,
2637                    "items": {
2638                      "type": "string"
2639                    }
2640                  },
2641                  "replace": {
2642                    "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
2643                    "type": "array",
2644                    "uniqueItems": true,
2645                    "items": {
2646                      "type": "string"
2647                    }
2648                  }
2649                }
2650              },
2651              "name": {
2652                "description": "This tag specifies the class name corresponding to the current static public event year. The class name must be specified in the capability field.",
2653                "type": "string",
2654                "maxLength": 127,
2655                "pattern": "^[.].*"
2656              },
2657              "permission": {
2658                "description": "This tag identifies the permission that needs to be applied for to implement the static public event. It is a character string indicating a permission name.",
2659                "type": "string",
2660                "maxLength": 255
2661              },
2662              "data": {
2663                "description": "This tag configures the additional data array to be carried by the current static public event. The array type is string array. Each array element is an additional data to be carried.",
2664                "type": "array",
2665                "items": {
2666                  "type": "string"
2667                }
2668              },
2669              "type": {
2670                "description": "This tag is used to configure the category array of the current static public event. It is a string array. Each array element is a category name.",
2671                "type": "array",
2672                "items": {
2673                  "type": "string"
2674                }
2675              },
2676              "events": {
2677                "description": "This tag identifies a set of event values of intentions that can be received. The value is generally predefined by the system or can be customized.",
2678                "type": "array",
2679                "items": {
2680                  "type": "string"
2681                }
2682              }
2683            }
2684          }
2685        },
2686        "supportedModes": {
2687          "description": "Indicates the running mode supported by the application. Currently, the drive mode is supported.This attribute is not supported by devices running the OHOS.",
2688          "type": "array",
2689          "items": {
2690            "type": "string",
2691            "enum": [
2692              "drive"
2693            ]
2694          }
2695        },
2696        "shortcuts": {
2697          "description": "Indicates the shortcut information of the application. The value is an array, in which each element represents a shortcut object.",
2698          "type": "array",
2699          "items": {
2700            "type": "object",
2701            "propertyNames": {
2702              "enum": [
2703                "shortcutId",
2704                "label",
2705                "icon",
2706                "intents"
2707              ]
2708            },
2709            "required": [
2710              "shortcutId"
2711            ],
2712            "properties": {
2713              "shortcutId": {
2714                "description": "Identifies a shortcut. The value is a string with a maximum of 63 bytes.",
2715                "type": "string",
2716                "maxLength": 63
2717              },
2718              "label": {
2719                "description": "Indicates the label of the shortcut, that is, the text description displayed by the shortcut. The value can be a string or a resource index to description. A string can contain a maximum of 63 bytes. If the value exceeds 63 bytes, use the resource index.",
2720                "type": "string",
2721                "maxLength": 63
2722              },
2723              "icon": {
2724                "description": "Indicates the icon of the shortcut. The value is the index to the resource file.",
2725                "type": "string"
2726              },
2727              "intents": {
2728                "description": "Indicates the intents to which the shortcut points. The attribute consists of the targetClass and targetBundle sub-attributes.",
2729                "type": "array",
2730                "items": {
2731                  "type": "object",
2732                  "propertyNames": {
2733                    "enum": [
2734                      "targetClass",
2735                      "targetBundle"
2736                    ]
2737                  },
2738                  "properties": {
2739                    "targetClass": {
2740                      "description": "Indicates the class name for the target ability of the shortcut.",
2741                      "type": "string"
2742                    },
2743                    "targetBundle": {
2744                      "description": "Indicates the application bundle name for the target ability of the shortcut.",
2745                      "type": "string"
2746                    }
2747                  }
2748                }
2749              }
2750            }
2751          }
2752        },
2753        "defPermissionGroups": {
2754          "description": "Indicates the permission groups defined by the .hap file. The permission groups are used in setting the defPermissions attribute.This attribute is not supported by devices running the OHOS.",
2755          "type": "array",
2756          "items": {
2757            "type": "object",
2758            "propertyNames": {
2759              "enum": [
2760                "mergeRule",
2761                "name",
2762                "order",
2763                "icon",
2764                "label",
2765                "description",
2766                "request"
2767              ]
2768            },
2769            "required": [
2770              "name"
2771            ],
2772            "properties": {
2773              "mergeRule": {
2774                "description": "Tags identify the rule for merging configs.",
2775                "type": "object",
2776                "propertyNames": {
2777                  "enum": [
2778                    "remove",
2779                    "replace"
2780                  ]
2781                },
2782                "properties": {
2783                  "remove": {
2784                    "description": "Attributes to Be Removed After Marking Merge",
2785                    "type": "array",
2786                    "uniqueItems": true,
2787                    "items": {
2788                      "type": "string"
2789                    }
2790                  },
2791                  "replace": {
2792                    "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
2793                    "type": "array",
2794                    "uniqueItems": true,
2795                    "items": {
2796                      "type": "string"
2797                    }
2798                  }
2799                }
2800              },
2801              "name": {
2802                "description": "This label indicates the name of the permission group.",
2803                "type": "string"
2804              },
2805              "order": {
2806                "description": "This tag indicates the group priority, which is used for sorting permission groups on the UI. This label is an integer.",
2807                "type": "integer",
2808                "minimum": 0,
2809                "maximum": 10000
2810              },
2811              "icon": {
2812                "description": "Indicates the UI icon of the permission group. The value is the resource index of the icon.",
2813                "type": "string"
2814              },
2815              "label": {
2816                "description": "This label represents a short description of the permission group.",
2817                "type": "string"
2818              },
2819              "description": {
2820                "description": "Indicates the detailed description of the permission group.",
2821                "type": "string"
2822              },
2823              "request": {
2824                "description": "This tag indicates a question when an application dynamically applies for permissions from a user.",
2825                "type": "string"
2826              }
2827            }
2828          }
2829        },
2830        "allowClassMap": {
2831          "description": "Indicates the meta information about the HAP. The tag value is true or false. If the tag value is true, the hap uses the Java object proxy mechanism provided by the Harmony framework. The default value is false.",
2832          "type": "boolean"
2833        },
2834        "colorMode": {
2835          "description": "This tag identifies the card hue. The value can be auto, dark, or light. dark indicates that the card supports the dark color mode, light indicates that the card does not support the dark color mode, and auto indicates that the card hue is the same as the system hue.",
2836          "type": "string",
2837          "enum": [
2838            "auto",
2839            "dark",
2840            "light"
2841          ]
2842        },
2843        "theme": {
2844          "description": "This tag identifies the hap topic. The tag value can be the index of a user-defined theme resource or the index of a system theme resource.",
2845          "type": "string"
2846        },
2847        "mainAbility": {
2848          "description": "This tag identifies the hap topic. The tag value can be the index of a user-defined theme resource or the index of a system theme resource.",
2849          "type": "string"
2850        },
2851        "srcPath": {
2852          "description": "This tag indicates the JS component code path corresponding to the module. The tag value is a character string (a maximum of 127 bytes)",
2853          "type": "string",
2854          "maxLength": 127
2855        },
2856        "resizeable": {
2857          "description": "Indicates whether the application supports the multi-window feature.",
2858          "type": "boolean"
2859        },
2860        "entryTheme": {
2861          "description": "This tag indicates the keyword of the Harmony internal topic. Set the tag value to the resource index of the name.",
2862          "type": "string",
2863          "pattern": "^[$](.*):(.*)+$"
2864        },
2865        "distroFilter": {
2866          "description": "This tag is used for precise matching during cloud distribution in the AppGallery and defines the HAP distribution policy.",
2867          "type": "object",
2868          "propertyNames": {
2869            "enum": [
2870              "apiVersion",
2871              "screenShape",
2872              "screenWindow",
2873              "screenDensity",
2874              "countryCode"
2875            ]
2876          },
2877          "properties": {
2878            "apiVersion": {
2879              "description": "Indicates the supported apiVersion range.This label is optional.",
2880              "type": "object",
2881              "propertyNames": {
2882                "enum": [
2883                  "policy",
2884                  "value"
2885                ]
2886              },
2887              "required": [
2888                "policy",
2889                "value"
2890              ],
2891              "properties": {
2892                "policy": {
2893                  "description": "The policy tag indicates the list rule of the value of the sublabel. Either exclude or include can be used.",
2894                  "type": "string",
2895                  "enum": [
2896                    "include",
2897                    "exclude"
2898                  ]
2899                },
2900                "value": {
2901                  "description": "Indicates the value range of the sublabel.",
2902                  "type": "array",
2903                  "items": {
2904                    "type": "integer",
2905                    "minimum": 3
2906                  },
2907                  "uniqueItems": true
2908                }
2909              }
2910            },
2911            "screenShape": {
2912              "description": "Indicates the screen shape enumeration. The value can be circle or rect, indicating a circle or rectangle screen.",
2913              "type": "object",
2914              "propertyNames": {
2915                "enum": [
2916                  "policy",
2917                  "value"
2918                ]
2919              },
2920              "required": [
2921                "policy",
2922                "value"
2923              ],
2924              "properties": {
2925                "policy": {
2926                  "description": "The policy tag indicates the list rule of the value of the sublabel. Either exclude or include can be used.",
2927                  "type": "string",
2928                  "enum": [
2929                    "include",
2930                    "exclude"
2931                  ]
2932                },
2933                "value": {
2934                  "description": "Indicates the value range of the sublabel.",
2935                  "type": "array",
2936                  "items": {
2937                    "type": "string",
2938                    "enum": [
2939                      "circle",
2940                      "rect"
2941                    ]
2942                  },
2943                  "uniqueItems": true
2944                }
2945              }
2946            },
2947            "screenWindow": {
2948              "description": "Indicates the resolution of the window when the application is running. This parameter can be configured only for liteWearable devices. This field is optional. If this field is configured, the value must be valid. The tag value type is a string array.",
2949              "type": "object",
2950              "propertyNames": {
2951                "enum": [
2952                  "policy",
2953                  "value"
2954                ]
2955              },
2956              "required": [
2957                "policy",
2958                "value"
2959              ],
2960              "properties": {
2961                "policy": {
2962                  "description": "The policy tag indicates the list rule of the value of the sublabel. Either exclude or include can be used.",
2963                  "type": "string",
2964                  "enum": [
2965                    "include"
2966                  ]
2967                },
2968                "value": {
2969                  "description": "Indicates the value range of the sublabel.",
2970                  "type": "array",
2971                  "items": {
2972                    "type": "string",
2973                    "pattern": "^([1-9][0-9]*)\\*([1-9][0-9]*)$"
2974                  },
2975                  "uniqueItems": true
2976                }
2977              }
2978            },
2979            "screenDensity": {
2980              "description": "This label indicates the pixel density of the screen (dpi: Dots Per Inch). This field is optional. If this field is configured, the value must be valid. The tag value is a string array.",
2981              "type": "object",
2982              "propertyNames": {
2983                "enum": [
2984                  "policy",
2985                  "value"
2986                ]
2987              },
2988              "required": [
2989                "policy",
2990                "value"
2991              ],
2992              "properties": {
2993                "policy": {
2994                  "description": "The policy tag indicates the list rule of the value of the sublabel. Either exclude or include can be used.",
2995                  "type": "string",
2996                  "enum": [
2997                    "include",
2998                    "exclude"
2999                  ]
3000                },
3001                "value": {
3002                  "description": "Indicates the value range of the sublabel.",
3003                  "type": "array",
3004                  "items": {
3005                    "type": "string",
3006                    "enum": [
3007                      "sdpi",
3008                      "mdpi",
3009                      "ldpi",
3010                      "xldpi",
3011                      "xxldpi",
3012                      "xxxldpi"
3013                    ]
3014                  },
3015                  "uniqueItems": true
3016                }
3017              }
3018            },
3019            "countryCode": {
3020              "description": "This label indicates the country code to be distributed to the application. The specific value is subject to the ISO-3166 -1 standard. Multiple country and region enumeration definitions are supported. This field is optional. If this field is configured, the value must be valid. The tag value is astring array. The substring indicates the supported country or region and consists of two uppercase letters.",
3021              "type": "object",
3022              "propertyNames": {
3023                "enum": [
3024                  "policy",
3025                  "value"
3026                ]
3027              },
3028              "required": [
3029                "policy",
3030                "value"
3031              ],
3032              "properties": {
3033                "policy": {
3034                  "description": "The policy tag indicates the list rule of the value of the sublabel. Either exclude or include can be used.",
3035                  "type": "string",
3036                  "enum": [
3037                    "include",
3038                    "exclude"
3039                  ]
3040                },
3041                "value": {
3042                  "description": "Indicates the value range of the sublabel.",
3043                  "type": "array",
3044                  "items": {
3045                    "type": "string"
3046                  },
3047                  "uniqueItems": true
3048                }
3049              }
3050            }
3051          }
3052        },
3053        "metaData": {
3054          "description": "Indicates the metadata of the ability.",
3055          "type": "object",
3056          "propertyNames": {
3057            "enum": [
3058              "parameters",
3059              "results",
3060              "customizeData"
3061            ]
3062          },
3063          "properties": {
3064            "parameters": {
3065              "description": "Indicates the metadata of the parameters to be passed for calling the ability. The metadata of each parameter consists of the description, name, and type sub-attributes.",
3066              "type": "array",
3067              "items": {
3068                "type": "object",
3069                "propertyNames": {
3070                  "enum": [
3071                    "description",
3072                    "name",
3073                    "type",
3074                    "mergeRule"
3075                  ]
3076                },
3077                "required": [
3078                  "name",
3079                  "type"
3080                ],
3081                "properties": {
3082                  "name": {
3083                    "description": "Indicates the name of the parameter.",
3084                    "type": "string",
3085                    "maxLength": 255
3086                  },
3087                  "type": {
3088                    "description": "Indicates the type of the parameter, for example, Integer.",
3089                    "type": "string"
3090                  },
3091                  "description": {
3092                    "description": "Describes the parameter. The value can be a string or a resource index to descriptions in multiple languages.",
3093                    "type": "string",
3094                    "maxLength": 255
3095                  },
3096                  "mergeRule": {
3097                    "description": "Tags identify the rule for merging configs.",
3098                    "type": "object",
3099                    "propertyNames": {
3100                      "enum": [
3101                        "remove",
3102                        "replace"
3103                      ]
3104                    },
3105                    "properties": {
3106                      "remove": {
3107                        "description": "Attributes to Be Removed After Marking Merge",
3108                        "type": "array",
3109                        "uniqueItems": true,
3110                        "items": {
3111                          "type": "string"
3112                        }
3113                      },
3114                      "replace": {
3115                        "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
3116                        "type": "array",
3117                        "uniqueItems": true,
3118                        "items": {
3119                          "type": "string"
3120                        }
3121                      }
3122                    }
3123                  }
3124                }
3125              }
3126            },
3127            "results": {
3128              "description": "Indicates the metadata of the ability return value. The metadata of each return value consists of the description, name, and type sub-attributes.",
3129              "type": "array",
3130              "items": {
3131                "type": "object",
3132                "propertyNames": {
3133                  "enum": [
3134                    "description",
3135                    "name",
3136                    "type",
3137                    "mergeRule"
3138                  ]
3139                },
3140                "required": [
3141                  "type"
3142                ],
3143                "properties": {
3144                  "name": {
3145                    "description": "Indicates the name of the return value.",
3146                    "type": "string",
3147                    "maxLength": 255
3148                  },
3149                  "type": {
3150                    "description": "Indicates the type of the return value, for example, Integer.",
3151                    "type": "string"
3152                  },
3153                  "description": {
3154                    "description": "Describes the return value. The value can be a string or a resource index to descriptions in multiple languages.",
3155                    "type": "string",
3156                    "maxLength": 255
3157                  },
3158                  "mergeRule": {
3159                    "description": "Tags identify the rule for merging configs.",
3160                    "type": "object",
3161                    "propertyNames": {
3162                      "enum": [
3163                        "remove",
3164                        "replace"
3165                      ]
3166                    },
3167                    "properties": {
3168                      "remove": {
3169                        "description": "Attributes to Be Removed After Marking Merge",
3170                        "type": "array",
3171                        "uniqueItems": true,
3172                        "items": {
3173                          "type": "string"
3174                        }
3175                      },
3176                      "replace": {
3177                        "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
3178                        "type": "array",
3179                        "uniqueItems": true,
3180                        "items": {
3181                          "type": "string"
3182                        }
3183                      }
3184                    }
3185                  }
3186                }
3187              }
3188            },
3189            "customizeData": {
3190              "description": "Indicates the custom metadata of the parent component. The parameters and results attributes are not configurable in the module tag.",
3191              "type": "array",
3192              "items": {
3193                "type": "object",
3194                "propertyNames": {
3195                  "enum": [
3196                    "name",
3197                    "value",
3198                    "extra",
3199                    "mergeRule"
3200                  ]
3201                },
3202                "properties": {
3203                  "name": {
3204                    "description": "Indicates the key of a data element. The value is a string with a maximum of 255 bytes.",
3205                    "type": "string",
3206                    "maxLength": 255
3207                  },
3208                  "value": {
3209                    "description": "Indicates the value of a data element. The value is a string with a maximum of 255 bytes.",
3210                    "type": "string",
3211                    "maxLength": 255
3212                  },
3213                  "extra": {
3214                    "description": "Indicates the custom format of the data element. The value is an index to the resource that identifies the data.",
3215                    "type": "string"
3216                  },
3217                  "mergeRule": {
3218                    "description": "Tags identify the rule for merging configs.",
3219                    "type": "object",
3220                    "propertyNames": {
3221                      "enum": [
3222                        "remove",
3223                        "replace"
3224                      ]
3225                    },
3226                    "properties": {
3227                      "remove": {
3228                        "description": "Attributes to Be Removed After Marking Merge",
3229                        "type": "array",
3230                        "uniqueItems": true,
3231                        "items": {
3232                          "type": "string"
3233                        }
3234                      },
3235                      "replace": {
3236                        "description": "Marks the label that needs to be replaced for merge conflicts, and always retains the value of the highest priority.",
3237                        "type": "array",
3238                        "uniqueItems": true,
3239                        "items": {
3240                          "type": "string"
3241                        }
3242                      }
3243                    }
3244                  }
3245                }
3246              }
3247            }
3248          }
3249        },
3250        "uiSyntax": {
3251          "description": "Indicates the syntax type of JS Component.Default is js",
3252          "type": "string",
3253          "enum": [
3254            "js",
3255            "ets",
3256            "hml"
3257          ],
3258          "default": "js"
3259        },
3260        "testRunner": {
3261          "description": "This tag is used for configure the test properties.",
3262          "type":"object",
3263          "required": [
3264            "name",
3265            "srcPath"
3266          ],
3267          "propertyNames": {
3268            "enum": [
3269              "name",
3270              "srcPath"
3271            ]
3272          },
3273          "properties":{
3274            "name": {
3275              "description": "Indicates the name of testRunner,  The value is a string with a maximum of 255 bytes",
3276              "type": "string",
3277              "maxLength": 255
3278            },
3279            "srcPath": {
3280              "description": "Indicates the srcPath testRunner,  The value is a string with a maximum of 255 bytes",
3281              "type": "string",
3282              "maxLength": 255
3283            }
3284          }
3285        },
3286        "libIsolation": {
3287          "description": "Indicates whether to isolate the shared libraries in this module.",
3288          "type": "boolean"
3289        },
3290        "generateBuildHash": {
3291          "description": "Indicates whether the hash value of hap or hsp is filed with in module.json.",
3292          "type": "boolean",
3293          "default": false
3294        }
3295      },
3296      "allOf": [
3297        {
3298          "if": {
3299            "properties": {
3300              "distro": {
3301                "properties": {
3302                  "moduleType": {
3303                    "const": "feature"
3304                  }
3305                }
3306              }
3307            }
3308          },
3309          "then": {
3310            "propertyNames": {
3311              "enum": [
3312                "commonEvents",
3313                "description",
3314                "abilities",
3315                "js",
3316                "reqPermissions",
3317                "definePermissions",
3318                "deviceType",
3319                "distro",
3320                "reqCapabilities",
3321                "metaData",
3322                "package",
3323                "name",
3324                "supportedModes",
3325                "shortcuts",
3326                "defPermissions",
3327                "defPermissionGroups",
3328                "allowClassMap",
3329                "colorMode",
3330                "theme",
3331                "mainAbility",
3332                "srcPath",
3333                "resizeable",
3334                "entryTheme",
3335                "testRunner",
3336                "libIsolation",
3337                "generateBuildHash"
3338              ]
3339            }
3340          }
3341        },
3342        {
3343          "if": {
3344            "properties": {
3345              "distro": {
3346                "properties": {
3347                  "moduleType": {
3348                    "const": "entry"
3349                  }
3350                }
3351              }
3352            }
3353          },
3354          "then": {
3355            "propertyNames": {
3356              "enum": [
3357                "commonEvents",
3358                "description",
3359                "abilities",
3360                "js",
3361                "reqPermissions",
3362                "definePermissions",
3363                "deviceType",
3364                "distro",
3365                "reqCapabilities",
3366                "metaData",
3367                "package",
3368                "name",
3369                "supportedModes",
3370                "shortcuts",
3371                "defPermissions",
3372                "defPermissionGroups",
3373                "allowClassMap",
3374                "colorMode",
3375                "theme",
3376                "mainAbility",
3377                "srcPath",
3378                "resizeable",
3379                "entryTheme",
3380                "distroFilter",
3381                "testRunner",
3382                "dependencies",
3383                "libIsolation",
3384                "generateBuildHash"
3385              ]
3386            }
3387          }
3388        }
3389      ]
3390    }
3391  },
3392  "if": {
3393    "properties": {
3394      "app": {
3395        "properties": {
3396          "type": {
3397            "const": "normal"
3398          }
3399        }
3400      }
3401    }
3402  },
3403  "then": {
3404    "module": {
3405      "properties": {
3406        "abilities": {
3407          "items": {
3408            "properties": {
3409              "type": {
3410                "enum": [
3411                  "service",
3412                  "data",
3413                  "CA",
3414                  "page"
3415                ]
3416              }
3417            }
3418          }
3419        }
3420      }
3421    }
3422  },
3423  "else": {
3424    "properties": {
3425      "deviceConfig": {
3426        "properties": {
3427          "default": {
3428            "properties": {
3429              "keepAlive": {
3430                "const": false
3431              }
3432            }
3433          },
3434          "tv": {
3435            "properties": {
3436              "keepAlive": {
3437                "const": false
3438              }
3439            }
3440          },
3441          "wearable": {
3442            "properties": {
3443              "keepAlive": {
3444                "const": false
3445              }
3446            }
3447          },
3448          "tablet": {
3449            "properties": {
3450              "keepAlive": {
3451                "const": false
3452              }
3453            }
3454          },
3455          "car": {
3456            "properties": {
3457              "keepAlive": {
3458                "const": false
3459              }
3460            }
3461          },
3462          "2in1": {
3463            "properties": {
3464              "keepAlive": {
3465                "const": false
3466              }
3467            }
3468          }
3469        }
3470      },
3471      "module": {
3472        "properties": {
3473          "abilities": {
3474            "items": {
3475              "properties": {
3476                "type": {
3477                  "enum": [
3478                    "service",
3479                    "data",
3480                    "CA"
3481                  ]
3482                }
3483              }
3484            }
3485          }
3486        }
3487      }
3488    }
3489  }
3490}
3491