1. Introduction

Learning dashboard RESTful services

2. Strategic Indicators

2.1. Get current evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].dbId

Number

Strategic indicator database identifier

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].confidence80

Null

Strategic indicator forecasting 80% confidence interval

[].confidence95

Null

Strategic indicator forecasting 95% confidence interval

[].value_description

String

Readable strategic indicator value and category

[].rationale

String

Strategic indicator evaluation rationale

[].probabilities

Array

Strategic indicator categories list

[].probabilities[].id

Number

Strategic indicator category identifier

[].probabilities[].label

String

Strategic indicator category label

[].probabilities[].value

Null

Strategic indicator category probability

[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].date

Array

Strategic indicator assessment date

[].datasource

String

Strategic indicator source of data

[].categories_description

String

Array with the strategic indicator categories and thresholds

[].hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

[].hasFeedback

Boolean

Does the strategic indicator have any feedback

[].forecastingError

Null

Errors in the forecasting

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Length: 1065
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "processperformance",
  "dbId" : 1,
  "name" : "Process Performance",
  "description" : "Performance of the processes involved in the development",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : null,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : null,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : null,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "date" : [ 2019, 7, 7 ],
  "datasource" : "Q-Rapdis Dashboard",
  "categories_description" : "[Good (0,67), Neutral (0,33), Bad (0,00)]",
  "hasBN" : false,
  "hasFeedback" : false,
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingFactors" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response categories error

HTTP/1.1 409 Conflict

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.2. Get one current evaluation

Path parameters

Table 1. /api/strategicIndicators/{id}/current
Parameter Description

id

Strategic Indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/current?prj=test' -i -X GET

Response fields

Path Type Description

id

String

Strategic indicator identifier

dbId

Number

Strategic indicator database identifier

name

String

Strategic indicator name

description

String

Strategic indicator description

value.first

Number

Strategic indicator numerical value

value.second

String

Strategic indicator category

confidence80

Null

Strategic indicator forecasting 80% confidence interval

confidence95

Null

Strategic indicator forecasting 95% confidence interval

value_description

String

Readable strategic indicator value and category

rationale

String

Strategic indicator evaluation rationale

probabilities

Array

Strategic indicator categories list

probabilities[].id

Number

Strategic indicator category identifier

probabilities[].label

String

Strategic indicator category label

probabilities[].value

Null

Strategic indicator category probability

probabilities[].color

String

Strategic indicator category hexadecimal color

probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

date

Array

Strategic indicator assessment date

datasource

String

Strategic indicator source of data

categories_description

String

Array with the strategic indicator categories and thresholds

hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

hasFeedback

Boolean

Does the strategic indicator have any feedback

forecastingError

Null

Errors in the forecasting

mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Length: 1061
Content-Type: application/json;charset=UTF-8

{
  "id" : "processperformance",
  "dbId" : 1,
  "name" : "Process Performance",
  "description" : "Performance of the processes involved in the development",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : null,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : null,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : null,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "date" : [ 2019, 7, 7 ],
  "datasource" : "Q-Rapdis Dashboard",
  "categories_description" : "[Good (0,67), Neutral (0,33), Bad (0,00)]",
  "hasBN" : false,
  "hasFeedback" : false,
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingFactors" : null
}

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response categories error

HTTP/1.1 409 Conflict

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.3. Get historical evaluation

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].dbId

Number

Strategic indicator database identifier

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].confidence80

Null

Strategic indicator forecasting 80% confidence interval

[].confidence95

Null

Strategic indicator forecasting 95% confidence interval

[].value_description

String

Readable strategic indicator value and category

[].rationale

String

Strategic indicator evaluation rationale

[].probabilities

Array

Strategic indicator categories list

[].probabilities[].id

Number

Strategic indicator category identifier

[].probabilities[].label

String

Strategic indicator category label

[].probabilities[].value

Null

Strategic indicator category probability

[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].date

Array

Strategic indicator assessment date

[].datasource

String

Strategic indicator source of data

[].categories_description

String

Array with the strategic indicator categories and thresholds

[].hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

[].hasFeedback

Boolean

Does the strategic indicator have any feedback

[].forecastingError

Null

Errors in the forecasting

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Length: 1065
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "processperformance",
  "dbId" : 1,
  "name" : "Process Performance",
  "description" : "Performance of the processes involved in the development",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : null,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : null,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : null,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "date" : [ 2019, 7, 7 ],
  "datasource" : "Q-Rapdis Dashboard",
  "categories_description" : "[Good (0,67), Neutral (0,33), Bad (0,00)]",
  "hasBN" : false,
  "hasFeedback" : false,
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingFactors" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response categories error

HTTP/1.1 409 Conflict

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.4. Get current and historical evaluation

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/current_and_historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].dbId

Number

Strategic indicator database identifier

[].prjName

String

Strategic indicator project name

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].currentValue.first

Number

Strategic indicator numerical current value

[].currentValue.second

String

Strategic indicator current value category

[].currentValueDescription

String

Readable strategic indicator current value and category

[].currentRationale

String

Strategic indicator current evaluation rationale

[].probabilities

Array

Strategic indicator categories list

[].probabilities[].id

Number

Strategic indicator category identifier

[].probabilities[].label

String

Strategic indicator category label

[].probabilities[].value

Null

Strategic indicator category probability

[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].currentDate

Array

Strategic indicator current assessment date

[].historicalDataList

Array

List with all strategic indicator historical evaluations

[].historicalDataList[].value.first

Number

Strategic indicator numerical historical value

[].historicalDataList[].value.second

String

Strategic indicator historical value category

[].historicalDataList[].valueDescription

String

Readable strategic indicator historical value and category

[].historicalDataList[].rationale

String

Strategic indicator historical evaluation rationale

[].historicalDataList[].date

Array

Strategic indicator historical assessment date

HTTP response

HTTP/1.1 200 OK
Content-Length: 1079
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "processperformance",
  "dbId" : 1,
  "prjName" : "Test",
  "name" : "Process Performance",
  "description" : "Performance of the processes involved in the development",
  "currentValue" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "currentValueDescription" : "Good (0.80)",
  "currentRationale" : "factors: {...}, formula: ..., value: ..., category: ...",
  "currentDate" : [ 2019, 7, 7 ],
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : null,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : null,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : null,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "historicalDataList" : [ {
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "valueDescription" : "Good (0.80)",
    "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
    "date" : [ 2019, 7, 7 ]
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response categories error

HTTP/1.1 409 Conflict

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.5. Get prediction evaluation

Request parameters

Parameter Description

prj

Project external identifier

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].dbId

Number

Strategic indicator database identifier

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].confidence80

Object

Strategic indicator forecasting 80% confidence interval

[].confidence80.first

Number

Strategic indicator forecasting 80% confidence interval higher values

[].confidence80.second

Number

Strategic indicator forecasting 80% confidence interval lower values

[].confidence95

Object

Strategic indicator forecasting 95% confidence interval

[].confidence95.first

Number

Strategic indicator forecasting 95% confidence interval higher values

[].confidence95.second

Number

Strategic indicator forecasting 95% confidence interval lower values

[].value_description

String

Readable strategic indicator value and category

[].rationale

String

Strategic indicator evaluation rationale

[].probabilities

Array

Strategic indicator categories list

[].probabilities[].id

Number

Strategic indicator category identifier

[].probabilities[].label

String

Strategic indicator category label

[].probabilities[].value

Number

Strategic indicator category probability

[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].date

Array

Strategic indicator assessment date

[].datasource

String

Strategic indicator source of data

[].categories_description

String

Array with the strategic indicator categories and thresholds

[].hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

[].hasFeedback

Boolean

Does the strategic indicator have any feedback

[].forecastingError

Null

Errors in the forecasting

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Length: 1115
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "processperformance",
  "dbId" : 1,
  "name" : "Process Performance",
  "description" : "Performance of the processes involved in the development",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "rationale" : "Forecast",
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : 0.8,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : 0.2,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : 0.0,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "date" : [ 2019, 7, 7 ],
  "datasource" : "Forecast",
  "categories_description" : "[Good (0,67), Neutral (0,33), Bad (0,00)]",
  "hasBN" : false,
  "hasFeedback" : false,
  "confidence80" : {
    "first" : 0.97473043,
    "second" : 0.9745246
  },
  "confidence95" : {
    "first" : 0.9747849,
    "second" : 0.97447014
  },
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingFactors" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

2.6. Get detailed current evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/qualityFactors/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

String

Strategic indicator name

[].date

Array

Strategic indicator assessment date

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].value_description

String

Readable strategic indicator value and category

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

[].factors

Array

Quality factors that compose the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

String

Quality factor name

[].factors[].description

String

Quality factor description

[].factors[].value.first

Number

Quality factor numerical value

[].factors[].value.second

String

Quality factor category

[].factors[].value_description

String

Readable quality factor value

[].factors[].date

Array

Quality factor evaluation date

[].factors[].datasource

Null

Quality factor source of data

[].factors[].rationale

String

Quality factor evaluation rationale

[].factors[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].factors[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].factors[].forecastingError

Null

Description of forecasting errors

[].factors[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].factors[].missingMetrics

Null

Metrics without assessment

[].factors[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].factors[].formattedDate

String

Readable quality factor evaluation date

