Glossary

TermDefinition
ApplicationAn application represents an application as a measurable object. Each application snapshot is a measure point of an application.
Application SnapshotAn application snapshot is a measure point of an application. It is made up of a set of data (results, objects, etc.) computed and frozen at a given time
AttachmentA JSON content attached to an application, it can be a list of frameworks, a survey, etc.
CategoryA tag belongs to a category. A category is a set of tags.
Domaindomain is an identifier of a database. It is defined with a schema name and a connection string to a DBMS.
Modulemodule represents a module as a measurable object. Each snapshot of a module is part of an application snapshot.
Module Snapshotmodule snapshot is a measure point of a module. It is made up of a set of data (results, objects, etc.) computed and frozen at a given time. A module snapshot is a part of an application snapshot.
Systemsystem represents a group of applications.
Tagtag is a keyword that can be assigned to an application.
TechnologyA subset of source code belonging to a technology (i.e. JEE code , .NET code, ABAP code, etc.)
Tree NodeA structure that organizes application, modules, and components in a tree



Domain

URI Templates

HTTP ActionMedia TypeURI TemplatesDescription
GETapplication/json/Array of domains
GETapplication/json{Domain}A domain content

JSON Representation

PropertiesDescriptionTypeOccurs
hrefAuto referenceURI1
nameDomain nameString1
dbTypeDatabase type either "AAD" for Measurement Service database or "ADG" for Dashboard Service databaseString1
versionPackage version of "ADG_FULL_CENTRAL"; which is considered as CAST AIP version numberString1
schemaName of the database schemaString1
dbmsVersionProduct name and version of the Database Management System hostString1
componentsIndexStatusStatus of the Lucene components indexString1
violationsIndexStatusStatuc of the Lucene violations indexString1
systems.hrefFor a Central database, reference to get an array of systemsURI1
applications.hrefReference to get an array of applicationsURI1
nbOfApplicationsReturns total applications count present in domaininteger1
nbOfAuthorizedApplicationsReturns authorized applications count, returns only for domain content (/{domainName})integer1
configurations.hrefReference to the history of configurationsURI1
results.hrefReference to get results of all applicationsURI1
commonCategories.hrefFor a Measurement Database, reference to get all defined categoriesURI1
tags.hrefFor a Measurement Database, reference to get all application assignmentsURI1


JSON Example

JSON format for Array of domains

GET DEMO
{
	"href": "ENDTOEND833",
	"name": "ENDTOEND833",
	"dbType": "ADG",
	"version": "8.3.3",
	"schema": "endtoend_833_central",
	"dbmsVersion": "PostgreSQL 9.2.3, compiled by Visual C++ build 1600, 64-bit",
	"componentsIndexStatus": "upToDate",
	"violationsIndexStatus": "toUpdate",
	"systems": {
		"href": "ENDTOEND833/systems",
		"name": "All Systems. A system represents a portfolio of applications."
	},
	"applications": {
		"href": "ENDTOEND833/applications",
		"name": "All Applications. An application represents ..."
	},
	"nbOfApplications": 2,
	"configurations": {
		"href": "ENDTOEND833/configuration/snapshots",
		"name": "All configuration snapshots ..."
	},
	"results": {
		"href": "ENDTOEND833/results",
		"name": "Results by snapshots, by systems, by ..."
	},
	"commonCategories": null,
	"tags": null
}


JSON format for domain content

GET DEMO
{
	"href": "ENDTOEND833",
	"name": "ENDTOEND833",
	"dbType": "ADG",
	"version": "8.3.3",
	"schema": "endtoend_833_central",
	"dbmsVersion": "PostgreSQL 9.2.3, compiled by Visual C++ build 1600, 64-bit",
	"componentsIndexStatus": "upToDate",
	"violationsIndexStatus": "toUpdate",
	"systems": {
		"href": "ENDTOEND833/systems",
		"name": "All Systems. A system represents a portfolio of applications."
	},
	"applications": {
		"href": "ENDTOEND833/applications",
		"name": "All Applications. An application represents ..."
	},
	"nbOfApplications": 2,
	"nbOfAuthorizedApplications": 1,
	"configurations": {
		"href": "ENDTOEND833/configuration/snapshots",
		"name": "All configuration snapshots ..."
	},
	"results": {
		"href": "ENDTOEND833/results",
		"name": "Results by snapshots, by systems, by ..."
	},
	"commonCategories": null,
	"tags": null
}

