gitlab-ce/config/events/schema.json

232 lines
4.7 KiB
JSON

{
"type": "object",
"required": [
"description",
"action",
"product_group",
"introduced_by_url",
"milestone",
"tiers"
],
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"category": {
"type": "string"
},
"internal_events": {
"type": "boolean",
"const": true
},
"action": {
"type": "string",
"pattern": "^[a-z0-9_]+$"
},
"extra_properties": {
"type": [
"object",
"null"
]
},
"identifiers": {
"type": [
"array",
"null"
],
"items": {
"type": "string",
"enum": [
"project",
"user",
"namespace",
"feature_enabled_by_namespace_ids"
]
}
},
"additional_properties": {
"anyOf": [
{
"description": "Only base additional properties are provided",
"type": "object",
"properties": {
"label": {
"$ref": "#additional_prop"
},
"property": {
"$ref": "#additional_prop"
},
"value": {
"$ref": "#additional_prop"
}
},
"additionalProperties": {
"type": "null",
"x-error": "Either property/label or value must be used before defining other additional_properties"
}
},
{
"description": "All string-type base additional properties are provided, allowing custom properties",
"type": "object",
"properties": {
"label": {
"$ref": "#additional_prop"
},
"property": {
"$ref": "#additional_prop"
},
"value": {
"$ref": "#additional_prop"
}
},
"required": [
"property",
"label"
],
"additionalProperties": {
"$ref": "#additional_prop"
}
},
{
"description": "All numeric-type base additional properties are provided, allowing custom properties",
"type": "object",
"properties": {
"label": {
"$ref": "#additional_prop"
},
"property": {
"$ref": "#additional_prop"
},
"value": {
"$ref": "#additional_prop"
}
},
"required": [
"value"
],
"additionalProperties": {
"$ref": "#additional_prop"
}
}
],
"$defs": {
"additional_prop": {
"$anchor": "additional_prop",
"type": "object",
"properties": {
"description": {
"type": "string"
}
},
"required": [
"description"
],
"additionalProperties": false
}
}
},
"iglu_schema_url": {
"type": [
"string",
"null"
]
},
"product_group": {
"$ref": "../metrics/schema/product_groups.json"
},
"product_categories": {
"type": "array",
"items": {
"type": "string",
"format": "known_product_category"
}
},
"introduced_by_url": {
"type": [
"string",
"null"
],
"format": "uri"
},
"milestone": {
"type": [
"string",
"null"
],
"pattern": "^<?[0-9]+\\.[0-9]+$"
},
"status": {
"type": [
"string"
],
"enum": [
"active",
"removed"
]
},
"milestone_removed": {
"type": [
"string"
],
"pattern": "^<?[0-9]+\\.[0-9]+$"
},
"removed_by_url": {
"type": [
"string"
],
"format": "uri"
},
"classification": {
"type": [
"string",
"null"
],
"enum": [
"duo"
]
},
"tiers": {
"type": "array",
"items": {
"type": "string",
"enum": [
"free",
"premium",
"ultimate"
]
}
},
"extra_trackers": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"properties": {
"tracking_class": {
"type": "string"
},
"protected_properties": {
"type": [
"object",
"null"
],
"properties": {
"description": {
"type": "string"
}
}
}
}
}
}
},
"allOf": [
{
"$ref": "schema/status.json"
}
]
}