Give it a try
Run this
npm i -g @accordproject/concerto-cli
Read these
Quick Start Tutorial
Data Modeling Language and Tools
Designed from the ground up to be easy to learn, for both newcomers and data modeling pros.
Import your existing models, or convert Concerto models to 14+ output formats.
Import models from URLs. Lightweight browser compatible runtime.
concept Address {
o String street
o String city
o String postCode
o Country country
}
concept Person identified by name {
o String name
o Address address optional
@description("Height (cm)")
o Double height range=[0.0,]
o DateTime dateOfBirth
}
enum Country {
o UK
o USA
o FRANCE
o GERMANY
o JAPAN
}
// imports
import {IConcept} from './concerto@1.0.0';
// interfaces
export enum ServiceType {
GOLD = 'GOLD',
SILVER = 'SILVER',
BRONZE = 'BRONZE',
}
export enum ServiceLevel {
BASIC = 'BASIC',
STANDARD = 'STANDARD',
PREMIUM = 'PREMIUM',
}
export interface IService extends IConcept {
serviceType: ServiceType;
serviceLevel: ServiceLevel;
price: number;
}
export interface IOrganization extends IConcept {
name: string;
address: string;
contactName: string;
contactEmail: string;
}
export interface IServiceLevelAgreement extends IConcept {
customer: IOrganization;
provider: IOrganization;
service: IService;
startDate: Date;
endDate: Date;
penaltyPercentage: number;
autoRenewal: boolean;
}
{
"$schema": "http://json-schema.org/draft-07/schema#",
"definitions": {
"org.example.sla@0.0.2.ServiceType": {
"title": "ServiceType",
"description": "An instance of org.example.sla@0.0.2.ServiceType",
"enum": [
"GOLD",
"SILVER",
"BRONZE"
]
},
"org.example.sla@0.0.2.ServiceLevel": {
"title": "ServiceLevel",
"description": "An instance of org.example.sla@0.0.2.ServiceLevel",
"enum": [
"BASIC",
"STANDARD",
"PREMIUM"
]
},
"org.example.sla@0.0.2.Service": {
"title": "Service",
"description": "An instance of org.example.sla@0.0.2.Service",
"type": "object",
"properties": {
"$class": {
"type": "string",
"default": "org.example.sla@0.0.2.Service",
"pattern": "^org\.example\.sla@0\.0\.2\.Service$",
"description": "The class identifier for org.example.sla@0.0.2.Service"
},
"serviceType": {
"$ref": "#/definitions/org.example.sla@0.0.2.ServiceType"
},
"serviceLevel": {
"$ref": "#/definitions/org.example.sla@0.0.2.ServiceLevel"
},
"price": {
"type": "number"
}
},
"required": [
"$class",
"serviceType",
"serviceLevel",
"price"
]
},
"org.example.sla@0.0.2.Organization": {
"title": "Organization",
"description": "An instance of org.example.sla@0.0.2.Organization",
"type": "object",
"properties": {
"$class": {
"type": "string",
"default": "org.example.sla@0.0.2.Organization",
"pattern": "^org\.example\.sla@0\.0\.2\.Organization$",
"description": "The class identifier for org.example.sla@0.0.2.Organization"
},
"name": {
"type": "string"
},
"address": {
"type": "string"
},
"contactName": {
"type": "string"
},
"contactEmail": {
"type": "string"
}
},
"required": [
"$class",
"name",
"address",
"contactName",
"contactEmail"
]
},
"org.example.sla@0.0.2.ServiceLevelAgreement": {
"title": "ServiceLevelAgreement",
"description": "An instance of org.example.sla@0.0.2.ServiceLevelAgreement",
"type": "object",
"properties": {
"$class": {
"type": "string",
"default": "org.example.sla@0.0.2.ServiceLevelAgreement",
"pattern": "^org\.example\.sla@0\.0\.2\.ServiceLevelAgreement$",
"description": "The class identifier for org.example.sla@0.0.2.ServiceLevelAgreement"
},
"customer": {
"$ref": "#/definitions/org.example.sla@0.0.2.Organization"
},
"provider": {
"$ref": "#/definitions/org.example.sla@0.0.2.Organization"
},
"service": {
"$ref": "#/definitions/org.example.sla@0.0.2.Service"
},
"startDate": {
"format": "date-time",
"type": "string"
},
"endDate": {
"format": "date-time",
"type": "string"
},
"penaltyPercentage": {
"type": "number"
},
"autoRenewal": {
"type": "boolean"
}
},
"required": [
"$class",
"customer",
"provider",
"service",
"startDate",
"endDate",
"penaltyPercentage",
"autoRenewal"
]
}
}
}
Run this
npm i -g @accordproject/concerto-cli
Read these
Quick Start Tutorial