System

Central Database only

JSON Representation

Properties
Description
Type
Occurs
hrefAuto referenceURI1
nameSystem nameString1
technologiesArray of technologies as an union of technologies used by all applications of this systemArray1
technologies[ ]A technologyString1..*
applications.hrefReference to get an array of applicationsURI1
results.hrefReference to get an array of result itemsURI1


JSON Example

GET DEMO
{ 
	"href": "DEMO/systems/2", 
	"name": "BT", 
	"technologies": [ "FLEX", "JEE", "Oracle Server", "PL/SQL" ], 
	"applications": { 
		"href": "DEMO/systems/2/applications", 
		"name": "Applications of BT" 
	}, 
	"results": { 
		"href": "DEMO/systems/2/results", 
		"name": "results breakdown by applications, by snapshots, by technologies."
	 } 
}




Application

URI Templates


HTTP ActionMedia TypeURI TemplatesDescription
GETapplication/json
{Domain}/applications
Array of applications of a domain
GETapplication/json
{Domain}/applications/{ApplicationID}
An application content

JSON Representation

PropertiesDescriptionTypeOccurs
hrefAuto referenceURI1
nameApplication nameString1
technologiesArray of technologies as an union of technologies used by the applicationArray1
technologies[ ]A technologyString1..*
system.hrefFor a Central database, reference to get the system ownerURI1
modules.hrefFor a Central database, reference to get an array of modulesURI1
snapshots.hrefReference to get an array of application snapshotsURI1
results.hrefReference to get an array of resultsURI1
origin.hrefFor a Measurement Database, reference to the origin application stored in Central Database. The related domain must be definedURI1
attachments.hrefReference to get an array of attachmentsURI1
adgDatabaseFor a Measurement Database, name of the Central database hosting this applicationString0..1
adgWebSiteFor a Measurement Database, full http address to AED web site hosting information detail about this application.String0..1
adgLocalIdFor a Measurement Database, local ID for this application defined on the database of adgWebSiteString0..1
adgVersionFor a Measurement Database, AED web site version.String0..1


JSON Example

GET DEMO/applications/6
{
	"href": "DEMO/applications/6", 
	"name": "Application 006", 
	"technologies": [ "Cobol", "DB2 Server", "JCL" ], 
	"systems": null, 
	"modules": null, 
	"snapshots": { 
		"href": "DEMO/applications/6/snapshots",
		"name": "Snapshots of Application 006"
	}, 
	"results": null, 
	"adgDatabase": "demo_710_central", 
	"adgWebSite": "http://10.75.225.94:8080/GM_DRAS/", 
	"adgLocalId": "3", 
	"adgVersion": "7.1.0" 
}



Module

JSON Representation

Properties
Description
Type
Occurs
hrefAuto referenceURI1
nameModule nameString1
technologiesArray of technologies used by this moduleArray1
technologies[ ]A technologyString1..*
applications.hrefReference to get the application owner Warning: this attribute is misspelled applications (with an 's')URI1
snapshots.hrefReference to get an array of application snapshotsURI1
results.hrefReference to get an array of resultsURI1


JSON Example

GET DEMO/applications/6
{ 
	"href": "DEMO/modules/5", 
  	"name": "Java", 
  	"applications": { 
		"href": "DEMO/modules/5/application",
		"name": "DEMO" 
	}, 
	"technologies": [ "JEE" ], 
	"snapshots": { 
		"href": "DEMO/modules/5/snapshots", 
		"name": "Snapshots of Java" 
	},
    "results": { 
		"href": "DEMO/modules/5/results", 
		"name": "results breakdown by snapshots, by technologies." 
	} 
}



Application Snapshot

URI Templates

HTTP ActionMedia TypeURI TemplatesDescription
GETapplication/json
{Domain}/applications/{ApplicationID}/snapshots
Array of snapshots of an application
GETapplication/json
{Domain}/applications/{ApplicationID}/snapshots/{SnapshotID}
An application snapshot content


JSON Representation