[].factors[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 884

[ {
  "id" : "processperformance",
  "name" : "Process Performance",
  "date" : [ 2019, 7, 7 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingFactors" : null,
  "factors" : [ {
    "id" : "testingperformance",
    "name" : "Testing Performance",
    "description" : "Performance of the tests",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingMetrics" : null,
    "type" : null,
    "strategicIndicators" : [ "processperformance" ],
    "formattedDate" : "2023-11-19"
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.7. Get one detailed current evaluation

Path parameters

Table 1. /api/strategicIndicators/{id}/qualityFactors/current
Parameter Description

id

Strategic indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/qualityFactors/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

String

Strategic indicator name

[].date

Array

Strategic indicator assessment date

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].value_description

String

Readable strategic indicator value and category

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

[].factors

Array

Quality factors that compose the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

String

Quality factor name

[].factors[].description

String

Quality factor description

[].factors[].value.first

Number

Quality factor numerical value

[].factors[].value.second

String

Quality factor category

[].factors[].value_description

String

Readable quality factor value

[].factors[].date

Array

Quality factor evaluation date

[].factors[].datasource

Null

Quality factor source of data

[].factors[].rationale

String

Quality factor evaluation rationale

[].factors[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].factors[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].factors[].forecastingError

Null

Description of forecasting errors

[].factors[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].factors[].missingMetrics

Null

Metrics without assessment

[].factors[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].factors[].formattedDate

String

Readable quality factor evaluation date

[].factors[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 884

[ {
  "id" : "processperformance",
  "name" : "Process Performance",
  "date" : [ 2019, 7, 7 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingFactors" : null,
  "factors" : [ {
    "id" : "testingperformance",
    "name" : "Testing Performance",
    "description" : "Performance of the tests",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingMetrics" : null,
    "type" : null,
    "strategicIndicators" : [ "processperformance" ],
    "formattedDate" : "2023-11-19"
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.8. Get detailed historical evaluation

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/qualityFactors/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

String

Strategic indicator name

[].date

Array

Strategic indicator assessment date

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].value_description

String

Readable strategic indicator value and category

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

[].factors

Array

Quality factors that compose the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

String

Quality factor name

[].factors[].description

String

Quality factor description

[].factors[].value.first

Number

Quality factor numerical value

[].factors[].value.second

String

Quality factor category

[].factors[].value_description

String

Readable quality factor value

[].factors[].date

Array

Quality factor evaluation date

[].factors[].datasource

Null

Quality factor source of data

[].factors[].rationale

String

Quality factor evaluation rationale

[].factors[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].factors[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].factors[].forecastingError

Null

Description of forecasting errors

[].factors[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].factors[].missingMetrics

Null

Metrics without assessment

[].factors[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].factors[].formattedDate

String

Readable quality factor evaluation date

[].factors[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 884

[ {
  "id" : "processperformance",
  "name" : "Process Performance",
  "date" : [ 2019, 7, 7 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingFactors" : null,
  "factors" : [ {
    "id" : "testingperformance",
    "name" : "Testing Performance",
    "description" : "Performance of the tests",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingMetrics" : null,
    "type" : null,
    "strategicIndicators" : [ "processperformance" ],
    "formattedDate" : "2023-11-19"
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.9. Get one detailed historical evaluation

Path parameters

Table 1. /api/strategicIndicators/{id}/qualityFactors/historical
Parameter Description

id

Strategic indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/qualityFactors/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

String

Strategic indicator name

[].date

Array

Strategic indicator assessment date

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].value_description

String

Readable strategic indicator value and category

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

[].factors

Array

Quality factors that compose the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

String

Quality factor name

[].factors[].description

String

Quality factor description

[].factors[].value.first

Number

Quality factor numerical value

[].factors[].value.second

String

Quality factor category

[].factors[].value_description

String

Readable quality factor value

[].factors[].date

Array

Quality factor evaluation date

[].factors[].datasource

Null

Quality factor source of data

[].factors[].rationale

String

Quality factor evaluation rationale

[].factors[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].factors[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].factors[].forecastingError

Null

Description of forecasting errors

[].factors[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].factors[].missingMetrics

Null

Metrics without assessment

[].factors[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].factors[].formattedDate

String

Readable quality factor evaluation date

[].factors[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 884

[ {
  "id" : "processperformance",
  "name" : "Process Performance",
  "date" : [ 2019, 7, 7 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingFactors" : null,
  "factors" : [ {
    "id" : "testingperformance",
    "name" : "Testing Performance",
    "description" : "Performance of the tests",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingMetrics" : null,
    "type" : null,
    "strategicIndicators" : [ "processperformance" ],
    "formattedDate" : "2023-11-19"
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

2.10. Get detailed prediction evaluation

Request parameters

Parameter Description

prj

Project external identifier

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/qualityFactors/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

String

Strategic indicator name

[].date

Array

Strategic indicator assessment date

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].value_description

String

Readable strategic indicator value and category

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

[].factors

Array

Quality factors that compose the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

String

Quality factor name

[].factors[].description

String

Quality factor description

[].factors[].value.first

Number

Quality factor numerical value

[].factors[].value.second

String

Quality factor category

[].factors[].value_description

String

Readable quality factor value

[].factors[].date

Array

Quality factor evaluation date

[].factors[].datasource

String

Quality factor source of data

[].factors[].rationale

String

Quality factor evaluation rationale

[].factors[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].factors[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].factors[].forecastingError

Null

Description of forecasting errors

[].factors[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].factors[].missingMetrics

Null

Metrics without assessment

[].factors[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].factors[].formattedDate

String

Readable quality factor evaluation date

[].factors[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 867
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "processperformance",
  "name" : "Process Performance",
  "date" : [ 2019, 7, 7 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingFactors" : null,
  "factors" : [ {
    "id" : "testingperformance",
    "name" : "Testing Performance",
    "description" : "Performance of the tests",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "date" : [ 2023, 11, 19 ],
    "datasource" : "Forecast",
    "rationale" : "Forecast",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingMetrics" : null,
    "type" : null,
    "strategicIndicators" : [ "processperformance" ],
    "formattedDate" : "2023-11-19"
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

2.11. Get one detailed prediction evaluation

Path parameters

Table 1. /api/strategicIndicators/{id}/qualityFactors/prediction
Parameter Description

id

Strategic indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/qualityFactors/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

String

Strategic indicator name

[].date

Array

Strategic indicator assessment date

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].value_description

String

Readable strategic indicator value and category

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

[].factors

Array

Quality factors that compose the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

String

Quality factor name

[].factors[].description

String

Quality factor description

[].factors[].value.first

Number

Quality factor numerical value

[].factors[].value.second

String

Quality factor category

[].factors[].value_description

String

Readable quality factor value

[].factors[].date

Array

Quality factor evaluation date

[].factors[].datasource

String

Quality factor source of data

[].factors[].rationale

String

Quality factor evaluation rationale

[].factors[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].factors[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].factors[].forecastingError

Null

Description of forecasting errors

[].factors[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].factors[].missingMetrics

Null

Metrics without assessment

[].factors[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].factors[].formattedDate

String

Readable quality factor evaluation date

[].factors[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 867
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "processperformance",
  "name" : "Process Performance",
  "date" : [ 2019, 7, 7 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingFactors" : null,
  "factors" : [ {
    "id" : "testingperformance",
    "name" : "Testing Performance",
    "description" : "Performance of the tests",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "date" : [ 2023, 11, 19 ],
    "datasource" : "Forecast",
    "rationale" : "Forecast",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingMetrics" : null,
    "type" : null,
    "strategicIndicators" : [ "processperformance" ],
    "formattedDate" : "2023-11-19"
  } ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

2.12. Get all strategic indicators

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators?prj=test&profile=null' -i -X GET

Response fields

Path Type Description

[].id

Number

Strategic indicator identifier

[].externalId

String

Strategic indicator external identifier

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].threshold

Null

Strategic indicator minimum acceptable value

[].network

Null

Strategic indicator bayesian network

[].qualityFactors

Array

List of the quality factors composing the strategic indicator

[].weighted

Boolean

Strategic indicator is weighted or not

[].qualityFactorsWeights

Array

List of the quality factors composing the strategic indicator with their corresponding weights

HTTP response

HTTP/1.1 200 OK
Content-Length: 318
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "externalId" : "productquality",
  "name" : "Product Quality",
  "description" : "Quality of the product built",
  "threshold" : null,
  "network" : null,
  "qualityFactors" : [ "1", "2", "3" ],
  "weighted" : false,
  "qualityFactorsWeights" : [ "1", "-1.0", "2", "-1.0", "3", "-1.0" ]
} ]

2.13. Get one strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}
Parameter Description

id

Strategic indicator identifier

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/1' -i -X GET

Response fields

Path Type Description

id

Number

Strategic indicator identifier

externalId

String

Strategic indicator external identifier

name

String

Strategic indicator name

description

String

Strategic indicator description

threshold

Number

Strategic indicator minimum acceptable value

network

String

Strategic indicator bayesian network

qualityFactors

Array

Strategic indicator quality factors identifiers list

weighted

Boolean

Strategic indicator’s boolean field which identify if it is weighted or not

qualityFactorsWeights

Array

Strategic indicator quality factors identifiers and weights list (-1.0 represent non weighted Strategic indicator)

HTTP response

HTTP/1.1 200 OK
Content-Length: 9263
Content-Type: application/json;charset=UTF-8

{
  "id" : 1,
  "externalId" : "productquality",
  "name" : "Product Quality",
  "description" : "Quality of the product built",
  "threshold" : 0.5,
  "network" : "Ly8gfi0+W0RORVQtMV0tPn4NCg0KLy8gRmlsZSBjcmVhdGVkIGJ5IGFuIHVubGljZW5zZWQgdXNlciB1c2luZyBOZXRpY2EgNi4wNCBvbiBNYXIgMjAsIDIwMTggYXQgMTA6NDU6MTEgVVRDLg0KDQpibmV0IHByb2R1Y3RxdWFsaXR5IHsNCkF1dG9Db21waWxlID0gVFJVRTsNCmF1dG91cGRhdGUgPSBUUlVFOw0Kd2hlbmNoYW5nZWQgPSAxNTIxNTQxMTc5Ow0KDQp2aXN1YWwgVjEgew0KCWRlZmRpc3Bmb3JtID0gQkVMSUVGQkFSUzsNCglub2RlbGFiZWxpbmcgPSBUSVRMRTsNCglOb2RlTWF4TnVtRW50cmllcyA9IDUwOw0KCW5vZGVmb250ID0gZm9udCB7c2hhcGU9ICJBcmlhbCI7IHNpemU9IDk7fTsNCglsaW5rZm9udCA9IGZvbnQge3NoYXBlPSAiQXJpYWwiOyBzaXplPSA5O307DQoJU2hvd0xpbmtTdHJlbmd0aHMgPSAxOw0KCXdpbmRvd3Bvc24gPSAoMiwgNSwgOTMyLCA2MzcpOw0KCXJlc29sdXRpb24gPSA3MjsNCglkcmF3aW5nYm91bmRzID0gKDEwODAsIDcyMCk7DQoJc2hvd3BhZ2VicmVha3MgPSBGQUxTRTsNCgl1c2VncmlkID0gVFJVRTsNCglncmlkc3BhY2UgPSAoNiwgNik7DQoJTm9kZVNldCBOb2RlIHtCdWlsdEluID0gMTsgQ29sb3IgPSAweDAwZTFlMWUxO307DQoJTm9kZVNldCBOYXR1cmUge0J1aWx0SW4gPSAxOyBDb2xvciA9IDB4MDBmOGVlZDI7fTsNCglOb2RlU2V0IERldGVybWluaXN0aWMge0J1aWx0SW4gPSAxOyBDb2xvciA9IDB4MDBkM2NhYTY7fTsNCglOb2RlU2V0IEZpbmRpbmcge0J1aWx0SW4gPSAxOyBDb2xvciA9IDB4MDBjOGM4Yzg7fTsNCglOb2RlU2V0IENvbnN0YW50IHtCdWlsdEluID0gMTsgQ29sb3IgPSAweDAwZmZmZmZmO307DQoJTm9kZVNldCBDb25zdGFudFZhbHVlIHtCdWlsdEluID0gMTsgQ29sb3IgPSAweDAwZmZmZmI0O307DQoJTm9kZVNldCBVdGlsaXR5IHtCdWlsdEluID0gMTsgQ29sb3IgPSAweDAwZmZiZGJkO307DQoJTm9kZVNldCBEZWNpc2lvbiB7QnVpbHRJbiA9IDE7IENvbG9yID0gMHgwMGRlZThmZjt9Ow0KCU5vZGVTZXQgRG9jdW1lbnRhdGlvbiB7QnVpbHRJbiA9IDE7IENvbG9yID0gMHgwMGYwZmFmYTt9Ow0KCU5vZGVTZXQgVGl0bGUge0J1aWx0SW4gPSAxOyBDb2xvciA9IDB4MDBmZmZmZmY7fTsNCglQcmludGVyU2V0dGluZyBBIHsNCgkJbWFyZ2lucyA9ICgxMjcwLCAxMjcwLCAxMjcwLCAxMjcwKTsNCgkJfTsNCgl9Ow0KDQpub2RlIGNvZGVxdWFsaXR5IHsNCglkaXNjcmV0ZSA9IFRSVUU7DQoJc3RhdGVzID0gKExvdywgTWVkaXVtLCBIaWdoKTsNCglraW5kID0gTkFUVVJFOw0KCWNoYW5jZSA9IENIQU5DRTsNCglwYXJlbnRzID0gKCk7DQoJcHJvYnMgPSANCgkJLy8gTG93ICAgICAgICAgIE1lZGl1bSAgICAgICBIaWdoICAgICAgICAgDQoJCSAgKDAuMjUsICAgICAgICAwLjQsICAgICAgICAgMC4zNSk7DQoJd2hlbmNoYW5nZWQgPSAxNTIxNTQxMTUxOw0KCWJlbGllZiA9ICgwLjI1LCAwLjQsIDAuMzUpOw0KCXZpc3VhbCBWMSB7DQoJCWNlbnRlciA9ICg5NiwgNDIpOw0KCQloZWlnaHQgPSAxOw0KCQl9Ow0KCX07DQoNCm5vZGUgc29mdHdhcmVzdGFiaWxpdHkgew0KCWRpc2NyZXRlID0gVFJVRTsNCglzdGF0ZXMgPSAoTG93LCBNZWRpdW0sIEhpZ2gpOw0KCWtpbmQgPSBOQVRVUkU7DQoJY2hhbmNlID0gQ0hBTkNFOw0KCXBhcmVudHMgPSAoKTsNCglwcm9icyA9IA0KCQkvLyBMb3cgICAgICAgICAgTWVkaXVtICAgICAgIEhpZ2ggICAgICAgICANCgkJICAoMC4xLCAgICAgICAgIDAuMywgICAgICAgICAwLjYpOw0KCXdoZW5jaGFuZ2VkID0gMTUyMTU0MTE2NjsNCgliZWxpZWYgPSAoMC4xLCAwLjMsIDAuNik7DQoJdmlzdWFsIFYxIHsNCgkJY2VudGVyID0gKDM2NiwgNDIpOw0KCQloZWlnaHQgPSA0Ow0KCQl9Ow0KCX07DQoNCm5vZGUgdGVzdGluZ3N0YXR1cyB7DQoJZGlzY3JldGUgPSBUUlVFOw0KCXN0YXRlcyA9IChMb3csIE1lZGl1bSwgSGlnaCk7DQoJa2luZCA9IE5BVFVSRTsNCgljaGFuY2UgPSBDSEFOQ0U7DQoJcGFyZW50cyA9ICgpOw0KCXByb2JzID0gDQoJCS8vIExvdyAgICAgICAgICBNZWRpdW0gICAgICAgSGlnaCAgICAgICAgIA0KCQkgICgwLjIsICAgICAgICAgMC42LCAgICAgICAgIDAuMik7DQoJd2hlbmNoYW5nZWQgPSAxNTIxNTQxMTc5Ow0KCWJlbGllZiA9ICgwLjIsIDAuNiwgMC4yKTsNCgl2aXN1YWwgVjEgew0KCQljZW50ZXIgPSAoNjE4LCA0Mik7DQoJCWhlaWdodCA9IDI7DQoJCX07DQoJfTsNCg0Kbm9kZSBwcm9kdWN0cXVhbGl0eSB7DQoJZGlzY3JldGUgPSBUUlVFOw0KCXN0YXRlcyA9IChMb3csIE1lZGl1bSwgSGlnaCk7DQoJa2luZCA9IE5BVFVSRTsNCgljaGFuY2UgPSBDSEFOQ0U7DQoJcGFyZW50cyA9IChjb2RlcXVhbGl0eSwgc29mdHdhcmVzdGFiaWxpdHksIHRlc3RpbmdzdGF0dXMpOw0KCXByb2JzID0gDQoJCS8vIExvdyAgICAgICAgICBNZWRpdW0gICAgICAgSGlnaCAgICAgICAgICAvLyBDb2RlUXVhbGl0eSBTdGFiaWxpdHkgVGVzdGluZ1N0YXR1cyANCgkJICAoMSwgICAgICAgICAgIDAsICAgICAgICAgICAwLCAgICAgICAgICAgIC8vIExvdyAgICAgICAgIExvdyAgICAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjk1LCAgICAgICAgMC4wNSwgICAgICAgIDAsICAgICAgICAgICAgLy8gTG93ICAgICAgICAgTG93ICAgICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuNzEsICAgICAgICAwLjA5LCAgICAgICAgMC4yLCAgICAgICAgICAvLyBMb3cgICAgICAgICBMb3cgICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMC44LCAgICAgICAgIDAuMiwgICAgICAgICAwLCAgICAgICAgICAgIC8vIExvdyAgICAgICAgIE1lZGl1bSAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjU3Mzc1LCAgICAgMC4zMzM3NSwgICAgIDAuMDkyNSwgICAgICAgLy8gTG93ICAgICAgICAgTWVkaXVtICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuNDU1LCAgICAgICAwLjI3NzUsICAgICAgMC4yNjc1LCAgICAgICAvLyBMb3cgICAgICAgICBNZWRpdW0gICAgSGlnaCAgICAgICAgICANCgkJICAgMC4zOTYyNSwgICAgIDAuNDE1LCAgICAgICAwLjE4ODc1LCAgICAgIC8vIExvdyAgICAgICAgIEhpZ2ggICAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjM5OTM3NSwgICAgMC40MTgxMjUsICAgIDAuMTgyNSwgICAgICAgLy8gTG93ICAgICAgICAgSGlnaCAgICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuMjgwNjI1LCAgICAwLjM2MTg3NSwgICAgMC4zNTc1LCAgICAgICAvLyBMb3cgICAgICAgICBIaWdoICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMC42NTA2MjUsICAgIDAuMjI4MTI1LCAgICAwLjEyMTI1LCAgICAgIC8vIE1lZGl1bSAgICAgIExvdyAgICAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjk1LCAgICAgICAgMC4wNSwgICAgICAgIDAsICAgICAgICAgICAgLy8gTWVkaXVtICAgICAgTG93ICAgICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuNTM1LCAgICAgICAwLjE3NSwgICAgICAgMC4yOSwgICAgICAgICAvLyBNZWRpdW0gICAgICBMb3cgICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMC4zOTU2MjUsICAgIDAuNDE1NjI1LCAgICAwLjE4ODc1LCAgICAgIC8vIE1lZGl1bSAgICAgIE1lZGl1bSAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjM5ODc1LCAgICAgMC40MTg3NSwgICAgIDAuMTgyNSwgICAgICAgLy8gTWVkaXVtICAgICAgTWVkaXVtICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuMjgsICAgICAgICAwLjM2MjUsICAgICAgMC4zNTc1LCAgICAgICAvLyBNZWRpdW0gICAgICBNZWRpdW0gICAgSGlnaCAgICAgICAgICANCgkJICAgMC4wNSwgICAgICAgIDAuODUsICAgICAgICAwLjEsICAgICAgICAgIC8vIE1lZGl1bSAgICAgIEhpZ2ggICAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjIyNDM3NSwgICAgMC41MDMxMjUsICAgIDAuMjcyNSwgICAgICAgLy8gTWVkaXVtICAgICAgSGlnaCAgICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAsICAgICAgICAgICAwLjIsICAgICAgICAgMC44LCAgICAgICAgICAvLyBNZWRpdW0gICAgICBIaWdoICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMC41NTA2MjUsICAgIDAuMzM4MTI1LCAgICAwLjExMTI1LCAgICAgIC8vIEhpZ2ggICAgICAgIExvdyAgICAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLjU1Mzc1LCAgICAgMC4zNDEyNSwgICAgIDAuMTA1LCAgICAgICAgLy8gSGlnaCAgICAgICAgTG93ICAgICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuNDM1LCAgICAgICAwLjI4NSwgICAgICAgMC4yOCwgICAgICAgICAvLyBIaWdoICAgICAgICBMb3cgICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMC4yOTU2MjUsICAgIDAuNTI1NjI1LCAgICAwLjE3ODc1LCAgICAgIC8vIEhpZ2ggICAgICAgIE1lZGl1bSAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLCAgICAgICAgICAgMC43LCAgICAgICAgIDAuMywgICAgICAgICAgLy8gSGlnaCAgICAgICAgTWVkaXVtICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuMTgsICAgICAgICAwLjQ3MjUsICAgICAgMC4zNDc1LCAgICAgICAvLyBIaWdoICAgICAgICBNZWRpdW0gICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgIDAuNiwgICAgICAgICAwLjQsICAgICAgICAgIC8vIEhpZ2ggICAgICAgIEhpZ2ggICAgICBMb3cgICAgICAgICAgIA0KCQkgICAwLCAgICAgICAgICAgMC45LCAgICAgICAgIDAuMSwgICAgICAgICAgLy8gSGlnaCAgICAgICAgSGlnaCAgICAgIE1lZGl1bSAgICAgICAgDQoJCSAgIDAuMDA1NjI1LCAgICAwLjU1Njg3NTEsICAgMC40Mzc1KTsgICAgICAvLyBIaWdoICAgICAgICBIaWdoICAgICAgSGlnaCAgICAgICAgICA7DQoJbnVtY2FzZXMgPSANCgkJICAgICAgICAgICAgICAgICAvLyBDb2RlUXVhbGl0eSBTdGFiaWxpdHkgVGVzdGluZ1N0YXR1cyANCgkJICAoMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBMb3cgICAgICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBMb3cgICAgICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBMb3cgICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBNZWRpdW0gICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBNZWRpdW0gICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBNZWRpdW0gICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBIaWdoICAgICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBIaWdoICAgICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBMb3cgICAgICAgICBIaWdoICAgICAgSGlnaCAgICAgICAgICANCgkJICAgLTEsICAgICAgICAgICAvLyBNZWRpdW0gICAgICBMb3cgICAgICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBMb3cgICAgICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBMb3cgICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBNZWRpdW0gICAgTG93ICAgICAgICAgICANCgkJICAgLTEsICAgICAgICAgICAvLyBNZWRpdW0gICAgICBNZWRpdW0gICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBNZWRpdW0gICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBIaWdoICAgICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBIaWdoICAgICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBNZWRpdW0gICAgICBIaWdoICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBMb3cgICAgICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBMb3cgICAgICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBMb3cgICAgICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBNZWRpdW0gICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBNZWRpdW0gICAgTWVkaXVtICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBNZWRpdW0gICAgSGlnaCAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBIaWdoICAgICAgTG93ICAgICAgICAgICANCgkJICAgMCwgICAgICAgICAgICAvLyBIaWdoICAgICAgICBIaWdoICAgICAgTWVkaXVtICAgICAgICANCgkJICAgMSk7ICAgICAgICAgICAvLyBIaWdoICAgICAgICBIaWdoICAgICAgSGlnaCAgICAgICAgICA7DQoJd2hlbmNoYW5nZWQgPSAwOw0KCWJlbGllZiA9ICgwLjI2NDM2NjIsIDAuNDk4OTk2MywgMC4yMzY2Mzc1KTsNCgl2aXN1YWwgVjEgew0KCQljZW50ZXIgPSAoMzcyLCAyNTgpOw0KCQloZWlnaHQgPSAzOw0KCQl9Ow0KCX07DQpFbGltT3JkZXIgPSAoY29kZXF1YWxpdHksIHNvZnR3YXJlc3RhYmlsaXR5LCB0ZXN0aW5nc3RhdHVzLCBwcm9kdWN0cXVhbGl0eSk7DQp9Ow0K",
  "qualityFactors" : [ "1", "2", "3" ],
  "weighted" : false,
  "qualityFactorsWeights" : [ "1", "-1.0", "2", "-1.0", "3", "-1.0" ]
}

2.14. Add strategic indicator

Request parameters

Parameter Description

prj

Project external identifier

name

Strategic indicator name

description

Strategic indicator description

threshold

Strategic indicator minimum acceptable value

quality_factors

Comma separated values of the quality factors identifiers which belong to the strategic indicator

Request parts

Part Description

network

Bayesian network file

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -F 'network=@network.dne;type=text/plain' \
    -F 'prj=test' \
    -F 'name=Product Quality' \
    -F 'description=Quality of the product built' \
    -F 'threshold=0.5' \
    -F 'quality_factors=codequality,softwarestability,testingstatus'

HTTP response

HTTP/1.1 201 Created

HTTP response assessment error

HTTP/1.1 500 Internal Server Error

2.15. Update strategic indicator

Request parameters

Parameter Description

name

Strategic Indicator name

description

Strategic Indicator description

threshold

Strategic Indicator minimum acceptable value

quality_factors

Comma separated values of the quality factors identifiers which belong to the strategic indicator and their corresponding weights (-1 if no weighted)

Request parts

Part Description

network

Bayesian network file

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/1' -i -X PUT \
    -H 'Content-Type: multipart/form-data' \
    -F 'network=@network.dne;type=text/plain' \
    -F 'name=Product Quality' \
    -F 'description=Quality of the product built' \
    -F 'threshold=0.5' \
    -F 'quality_factors=1,-1.0,2,-1.0,3,-1.0'

HTTP response

HTTP/1.1 200 OK

HTTP response missing parameter

HTTP/1.1 400 Bad Request

HTTP response data integrity violation

HTTP/1.1 409 Conflict

HTTP response assessment error

HTTP/1.1 500 Internal Server Error

2.16. Delete strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}
Parameter Description

id

Strategic indicator identifier

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

2.17. Fetch strategic indicators

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/fetch' -i -X GET

HTTP response

HTTP/1.1 200 OK

2.18. Assess strategic indicators

Request parameters

Parameter Description

prj

Project external identifier

train

Indicates if the forecasting models should be trained: NONE for no training, ONE for one method training and ALL for all methods training (Optional)

from

Date of the day (yyyy-mm-dd) from which execute several assessments, one for each day since today (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/assess?prj=test&train=NONE' -i -X GET

HTTP response

HTTP/1.1 200 OK

HTTP response bad parameter

HTTP/1.1 400 Bad Request

HTTP response assessment error

HTTP/1.1 500 Internal Server Error

2.19. Simulate strategic indicators assessment

Request parameters

Parameter Description

prj

Project external identifier

factors

List of the names and new values of the quality factors

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/simulate' -i -X POST \
    -d 'prj=test&factors=%5B%7B%22id%22%3A%22processperformance%22%2C%22value%22%3A%220.9%22%7D%5D'

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].dbId

Number

Strategic indicator database identifier

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].confidence80

Null

Strategic indicator forecasting 80% confidence interval

[].confidence95

Null

Strategic indicator forecasting 95% confidence interval

[].value_description

String

Readable strategic indicator value and category

[].rationale

String

Strategic indicator evaluation rationale

[].probabilities

Array

Strategic indicator categories list

[].probabilities[].id

Number

Strategic indicator category identifier

[].probabilities[].label

String

Strategic indicator category label

[].probabilities[].value

Null

Strategic indicator category probability

[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].date

Null

Strategic indicator assessment date

[].datasource

String

Strategic indicator source of data

[].categories_description

String

Array with the strategic indicator categories and thresholds

[].hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

[].hasFeedback

Boolean

Does the strategic indicator have any feedback

[].forecastingError

Null

Errors in the forecasting

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1006

[ {
  "id" : "processperformance",
  "dbId" : 1,
  "name" : "Process Performance",
  "description" : "Performance of the processes involved in the development",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : null,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : null,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : null,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "date" : null,
  "datasource" : "Simulation",
  "categories_description" : "",
  "hasBN" : false,
  "hasFeedback" : false,
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingFactors" : null
} ]

HTTP response simulation error

HTTP/1.1 500 Internal Server Error

2.20. Get quality model

Request parameters

Parameter Description

prj

Project external identifier

date

Date (yyyy-mm-dd) of the quality model evaluation (Optional)

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/qualityModel?prj=test&date=2019-07-07&profile=null' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].name

Null

Strategic indicator name

[].value

String

Strategic indicator assessment value

[].valueDescription

String

Strategic indicator assessment value and category

[].color

String

Strategic indicator category color

[].factors

Array

List with all the quality factors composing the strategic indicator

[].factors[].id

String

Quality factor identifier

[].factors[].name

Null

Quality factor name

[].factors[].weightedValue

String

Quality factor weighted value

[].factors[].weight

String

Quality factor weight in the strategic indicator assessment

[].factors[].assessmentValue

Null

Quality factor assessment value

[].factors[].metrics

Array

List with all the metrics composing the quality factor

[].factors[].metrics[].id

String

Metric identifier

[].factors[].metrics[].name

Null

Metric name

[].factors[].metrics[].weightedValue

String

Metric weighted value

[].factors[].metrics[].weight

String

Metric weight in the computation of the quality factor

[].factors[].metrics[].assessmentValue

Null

Metric assessment value

HTTP response

HTTP/1.1 200 OK
Content-Length: 459
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "blocking",
  "name" : null,
  "value" : "0.8",
  "valueDescription" : "Good (0.8)",
  "color" : "#00ff00",
  "factors" : [ {
    "id" : "blockingcode",
    "name" : null,
    "weightedValue" : "0.8",
    "weight" : "1",
    "assessmentValue" : null,
    "metrics" : [ {
      "id" : "nonblockingfiles",
      "name" : null,
      "weightedValue" : "0.8",
      "weight" : "1",
      "assessmentValue" : null
    } ]
  } ]
} ]

2.21. Get strategic indicator categories

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/categories' -i -X GET

Response fields

Path Type Description

[].id

Number

Category identifier

[].name

String

Category name

[].color

String

Category hexadecimal color

HTTP response

HTTP/1.1 200 OK
Content-Length: 193
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 10,
  "name" : "Good",
  "color" : "#00ff00"
}, {
  "id" : 11,
  "name" : "Neutral",
  "color" : "#ff8000"
}, {
  "id" : 12,
  "name" : "Bad",
  "color" : "#ff0000"
} ]

2.22. Set strategic indicator categories

Request fields

Path Type Description

[].name

String

Strategic indicator category name

[].color

String

Strategic indicator category color

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/categories' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '[ {
  "color" : "#00ff00",
  "name" : "Good"
}, {
  "color" : "#ff8000",
  "name" : "Neutral"
}, {
  "color" : "#ff0000",
  "name" : "Bad"
} ]'

HTTP response

HTTP/1.1 201 Created

HTTP response not enough categories

HTTP/1.1 409 Conflict

3. Quality Factors

3.1. Import factors

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/import' -i -X GET

HTTP response

HTTP/1.1 200 OK

3.2. Get current evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].value.first

Number

Quality factor numerical value

[].value.second

String

Quality factor category

[].value_description

String

Readable quality factor value

[].date

Array

Quality factor evaluation date

[].datasource

Null

Quality factor source of data

[].rationale

String

Quality factor evaluation rationale

[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].forecastingError

Null

Description of forecasting errors

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].formattedDate

String

Readable quality factor evaluation date

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 570
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "description" : "Performance of the tests",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "type" : null,
  "strategicIndicators" : [ "processperformance" ],
  "formattedDate" : "2023-11-19"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.3. Get one current evaluation

Path parameters

Table 1. /api/qualityFactors/{id}/current
Parameter Description

id

Quality factor identifier

Request parameters

Parameter Description

prj

Project external identifier

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/testingperformance/current?prj=test' -i -X GET

Response fields

Path Type Description

id

String

Quality factor identifier

name

String

Quality factor name

description

String

Quality factor description

value.first

Number

Quality factor numerical value

value.second

String

Quality factor category

value_description

String

Readable quality factor value

date

Array

Quality factor evaluation date

datasource

Null

Quality factor source of data

rationale

String

Quality factor evaluation rationale

confidence80

Null

Quality factor forecasting 80% confidence interval

confidence95

Null

Quality factor forecasting 95% confidence interval

forecastingError

Null

Description of forecasting errors

mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

missingMetrics

Null

Metrics without assessment

strategicIndicators

Array

List of the strategic indicators that use this quality factor

formattedDate

String

Readable quality factor evaluation date

type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 566
Content-Type: application/json;charset=UTF-8

{
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "description" : "Performance of the tests",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "type" : null,
  "strategicIndicators" : [ "processperformance" ],
  "formattedDate" : "2023-11-19"
}

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.4. Get historical evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].value.first

Number

Quality factor numerical value

[].value.second

String

Quality factor category

[].value_description

String

Readable quality factor value

[].date

Array

Quality factor evaluation date

[].datasource

Null

Quality factor source of data

[].rationale

String

Quality factor evaluation rationale

[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].forecastingError

Null

Description of forecasting errors

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].formattedDate

String

Readable quality factor evaluation date

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 570
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "description" : "Performance of the tests",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "type" : null,
  "strategicIndicators" : [ "processperformance" ],
  "formattedDate" : "2023-11-19"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.5. Get prediction evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].value.first

Number

Quality factor numerical value

[].value.second

String

Quality factor category

[].value_description

String

Readable quality factor value

[].date

Array

Quality factor evaluation date

[].datasource

String

Quality factor source of data

[].rationale

String

Quality factor evaluation rationale

[].confidence80

Object

Quality factor forecasting 80% confidence interval

[].confidence80.first

Number

Quality factor forecasting 80% confidence interval higher values

[].confidence80.second

Number

Quality factor forecasting 80% confidence interval lower values

[].confidence95

Object

Quality factor forecasting 95% confidence interval

[].confidence95.first

Number

Quality factor forecasting 95% confidence interval higher values

[].confidence95.second

Number

Quality factor forecasting 95% confidence interval lower values

[].forecastingError

Null

Description of forecasting errors

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].formattedDate

String

Readable quality factor evaluation date

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 663

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "description" : "Performance of the tests",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "date" : [ 2023, 11, 19 ],
  "datasource" : "Forecast",
  "rationale" : "Forecast",
  "confidence80" : {
    "first" : 0.97473043,
    "second" : 0.9745246
  },
  "confidence95" : {
    "first" : 0.9747849,
    "second" : 0.97447014
  },
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "type" : null,
  "strategicIndicators" : [ "processperformance" ],
  "formattedDate" : "2023-11-19"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.6. Get detailed current evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/metrics/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 729
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : "testType"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.7. Get one detailed current evaluation

Path parameters

Table 1. /api/qualityFactors/{id}/metrics/current
Parameter Description

id

Quality factor identifier

Request parameters

Parameter Description

prj

Project external identifier

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/testingperformance/metrics/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Array

Quality factor evaluation date

[].value.first

Number

Quality factor numerical value

[].value.second

String

Quality factor category

[].value_description

String

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 789
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : [ 2023, 11, 19 ],
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "description" : "Performance of the tests",
  "value_description" : "Good (0.80)",
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.8. Get detailed current evaluation for strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}/qualityFactors/metrics/current
Parameter Description

id

Strategic indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/qualityFactors/metrics/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 729
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : "testType"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.9. Get detailed historical evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/metrics/historical?prj=test&from=2023-11-12&to=2023-11-19' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 729
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : "testType"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.10. Get one detailed historical evaluation

Path parameters

Table 1. /api/qualityFactors/{id}/metrics/historical
Parameter Description

id

Quality factor identifier

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/testingperformance/metrics/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 723

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.11. Get detailed historical evaluation for strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}/qualityFactors/metrics/historical
Parameter Description

id

Strategic indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/qualityFactors/metrics/historical?prj=test&from=2023-11-12&to=2023-11-19' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 729
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : "testType"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.12. Get detailed prediction evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/metrics/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

String

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Object

Metric forecasting 80% confidence interval

[].metrics[].confidence80.first

Number

Metric forecasting 80% confidence interval higher values

[].metrics[].confidence80.second

Number

Metric forecasting 80% confidence interval lower values

[].metrics[].confidence95

Object

Metric forecasting 95% confidence interval

[].metrics[].confidence95.first

Number

Metric forecasting 95% confidence interval higher values

[].metrics[].confidence95.second

Number

Metric forecasting 95% confidence interval lower values

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 834
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : "Forecast",
    "rationale" : "Forecast",
    "confidence80" : {
      "first" : 0.97473043,
      "second" : 0.9745246
    },
    "confidence95" : {
      "first" : 0.9747849,
      "second" : 0.97447014
    },
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : "testType"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.13. Get one detailed prediction evaluation

Path parameters

Table 1. /api/qualityFactors/{id}/metrics/prediction
Parameter Description

id

Quality factor identifier

Request parameters

Parameter Description

prj

Project external identifier

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/testingperformance/metrics/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

String

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Object

Metric forecasting 80% confidence interval

[].metrics[].confidence80.first

Number

Metric forecasting 80% confidence interval higher values

[].metrics[].confidence80.second

Number

Metric forecasting 80% confidence interval lower values

[].metrics[].confidence95

Object

Metric forecasting 95% confidence interval

[].metrics[].confidence95.first

Number

Metric forecasting 95% confidence interval higher values

[].metrics[].confidence95.second

Number

Metric forecasting 95% confidence interval lower values

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 828
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : "Forecast",
    "rationale" : "Forecast",
    "confidence80" : {
      "first" : 0.97473043,
      "second" : 0.9745246
    },
    "confidence95" : {
      "first" : 0.9747849,
      "second" : 0.97447014
    },
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.14. Get detailed prediction evaluation for strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}/qualityFactors/metrics/prediction
Parameter Description

id

Strategic indicator identifier

Request parameters

Parameter Description

prj

Project external identifier

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/processperformance/qualityFactors/metrics/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

String

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Object

Metric forecasting 80% confidence interval

[].metrics[].confidence80.first

Number

Metric forecasting 80% confidence interval higher values

[].metrics[].confidence80.second

Number

Metric forecasting 80% confidence interval lower values

[].metrics[].confidence95

Object

Metric forecasting 95% confidence interval

[].metrics[].confidence95.first

Number

Metric forecasting 95% confidence interval higher values

[].metrics[].confidence95.second

Number

Metric forecasting 95% confidence interval lower values

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 834
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : "Forecast",
    "rationale" : "Forecast",
    "confidence80" : {
      "first" : 0.97473043,
      "second" : 0.9745246
    },
    "confidence95" : {
      "first" : 0.9747849,
      "second" : 0.97447014
    },
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : "testType"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.15. Get all quality factors

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/qualityFactors?prj=test' -i -X GET

Response fields

Path Type Description

[].id

Number

Quality factor identifier

[].externalId

String

Quality factor external identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].categoryName

String

Quality factor category

[].threshold

Null

Quality factor minimum acceptable value

[].metrics[]

Array

List of the metrics composing the quality factor

[].weighted

Boolean

Quality factor is weighted or not

[].metricsWeights

Array

List of the metrics composing the quality factor with their corresponding weights

[].type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 347
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "externalId" : "codequality",
  "name" : "codequality",
  "description" : "Quality of the implemented code",
  "threshold" : null,
  "metrics" : [ "1", "2", "3" ],
  "weighted" : false,
  "metricsWeights" : [ "1", "-1.0", "2", "-1.0", "3", "-1.0" ],
  "type" : "testType",
  "categoryName" : "Codequality category"
} ]

3.16. Get one quality factor

Path parameters

Table 1. /api/qualityFactors/{id}
Parameter Description

id

Quality factor identifier

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/1' -i -X GET

Response fields

Path Type Description

id

Number

Quality factor identifier

externalId

String

Quality factor external identifier

name

String

Quality factor name

description

String

Quality factor description

categoryName

String

Quality factor category

threshold

Number

Quality factor minimum acceptable value

metrics[]

Array

List of the metrics composing the quality factor

weighted

Boolean

Quality factor is weighted or not

metricsWeights[]

Array

List of the metrics composing the quality factor with their corresponding weights

type

String

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 342

{
  "id" : 1,
  "externalId" : "codequality",
  "name" : "codequality",
  "description" : "Quality of the implemented code",
  "threshold" : 0.3,
  "metrics" : [ "1", "2", "3" ],
  "weighted" : false,
  "metricsWeights" : [ "1", "-1.0", "2", "-1.0", "3", "-1.0" ],
  "type" : "testType",
  "categoryName" : "Codequality category"
}

3.17. Add quality factor

Request parameters

Parameter Description

prj

Project external identifier

name

Quality factor name

description

Quality factor description

category

Quality factor category

threshold

Quality factor minimum acceptable value

metrics

Comma separated values of the metrics identifiers which belong to the quality factor

type

Datasource from where the data is taken

Curl request

$ curl 'http://localhost:8080/api/qualityFactors' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -d 'prj=test&name=codequality&description=Quality+of+the+implemented+code&category=Codequality+category&threshold=0.3&metrics=duplication%2Cbugdensity%2Cfasttests&type=testType'

HTTP response

HTTP/1.1 201 Created

HTTP response assessment error

HTTP/1.1 500 Internal Server Error

3.18. Update quality factor

Request parameters

Parameter Description

name

Quality factor name

description

Quality factor description

category

Quality factor category

threshold

Quality factor minimum acceptable value

type

Datasource from where the data is taken

metrics

Comma separated values of the metrics identifiers which belong to the quality factor and their corresponding weights (-1 if no weighted)

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/1' -i -X PUT \
    -H 'Content-Type: multipart/form-data' \
    -d 'name=codequality&description=Quality+of+the+implemented+code&category=Codequality+category&threshold=0.3&metrics=1%2C-1.0%2C2%2C-1.0%2C3%2C-1.0&type=testType'

HTTP response

HTTP/1.1 200 OK

HTTP response missing parameter

HTTP/1.1 400 Bad Request

HTTP response data integrity violation

HTTP/1.1 409 Conflict

HTTP response assessment error

HTTP/1.1 500 Internal Server Error

3.19. Delete quality factor

Path parameters

Table 1. /api/qualityFactors/{id}
Parameter Description

id

Quality factor identifier

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

3.20. Simulate quality factors assessment

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

date

Date of the quality factors evaluation simulation model base

Request fields

Path Type Description

[].id

String

Metric identifier

[].value

Number

Metric value

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/simulate?prj=test&date=2019-07-07' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '[ {
  "id" : "fasttests",
  "value" : 0.7
} ]'

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].value.first

Number

Quality factor numerical value

[].value.second

String

Quality factor category

[].value_description

String

Readable quality factor value

[].date

Array

Quality factor evaluation date

[].datasource

Null

Quality factor source of data

[].rationale

String

Quality factor evaluation rationale

[].confidence80

Null

Quality factor forecasting 80% confidence interval

[].confidence95

Null

Quality factor forecasting 95% confidence interval

[].forecastingError

Null

Description of forecasting errors

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].strategicIndicators

Array

List of the strategic indicators that use this quality factor

[].formattedDate

String

Readable quality factor evaluation date

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 570
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "description" : "Performance of the tests",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "type" : null,
  "strategicIndicators" : [ "processperformance" ],
  "formattedDate" : "2023-11-19"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

3.21. Get quality factor categories

Request parameters

Parameter Description

name

Category name (Optional)

Curl request

$ curl 'http://localhost:8080/api/factors/categories?name=Default' -i -X GET

Response fields

Path Type Description

[].id

Number

Category identifier

[].name

String

Category name

[].type

String

Quality factors category type

[].color

String

Category hexadecimal color

[].upperThreshold

Number

Category upper threshold

HTTP response

HTTP/1.1 200 OK
Content-Length: 990
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 10,
  "name" : "Default",
  "color" : "#00ff00",
  "upperThreshold" : 1.0,
  "type" : "Good"
}, {
  "id" : 11,
  "name" : "Default",
  "color" : "#ff8000",
  "upperThreshold" : 0.67,
  "type" : "Neutral"
}, {
  "id" : 12,
  "name" : "Default",
  "color" : "#ff0000",
  "upperThreshold" : 0.33,
  "type" : "Bad"
}, {
  "id" : 13,
  "name" : "6 members contribution",
  "color" : "#ff0000",
  "upperThreshold" : 1.0,
  "type" : "High"
}, {
  "id" : 14,
  "name" : "6 members contribution",
  "color" : "#ff0000",
  "upperThreshold" : 0.8,
  "type" : "Up"
}, {
  "id" : 15,
  "name" : "6 members contribution",
  "color" : "#ff0000",
  "upperThreshold" : 0.5,
  "type" : "Good enough"
}, {
  "id" : 16,
  "name" : "6 members contribution",
  "color" : "#ff0000",
  "upperThreshold" : 0.3,
  "type" : "Down"
}, {
  "id" : 17,
  "name" : "6 members contribution",
  "color" : "#ff0000",
  "upperThreshold" : 0.15,
  "type" : "Low"
} ]

