or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

generic-types.mdindex.mdjson-schema.mdopenapi-v2.mdopenapi-v3_1.mdopenapi-v3.md

generic-types.mddocs/

0

# Generic OpenAPI Types

1

2

Cross-version union types for building version-agnostic OpenAPI tools and parsers. These types enable libraries to work with multiple OpenAPI specification versions without requiring version-specific handling.

3

4

## Capabilities

5

6

### Document Type

7

8

Union type representing any OpenAPI document across all supported versions.

9

10

```typescript { .api }

11

/**

12

* Generic OpenAPI document type supporting all specification versions

13

* @template T - Extension object type for custom properties

14

*/

15

type Document<T extends {} = {}> =

16

| OpenAPIV2.Document<T>

17

| OpenAPIV3.Document<T>

18

| OpenAPIV3_1.Document<T>;

19

```

20

21

### Operation Type

22

23

Union type representing any OpenAPI operation object across all supported versions.

24

25

```typescript { .api }

26

/**

27

* Generic OpenAPI operation type supporting all specification versions

28

* @template T - Extension object type for custom properties

29

*/

30

type Operation<T extends {} = {}> =

31

| OpenAPIV2.OperationObject<T>

32

| OpenAPIV3.OperationObject<T>

33

| OpenAPIV3_1.OperationObject<T>;

34

```

35

36

### Parameter Type

37

38

Union type representing any OpenAPI parameter across all supported versions.

39

40

```typescript { .api }

41

/**

42

* Generic OpenAPI parameter type supporting all specification versions

43

*/

44

type Parameter =

45

| OpenAPIV3_1.ReferenceObject

46

| OpenAPIV3_1.ParameterObject

47

| OpenAPIV3.ReferenceObject

48

| OpenAPIV3.ParameterObject

49

| OpenAPIV2.ReferenceObject

50

| OpenAPIV2.Parameter;

51

```

52

53

### Parameters Type

54

55

Union type representing parameter arrays across all supported versions.

56

57

```typescript { .api }

58

/**

59

* Generic OpenAPI parameters array type supporting all specification versions

60

*/

61

type Parameters =

62

| (OpenAPIV3_1.ReferenceObject | OpenAPIV3_1.ParameterObject)[]

63

| (OpenAPIV3.ReferenceObject | OpenAPIV3.ParameterObject)[]

64

| (OpenAPIV2.ReferenceObject | OpenAPIV2.Parameter)[];

65

```

66

67

### Request Interface

68

69

Generic request object structure for OpenAPI request handling.

70

71

```typescript { .api }

72

/**

73

* Generic request interface for OpenAPI request processing

74

*/

75

interface Request {

76

/** Request body data */

77

body?: any;

78

/** Request headers object */

79

headers?: object;

80

/** Path parameters object */

81

params?: object;

82

/** Query parameters object */

83

query?: object;

84

}

85

```

86

87

**Usage Examples:**

88

89

```typescript

90

import { OpenAPI } from "openapi-types";

91

92

// Version-agnostic document processing

93

function getDocumentTitle(doc: OpenAPI.Document): string {

94

return doc.info.title;

95

}

96

97

// Version-agnostic operation processing

98

function getOperationId(operation: OpenAPI.Operation): string | undefined {

99

return operation.operationId;

100

}

101

102

// Generic parameter validation

103

function validateParameter(param: OpenAPI.Parameter): boolean {

104

// Handle different parameter formats across versions

105

if ('$ref' in param) {

106

return true; // Reference object

107

}

108

return param.name != null && param.in != null;

109

}

110

111

// Request processing

112

function processRequest(req: OpenAPI.Request) {

113

console.log('Body:', req.body);

114

console.log('Headers:', req.headers);

115

console.log('Params:', req.params);

116

console.log('Query:', req.query);

117

}

118

```