PropertiesDescriptionTypeOccurs
hrefAuto referenceURI1
nameApplication nameString1
numberSnapshot order number.Snapshots are ordered according to the annotation.dateInteger1
technologiesArray of technologies used by this application snapshotArray1
technologies[ ]A technologyString1..*
annotationUser annotations/information describing this snapshotStructure1
annotation.versionAssessment point numberString1
annotation.dateApplication dateDate1
annotation.descriptionSnapshot descriptionString1

annotation.name

Snapshot nameString1
annotation.enhancementMeasureComputation mode of enhancement data. It has one of the following values : "EFP" or "AEP"String1
configurationSnapshot.hrefReference to the snapshot configurationURI1
system.hrefFor a Central database, reference to the the system ownerURI1
application.hrefReference to get the application ownerURI1
modulesSnapshots.hrefFor an ADG database, reference to get an array of module snapshotsURI1
results.hrefReference to get an array of resultsURI1
actionPlanFor a Central database. Structure1
actionPlan.issues.href Array of issues for this application snapshot URI1
actionPlan.summary.hrefSummary of all issuesURI1
activeExclusionsFor a central databaseStructure1
activeExclusions.exclusions.hrefArray of excluded violations for this application snapshotURI1
activeExclusions.summary.hrefSummary of excluded violationsURI1
scheduledExclusionsFor a central databaseStructure1
scheduledExclusions.exclusions.hrefArray of scheduled exclusions in this application snapshot (exclusions will be effective in the next snapshot)URI1
scheduledExclusions.summary.hrefSummary of scheduled exclusionsURI1
components.hrefFor a Central database, reference to this application snapshot's components having a PRIURI1
transactions.hrefFor a Central database, reference to the transactions of this application snapshotURI1
violations.hrefFor a Central database, reference to the violations of this application snapshotURI1
treeNode.hrefFor a Central Database, reference to this application tree-node to get nested components.
null if current snapshot is not the last snapshot 
URI1
origin.hrefFor a Measurement Database, reference to the origin application snapshot stored in Central Database. The related domain must be definedURI1
adgLocalIdFor a Measurement Database, local ID for this snapshot defined on the original central databaseString0..1

JSON Example

GET DEMO/applications/3/snapshots/8
{
	"href": "DEMO/applications/3/snapshots/8",
	"name": "DEMO",
	"number": 2,
	"technologies": [
		"FLEX",
		"JEE",
		"Oracle Server",
		"PL/SQL"
	],
	"annotation": {
		"version": "V2.0",
		"date": {
			"time": 1336514400000
		},
		"description": "",
		"name": "Computed on 201205090914",
		"enhancementMeasure": "EFP"
	},
	"configurationSnapshot": {
		"href": "DEMO/configuration/snapshots/8",
		"name": "Configuration Snapshot #2"
	},
	"systems": {
		"href": "DEMO/applications/3/systems",
		"name": "Systems of DEMO"
	},
	"application": {
		"href": "DEMO/applications/3",
		"name": "DEMO"
	},
	"moduleSnapshots": {
		"href": "DEMO/applications/3/snapshots/8/modules",
		"name": "Module Snapshots for DEMO #2"
	},
	"results": {
		"href": "DEMO/applications/3/snapshots/8/results",
		"name": "Results breakdown by modules, by technologies"
	},
	"actionPlan": {
		"issues": {
			"href": "DEMO/applications/3/snapshots/8/action-plan/issues",
			"name": "Action Plan Issues"
         },
		"summary": {
			"href": "DEMO/applications/3/snapshots/8/action-plan/summary",
			"name": "Action plan summary for application DEMO in snapshot 2"
		}
	},
	"activeExclusions": {
		"exclusions": {
			"href": "DEMO/applications/3/snapshots/8/excluded-violations",
			"name": "Active exclusions for application DEMO in snapshot 2"
		},
		"summary": {
			"href": "DEMO/applications/3/snapshots/8/excluded-violations-summary",
			"name": "Active exclusions summary for application DEMO in snapshot 2"
		}
	},
	"scheduledExclusions": {
		"exclusions": {
			"href": "DEMO/applications/3/snapshots/8/exclusions/scheduled",
			"name": "Scheduled exclusions for application DEMO in snapshot 2"
		},
		"summary": {
			"href": "DEMO/applications/3/snapshots/8/exclusions/scheduled-summary",
			"name": "Scheduled exclusions summary for application DEMO in snapshot 2"
		}
	},
    "components": {
		"href": "DEMO/applications/3/snapshots/8/components",
		"name": "Components for application DEMO in snapshot 2"
	},
	"transactions": {
		"href": "DEMO/applications/3/snapshots/8/transactions",
		"name": "Transactions for application DEMO in snapshot 2"
	}
    "violations: { 
		"href": "DEMO/applications/3/snapshots/8/violations", 
		"name": "Violations for application DEMO in snapshot 2" 
	}
}