3.22. Set quality factor categories

Request parameters

Parameter Description

name

Category name (Optional)

Request fields

Path Type Description

[].type

String

Quality factors category type

[].color

String

Quality factors category color

[].upperThreshold

String

Quality factors category upper threshold

Curl request

$ curl 'http://localhost:8080/api/factors/categories?name=test' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '[ {
  "upperThreshold" : "1.0",
  "color" : "#00ff00",
  "type" : "Good"
}, {
  "upperThreshold" : "0.67",
  "color" : "#ff8000",
  "type" : "Neutral"
}, {
  "upperThreshold" : "0.33",
  "color" : "#ff0000",
  "type" : "Bad"
} ]'

HTTP response

HTTP/1.1 201 Created

HTTP response not enough categories

HTTP/1.1 400 Bad Request

4. Metrics

4.1. Import metrics

Curl request

$ curl 'http://localhost:8080/api/metrics/import' -i -X GET

HTTP response

HTTP/1.1 200 OK

4.2. Get current evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/metrics/current?prj=test' -i -X GET

Response fields

Path Type Description

[].id

String

Metric identifier

[].name

String

Metric name

[].description

String

Metric description

[].value

Number

Metric value

[].value_description

String

Metric readable value

[].date

Array

Metric evaluation date

[].datasource

