1
0
mirror of https://github.com/Unleash/unleash.git synced 2024-11-01 19:07:38 +01:00
unleash.unleash/src/lib/openapi/spec/event-schema.ts
Thomas Heartman 4dec126199
feat: add OpenAPI spec to events controller. (#1754)
* Feat: add initial event schema

* Feat: add events-schema plus tests

* Feat(broken): add openapi validation to getEvents endpoint

* Add schema to basic events endpoint

* Feat: Add openapi for feature events

* Fix: fix recursive schema inclusion

* Feat: add test for recursive function

* Fix: make nullable fields nullable

* Fix: remove `ADMIN` permission for toggle events.

* fix: add new schemas to the snapshot

* Fix: remove recursive schema inclusion

* Feat: test feature events schema

* Fix: add correct permissions for feature events endpoint.

* Refactor: rename "name" to "featureName" for clearer docs

* Fix: Add missing "version" field to feature events

* Feat: add descriptions and extra responses to events endpoints.

* Fix: update openapi snapshot

* Simplify standard responses function

* Refactor: move endpoint descriptions into own file.

* Refactor: simplify type signature.

* Feat: specify type of data and preData properties to object

* Fix: update snapshot

* Refactor: move standard-responses into /util/ directory.
2022-06-30 08:12:34 +00:00

54 lines
1.2 KiB
TypeScript

import { FromSchema } from 'json-schema-to-ts';
import { tagSchema } from './tag-schema';
export const eventSchema = {
$id: '#/components/schemas/eventSchema',
type: 'object',
additionalProperties: false,
required: ['id', 'createdAt', 'type', 'createdBy'],
properties: {
id: {
type: 'integer',
minimum: 1,
},
createdAt: {
type: 'string',
format: 'date-time',
},
type: {
type: 'string',
},
createdBy: {
type: 'string',
},
environment: {
type: 'string',
nullable: true,
},
project: {
type: 'string',
nullable: true,
},
featureName: {
type: 'string',
nullable: true,
},
data: { type: 'object', nullable: true },
preData: { type: 'object', nullable: true },
tags: {
type: 'array',
items: {
$ref: tagSchema.$id,
},
nullable: true,
},
},
components: {
schemas: {
tagSchema,
},
},
} as const;
export type EventSchema = FromSchema<typeof eventSchema>;