2023-01-27 17:19:27 +01:00
import { FromSchema } from 'json-schema-to-ts' ;
import { parametersSchema } from './parameters-schema' ;
import { variantSchema } from './variant-schema' ;
import { overrideSchema } from './override-schema' ;
import { featureStrategySchema } from './feature-strategy-schema' ;
import { featureSchema } from './feature-schema' ;
import { constraintSchema } from './constraint-schema' ;
import { environmentSchema } from './environment-schema' ;
import { featureEnvironmentSchema } from './feature-environment-schema' ;
import { projectStatsSchema } from './project-stats-schema' ;
export const projectOverviewSchema = {
$id : '#/components/schemas/projectOverviewSchema' ,
type : 'object' ,
additionalProperties : false ,
required : [ 'version' , 'name' ] ,
2023-02-10 15:05:57 +01:00
description :
'A high-level overview of a project. It contains information such as project statistics, the name of the project, what members and what features it contains, etc.' ,
2023-01-27 17:19:27 +01:00
properties : {
stats : {
$ref : '#/components/schemas/projectStatsSchema' ,
2023-02-10 15:05:57 +01:00
description : 'Project statistics' ,
2023-01-27 17:19:27 +01:00
} ,
version : {
type : 'number' ,
2023-02-10 15:05:57 +01:00
example : 1 ,
2023-01-27 17:19:27 +01:00
} ,
name : {
type : 'string' ,
2023-02-10 15:05:57 +01:00
example : 'dx-squad' ,
description : 'The name of this project' ,
2023-01-27 17:19:27 +01:00
} ,
description : {
type : 'string' ,
2023-02-10 15:05:57 +01:00
nullable : true ,
example : 'DX squad feature release' ,
description : 'Additional information about the project' ,
2023-01-27 17:19:27 +01:00
} ,
2023-03-16 15:29:52 +01:00
mode : {
type : 'string' ,
enum : [ 'open' , 'protected' ] ,
example : 'open' ,
description :
'A mode of the project affecting what actions are possible in this project' ,
} ,
2023-01-27 17:19:27 +01:00
members : {
type : 'number' ,
2023-02-10 15:05:57 +01:00
example : 4 ,
description : 'The number of members this project has' ,
2023-01-27 17:19:27 +01:00
} ,
health : {
type : 'number' ,
2023-02-10 15:05:57 +01:00
example : 50 ,
description :
"An indicator of the [project's health](https://docs.getunleash.io/reference/technical-debt#health-rating) on a scale from 0 to 100" ,
2023-01-27 17:19:27 +01:00
} ,
environments : {
type : 'array' ,
items : {
type : 'string' ,
} ,
2023-02-10 15:05:57 +01:00
example : [ 'development' , 'production' ] ,
description : 'The environments that are enabled for this project' ,
2023-01-27 17:19:27 +01:00
} ,
features : {
type : 'array' ,
items : {
$ref : '#/components/schemas/featureSchema' ,
} ,
2023-02-10 15:05:57 +01:00
description :
'The full list of features in this project (excluding archived features)' ,
2023-01-27 17:19:27 +01:00
} ,
updatedAt : {
type : 'string' ,
format : 'date-time' ,
nullable : true ,
2023-02-10 15:05:57 +01:00
example : '2023-02-10T08:36:35.262Z' ,
2023-01-27 17:19:27 +01:00
} ,
favorite : {
type : 'boolean' ,
2023-02-10 15:05:57 +01:00
example : true ,
description :
'`true` if the project was favorited, otherwise `false`.' ,
2023-01-27 17:19:27 +01:00
} ,
} ,
components : {
schemas : {
constraintSchema ,
environmentSchema ,
featureSchema ,
featureEnvironmentSchema ,
overrideSchema ,
parametersSchema ,
featureStrategySchema ,
variantSchema ,
projectStatsSchema ,
} ,
} ,
} as const ;
export type ProjectOverviewSchema = FromSchema < typeof projectOverviewSchema > ;