Null

Metric source of data

[].rationale

String

Metric evaluation rationale

[].confidence80

Null

Metric forecasting 80% confidence interval

[].confidence95

Null

Metric forecasting 95% confidence interval

[].forecastingError

Null

Description of forecasting errors

[].qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 422

[ {
  "id" : "fasttests",
  "name" : "Fast Tests",
  "description" : "Percentage of tests under the testing duration threshold",
  "value" : 0.8,
  "value_description" : "0,80",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "qualityFactors" : [ "testingperformance" ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.3. Get current evaluation for students

Curl request

$ curl 'http://localhost:8080/api/metrics/students?prj=prjExternalId' -i -X GET

Response fields

Path Type Description

[].id

Null

Student identifier

[].project

Null

Project of the student

[].name

String

Name of the student

[].metrics_size

Null

Metrics size

[].identities

Object

Student identities such as Github, Taiga

[].identities.GITHUB

Object

Student Github identity

[].identities.GITHUB.data_source

String

Student Github identity data source

[].identities.GITHUB.username

String

Student Github username

[].identities.GITHUB.student

Null

Github student

[].identities.TAIGA

Object

Student Taiga identity

[].identities.TAIGA.data_source

String

Student Taiga identity data source

[].identities.TAIGA.username

String

Student Taiga username

[].identities.TAIGA.student

Null

Taiga student

[].identities.PRT

Object

Student PRT identity

[].identities.PRT.data_source

String

Student PRT identity data source

[].identities.PRT.username

String

Student PRT username

[].identities.PRT.student

Null

PRT student

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Length: 930
Content-Type: application/json;charset=UTF-8

[ {
  "id" : null,
  "name" : "student_test_name",
  "identities" : {
    "GITHUB" : {
      "username" : "username",
      "student" : null,
      "data_source" : "GITHUB"
    },
    "TAIGA" : {
      "username" : "username",
      "student" : null,
      "data_source" : "TAIGA"
    },
    "PRT" : {
      "username" : "username",
      "student" : null,
      "data_source" : "PRT"
    }
  },
  "project" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "metrics_size" : null
} ]

4.4. Get single current evaluation

Path parameters

Table 1. /api/metrics/{id}/current
Parameter Description

id

Metric identifier

Request parameters

Parameter Description

prj

Project external identifier

Curl request

$ curl 'http://localhost:8080/api/metrics/fasttests/current?prj=test' -i -X GET

Response fields

Path Type Description

id

String

Metric identifier

name

String

Metric name

description

String

Metric description

value

Number

Metric value

value_description

String

Metric readable value

date

Array

Metric evaluation date

datasource

Null

Metric source of data

rationale

String

Metric evaluation rationale

confidence80

Null

Metric forecasting 80% confidence interval

confidence95

Null

Metric forecasting 95% confidence interval

forecastingError

Null

Description of forecasting errors

qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Length: 418
Content-Type: application/json;charset=UTF-8

{
  "id" : "fasttests",
  "name" : "Fast Tests",
  "description" : "Percentage of tests under the testing duration threshold",
  "value" : 0.8,
  "value_description" : "0,80",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "qualityFactors" : [ "testingperformance" ]
}

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.5. Get historical evaluation

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/metrics/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Metric identifier

[].name

String

Metric name

[].description

String

Metric description

[].value

Number

Metric value

[].value_description

String

Metric readable value

[].date

Array

Metric evaluation date

[].datasource

Null

Metric source of data

[].rationale

String

Metric evaluation rationale

[].confidence80

Null

Metric forecasting 80% confidence interval

[].confidence95

Null

Metric forecasting 95% confidence interval

[].forecastingError

Null

Description of forecasting errors

[].qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 422

[ {
  "id" : "fasttests",
  "name" : "Fast Tests",
  "description" : "Percentage of tests under the testing duration threshold",
  "value" : 0.8,
  "value_description" : "0,80",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "qualityFactors" : [ "testingperformance" ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.6. Get single historical evaluation

Path parameters

Table 1. /api/metrics/{id}/historical
Parameter Description

id

Metric identifier

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/metrics/fasttests/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Metric identifier

[].name

String

Metric name

[].description

String

Metric description

[].value

Number

Metric value

[].value_description

String

Metric readable value

[].date

Array

Metric evaluation date

[].datasource

Null

Metric source of data

[].rationale

String

Metric evaluation rationale

[].confidence80

Null

Metric forecasting 80% confidence interval

[].confidence95

Null

Metric forecasting 95% confidence interval

[].forecastingError

Null

Description of forecasting errors

[].qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 422

[ {
  "id" : "fasttests",
  "name" : "Fast Tests",
  "description" : "Percentage of tests under the testing duration threshold",
  "value" : 0.8,
  "value_description" : "0,80",
  "date" : [ 2023, 11, 19 ],
  "datasource" : null,
  "rationale" : "parameters: {...}, formula: ...",
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "qualityFactors" : [ "testingperformance" ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.7. Get historical evaluation for quality factor

Path parameters

Table 1. /api/qualityFactors/{id}/metrics/historical
Parameter Description

id

Quality factor identifier

Request parameters

Parameter Description

prj

Project external identifier

from

Starting date (yyyy-mm-dd) for the requested the period

to

Ending date (yyyy-mm-dd) for the requested the period

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/testingperformance/metrics/historical?prj=test&from=2019-07-07&to=2019-07-15' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 723

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.8. Get historical evaluation for students

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

from

Initial date

to

Final Date

Curl request

$ curl 'http://localhost:8080/api/metrics/students/historical?prj=prjExternalId&from=2000-01-01&to=2000-05-01&profile=profileId' -i -X GET

Response fields

Path Type Description

[].id

Null

Student identifier

[].project

Null

Project if the student

[].name

String

Name of the student

[].identities

Object

Student identities such as Github, Taiga

[].identities.GITHUB

Object

Student Github identity

[].identities.GITHUB.data_source

String

Student Github identity data source

[].identities.GITHUB.username

String

Student Github username

[].identities.GITHUB.student

Null

Github student

[].identities.TAIGA

Object

Student Taiga identity

[].identities.TAIGA.data_source

String

Student Taiga identity data source

[].identities.TAIGA.username

String

Student Taiga username

[].identities.TAIGA.student

Null

Taiga student

[].identities.PRT

Object

Student PRT identity

[].identities.PRT.data_source

String

Student PRT identity data source

[].identities.PRT.username

String

Student PRT username

[].identities.PRT.student

Null

PRT student

[].metrics_size

Number

Number of metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

Null

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Null

Metric forecasting 80% confidence interval

[].metrics[].confidence95

Null

Metric forecasting 95% confidence interval

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Length: 927
Content-Type: application/json;charset=UTF-8

[ {
  "id" : null,
  "name" : "student_test_name",
  "identities" : {
    "GITHUB" : {
      "username" : "username",
      "student" : null,
      "data_source" : "GITHUB"
    },
    "TAIGA" : {
      "username" : "username",
      "student" : null,
      "data_source" : "TAIGA"
    },
    "PRT" : {
      "username" : "username",
      "student" : null,
      "data_source" : "PRT"
    }
  },
  "project" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : null,
    "rationale" : "parameters: {...}, formula: ...",
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "metrics_size" : 1
} ]

4.9. Get prediction

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

Curl request

$ curl 'http://localhost:8080/api/metrics/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Metric identifier

[].name

String

Metric name

[].description

String

Metric description

[].value

Number

Metric value

[].value_description

String

Metric readable value

[].date

Array

Metric evaluation date

[].datasource

String

Metric source of data

[].rationale

String

Metric evaluation rationale

[].confidence80

Object

Metric forecasting 80% confidence interval

[].confidence80.first

Number

Metric forecasting 80% confidence interval higher values

[].confidence80.second

Number

Metric forecasting 80% confidence interval lower values

[].confidence95

Object

Metric forecasting 95% confidence interval

[].confidence95.first

Number

Metric forecasting 95% confidence interval higher values

[].confidence95.second

Number

Metric forecasting 95% confidence interval lower values

[].forecastingError

Null

Description of forecasting errors

[].qualityFactors

Array

List of the quality factors that use this metric

HTTP response

HTTP/1.1 200 OK
Content-Length: 515
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "fasttests",
  "name" : "Fast Tests",
  "description" : "Percentage of tests under the testing duration threshold",
  "value" : 0.8,
  "value_description" : "0,80",
  "date" : [ 2023, 11, 19 ],
  "datasource" : "Forecast",
  "rationale" : "Forecast",
  "confidence80" : {
    "first" : 0.97473043,
    "second" : 0.9745246
  },
  "confidence95" : {
    "first" : 0.9747849,
    "second" : 0.97447014
  },
  "forecastingError" : null,
  "qualityFactors" : [ "testingperformance" ]
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.10. Get prediction for quality factor

Path parameters

Table 1. /api/qualityFactors/{id}/metrics/prediction
Parameter Description

id

Quality factor identifier

Request parameters

Parameter Description

prj

Project external identifier

technique

Forecasting technique

horizon

Amount of days that the prediction will cover

Curl request

$ curl 'http://localhost:8080/api/qualityFactors/testingperformance/metrics/prediction?prj=test&technique=PROPHET&horizon=7' -i -X GET

Response fields

Path Type Description

[].id

String

Quality factor identifier

[].name

String

Quality factor name

[].description

String

Quality factor description

[].date

Null

Quality factor evaluation date

[].value

Null

Quality factor value

[].value_description

Null

Readable quality factor value

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the quality factor and some metrics

[].missingMetrics

Null

Metrics without assessment

[].metrics

Array

List with all the quality factor metrics

[].metrics[].id

String

Metric identifier

[].metrics[].name

String

Metric name

[].metrics[].description

String

Metric description

[].metrics[].value

Number

Metric value

[].metrics[].value_description

String

Metric readable value

[].metrics[].date

Array

Metric evaluation date

[].metrics[].datasource

String

Metric source of data

[].metrics[].rationale

String

Metric evaluation rationale

[].metrics[].confidence80

Object

Metric forecasting 80% confidence interval

[].metrics[].confidence80.first

Number

Metric forecasting 80% confidence interval higher values

[].metrics[].confidence80.second

Number

Metric forecasting 80% confidence interval lower values

[].metrics[].confidence95

Object

Metric forecasting 95% confidence interval

[].metrics[].confidence95.first

Number

Metric forecasting 95% confidence interval higher values

[].metrics[].confidence95.second

Number

Metric forecasting 95% confidence interval lower values

[].metrics[].forecastingError

Null

Description of forecasting errors

[].metrics[].qualityFactors

Array

List of the quality factors that use this metric

[].type

Null

Datasource from where the data is taken

HTTP response

HTTP/1.1 200 OK
Content-Length: 828
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "testingperformance",
  "name" : "Testing Performance",
  "date" : null,
  "value" : null,
  "description" : "Performance of the tests",
  "value_description" : null,
  "mismatchDays" : 0,
  "missingMetrics" : null,
  "metrics" : [ {
    "id" : "fasttests",
    "name" : "Fast Tests",
    "description" : "Percentage of tests under the testing duration threshold",
    "value" : 0.8,
    "value_description" : "0,80",
    "date" : [ 2023, 11, 19 ],
    "datasource" : "Forecast",
    "rationale" : "Forecast",
    "confidence80" : {
      "first" : 0.97473043,
      "second" : 0.9745246
    },
    "confidence95" : {
      "first" : 0.9747849,
      "second" : 0.97447014
    },
    "forecastingError" : null,
    "qualityFactors" : [ "testingperformance" ]
  } ],
  "type" : null
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

4.11. Get metric categories

Request parameters

Parameter Description

name

Category name (Optional)

Curl request

$ curl 'http://localhost:8080/api/metrics/categories' -i -X GET

Response fields

Path Type Description

[].id

Number

Category identifier

[].type

String

Category type

[].name

String

Category name

[].color

String

Category hexadecimal color

[].upperThreshold

Number

Category upper threshold

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 345

[ {
  "id" : 10,
  "name" : "Default",
  "color" : "#00ff00",
  "upperThreshold" : 1.0,
  "type" : "Good"
}, {
  "id" : 11,
  "name" : "Default",
  "color" : "#ff8000",
  "upperThreshold" : 0.67,
  "type" : "Neutral"
}, {
  "id" : 12,
  "name" : "Default",
  "color" : "#ff0000",
  "upperThreshold" : 0.33,
  "type" : "Bad"
} ]

4.12. Set metric categories

Request parameters

Parameter Description

name

Category name (Optional)

Request fields

Path Type Description

[].type

String

Metrics category type

[].color

String

Metrics category color

[].upperThreshold

String

Metrics category upper threshold

Curl request

$ curl 'http://localhost:8080/api/metrics/categories?name=Default' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '[ {
  "upperThreshold" : "1.0",
  "color" : "#00ff00",
  "type" : "Good"
}, {
  "upperThreshold" : "0.67",
  "color" : "#ff8000",
  "type" : "Neutral"
}, {
  "upperThreshold" : "0.33",
  "color" : "#ff0000",
  "type" : "Bad"
} ]'

HTTP response

HTTP/1.1 201 Created

HTTP response not enough categories

HTTP/1.1 400 Bad Request

5. Alerts

5.1. Get all alerts

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/alerts?prj=test' -i -X GET

HTTP response

HTTP/1.1 200 OK
Content-Length: 282
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 2,
  "type" : "TRESPASSED_THRESHOLD",
  "value" : 0.4,
  "threshold" : 0.5,
  "date" : 1700415648071,
  "status" : "NEW",
  "affectedId" : "duplication",
  "affectedType" : "metric",
  "predictionDate" : 1700415648071,
  "predictionTechnique" : "PROPHET"
} ]

HTTP response wrong project

HTTP/1.1 404 Not Found

5.2. Create alert

Request fields

Path Type Description

element.affectedId

String

Identifier of the element causing the alert

element.affectedType

String

Type of the element causing the alert [metric, factor, indicator]

element.type

String

Type of the alert [CATEGORY_DOWNGRADE, CATEGORY_UPGRADE, TRESPASSED_THRESHOLD, ALERT_NOT_TREATED]

element.value

String

Current value of the element causing the alert

element.threshold

String

Minimum acceptable value for the element

element.project_id

String

Project identifier of the element causing the alert

element.predictionDate

String

Date of the prediction causing the alert (Optional)

element.technique

String

Technique of the prediction causing the alert [PROPHET, ETS…​] (Optional)

Curl request

$ curl 'http://localhost:8080/api/alerts' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "element" : {
    "affectedType" : "metric",
    "project_id" : "test",
    "affectedId" : "Duplication",
    "threshold" : "0.5",
    "type" : "ALERT_NOT_TREATED",
    "value" : "0.4"
  }
}'

HTTP response

HTTP/1.1 201 Created

HTTP response missing body parameter

HTTP/1.1 400 Bad Request

HTTP response wrong type

HTTP/1.1 400 Bad Request

HTTP response wrong affected type

HTTP/1.1 400 Bad Request

HTTP response wrong project

HTTP/1.1 404 Not Found

HTTP response wrong affected id

HTTP/1.1 404 Not Found

5.3. Count new alerts

Request parameters

Parameter Description

prj

Project external identifier

profile

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/alerts/countNew?prj=test' -i -X GET

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1

0

HTTP response wrong project

HTTP/1.1 404 Not Found

6. Feedback

6.1. Add new feedback

Path parameters

Table 1. /api/strategicIndicators/{id}/feedback
Parameter Description

id

Strategic indicator identifier

Request fields

Path Type Description

newvalue

String

New strategic indicator value

oldvalue

String

Old strategic indicator value

factorIds

String

List of the factors identifiers

factorNames

String

List of the factors names

factorValues

String

List of the factors values

factorEvaluationDates

String

List of the factors evaluation dates

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/1/feedback' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "newvalue" : "0.75",
  "factorEvaluationDates" : "[\"2019-07-07\",\"2019-07-06\",\"2019-07-05\"]",
  "factorIds" : "[\"factor1\",\"factor2\",\"factor3\"]",
  "factorValues" : "[0.8,0.7,0.6]",
  "oldvalue" : "0.6",
  "factorNames" : "[\"Factor 1\",\"Factor 2\",\"Factor 3\"]"
}'

HTTP response

HTTP/1.1 202 Accepted

HTTP response missing body parameter

HTTP/1.1 400 Bad Request

6.2. Get feedback for strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}/feedback
Parameter Description

id

Strategic indicator identifier

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/1/feedback' -i -X GET

Response fields

Path Type Description

[].strategicIndicatorId

Number

Strategic indicator identifier

[].date

String

Feedback creation date

[].author

String

Feedback creator name

[].newValue

Number

New strategic indicator value

[].oldValue

Number

Old strategic indicator value

HTTP response

HTTP/1.1 200 OK
Content-Length: 131
Content-Type: application/json;charset=UTF-8

[ {
  "strategicIndicatorId" : 1,
  "date" : "2023-11-19",
  "author" : "author",
  "oldValue" : 0.6,
  "newValue" : 0.75
} ]

6.3. Get feedback report for strategic indicator

Path parameters

Table 1. /api/strategicIndicators/{id}/feedbackReport
Parameter Description

id

Strategic indicator identifier

Curl request

$ curl 'http://localhost:8080/api/strategicIndicators/1/feedbackReport' -i -X GET

Response fields

Path Type Description

[].siId

Number

Strategic indicator identifier

[].siName

String

Strategic indicator name

[].date

String

Feedback creation date

[].fact

Array

List with factor names

[].factVal

Array

List with factor values

[].author

String

Feedback creator name

[].oldvalue

Number

Old strategic indicator value

[].oldCategory

String

Old strategic indicator category name

[].oldCategoryColor

String

Old strategic indicator category color

[].newvalue

Number

New strategic indicator value

[].newCategory

String

New strategic indicator category name

[].newCategoryColor

String

New strategic indicator category color

HTTP response

HTTP/1.1 200 OK
Content-Length: 350
Content-Type: application/json;charset=UTF-8

[ {
  "siId" : 1,
  "siName" : "Blocking",
  "date" : "2019-07-07",
  "fact" : [ "Factor 1", "Factor 2", "Factor 3" ],
  "factVal" : [ 0.8, 0.7, 0.6 ],
  "author" : "author",
  "oldvalue" : 0.6,
  "oldCategory" : "Medium",
  "oldCategoryColor" : "Orange",
  "newvalue" : 0.75,
  "newCategory" : "High",
  "newCategoryColor" : "Green"
} ]

7. Projects

7.1. Import projects

Curl request

$ curl 'http://localhost:8080/api/projects/import' -i -X GET

Response fields

Path Type Description

[]

Array

List with the external identifiers of all the assessed projects

HTTP response

HTTP/1.1 200 OK
Content-Length: 38
Content-Type: application/json;charset=UTF-8

[ "project1", "project2", "project3" ]

HTTP response categories error

HTTP/1.1 409 Conflict

HTTP response error on MongoDB connection

HTTP/1.1 500 Internal Server Error

7.2. Get all projects

Request parameters

Parameter Description

profile_id

Profile data base identifier (Optional)

Curl request

$ curl 'http://localhost:8080/api/projects' -i -X GET

Response fields

Path Type Description

[].id

Number

Project identifier

[].externalId

String

Project external identifier

[].name

String

Project name

[].description

String

Project description

[].logo

Null

Project logo file

[].active

Boolean

Is an active project?

[].backlogId

String

Project identifier in the backlog

[].anonymized

Boolean

If project students are anonymized

[].identities

Object

Project identities

[].identities.GITHUB

Object

Example of identity, URLs separated by a ';'

[].identities.GITHUB.dataSource

String

Identity data source. Example: Github, Taiga, PRT

[].identities.GITHUB.url

String

Identity URL

[].identities.GITHUB.project

Null

Identity project

[].isGlobal

Boolean

Is a global project?

[].students

Null

Students of the project

[].anonymized

Boolean

If project is anonymized

HTTP response

HTTP/1.1 200 OK
Content-Length: 368
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "externalId" : "test",
  "name" : "Test",
  "description" : "Test project",
  "logo" : null,
  "active" : true,
  "backlogId" : "999",
  "isGlobal" : false,
  "anonymized" : false,
  "identities" : {
    "GITHUB" : {
      "dataSource" : "GITHUB",
      "url" : "githubURL",
      "project" : null
    }
  },
  "students" : null
} ]

