Service Catalogue Model
Introduction
In order to support a uniform and harmonized machine-readable description of public and private services a service model has been defined to collect all information from the three point of view (Informational, Service invocation, Data Governance&Ownership) and managed in the Service Catalogue. The idea is to define this model by including and extending existing common models to describe each view.

Information View provides all information metadata of a service. This section follows the CPSV-AP, the Core Public Service Vocabulary Application Profile, a data model provided by the ISA2 Programme that is the result of a joint effort from different public administrations to reduce interoperability barriers.
Usage Rule and Personal Data Handling views capture information about for handling data access rights. In particular the personal Data Handling section is a specialized profile of the Data Privacy Vocabulary (DPV) providing terms (classes and properties) to describe and represent information about personal data handling. In particular, the vocabulary provides extensible taxonomies of terms to describe the following components:
-
Personal Data Categories
-
Purposes
-
Processing Categories
-
Technical and Organisational Measures
-
Legal Basis such as Consent
-
Entities such as Recipients, Data Controllers, Data Subjects
The Service Instance view provides all operational information to manage and invoke each service instance
The following sections provides a deeper description of the ACROSS Service Model.
Service Basic Info
Each service to be registered in the Service Catalogue has to provide some basic information.
Each service to be registered in the Service Catalogue has to provide some basic information.
| Property | Type | Description |
|---|---|---|
| title | String(1..1) | Service Name |
| identifier | String(1..1) | Id of service or service URI if exists. This identifier will be used by the Service Catalogue to identify it and could be the same identifier provided in the information section. |
| issued | String(0..1) | When Service entry was created (system log data) |
| createdByUserId | String 0..1) | User Id (if any)of Service Editor |
| serviceDescriptionVersion | String(0..1) | Service description version number |
| serviceIconUrl | String(0..1) | URL pointing to service's icon (if available) |
| status | String(0..1) | Status of Service [Completed, Deprecated, UnderDevelopment,WithDrawn] |
| isPublicService | Boolean(1..1) | If service is public or not |
| hasInfo | Object(1..1) | Object describing Service informationsection. |
| hasServiceInstance | Object(1..1) | Object describing Service information section. |
| isPersonalDataHandling | Object(1..n) | Object describing Personal data handling. |
| hasUsageRule | Object(1..n) | Object describing Service usage Rules. |
Service Information section
Each service should provide basic information, identification, service classifications and locale descriptions. Such classifications are only related to public services, according to ISA² Core Public Service Vocabulary Application Profile (CPSV-AP). The following classes and properties belong to ISA² CPSV-AP v2.2.1.
|
Property |
Type |
Description |
||||||||||||||||||||||||
|
Title |
String(1..1) |
It represents the official Name of the Public Service |
||||||||||||||||||||||||
|
Identifier |
String(1..1) |
This property represents a formally-issued Identifier for the Public Service. |
||||||||||||||||||||||||
|
Description |
Object(1..N) |
This property represents a free text Description of the Public Service. The description is likely to be the text that potential users of the Public Service see in any public service catalogue.
|
||||||||||||||||||||||||
|
Keyword |
String(0..n) |
This property represents a keyword, term or phrase to describe the Public Service. |
||||||||||||||||||||||||
|
Sector |
String(0..n) |
This property represents the industry or sector a Public Service relates to, or is intended for. For example: environment, safety, housing. Note that a single Public Service may relate to multiple sectors. The possible values for this property are provided as a controlled vocabulary. See section 4 in [2]. |
||||||||||||||||||||||||
|
Thematic Area |
String(0..n) |
This property represents the Thematic Area of a Public Service as described in a controlled vocabulary, for instance social protection, health, recreation, culture and religion, family, travelling economic affairs, tax, staff, environment. The recommended controlled vocabularies are listed in section 4 in [2]. |
||||||||||||||||||||||||
|
Type |
String(0..n) |
This property represents the Type of a Public Service as described in a controlled vocabulary. For the indicating the Type, we are referring to the functions of government to indicate the purpose of a government activity, which the public service is intended for. The recommended controlled vocabularies are listed in section 4 in [2]. |
||||||||||||||||||||||||
|
Language |
String(0..n) |
This property represents the language(s) in which the Public Service is available. This could be one language or multiple languages, for instance in countries with more than one official language. The possible values for this property are described in a controlled vocabulary. The recommended controlled vocabularies are listed in section 4 in [2]. |
||||||||||||||||||||||||
|
Status |
String(0..1) |
Indicates whether a Public Service is active, inactive, under development etc. according to a controlled vocabulary. |
||||||||||||||||||||||||
|
Is Grouped By |
String(0..1) |
This property links the Public Service to the Event class of CPSV-AP model . Several Public Services may be associated with a particular Event and, likewise, the same Public Service may be associated with several different Events. |
||||||||||||||||||||||||
|
Requires |
String(0..n) |
One Public Service may require, or in some way make use of, the output of one or several other Public Services. In this case, for a Public Service to be executed, another Public Service must be executed beforehand. |
||||||||||||||||||||||||
|
Has Competent Authority |
Object(1..1) |
This property links a Public Service to a Public Organization, which is the responsible Agent for the delivery of the Public Service. Whether the particular Public Organization provides the public service directly or outsources it is not relevant. The Public Organization that is the Competent Authority of the service is the one that is ultimately responsible for managing and providing the public service. The CPSV-AP reuses the Core Public Organisation Vocabulary that defines the concept of a Public Organization and associated properties and relationships.
|
||||||||||||||||||||||||
|
Has Input |
Object(0..n) |
The Has Input property links a Public Service to one or more instances of the Evidence class. A specific Public Service may require the presence of certain pieces of Evidence in order to be delivered.
|
||||||||||||||||||||||||
|
Produces |
Object(0..n) |
The Produces property links a Public Service to one or more instances of the Output class, describing the actual result of executing a given Public Service. Outputs can be any resource, for instance a document, artefact or anything else being produced as a result of executing the Public Service
|
||||||||||||||||||||||||
|
Spatial |
String(0..n) |
The area covered. The possible values for this property are described in a controlled vocabulary.. |
||||||||||||||||||||||||
|
Has Contact Point |
Object(0..n) |
The value of this property, the contact information itself, should be provided using schema:ContactPoint. Note that the contact information should be relevant to the Public Service which may not be the same as contact information for the Competent Authority or any Participant.
|
||||||||||||||||||||||||
|
Has Channel |
Object(0..n) |
This property links the Public Service to any Channel through which an Agent provides, uses or otherwise interacts with the Public Service, such as an online service, phone number or office
|
||||||||||||||||||||||||
|
Processing Time |
String(0..1) |
The value of this property is the (estimated) time needed for executing a Public Service. The actual information is provided using the ISO8601 syntax for durations. |
||||||||||||||||||||||||
|
Is Described At |
Object(0..n) |
The property links a Public Service to the Public Service Dataset(s) in which it is being described
|
||||||||||||||||||||||||
|
hasCost |
Object(0..n) |
The Cost class represents any costs related to the execution of a Public Service that the Agent consuming it needs to pay.
|
Service Instance
The following classes and properties collect information about the service instances to be used/invoked internally or externally the ACROSS platform. In particular this section collects information about Technical, Service Provider and Data Controller Descriptions of actual instance where service is deployed.
|
Property |
Type |
Description |
|||||||||||||||||||||||||||||||||
|
serviceProvider |
Object (1..1) |
Object describing service provider:
|
|||||||||||||||||||||||||||||||||
|
dataController |
Object (1..1) |
Object describing Data Controller, the individual or organisation that decides (or controls) the purpose(s) of processing personal data:
|
|||||||||||||||||||||||||||||||||
|
connectorEndpoint |
Object (0..1) |
Object describing the referenced endpoint to proxy (if any) with a service connector. See Connector section |
|||||||||||||||||||||||||||||||||
|
dataset |
Object (1..n) |
Object Describing the Service Data Description. Data section |
|||||||||||||||||||||||||||||||||
|
serviceUrls
|
Object (1..1) |
Object collects all information to interact with the internal components ( e.g. Consent manager...):
|
Connector Endpoint
|
Property |
Type |
Description |
|||||||||||||||||||||
|
endpoint |
Object (1..1) |
Object describing endpoint for Service Connector:
|
|||||||||||||||||||||
|
connectorId |
String (0..1) |
Id of registered connector instance associated to the service endpoint |
Dataset
|
Property |
Type |
Description |
||||||||||||||||||||||||||||||
|
identifier |
String (1..1) |
Dataset unique identifier. |
||||||||||||||||||||||||||||||
|
datastructureSpecification |
String (0..1) |
URL pointing to further description of the data (e.g. to JSON schema). |
||||||||||||||||||||||||||||||
|
Distribution |
Object (1..n) |
Objects describing distribution points of the Datasets.
|
||||||||||||||||||||||||||||||
|
dataMapping |
Object (1..n) |
Array of objects describing mapping of each Service specific data property and (if personal) with a personal data concept belonging to a controlled vocabulary.
|
||||||||||||||||||||||||||||||
|
description |
Object (1..n) |
Array of localized textual descriptions.
|
Service Personal Data Handling Section
This section It collects the different legal basis and requirements for personal data processing according to EU data protection Rules (Art. 6 GDPR). It describes describe different situations where a company or an organisation is allowed to collect or reuse your personal information: contract, legal obligation, vital interest, public interest, legitimate interest and consent. The following information are used by the consent manager component in the citizen data ownership layer.
|
Property |
Type |
Description |
||||||||||||||||||
|
purposeId |
String |
Purpose's ID, must be unique within the service description |
||||||||||||||||||
|
purposeName |
String |
Human readable Purpose's Name, Short name that identifies the purpose |
||||||||||||||||||
|
legalBasis |
String |
Legal basis in the "processing" of personal Data according to the GDPR: ["Consent", "Contract", "Legal Obligation", "Vital Interest", "Public Interest", "Legitimate Interest"] |
||||||||||||||||||
|
purposeCategory |
String |
Category of purpose from a controlled taxonomy. |
||||||||||||||||||
|
hasSector |
String |
Purposes can be further restricted to specific sectors |
||||||||||||||||||
|
hasContext |
String |
Purposes can be further restricted to specific contexts |
||||||||||||||||||
|
processingCategories |
String |
Category of actions related to a specific purpose and from a controlled taxonomy. |
||||||||||||||||||
|
description |
Object (1..n) |
Array of localized description of processing:
|
||||||||||||||||||
|
hasPersonalDataCategory |
String (1..n) |
Indicates which category of personal data is processed from a controlled taxonomy. |
||||||||||||||||||
|
requiredDatasets |
String (1..n) |
Array listing the required dataset (described previously) |
||||||||||||||||||
|
storage |
Object (0..n) |
Object describing the type of storage:
|
||||||||||||||||||
|
recipients |
String (0..n) |
List of type of recipients of personal data processing |
||||||||||||||||||
|
shareWith |
Object (0..n) |
Array of objects describing with whom the consent permits to share data. Organisation identifies the organisation with whom the data is permitted to share:
|
||||||||||||||||||
|
obligations |
Object (0..n) |
Obligations are the actions to be performed when an event occurs. Obligation defines the obligation related to consent, i.e. has an event and an activity and it defines what action to perform when an event related to consent occurs. For example, when the consent expires (event), then re-solicit consent (activity) or when the consent is revoked (event) then stop processing (activity).
|
||||||||||||||||||
|
policyRef |
String |
Reference to related Privacy Policy |
||||||||||||||||||
|
collectionMethod |
String |
It indicates the method of collection of consent |
||||||||||||||||||
|
CollectionOperator |
String |
It indicates Operator who collects Consents. |
||||||||||||||||||
|
termination |
String |
Termination rule of legal basis under which personal data can be processed. |
Service Data Usage Section
This section provides the reference of one or more usage rules associated to a specific service. The specification of usage rules is defined externally to the service Catalogue.
|
Property |
Type |
Description |
|
usageId
|
String (1..1) |
Usage's ID, must be unique within the service description. |
|
usageName
|
String (1..1) |
Human readable Usage's Name, Short name that identifies the rule. |
|
usageType |
String (1..1) |
Category of contract agreements from a controlled taxonomy. |
Service Description - JSON Schema
The Class diagram representation described above will imply in pratices the generation of a JSON, according to the following JSON Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"title": "ServiceModel",
"properties": {
"identifier": {
"type": "string"
},
"title": {
"type": "string",
"title": "name"
},
"issued": {
"type": "string"
},
"createdByUserId": {
"type": "string"
},
"versionInfo": {
"type": "string",
"title": "Description Version"
},
"serviceIconUrl": {
"type": "string"
},
"status": {
"type": "string",
"title": "Service Description status",
"description": "Status of Service Description (Allowed values: *Completed*, *Deprecated*, *UnderDevelopment*, *Withdrawn*)",
"default": "UnderDevelopment",
"enum": ["Completed", "Deprecated", "UnderDevelopment", "WithDrawn"]
},
"isPublicService": {
"type": "boolean"
},
"hasInfo": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"title": {
"type": "string",
"title": "name"
},
"status": {
"type": "string"
},
"keyword": {
"type": "array",
"items": {
"type": "string"
}
},
"sector": {
"type": "array",
"items": {
"type": "string"
}
},
"thematicArea": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"type": "array",
"items": {
"type": "string"
}
},
"language": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
},
"title": {
"type": "string"
},
"keyword": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"required": ["locale", "description", "title"]
},
"isDescribedAt": {
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"name": {
"type": "string"
},
"landingPage": {
"type": "string"
}
}
}
},
"hasCost": {
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"code": {
"type": "string"
},
"hasCost": {
"type": "string"
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": ["locale", "description"]
}
},
"ifAccessedThrough": {
"type": "string"
}
}
}
},
"processingTime": {
"type": "string"
},
"isGroupedBy": {
"type": "array",
"items": {
"type": "string"
}
},
"hasCompetentAuthority": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"title": {
"type": "string",
"title": "name"
},
"hasAddress": {
"type": "string"
},
"prefLabel": {
"type": "string"
},
"spatial": {
"type": "string"
}
},
"required": ["prefLabel", "spatial"]
},
"requires": {
"type": "array",
"items": {
"type": "string"
}
},
"spatial": {
"type": "string"
},
"hasInput": {
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"title": {
"type": "string",
"title": "name"
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
},
"title": {
"type": "string"
}
}
},
"required": ["locale", "description", "title"]
},
"type": {
"type": "array",
"items": {
"type": "string"
}
},
"language": {
"type": "array",
"items": {
"type": "string"
}
},
"page": {
"type": "array",
"items": {
"type": "string"
}
},
"conformsTo": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"produces": {
"title": "produces",
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"title": {
"type": "string",
"title": "name"
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
},
"title": {
"type": "string"
}
}
},
"required": ["locale", "description", "title"]
},
"type": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"hasContactPoint": {
"type": "object",
"properties": {
"email": {
"type": "string"
},
"faxNumber": {
"type": "string"
},
"telephone": {
"type": "string"
},
"identifier": {
"type": "string"
},
"openingHours": {
"type": "string"
},
"hoursAvailable": {
"type": "string"
},
"url": {
"type": "string"
}
}
},
"hasChannel": {
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"type": {
"type": "string"
},
"openingHours": {
"type": "string"
},
"hoursAvailable": {
"type": "string"
},
"language": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
},
"title": {
"type": "string"
}
}
},
"required": ["locale", "description", "title"]
},
"hasInput": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["identifier", "type", "openingHours"]
}
}
},
"required": [
"identifier",
"title",
"status",
"keyword",
"sector",
"thematicArea",
"type",
"language",
"description",
"isDescribedAt",
"hasCost",
"processingTime",
"isGroupedBy",
"hasCompetentAuthority",
"requires",
"spatial",
"hasInput",
"produces",
"hasContactPoint",
"hasChannel"
]
},
"hasServiceInstance": {
"type": "object",
"properties": {
"serviceProvider": {
"type": "object",
"properties": {
"businessId": {
"type": "string"
},
"name": {
"type": "string"
},
"hasAddress": {
"type": "string"
},
"postalcode": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
},
"country": {
"type": "string"
},
"email": {
"type": "string"
},
"telephone": {
"type": "string"
},
"jurisdiction": {
"type": "string"
}
},
"required": [
"businessId",
"name",
"hasAddress",
"postalcode",
"city",
"state",
"country",
"email",
"telephone",
"jurisdiction"
]
},
"endpointConnector": {
"type": "object",
"properties": {
"endpoint": {
"type": "object",
"properties": {
"accessURL": {
"type": "string"
},
"endpointInformation": {
"type": "string"
},
"endpointDocumentation": {
"type": "string"
},
"path": {
"type": "string"
},
"async": {
"type": "boolean"
},
"callback": {
"type": "string"
}
},
"required": [
"accessURL",
"endpointInformation",
"endpointDocumentation",
"path",
"async"
]
},
"connectorId": {
"type": "string"
}
},
"required": ["endpoint", "connectorId"]
},
"dataset": {
"type": "array",
"items": {
"type": "object",
"properties": {
"identifier": {
"type": "string"
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
},
"title": {
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["locale", "description", "keywords"]
}
},
"datasetSchema": {
"type": "object",
"properties": {
"context": {
"type": "string"
},
"type": {
"type": "string"
},
"id": {
"type": "string"
}
},
"required": ["context", "type", "id"]
},
"dataStructureSpecification": {
"type": "string"
},
"distribution": {
"type": "array",
"items": {
"properties": {
"distributionId":{
"type": "string"
},
"accessUrl": {
"type": "string"
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"description": {
"type": "string"
},
"keywords": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": ["locale", "description", "keywords"]
}
},
"format": {
"type": "string"
}
},
"required": [
"distributionId",
"accessUrl",
"description",
"format"
]
}
},
"dataMapping": {
"type": "array",
"items": {
"type": "object",
"properties": {
"property": {
"type": "string"
},
"conceptId": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"inputType": {
"type": "string"
},
"required": {
"type": "boolean"
},
"source": {
"type": "string"
},
"readonly": {
"type": "boolean"
},
"datamap": {
"type": "string"
}
},
"required": [
"property",
"conceptId",
"name",
"type",
"required",
"source",
"readonly",
"datamap"
]
}
}
},
"required": [
"datasetId",
"description",
"datasetSchema",
"dataStructureSpecification",
"distribution",
"dataMapping"
]
}
},
"serviceUrls": {
"type": "object",
"properties": {
"libraryDomain": {
"type": "string"
},
"loginUri": {
"type": "string"
},
"linkingRedirectUri": {
"type": "string"
},
"objectionUri": {
"type": "string"
},
"notificationUri": {
"type": "string"
}
},
"required": [
"libraryDomain",
"loginUri",
"linkingRedirectUri",
"objectionUri",
"notificationUri"
]
},
"dataController": {
"type": "object",
"properties": {
"piiController": {
"type": "string"
},
"organizationName": {
"type": "string"
},
"hasContact": {
"type": "string"
},
"hasAddress": {
"type": "string"
},
"email": {
"type": "string"
},
"telephone": {
"type": "string"
},
"operatorName": {
"type": "string"
}
},
"required": [
"piiController",
"organizationName",
"hasContact",
"hasAddress",
"email",
"telephone",
"operatorName"
]
}
},
"required": [
"serviceProvider",
"cert",
"connector",
"dataset",
"serviceUrls",
"dataController"
]
},
"hasUsageRule": {
"type": "array",
"items": {
"type": "object",
"properties": {
"usageId": {
"type": "string"
},
"usageName": {
"type": "string"
},
"usageType": {
"type": "string"
}
},
"required": ["usageId", "usageName", "usageType"]
}
},
"isPersonalDataHandling": {
"type": "array",
"items": {
"type": "object",
"properties": {
"purposeId": {
"type": "string"
},
"purposeName": {
"type": "string"
},
"legalBasis": {
"type": "string"
},
"purposeCategory": {
"type": "string"
},
"hasSector": {
"type": "array",
"items": {
"type": "string"
}
},
"hasContext": {
"type": "array",
"items": {
"type": "string"
}
},
"processingCategories": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "array",
"items": {
"type": "object",
"properties": {
"locale": {
"type": "string"
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"descriptionUrl": {
"type": "string"
},
"iconUrl": {
"type": "string"
}
},
"required": [
"locale",
"title",
"description",
"descriptionUrl",
"iconUrl"
]
}
},
"hasPersonalDataCategory": {
"type": "array",
"items": {
"type": "string"
}
},
"requiredDatasets": {
"type": "array",
"items": {
"type": "string"
}
},
"storage": {
"type": "object",
"properties": {
"location": {
"type": "string"
},
"duration": {
"type": "string"
}
},
"required": ["location", "duration"]
},
"recipients": {
"type": "array",
"items": {
"type": "string"
}
},
"shareWith": {
"type": "array",
"items": {
"type": "object",
"properties": {
"orgName": {
"type": "string"
},
"orgUrl": {
"type": "string"
},
"businessType": {
"type": "string"
},
"required": {
"type": "boolean"
}
},
"required": ["orgName", "orgUrl", "businessType", "required"]
}
},
"obligations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"event": {
"type": "string"
},
"activity": {
"type": "string"
}
},
"required": ["event", "activity"]
}
},
"policyRef": {
"type": "string"
},
"collectionMethod": {
"type": "string"
},
"collectionOperator": {
"type": "string"
},
"termination": {
"type": "string"
}
},
"required": [
"purposeId",
"purposeName",
"legalBasis",
"purposeCategory",
"hasSector",
"hasContext",
"processingCategories",
"description",
"hasPersonalDataCategory",
"requiredDatasets",
"storage",
"recipients",
"shareWith",
"obligations",
"policyRef",
"collectionMethod",
"collectionOperator",
"termination"
]
}
}
},
"required": [
"title",
"identifier",
"issued",
"createdByUserId",
"serviceDescriptionVersion",
"serviceIconUrl",
"status",
"isPublicService",
"hasInfo",
"hasServiceInstance",
"hasUsageRule"
]
}
Service Model Extension
Some Service Model classes provides some references to controlled vocabularies or to prefixed enumerated list. Each vocabulary or enumerated list can be extended by adding additional "items" in the related assets/data/service-schema/(locale)/ files.
As example
"type": {
"type": "string",
"title": "Type of channel",
"description": "Type of channel",
"enum":
["RESTService",
"AsyncRESTService",
"E-mail",
"Homepage",
"Fax",
"Assistant",
"Telephone",
"Mobile App",
"Digital TV",
"Mail",
"Service Bureau",
"Client's Location",
<add here new items>]
}
or retrieved from external schemas ( see https://github.com/json-editor/json-editor#json-schema-support).
See as example in assets/data/service-schema/wallet-schema/wallet-schemas.json, the enumerated list of eIDAS attributes.
{
"type": "string",
"title": "Data Map",
"oneOf": [
{
"$ref": "./default.json",
"title": ""
},
{
"$ref": "./natural-person.json",
"title": "eIDAS Natual Person"
},
{
"$ref": "./legal-person.json",
"title": "eIDAS Legal Person"
}
]
}
included in the definition of DataMap property in Dataset class (assets/data/service-schema/(locale)/dataset.json)
"datamap": {
"$ref": "../../wallet-schema/wallet-schemas.json"
}
for localized enumeration see what described in "enabling other languages" in Configuration