Files
openapi-types/3.1.x/data-types/integer.ts

179 lines
4.1 KiB
TypeScript

import type { Extension } from "../extensions"
/**
* -----
* Integer Schema
* -----
*
* A schema for integer values. Includes integer-specific validation properties
* that are only valid when `type: "integer"` is specified.
*
* | Version | Reference |
* |---|-----|
* | 3.1.1 | {@link https://spec.openapis.org/oas/v3.1.1#data-types | OpenAPI 3.1.1 Data Types} |
* | 3.1.0 | {@link https://spec.openapis.org/oas/v3.1.0#data-types | OpenAPI 3.1.0 Data Types} |
*
* -----
* Fields
* -----
*
* @key `type: "integer"` - Required The type identifier for integer schemas
* @key `format` - Optional The format of the integer
* @key `multipleOf` - Optional Integer must be a multiple of this value
* @key `maximum` - Optional Maximum value (inclusive)
* @key `minimum` - Optional Minimum value (inclusive)
* @key `exclusiveMaximum` - Optional Maximum value (exclusive)
* @key `exclusiveMinimum` - Optional Minimum value (exclusive)
* @key `enum` - Optional Array of allowed values
* @key `const` - Optional Single allowed value
* @key `examples` - Optional Array of example values
* @key `default` - Optional Default value
* @key `title` - Optional Short title for the schema
* @key `description` - Optional Description of the schema
* @key `x-${string}` - Specification Extensions
*
* @note
* All validation properties are optional. The `type` field must be "integer".
*
* -----
* Examples
* -----
*
* @example (basic integer):
* ```ts
* const integerSchema: IntegerSchema = {
* type: "integer"
* };
* ```
*
* @example (integer with format and validation):
* ```ts
* const integerSchema: IntegerSchema = {
* type: "integer",
* format: "int32",
* minimum: 0,
* maximum: 100
* };
* ```
*
* @example (integer with multipleOf):
* ```ts
* const integerSchema: IntegerSchema = {
* type: "integer",
* multipleOf: 5
* };
* ```
*
* @example (integer with exclusive bounds):
* ```ts
* const integerSchema: IntegerSchema = {
* type: "integer",
* exclusiveMinimum: 0,
* exclusiveMaximum: 100
* };
* ```
*/
export interface IntegerSchema extends Extension {
/**
* The type identifier for integer schemas.
* Must be "integer".
*/
type: "integer"
/**
* The format of the integer.
* See OpenAPI 3.1.x Data Type Formats for further details.
*
* Example: `"int32"`, `"int64"`
*/
format?: string
/**
* The integer must be a multiple of this value.
* Must be a positive integer.
*
* Example: `5`
*/
multipleOf?: number
/**
* The maximum value of the integer (inclusive).
* The integer must be less than or equal to this value.
*
* Example: `100`
*/
maximum?: number
/**
* The minimum value of the integer (inclusive).
* The integer must be greater than or equal to this value.
*
* Example: `0`
*/
minimum?: number
/**
* The maximum value of the integer (exclusive).
* The integer must be less than this value.
*
* Example: `100`
*/
exclusiveMaximum?: number
/**
* The minimum value of the integer (exclusive).
* The integer must be greater than this value.
*
* Example: `0`
*/
exclusiveMinimum?: number
/**
* An array of allowed values for the integer.
* The value must be one of the values in this array.
*
* Example: `[1, 2, 3, 4, 5]`
*/
enum?: number[]
/**
* A single allowed value for the integer.
* The value must be exactly this value.
*
* Example: `42`
*/
const?: number
/**
* An array of example values for the integer.
* These are for documentation purposes only.
*
* Example: `[1, 2, 3]`
*/
examples?: number[]
/**
* The default value for the integer.
* This value will be used if no value is provided.
*
* Example: `0`
*/
default?: number
/**
* A short title for the schema.
* This is for documentation purposes only.
*
* Example: `"User ID"`
*/
title?: string
/**
* A description of the schema.
* CommonMark syntax MAY be used for rich text representation.
*
* Example: `"The unique identifier of the user"`
*/
description?: string
}