7.3. Get single project

Path parameters

Table 1. /api/projects/{id}
Parameter Description

id

Project identifier

Curl request

$ curl 'http://localhost:8080/api/projects/1' -i -X GET

Response fields

Path Type Description

id

Number

Project identifier

externalId

String

Project external identifier

name

String

Project name

description

String

Project description

logo

Null

Project logo file

active

Boolean

Is an active project?

backlogId

String

Project identifier in the backlog

anonymized

Boolean

If project students are anonymized

identities

Object

Project identities

identities.GITHUB

Object

Example of identity, URLs separated by a ';'

identities.GITHUB.dataSource

String

Identity data source. Example: Github, Taiga, PRT

identities.GITHUB.url

String

Identity URL

identities.GITHUB.project

Null

Identity project

isGlobal

Boolean

Is a global project?

students

Null

Students of the project

anonymized

Boolean

If project is anonymized

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 364

{
  "id" : 1,
  "externalId" : "test",
  "name" : "Test",
  "description" : "Test project",
  "logo" : null,
  "active" : true,
  "backlogId" : "999",
  "isGlobal" : false,
  "anonymized" : false,
  "identities" : {
    "GITHUB" : {
      "dataSource" : "GITHUB",
      "url" : "githubURL",
      "project" : null
    }
  },
  "students" : null
}