Module Snapshot

URI Templates

HTTP ActionMedia TypeURI TemplatesDescription
GETapplication/json
{Domain}/modules/{ModuleID}/snapshots
Array of snapshots of a module
GETapplication/json
{Domain}/modules/{ModuleID}/snapshots/{SnapshotID}
A module snapshot content
GETapplication/json
{Domain}/applications/{ApplicationID}/snapshots/{SnapshotID}/modules
Array of snapshots for modules


JSON Representation

Properties
Description
Type
Occurs
hrefAuto referenceURI1
nameModule nameString1
numberSnapshot order number.Snapshots are ordered according to the annotation.dateInteger1
technologiesArray of technologies by this moduleArray1
technologies[ ]A technologyString1..*
annotationUser annotations describing this snapshotStructure1
annotation.versionAssessment point numberString1
annotation.dateApplication dateDate1
annotation.descriptionSnapshot descriptionString1

annotation.name

Snapshot nameString1
annotation.enhancementMeasureComputation mode of enhancement data. It has one of the following values : "EFP" or "AEP"String1
configurationSnapshot.hrefReference to the snapshot configurationURI1
module.hrefReference to get the module ownerURI1
applicationSnapshot.hrefReference to get the application snapshot ownerURI1
results.hrefReference to get an array of resultsURI1
actionPlanFor a Central database.Structure1
actionPlan.issues.hrefArray of issues for this module snapshotURI1
actionPlan.summary.hrefSummary of all issuesURI1
components.hrefFor a Central database, reference to this module snapshot's components having a PRIURI1
diagnosisResuls.violations.hrefFor a Central database, reference to the violations of this application snapshotURI1
treeNode.hrefFor a Central Database, reference to this module tree-node to get nested components.
null if current snapshot is not the last snapshot
URI1

JSON Example

GET DEMO/modules/4/snapshots/8
{

	"href": "DEMO/modules/4/snapshots/8",
	"name": "Flex",
	"number": 2,
	"technologies": [
		"FLEX"
	],
	"annotation": {
		"version": "V2.0",
		"date": {
			"time": 1336514400000
		},
		"description": "",
		"name": "Computed on 201205090914",
		"enhancementMeasure": "EFP"
	},
	"configurationSnapshot": {
		"href": "DEMO/configuration/snapshots/8",
		"name": "Configuration Snapshot #2"
	},
	"application": {
		"href": "DEMO/modules/4/application",
		"name": "Applications for Flex"
	},
	"module": {
		"href": "DEMO/modules/4",
		"name": "Flex"
	},
	"applicationSnapshot": {
		"href": "DEMO/applications/3/snapshots/8",
		"name": "DEMO"
	},
	"results": {
		"href": "DEMO/modules/4/snapshots/8/results",
		"name": "Results breakdown by technologies"
	},
	"actionPlan": {
		"issues": null,
		"summary": {
			"href": "DEMO/modules/4/snapshots/8/action-plan/summary",
			"name": "Action plan summary for module Flex in snapshot 2"
		}
	},
	"components": {
		"href": "DEMO/modules/4/snapshots/8/components",
		"name": "Components for module Flex in snapshot 2"
	},
    "diagnosisResults":	{
		  "violations: { 
				"href": "DEMO/applications/3/snapshots/8/violations", 
				"name": "Violations for application DEMO in snapshot 2" }

		}
	}
}



Attachments

Description

A free JSON content can be attached to an application. Each JSON content is referred with a key.

Warning: keys starting with "CAST:" are reserved for CAST AIP Product.

URI Templates

HTTP ActionMedia TypeURI TemplatesDescription
GETapplication/json
{Domain}/applications/{ApplicationID}/attachments

Get an array of all references to JSON contents


GETapplication/json
{Domain}/applications/{ApplicationID}/attachments/{Key}
Get a JSON content attached to an application for a given key
GETapplication/json
{Domain}/applications/{ApplicationID}/snapshots/{snapshotId}/attachments

