mirror of
https://github.com/LukeHagar/openapi-types.git
synced 2025-12-06 04:20:29 +00:00
203 lines
4.8 KiB
TypeScript
203 lines
4.8 KiB
TypeScript
import type { Extension } from "../extensions"
|
|
|
|
/**
|
|
* -----
|
|
* Array Schema
|
|
* -----
|
|
*
|
|
* A schema for array values. Includes array-specific validation properties
|
|
* that are only valid when `type: "array"` 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: "array"` - Required The type identifier for array schemas
|
|
* @key `items` - Optional Schema for array items
|
|
* @key `prefixItems` - Optional Schema for array items at specific positions
|
|
* @key `contains` - Optional Schema that array must contain at least one item matching
|
|
* @key `minContains` - Optional Minimum number of items that must match contains
|
|
* @key `maxContains` - Optional Maximum number of items that must match contains
|
|
* @key `minItems` - Optional Minimum number of items in the array
|
|
* @key `maxItems` - Optional Maximum number of items in the array
|
|
* @key `uniqueItems` - Optional Whether array items must be unique
|
|
* @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 "array".
|
|
*
|
|
* -----
|
|
* Examples
|
|
* -----
|
|
*
|
|
* @example (basic array):
|
|
* ```ts
|
|
* const arraySchema: ArraySchema = {
|
|
* type: "array",
|
|
* items: { type: "string" }
|
|
* };
|
|
* ```
|
|
*
|
|
* @example (array with validation):
|
|
* ```ts
|
|
* const arraySchema: ArraySchema = {
|
|
* type: "array",
|
|
* items: { type: "string" },
|
|
* minItems: 1,
|
|
* maxItems: 10,
|
|
* uniqueItems: true
|
|
* };
|
|
* ```
|
|
*
|
|
* @example (array with prefixItems):
|
|
* ```ts
|
|
* const arraySchema: ArraySchema = {
|
|
* type: "array",
|
|
* prefixItems: [
|
|
* { type: "string" },
|
|
* { type: "number" }
|
|
* ]
|
|
* };
|
|
* ```
|
|
*
|
|
* @example (array with contains):
|
|
* ```ts
|
|
* const arraySchema: ArraySchema = {
|
|
* type: "array",
|
|
* items: { type: "string" },
|
|
* contains: { type: "string", enum: ["admin"] },
|
|
* minContains: 1
|
|
* };
|
|
* ```
|
|
*/
|
|
export interface ArraySchema extends Extension {
|
|
/**
|
|
* The type identifier for array schemas.
|
|
* Must be "array".
|
|
*/
|
|
type: "array"
|
|
|
|
/**
|
|
* The schema for array items.
|
|
* All items in the array must conform to this schema.
|
|
*
|
|
* Example: `{ type: "string" }`
|
|
*/
|
|
items?: unknown
|
|
|
|
/**
|
|
* The schema for array items at specific positions.
|
|
* Items at position i must conform to the schema at index i.
|
|
*
|
|
* Example: `[{ type: "string" }, { type: "number" }]`
|
|
*/
|
|
prefixItems?: unknown[]
|
|
|
|
/**
|
|
* The schema that the array must contain at least one item matching.
|
|
* At least one item in the array must conform to this schema.
|
|
*
|
|
* Example: `{ type: "string", enum: ["admin"] }`
|
|
*/
|
|
contains?: unknown
|
|
|
|
/**
|
|
* The minimum number of items that must match the contains schema.
|
|
* Must be a non-negative integer.
|
|
*
|
|
* Example: `1`
|
|
*/
|
|
minContains?: number
|
|
|
|
/**
|
|
* The maximum number of items that must match the contains schema.
|
|
* Must be a non-negative integer.
|
|
*
|
|
* Example: `5`
|
|
*/
|
|
maxContains?: number
|
|
|
|
/**
|
|
* The minimum number of items in the array.
|
|
* Must be a non-negative integer.
|
|
*
|
|
* Example: `1`
|
|
*/
|
|
minItems?: number
|
|
|
|
/**
|
|
* The maximum number of items in the array.
|
|
* Must be a non-negative integer.
|
|
*
|
|
* Example: `10`
|
|
*/
|
|
maxItems?: number
|
|
|
|
/**
|
|
* Whether array items must be unique.
|
|
* If true, all items in the array must be unique.
|
|
*
|
|
* Example: `true`
|
|
*/
|
|
uniqueItems?: boolean
|
|
|
|
/**
|
|
* An array of allowed values for the array.
|
|
* The value must be one of the values in this array.
|
|
*
|
|
* Example: `[["a", "b"], ["c", "d"]]`
|
|
*/
|
|
enum?: unknown[]
|
|
|
|
/**
|
|
* A single allowed value for the array.
|
|
* The value must be exactly this value.
|
|
*
|
|
* Example: `["a", "b"]`
|
|
*/
|
|
const?: unknown
|
|
|
|
/**
|
|
* An array of example values for the array.
|
|
* These are for documentation purposes only.
|
|
*
|
|
* Example: `[["a", "b"], ["c", "d"]]`
|
|
*/
|
|
examples?: unknown[]
|
|
|
|
/**
|
|
* The default value for the array.
|
|
* This value will be used if no value is provided.
|
|
*
|
|
* Example: `[]`
|
|
*/
|
|
default?: unknown[]
|
|
|
|
/**
|
|
* A short title for the schema.
|
|
* This is for documentation purposes only.
|
|
*
|
|
* Example: `"User Tags"`
|
|
*/
|
|
title?: string
|
|
|
|
/**
|
|
* A description of the schema.
|
|
* CommonMark syntax MAY be used for rich text representation.
|
|
*
|
|
* Example: `"Array of user tags"`
|
|
*/
|
|
description?: string
|
|
}
|