7.4. Update project

Path parameters

Table 1. /api/projects/{id}
Parameter Description

id

Project identifier

Request parts
Part Description

file

Project logo file

data

JSON Project body: {"external_id": "<project-external-id>", "name": "<project-name>", "description": "<description>", "backlog_id": "<backlog>", "global": <true/false>, "identities" :{ "<IDENTITY>": "<URL>" } }

Curl request
$ curl 'http://localhost:8080/api/projects/1' -i -X PUT \
    -H 'Content-Type: multipart/form-data' \
    -F 'file=@logo.jpg;type=image/jpeg' \
    -F 'data={
  "name" : "Test",
  "description" : "Test project",
  "identities" : {
    "GITHUB" : "GITHUB.test",
    "TAIGA" : "TAIGA.test",
    "PRT" : "PRT.test"
  },
  "global" : false,
  "external_id" : "test",
  "backlog_id" : "999"
};type=application/json'
HTTP response
HTTP/1.1 200 OK

HTTP response name already exists

HTTP/1.1 409 Conflict

7.5. Anonymize single project

Path parameters

Table 2. /api/projects/{id}/anonymize
Parameter Description

id

Project identifier

Request body
{
  "anonymization_mode" : "GREEK_ALPHABET"
}
Request fields
Path Type Description

anonymization_mode

String

Anonymization mode, if not defined, default is Capitals

Curl request
$ curl 'http://localhost:8080/api/projects/1/anonymize' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "anonymization_mode" : "GREEK_ALPHABET"
}'
HTTP response
HTTP/1.1 200 OK
Content-Length: 363
Content-Type: application/json;charset=UTF-8