Get an array of all references to JSON contents


GETapplication/json
{Domain}/applications/{ApplicationID}/snapshots/{snapshotId}/attachments/{Key}
Get a JSON content attached to an application snapshot for a given key
PUTapplication/json
{Domain}/applications/{ApplicationID}/attachments/{Key}

Map a JSON Content to an application and a key

PUTapplication/json
{Domain}/applications/{ApplicationID}/snapshots/{snapshotId}/attachments/{Key}

Map a JSON Content to an application snapshot and a key

DELETEapplication/json
{Domain}/applications/{ApplicationID}/attachments/{Key}
Delete a JSON Content for an application and a key
DELETEapplication/json
{Domain}/applications/{ApplicationID}/snapshots/{snapshotId}/attachments/{Key}
Delete a JSON Content for an application snapshot and a key

Application to Tags Assignments

Measurement Database only

Description

A tag is used to filter a set of applications when results are requested. It is up to the REST client to filter applications according to tags using the service listing all applications.

The purpose of the REST API is to minimize request & response flows between client and server relying on client cache management (which is based on "304 NOT MODIFIED" response status). Therefore the client navigator should emit the same requests to the server. If ever the server has been restarted then the client cache would be refreshed.

Therefore, the client should rely on a subset of requests. For instance, to get all applications TQI on a subset of applications, requests TQI for all applications, then filter the results.

Notions

  • Tag: A tag is a keyword. 
  • Category: A tag belongs to a category. A category is a set of tags.
  • Application to Tags assignment: A tag can be assigned to an application, but cannot be assigned to a specific application snapshot. 

Rules

  1. Common categories, tags, and assignments are created for all users.
  2. Technologies are similar to tags but are not tags. It is up to the webapp to display these data as tags.
  3. When an application is not assigned to any tag of a category, then the webapp considers this application attached to the "other" tag for this category. It is up to the webapp to provide this feature.
  4. Tags labels cannot be translated
  5. Tags and categories label can be changed.

URI Templates 

HTTP Action
Media Type
URI Templates
Description
GETapplication/json
{Domain}/tags

Get an array of all application to tag assignments


PUTapplication/json
{Domain}/tags

Replace application to tag assignments

JSON Representation

Response (GET)

Properties

Description

Type

Occurs

application.hrefApplication ReferenceURI1
technologiesTechnologiesArray1
technologies[ ]A technologyString1..*
commonTagsArray of LabelArray1
commonTags[ ].keyTag keyString1
commonTags[ ].labelTag labelString1
ownTagsReservedArray0..1


Payload  (PUT)

Properties

Description

Type

Occurs

application.hrefApplication ReferenceURI1
commonTagsArray of tagsArray1
commonTags[ ]TagStructure0..*
commonTags[ ].keyA tag keyString1

Category

Measurement Database only

Description

A regular category is a container of tags.

A parent category is a container of other categories in order to organize categories as a tree structure.

Web Services may raise errors if following constraints are not verified:

  • A category must define items (at least one tag or one category)
  • A category has a unique name
  • A category cannot define both items and categories
  • For a given category a tag has a unique name
  • Parent categories MUST NOT define circular relationship
  • A category cannot be empty

Example of Categories and Tags:

URI Templates 

HTTP Action
Media Type
URI Templates
Description
GETapplication/json
{Domain}/common-categories

Get an array of all common categories definitions.


text/csv
application/vnd.openxmlformats-
officedocument.spreadsheetml.sheet
PUTapplication/json
{Domain}/common-categories

Update a collection of common categories.

Warning: If some tags are missing, then they will be deleted in database.

text/csv

Bulk updates of ALL common categories.

This call creates new categories and tags, updates categories and tags labels, removes categories and tags.

Each CSV row is a definition of a couple category/tag, or parent-category/category.

This call accepts the following changes:

  • you can change labels of categories and tags
  • you can add new tags or remove tags of existing categories
  • you can remove existing categories
  • you can add new categories with a list of tags
  • you can add new parent categories referring existing categories or new categories

Warning: All existing categories must be put in this payload (see result of GET) ,otherwise they will be deleted

Warning: A category must define at least one tag or one sub-category

Warning: A tag or a category without key is considered as new item to create

POSTapplication/json
{Domain}/common-categories

Create a collection of common categories.
Request content example:


