Enum Validator

Enum validator enables you to restrict value of a custom type to be one of the items in a given list. For the following concepts definition, $statusCode is restricted to be either 200, 400 or 500.

CONCEPTS: service.concepts.json

{
    "$service+": {
        "statusCode": "$statusCode:httpStatus"
    },

    "@types": {
        "httpStatus": {
            "type": "number",
            "enum": [ 200, 400, 500 ]
        }
    }
}

Below schema is not valid, because 404 is not listed in httpStatus definition;

SCHEMA: greeting.service.json

{
    "sayHello": {
        "statusCode": 404
    }
}

ERROR: 'greeting.service.json' is not valid, '404' is not a valid httpStatus.

Short-Hand Usage

Short-hand for enum validator is as follows;

CONCEPTS: service.concepts.json

{
    "$service+": {
        "statusCode": "$statusCode:httpStatus"
    },

    "@types": {
        "httpStatus": [ 200, 400, 500 ]
    }
}

Here httpStatus automatically inherits from number, because every item in the array is a number.

Enum of any Type

CONCEPTS: service.concepts.json

{
    "$service+": {
        "statusCode": "$statusCode:httpStatus"
    },
    
    "@types": {
        "httpStatus": [ 200, "400", 500 ]
    }
}

Type of httpStatus is automatically set to any, because not all of the items are of the same type.