{
  "id" : 1,
  "externalId" : "test",
  "name" : "Test",
  "description" : "Test project",
  "logo" : null,
  "active" : true,
  "backlogId" : "999",
  "isGlobal" : false,
  "anonymized" : true,
  "identities" : {
    "GITHUB" : {
      "dataSource" : "GITHUB",
      "url" : "githubURL",
      "project" : null
    }
  },
  "students" : null
}

HTTP response bad request

HTTP/1.1 400 Bad Request

HTTP response project not found

HTTP/1.1 404 Not Found

HTTP response project already anonymized

HTTP/1.1 409 Conflict

7.6. Anonymize projects

Request body

{
  "anonymization_mode" : "GREEK_ALPHABET",
  "project_ids" : [ 1 ]
}

Request fields

Path Type Description

project_ids

Array

List of project ids to anonymize

anonymization_mode

String

Anonymization mode, if not defined, default is Capitals

Curl request

$ curl 'http://localhost:8080/api/projects/anonymize' -i -X POST \
    -H 'Content-Type: application/json' \
    -d '{
  "anonymization_mode" : "GREEK_ALPHABET",
  "project_ids" : [ 1 ]
}'

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 367

[ {
  "id" : 1,
  "externalId" : "test",
  "name" : "Test",
  "description" : "Test project",
  "logo" : null,
  "active" : true,
  "backlogId" : "999",
  "isGlobal" : false,
  "anonymized" : true,
  "identities" : {
    "GITHUB" : {
      "dataSource" : "GITHUB",
      "url" : "githubURL",
      "project" : null
    }
  },
  "students" : null
} ]

HTTP response bad request

HTTP/1.1 400 Bad Request

HTTP response project already anonymized

HTTP/1.1 409 Conflict

8. Products

8.1. Get all products

Curl request

$ curl 'http://localhost:8080/api/products' -i -X GET

Response fields

Path Type Description

[].id

Number

Product identifier

[].name

String

Product name

[].description

String

Product description

[].logo

Null

Product logo file

[].projects

Array

List of all the projects which compose the product

[].projects[].id

Number

Project identifier

[].projects[].externalId

String

Project external identifier

[].projects[].name

String

Project name

[].projects[].description

String

Project description

[].projects[].logo

Null

Project logo file

[].projects[].active

Boolean

Is an active project?

[].projects[].backlogId

String

Project identifier in the backlog

[].projects[].anonymized

Boolean

If project students are anonymized

[].projects[].identities

Object

Project identities

[].projects[].identities.GITHUB

Object

Example of identity, URLs separated by a ';'

[].projects[].identities.GITHUB.dataSource

String

Identity data source. Example: GITHUB, Taiga, PRT

[].projects[].identities.GITHUB.url

String

Identity URL

[].projects[].identities.GITHUB.project

Null

Identity project

[].projects[].isGlobal

Boolean

Is a global project?

[].projects[].students

Null

Students of the project

HTTP response

HTTP/1.1 200 OK
Content-Length: 515
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "name" : "Test",
  "description" : "Test product",
  "logo" : null,
  "projects" : [ {
    "id" : 1,
    "externalId" : "test",
    "name" : "Test",
    "description" : "Test project",
    "logo" : null,
    "active" : true,
    "backlogId" : "999",
    "isGlobal" : false,
    "anonymized" : false,
    "identities" : {
      "GITHUB" : {
        "dataSource" : "GITHUB",
        "url" : "GITHUBURL",
        "project" : null
      }
    },
    "students" : null
  } ]
} ]

8.2. Get single product

Path parameters

Table 1. /api/products/{id}
Parameter Description

id

Product identifier

Curl request

$ curl 'http://localhost:8080/api/products/1' -i -X GET

Response fields

Path Type Description

id

Number

Product identifier

name

String

Product name

description

String

Product description

logo

Null

Product logo file

projects

Array

List of all the projects which compose the product

projects[].id

Number

Project identifier

projects[].externalId

String

Project external identifier

projects[].name

String

Project name

projects[].description

String

Project description

projects[].logo

Null

Project logo file

projects[].active

Boolean

Is an active project?

projects[].backlogId

String

Project identifier in the backlog

projects[].anonymized

Boolean

If project students are anonymized

projects[].identities

Object

Project identities

projects[].identities.GITHUB

Object

Example of identity, URLs separated by a ';'

projects[].identities.GITHUB.dataSource

String

Identity data source. Example: GITHUB, Taiga, PRT

projects[].identities.GITHUB.url

String

Identity URL

projects[].identities.GITHUB.project

Null

Identity project

projects[].isGlobal

Boolean

Is a global project?

projects[].students

Null

Students of the project

HTTP response

HTTP/1.1 200 OK
Content-Length: 511
Content-Type: application/json;charset=UTF-8

{
  "id" : 1,
  "name" : "Test",
  "description" : "Test product",
  "logo" : null,
  "projects" : [ {
    "id" : 1,
    "externalId" : "test",
    "name" : "Test",
    "description" : "Test project",
    "logo" : null,
    "active" : true,
    "backlogId" : "999",
    "isGlobal" : false,
    "anonymized" : false,
    "identities" : {
      "GITHUB" : {
        "dataSource" : "GITHUB",
        "url" : "githubURL",
        "project" : null
      }
    },
    "students" : null
  } ]
}

8.3. New product

Request parameters

Parameter Description

name

Product name

description

Product description

projects

Comma separated values of the project identifiers which belong to the product

Request parts

Part Description

logo

Product logo file

Curl request

$ curl 'http://localhost:8080/api/products' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -F 'logo=@logo.jpg;type=image/jpeg' \
    -F 'name=Test' \
    -F 'description=Test product' \
    -F 'projects=1'

HTTP response

HTTP/1.1 201 Created

HTTP response name already exists

HTTP/1.1 409 Conflict

8.4. Update product

Path parameters

Table 3. /api/products/{id}
Parameter Description

id

Product identifier

Request parameters
Parameter Description

name

Product name

description

Product description

projects

Comma separated values of the project identifiers which belong to the product

Request parts
Part Description

logo

Product logo file

Curl request
$ curl 'http://localhost:8080/api/products/1' -i -X PUT \
    -H 'Content-Type: multipart/form-data' \
    -F 'logo=@logo.jpg;type=image/jpeg' \
    -F 'name=Test' \
    -F 'description=Test product' \
    -F 'projects=1'
HTTP response
HTTP/1.1 200 OK

HTTP response name already exists

HTTP/1.1 409 Conflict

8.5. Delete product

Path parameters

Table 1. /api/products/{id}
Parameter Description

id

Product identifier

Curl request

$ curl 'http://localhost:8080/api/products/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

8.6. Get product evaluation

Path parameters

Table 1. /api/products/{id}/current
Parameter Description

id

Product identifier

Curl request

$ curl 'http://localhost:8080/api/products/1/current' -i -X GET

Response fields

Path Type Description

[].id

String

Strategic indicator identifier

[].dbId

Number

Strategic indicator database identifier

[].name

String

Strategic indicator name

[].description

String

Strategic indicator description

[].value.first

Number

Strategic indicator numerical value

[].value.second

String

Strategic indicator category

[].confidence80

Null

Strategic indicator forecasting 80% confidence interval

[].confidence95

Null

Strategic indicator forecasting 95% confidence interval

[].value_description

String

Readable strategic indicator value and category

[].rationale

String

Strategic indicator evaluation rationale

[].probabilities

Array

Strategic indicator categories list

[].probabilities[].id

Number

Strategic indicator category identifier

[].probabilities[].label

String

Strategic indicator category label

[].probabilities[].value

Null

Strategic indicator category probability

[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].date

Array

Strategic indicator assessment date

[].datasource

String

Strategic indicator source of data

[].categories_description

String

Array with the strategic indicator categories and thresholds

[].hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

[].hasFeedback

Boolean

Does the strategic indicator have any feedback

[].forecastingError

Null

Errors in the forecasting

[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Length: 1005
Content-Type: application/json;charset=UTF-8

[ {
  "id" : "blocking",
  "dbId" : 1,
  "name" : "Blocking",
  "description" : "Blocking elements",
  "value" : {
    "first" : 0.8,
    "second" : "Good"
  },
  "value_description" : "Good (0.80)",
  "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
  "probabilities" : [ {
    "id" : 10,
    "label" : "Good",
    "value" : null,
    "color" : "#00ff00",
    "upperThreshold" : 0.66
  }, {
    "id" : 11,
    "label" : "Neutral",
    "value" : null,
    "color" : "#ff8000",
    "upperThreshold" : 0.33
  }, {
    "id" : 11,
    "label" : "Bad",
    "value" : null,
    "color" : "#ff0000",
    "upperThreshold" : 0.0
  } ],
  "date" : [ 2019, 7, 7 ],
  "datasource" : "Q-Rapdis Dashboard",
  "categories_description" : "[Good (0,67), Neutral (0,33), Bad (0,00)]",
  "hasBN" : false,
  "hasFeedback" : false,
  "confidence80" : null,
  "confidence95" : null,
  "forecastingError" : null,
  "mismatchDays" : 0,
  "missingFactors" : null
} ]

8.7. Get product detailed evaluation

Path parameters

Table 1. /api/products/{id}/projects/current
Parameter Description

id

Product identifier

Curl request

$ curl 'http://localhost:8080/api/products/1/projects/current' -i -X GET

Response fields

Path Type Description

[].first

String

Project external identifier

[].second

Array

List of the current assessment of every strategic indicator inside the project

[].second[].id

String

Strategic indicator identifier

[].second[].dbId

Number

Strategic indicator database identifier

[].second[].name

String

Strategic indicator name

[].second[].description

String

Strategic indicator description

[].second[].value.first

Number

Strategic indicator numerical value

[].second[].value.second

String

Strategic indicator category

[].second[].confidence80

Null

Strategic indicator forecasting 80% confidence interval

[].second[].confidence95

Null

Strategic indicator forecasting 95% confidence interval

[].second[].value_description

String

Readable strategic indicator value and category

[].second[].rationale

String

Strategic indicator evaluation rationale

[].second[].probabilities

Array

Strategic indicator categories list

[].second[].probabilities[].id

Number

Strategic indicator category identifier

[].second[].probabilities[].label

String

Strategic indicator category label

[].second[].probabilities[].value

Null

Strategic indicator category probability

[].second[].probabilities[].color

String

Strategic indicator category hexadecimal color

[].second[].probabilities[].upperThreshold

Number

Strategic indicator category upper threshold

[].second[].date

Array

Strategic indicator assessment date

[].second[].datasource

String

Strategic indicator source of data

[].second[].categories_description

String

Array with the strategic indicator categories and thresholds

[].second[].hasBN

Boolean

Does the strategic indicator have a Bayesian Network?

[].second[].hasFeedback

Boolean

Does the strategic indicator have any feedback

[].second[].forecastingError

Null

Errors in the forecasting

[].second[].mismatchDays

Number

Maximum difference (in days) when there is difference in the evaluation dates between the strategic indicator and some quality factors

[].second[].missingFactors

Null

Factors without assessment

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1129

[ {
  "first" : "test",
  "second" : [ {
    "id" : "blocking",
    "dbId" : 1,
    "name" : "Blocking",
    "description" : "Blocking elements",
    "value" : {
      "first" : 0.8,
      "second" : "Good"
    },
    "value_description" : "Good (0.80)",
    "rationale" : "factors: {...}, formula: ..., value: ..., category: ...",
    "probabilities" : [ {
      "id" : 10,
      "label" : "Good",
      "value" : null,
      "color" : "#00ff00",
      "upperThreshold" : 0.66
    }, {
      "id" : 11,
      "label" : "Neutral",
      "value" : null,
      "color" : "#ff8000",
      "upperThreshold" : 0.33
    }, {
      "id" : 11,
      "label" : "Bad",
      "value" : null,
      "color" : "#ff0000",
      "upperThreshold" : 0.0
    } ],
    "date" : [ 2019, 7, 7 ],
    "datasource" : "Q-Rapdis Dashboard",
    "categories_description" : "[Good (0,67), Neutral (0,33), Bad (0,00)]",
    "hasBN" : false,
    "hasFeedback" : false,
    "confidence80" : null,
    "confidence95" : null,
    "forecastingError" : null,
    "mismatchDays" : 0,
    "missingFactors" : null
  } ]
} ]

9. Profiles

9.1. Get all profiles

Curl request

$ curl 'http://localhost:8080/api/profiles' -i -X GET

Response fields

Path Type Description

[].id

Number

Profile identifier

[].name

String

Profile name

[].description

String

Profile description

[].qualityLevel

String

Profile quality level

[].dsiView

String

Default visualization for Detailed Strategic Indicators view

[].dqfView

String

Default visualization for Detailed Factors view

[].mView

String

Default visualization for Metrics view

[].qmView

String

Default visualization for Quality Model view

[].projects

Array

List of all the projects which compose the profile

[].projects[].id

Number

Project identifier

[].projects[].externalId

String

Project external identifier

[].projects[].name

String

Project name

[].projects[].description

String

Project description

[].projects[].logo

Null

Project logo file

[].projects[].active

Boolean

Is an active project?

[].projects[].backlogId

String

Project identifier in the backlog

[].projects[].anonymized

Boolean

If project students are anonymized

[].projects[].identities

Object

Project identities

[].projects[].identities.GITHUB

Object

Example of identity, URLs separated by a ';'

[].projects[].identities.GITHUB.dataSource

String

Identity data source. Example: Github, Taiga, PRT

[].projects[].identities.GITHUB.url

String

Identity URL

[].projects[].identities.GITHUB.project

Null

Identity project

[].projects[].isGlobal

Boolean

Is a global project?

[].projects[].students

Null

Students of the project

[].allSIs

Array

List of pairs which specify for each project of profile, if it show all strategic indicators or not

[].allSIs[].first

Number

Project identifier

[].allSIs[].second

Boolean

Are all strategic indicators shown?

HTTP response

HTTP/1.1 200 OK
Content-Length: 682
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "name" : "Test",
  "description" : "Test profile",
  "qualityLevel" : "ALL",
  "dsiView" : "Radar",
  "dqfView" : "Radar",
  "mView" : "Gauge",
  "qmView" : "Graph",
  "projects" : [ {
    "id" : 1,
    "externalId" : "test",
    "name" : "Test",
    "description" : "Test project",
    "logo" : null,
    "active" : true,
    "backlogId" : "999",
    "isGlobal" : false,
    "anonymized" : false,
    "identities" : {
      "GITHUB" : {
        "dataSource" : "GITHUB",
        "url" : "githubURL",
        "project" : null
      }
    },
    "students" : null
  } ],
  "allSIs" : [ {
    "first" : 1,
    "second" : true
  } ]
} ]

