Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expand status-page-openapi-spec-decision with severity levels #498

Merged
merged 6 commits into from
Mar 21, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 46 additions & 0 deletions Standards/scs-0402-v1-status-page-openapi-spec-decision.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ An `Incremental` is used in combination with other identifiers to identify a sub

`Generation` and `Order` are predefined objects which include a `Incremental` typed field for the common usages of the `Incremental` value.

#### SeverityValue

A `SeverityValue` is an unsiged integer ranging from 0 to 100 inclusively. It MUST be utilized by an `Impact` when referenced by a `Component` to gauge the severity of the impact on that component. It MUST NOT be added to an `Impact` when referenced by an `Incident`. While being described as an unsiged integer, implementing this value MAY not require it to be an uint data type in any form, because its range even fits in a signed int8 (byte) data type.

### API objects

All objects which are used as payload, either as request or response, are defined by schemas. This centralizes the maintanence of field names and types, for both requests and responses.
Expand Down Expand Up @@ -82,6 +86,48 @@ An impact defines the relation between an incident and a component. A component

To reflect this, each component and incident can have a list of impacts, stating the type of impact and a reference to the incident or component, it refers to.

Furthermore, a `SeverityValue` MUST be supplied to the `Impact` when referenced by a `Component`, to gauge the impact's severity on that component.

### Severity

A severity contains a name, that MUST be unique and will be used as identifier. The `SeverityValue` marks the upper boundary of the severity.

The severity's value range is calculated by taking the previous severity's (`SeverityA`) value and adding 1 to obtain the starting point and taking the current severity's (SeverityB) value as the end point. These limits are inclusive.

```acsii
0, ... , SeverityA.value, SeverityA.value, + 1, ... , SeverityB.value - 1, SeverityB.value, SeverityB.value + 1, ... , 100
|<------------range of severity values for SeverityB------------->|
```

Example:

```json
[
{
"displayName": "Operational",
"value": 10
},
{
"displayName": "Limited",
"value": 50
},
{
"displayName": "Broken",
"value": 100
}
]
```

This means:

- Operational from 0 to 10
joshmue marked this conversation as resolved.
Show resolved Hide resolved
- Limited from 11 to 50
- Broken from 51 to 100.

A value of 100 is the maximum of the severity value.

A severity with the value of 100 MUST always be supplied. This is the highest severity for the system. If no severity with a value of 100 exists, e.g. the highest severity value is set at 90, an `Impact` with a higher `SeverityValue` WILL be considered to be an _unkown_ severity.

### Component impacts

Components list their impacts, which they are affected by, as read only. Only an incident creates an impact on a component. Components MUST only list their currently active impacts.
Expand Down
Loading