
Security News
Node.js Moves Toward Stable TypeScript Support with Amaro 1.0
Amaro 1.0 lays the groundwork for stable TypeScript support in Node.js, bringing official .ts loading closer to reality.
@decorators/express-openapi
Advanced tools
node decorators - openapi decorators for swagger-ui-express and @decorators/express
openapi
decorators and swagger-ui implementation extending @decorators/express
npm install @decorators/express-openapi
enableOpenApi(app: express.Application, options: OpenApiOptions = {}): Promise<void>
Initiates the openapi document and attaches it to the application.
Params::
Name | Type | Attribute | Description |
---|---|---|---|
app | express.Application | The application object | |
options | object |
| Options to configure swagger ui and the openapi document itself |
options.serveInPath | string |
| The url where the swagger-ui will be served |
options.info | object |
| An object that represents the info on the openapi document. For more info see https://swagger.io/docs/specification/basic-structure/ |
options.info.title | string |
| |
options.info.description | string |
| |
options.info.version | string |
| |
options.tags | object[] |
| List of tags following the openapi specifications |
options.tags.[*].name | string | The tag name. | |
options.tags.[*].description | string |
| The tag description |
options.servers | object[] |
| List of servers following the openapi specifications. See https://swagger.io/docs/specification/api-host-and-base-path/ |
options.servers[*].url | string | ||
options.servers[*].description | string |
| |
options.externalDocs | object |
| External documents definition following the openapi specifications. |
options.externalDocs.url | string | ||
options.externalDocs.description | string |
| |
options.security | object[] |
| Security schemes to be applied to the api |
options.components.securitySchemes | object |
| An object that represents the components.securitySchemes on the openapi document. For more info see https://swagger.io/docs/specification/authentication/ |
registerSchema(name: string, schema: SchemaDef): Promise<void>
Defines a schema on the openapi document
Params:
Name | Type | Attribute | Description |
---|---|---|---|
name | string | The name of the schema in the openapi document | |
schema | object | A schema object following openapi specifications. See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#schemaObject |
@WithDefinitions(options: WithDefinitionsOpts)
Enables openapi definitions for a controller class (using @Controller()
from @decorators/express
)
Params:
Name | Type | Attribute | Description |
---|---|---|---|
options | object | ||
options.tags | string[] |
| Tags to be applied to all routes on the controller |
options.security | object[] |
| Security schemes to be applied to all routes on the controller |
options.responses | object |
| Tags to be applied to all routes on the controller |
options.basePath | string | The base path for all routes on the controller |
@Schema(name?: string)
Defines a new schema on the openapi document. Internally uses registerSchema
.
Params:
Name | Type | Attribute | Description |
---|---|---|---|
name | string |
| The name of the schema |
@Summary(summary: string)
Defines the summary of the operation
Params:
Name | Type | Attribute | Description |
---|---|---|---|
summary | string | The operation's summary |
@Description(description: string)
Defines the description of the operation
Params:
Name | Type | Attribute | Description |
---|---|---|---|
description | string | The operation's description |
@Param(name: string, location: ParamLocation, schema: SchemaDef, options: ParamOptions)
Adds a param definition to the operation
Params:
Name | Type | Attribute | Description |
---|---|---|---|
name | string | The parameter name | |
location | string |
| Where the parameter is located |
schema | object | A schema definition following openapi specifications | |
options | object |
| Options for the parameter following openapi specifications |
options.description | string |
| |
options.required | boolean |
| |
options.deprecated | boolean |
| |
options.allowEmptyValue | boolean |
| |
options.contentMediaType | string |
| Media type definition complying with RFC 6838. If present, schema is rendered under content |
Note:
When using @Query()
, @Params()
, @Headers()
or @Cookies()
from @decorators/express
defining
the name attribute, a basic parameter definition is automatically added to the openapi document.
This definition is equivalent to calling @Param(name, location)
without passing options.
If you need to define extra options, a new call of @Param(name, location, options)
will override the automatic definition.
Examples:
class Constructor {
@Get('/:id')
public getById(@Param('id') id, @Response() res) {
// ...
}
}
produces
...
"parameters": [
{ "name": "id", "in": "path", "required": true }
]
...
class Constructor {
@Get('/:id')
@Param('id', 'path', { required: true })
public getById(@Request() req, @Response() res) {
const id = req.params.id;
// ...
}
}
also produces
...
"parameters": [
{ "name": "id", "in": "path", "required": true }
]
...
@Tags(tag: string, ...tags: string[])
Defines one or more tags for the operation. If no tags are defined on method nor class level, then the class name will be used as default tag
Params:
Name | Type | Attribute | Description |
---|---|---|---|
tag | string | ||
tags | string[] |
|
@Deprecated()
Marks an operation as deprecated on the openapi document
@BodyContent(mediaType: string, schema: SchemaDef)
Marks an operation as deprecated on the openapi document
Params:
Name | Type | Attribute | Description |
---|---|---|---|
mediaTye | string | Media type definition complying with RFC 6838 | |
schema | object | A schema definition following openapi specifications |
@Responses(def: { [key: string]: ResponseDescriptor })
Defines one or more responses for the operation
Params:
Name | Type | Attribute | Description |
---|---|---|---|
def | object | A map of responses following openapi specifications. See https://swagger.io/docs/specification/describing-responses/ | |
def[*] | object | ||
def[*].description | string | The description for the response | |
def[*].content | object |
@OpenApiResponse(status: string | number, description: string)
Defines the description for a response
Params:
Name | Type | Attribute | Description |
---|---|---|---|
status | string | number | The response status | |
description | string | The description |
@OpenApiResponse(status: string | number, produces: string, schema: SchemaDef)
Defines one response schema for the operation
Params:
Name | Type | Attribute | Description |
---|---|---|---|
status | string | number | The response status | |
produces | string | The media type described | |
schema | object | A schema definition following the openapi specifications |
@Security(schemeName: string, scopes?: string[])
Applies a security scheme to the operation
Params:
Name | Type | Attribute | Description |
---|---|---|---|
schemeName | string | The scheme name | |
scopes | string[] |
| list of required scopes |
@Property(opts: SchemaDef & { required?: boolean })
Declares a property on a class using @Schema()
decorator
Params:
Name | Type | Attribute | Description |
---|---|---|---|
opts | object | A property definition following the openapi specifications |
FAQs
node decorators - openapi decorators for swagger-ui-express and @decorators/express
The npm package @decorators/express-openapi receives a total of 206 weekly downloads. As such, @decorators/express-openapi popularity was classified as not popular.
We found that @decorators/express-openapi demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Amaro 1.0 lays the groundwork for stable TypeScript support in Node.js, bringing official .ts loading closer to reality.
Research
A deceptive PyPI package posing as an Instagram growth tool collects user credentials and sends them to third-party bot services.
Product
Socket now supports pylock.toml, enabling secure, reproducible Python builds with advanced scanning and full alignment with PEP 751's new standard.