[ { "label":"MyTags", "tags": [ {"label":"Favorites"}, {"label":"Major"}, {"label":"Minor"} ] } ]

Response content example:


[{ "key":"5", "label":"MyTags", "tags": [ {"key":"10", "label":"Favorites"}, {"key":"11", "label":"Major"}, {"key":"12", "label":"Minor"} ] } ]
DELETEapplication/json
{Domain}/common-categories

Delete a collection of common categories (tags to Applications assignments are deleted)

Request content example:


[{ "key" : "1" }, { "key" : "2" }, { "key" : "3" }]


JSON Representations 

PropertiesResponse Structure

Payload POST Structure

Payload DELETE StructurePayload PUT Structure
keyUnique global IDN/Arequired ID of a category to deleteRequired ID of a category to update
labelCategory LabelRequired label of a category to create N/A Optional label: if set this is a label update
Regular Category Only
tagsArray of tagsRequired array of tags to createN/AFull array of tags (if some existing tags are not set
then they will be removed)
tags[ ]A tagRequired tag to createN/A  A tag
tag[ ].keyUnique global tag IDN/AN/AOptional tag ID: if not set a tag will be added
tag[ ].labelTag label Required tag labelN/AOptional label: If set this is a label update, or a tag to create
Parent Category Only
categoriesArray of sub categoriesRequired array of sub categoriesN/AFull array of sub categories (if some existing sub categories
are not set then they will be removed)
categories []A sub categoryRequired sub categoryN/AA sub category
categories[].keySub category keyOptional sub category key: if not set a label is usedN/ARequired a sub category ID
categories[].labelSub category labelOptional sub category label: if set this is a category
created in this payload
N/AN/A


JSON Example

[
    { "key": "26", "label": "Departments", "tags": [{ "key": "181", "label": "Dept1" }, { "key": "165", "label": "Dept2" } ] },
    { "key": "4",  "label": "Countries", "tags": [{ "key": "3", "label": "France" }, { "key": "93", "label": "Germany" }, { "key": "4", "label": "Italy" } ] },
    { "key": "100",  "label": "Location", "categories": [{ "key": "26", "label": "Departments" }, { "key": "4", "label": "Countries" }] }
]

CSV Representation

Columns Titles
Type
Response
Put Payload
Category LabelStringCategory label

A label for a category to create or to update

Category KeyStringCategory key (empty for a creation)A key for a an existing
Item TypeString

Item types: either "TAG" for a Regular Category or "CATEGORY" for a Parent Category

'TAG' defines a tag

'CATEGORY' defines a sub caegory

Item LabelStringTag or Sub Category label

If Item Type is 'TAG', a label for a tag to create to update

If Item Type is 'CATEGORY', a sub category referred with a label for a category created in this payload

Item KeyStringTag or Sub Category key (empty for a an item created with this payload)

If Item Type is 'TAG', a key for an existing tag

If Item Type is 'CATEGORY', a key for an existing category


CSV Example

Categories and Tags creation:

Category Label;Category Key;Item Type;Item Label;Item Key
Team Size;;TAG;Small Size;
Team Size;;TAG;Large Size;
Region;;CATEGORY;West;
Region;;CATEGORY;East;
West;;CATEGORY;Europe;
West;;CATEGORY;U.S.;
East;;TAG;China;
East;;TAG;India;
Europe;;TAG;France;
Europe;;TAG;U.K.;
U.S.;;TAG;Texas;
U.S.;;TAG;New York;


Rename 'UK' as 'United Kingdom' , add 'Italy as new tag for 'Europe', create a new category 'Toplevel' as parent of 'Team Size' and 'Region'

Category Label;Category Key;Item Type;Item Label;Item Key
Team Size;1;TAG;Small Size;1
Team Size;1;TAG;Large Size;2
Region;2;CATEGORY;West;3
Region;2;CATEGORY;East;4
West;3;CATEGORY;Europe;5
West;3;CATEGORY;U.S.;6
East;4;TAG;China;5
East;4;TAG;India;6
Europe;5;TAG;France;7
Europe;5;TAG;United Kingdom;8
Europe;5;TAG;Italy;
U.S.;6;TAG;Texas;9
U.S.;6;TAG;New York;10
Toplevel;;CATEGORY;Team Size;1
Toplevel;;CATEGORY;Region;2