9.2. Get single profile

Path parameters

Table 1. /api/profiles/{id}
Parameter Description

id

Profile identifier

Curl request

$ curl 'http://localhost:8080/api/profiles/1' -i -X GET

Response fields

Path Type Description

id

Number

Profile identifier

name

String

Profile name

description

String

Profile description

qualityLevel

String

Profile quality level

dsiView

String

Default visualization for Detailed Strategic Indicators view

dqfView

String

Default visualization for Detailed Factors view

mView

String

Default visualization for Metrics view

qmView

String

Default visualization for Quality Model view

projects

Array

List of all the projects which compose the profile

projects[].id

Number

Project identifier

projects[].externalId

String

Project external identifier

projects[].name

String

Project name

projects[].description

String

Project description

projects[].logo

Null

Project logo file

projects[].active

Boolean

Is an active project?

projects[].backlogId

String

Project identifier in the backlog

projects[].anonymized

Boolean

If project students are anonymized

projects[].identities

Object

Project identities

projects[].identities.GITHUB

Object

Example of identity, URLs separated by a ';'

projects[].identities.GITHUB.dataSource

String

Identity data source. Example: Github, Taiga, PRT

projects[].identities.GITHUB.url

String

Identity URL

projects[].identities.GITHUB.project

Null

Identity project

projects[].isGlobal

Boolean

Is a global project?

projects[].students

Null

Students of the project

allSIs

Array

List of pairs which specify for each project of profile, if it show all strategic indicators or not

allSIs[].first

Number

Project identifier

allSIs[].second

Boolean

Are all strategic indicators shown?

HTTP response

HTTP/1.1 200 OK
Content-Length: 678
Content-Type: application/json;charset=UTF-8

{
  "id" : 1,
  "name" : "Test",
  "description" : "Test profile",
  "qualityLevel" : "ALL",
  "dsiView" : "Radar",
  "dqfView" : "Radar",
  "mView" : "Gauge",
  "qmView" : "Graph",
  "projects" : [ {
    "id" : 1,
    "externalId" : "test",
    "name" : "Test",
    "description" : "Test project",
    "logo" : null,
    "active" : true,
    "backlogId" : "999",
    "isGlobal" : false,
    "anonymized" : false,
    "identities" : {
      "GITHUB" : {
        "dataSource" : "GITHUB",
        "url" : "GITHUBURL",
        "project" : null
      }
    },
    "students" : null
  } ],
  "allSIs" : [ {
    "first" : 1,
    "second" : true
  } ]
}

9.3. New profile

Request parameters

Parameter Description

name

Profile name

description

Profile description

quality_level

One of three possible options: ALL, FACTOR_METRIC, METRICS

dsi_view

Value for default Detailed Strategic Indicators view representation: Radar, Stacked or Polar

dqf_view

Value for default Detailed Factors view representation: Radar, Stacked or Polar

m_view

Value for default Metrics view representation: Gauge or Slider

qm_view

Value for default Quality Model view representation: Graph or Sunburst

projects_info

Array of JSON object { prj: project identifier, all_si: are all strategic indicators shown? , si: list of selected strategic indicators }

Curl request

$ curl 'http://localhost:8080/api/profiles' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -d 'name=Test&description=Test+profile&quality_level=ALL&dsi_view=Radar&dqf_view=Radar&m_view=Gauge&qm_view=Graph&projects_info=%5B%7B%22si%22%3A%5B%5D%2C%22prj%22%3A1%2C%22all_si%22%3Atrue%7D%5D'

HTTP response

HTTP/1.1 201 Created

HTTP response name already exists

HTTP/1.1 409 Conflict

9.4. Update profile

Path parameters

Table 4. /api/products/{id}
Parameter Description

id

Product identifier

Request parameters
Parameter Description

name

Profile name

description

Profile description

quality_level

One of three possible options: ALL, FACTOR_METRIC, METRICS

dsi_view

Value for default Detailed Strategic Indicators view representation: Radar, Stacked or Polar

dqf_view

Value for default Detailed Factors view representation: Radar, Stacked or Polar

m_view

Value for default Metrics view representation: Gauge or Slider

qm_view

Value for default Quality Model view representation: Graph or Sunburst

projects_info

Array of JSON object { prj: project identifier, all_si: are all strategic indicators shown? , si: list of selected strategic indicators }

Curl request
$ curl 'http://localhost:8080/api/profiles/1' -i -X PUT \
    -H 'Content-Type: multipart/form-data' \
    -d 'name=Test&description=Test+profile&quality_level=ALL&dsi_view=Radar&dqf_view=Radar&m_view=Gauge&qm_view=Graph&projects_info=%5B%7B%22si%22%3A%5B%5D%2C%22prj%22%3A1%2C%22all_si%22%3Atrue%7D%5D'
HTTP response
HTTP/1.1 200 OK

HTTP response name already exists

HTTP/1.1 409 Conflict

9.5. Delete profile

Path parameters

Table 1. /api/profiles/{id}
Parameter Description

id

Profile identifier

Curl request

$ curl 'http://localhost:8080/api/profiles/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

10. Iterations

10.1. Get all iterations

Curl request

$ curl 'http://localhost:8080/api/iterations' -i -X GET

Response fields

Path Type Description

[].id

Number

Iteration identifier

[].name

String

Iteration name

[].label

String

(Optional) Iteration label

[].from_date

Number

Iteration start date

[].to_date

Number

Iteration end date

[].project_ids

Array

Project associated with the iteration

HTTP response

HTTP/1.1 200 OK
Content-Length: 171
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "name" : "test iteration",
  "label" : "test label",
  "from_date" : 1653429600000,
  "to_date" : 1655848800000,
  "project_ids" : [ 2, 4, 5 ]
} ]

10.2. Update iteration

Path parameters

Table 5. /api/iterations/{iteration_id}
Parameter Description

iteration_id

Iteration identifier to be modified

Request fields
Path Type Description

iteration.name

String

New iteration name

iteration.label

String

New iteration label (Optional)

iteration.fromDate

String

New iteration start date

iteration.toDate

String

New iteration end date

project_ids

Array

New projects associated with the iteration

Curl request
$ curl 'http://localhost:8080/api/iterations/1' -i -X PUT \
    -H 'Content-Type: application/json' \
    -d '{
  "project_ids" : [ 2, 4 ],
  "iteration" : {
    "fromDate" : "2022-02-25",
    "toDate" : "2022-05-15",
    "name" : "test iteration",
    "label" : "test label"
  }
}'
HTTP response
HTTP/1.1 200 OK

10.3. Delete iteration

Path parameters

Table 1. /api/iterations/{iteration_id}
Parameter Description

iteration_id

Iteration identifier

Curl request

$ curl 'http://localhost:8080/api/iterations/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

11. Students

11.1. Update student’s metrics

Request parameters

Parameter Description

prj

External id of the student’s project

Curl request

$ curl 'http://localhost:8080/api/metrics/students?prj=1' -i -X PUT \
    -H 'Content-Type: application/json' \
    -d '{
  "metrics" : [ 1, 2, 3 ],
  "id" : 1,
  "name" : "student_test_name",
  "identities" : {
    "GITHUB" : "username",
    "TAIGA" : "username",
    "PRT" : "username"
  }
}'

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1

0

11.2. Delete student’s metrics

Path parameters

Table 1. /api/metrics/students/{id}
Parameter Description

id

Student identifier

Curl request

$ curl 'http://localhost:8080/api/metrics/students/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

12. News (updates)

12.1. Get all news (updates)

Curl request

$ curl 'http://localhost:8080/api/update' -i -X GET

Response fields

Path Type Description

[].id

Number

Update identifier

[].name

String

Update name

[].date

Array

Update date

[].update

String

Description/List of updates and news

HTTP response

HTTP/1.1 200 OK
Content-Length: 97
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "name" : "Test",
  "date" : [ 2000, 1, 1 ],
  "update" : "Test update"
} ]

12.2. Get last year news (updates)

Curl request

$ curl 'http://localhost:8080/api/update/year' -i -X GET

Response fields

Path Type Description

[].id

Number

Update identifier

[].name

String

Update name

[].date

Array

Update date

[].update

String

Description/List of updates and news

HTTP response

HTTP/1.1 200 OK
Content-Length: 97
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "name" : "Test",
  "date" : [ 2000, 1, 1 ],
  "update" : "Test update"
} ]

12.3. Get single novetly (update)

Path parameters

Table 1. /api/update/{id}
Parameter Description

id

Update identifier

Curl request

$ curl 'http://localhost:8080/api/update/1' -i -X GET

Response fields

Path Type Description

id

Number

Update identifier

name

String

Update name

date

Array

Update date

update

String

Description/List of updates and news

HTTP response

HTTP/1.1 200 OK
Content-Length: 93
Content-Type: application/json;charset=UTF-8

{
  "id" : 1,
  "name" : "Test",
  "date" : [ 2000, 1, 1 ],
  "update" : "Test update"
}

12.4. Get last novetly (update)

Request parameters

Parameter Description

username

Connected user name

Curl request

$ curl 'http://localhost:8080/api/update/last?username=test+username' -i -X GET

Response fields

Path Type Description

[].id

Number

Update identifier

[].name

String

Update name

[].date

Array

Update date

[].update

String

Description/List of updates and news

HTTP response

HTTP/1.1 200 OK
Content-Length: 97
Content-Type: application/json;charset=UTF-8

[ {
  "id" : 1,
  "name" : "Test",
  "date" : [ 2000, 1, 1 ],
  "update" : "Test update"
} ]

12.5. New novelty (update)

Request parameters

Parameter Description

name

Update name

date

Update date, in format yyyy-MM-dd

update

Description/List of updates and news

Curl request

$ curl 'http://localhost:8080/api/update' -i -X POST \
    -H 'Content-Type: multipart/form-data' \
    -d 'name=Test&date=2000-01-01&update=Test+update'

HTTP response

HTTP/1.1 201 Created

12.6. Update novelty (update)

Path parameters

Table 6. /api/update/{id}
Parameter Description

id

Update identifier

Request parameters
Parameter Description

name

Update identifier

date

Update date, in format yyyy-MM-dd

update

Description/List of updates and news

Curl request
$ curl 'http://localhost:8080/api/update/1' -i -X PUT \
    -d 'name=Test&date=2000-01-01&update=Test+update'
HTTP response
HTTP/1.1 200 OK

12.7. Delete novelty (update)

Path parameters

Table 1. /api/update/{id}
Parameter Description

id

Update identifier

Curl request

$ curl 'http://localhost:8080/api/update/1' -i -X DELETE

HTTP response

HTTP/1.1 200 OK

13. Others

13.1. Get forecasting techniques

Curl request

$ curl 'http://localhost:8080/api/forecastTechniques' -i -X GET

Response fields

Path Type Description

[]

Array

Array with the forecasting techniques names

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 26

[ "PROPHET", "ETS", "NN" ]

13.2. Get project milestones

Request parameters

Parameter Description

prj

Project external identifier

date

Minimum milestone date (yyyy-mm-dd)

Curl request

$ curl 'http://localhost:8080/api/milestones?prj=test&date=2023-11-19' -i -X GET

Response fields

Path Type Description

[].date

String

Milestone date

[].name

String

Milestone name

[].description

String

Milestone description

[].type

String

Milestone type

HTTP response

HTTP/1.1 200 OK
Content-Length: 137
Content-Type: application/json;charset=UTF-8

[ {
  "date" : "2023-11-22",
  "name" : "Version 1.3",
  "description" : "Version 1.3 adding new features",
  "type" : "Release"
} ]

13.3. Get project phases

Request parameters

Parameter Description

prj

Project external identifier

date

Minimum phase date (yyyy-mm-dd)

Curl request

$ curl 'http://localhost:8080/api/phases?prj=test' -i -X GET

Response fields

Path Type Description

[].dateFrom

String

Phase from date

[].name

String

Phase name

[].description

String

Phase description

[].dateTo

String

Phase to date

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 156

[ {
  "dateFrom" : "2023-11-04",
  "name" : "Development",
  "description" : "Implementation of project functionalities",
  "dateTo" : "2023-12-04"
} ]