mirror of
				https://github.com/lingble/twenty.git
				synced 2025-10-31 04:37:56 +00:00 
			
		
		
		
	Webhook Docs (#3966)
* add webhook docs, openapi v3.1, stoplight v8 * *.*
This commit is contained in:
		| @@ -50,7 +50,7 @@ | |||||||
|     "@sentry/react": "^7.88.0", |     "@sentry/react": "^7.88.0", | ||||||
|     "@sentry/tracing": "^7.99.0", |     "@sentry/tracing": "^7.99.0", | ||||||
|     "@sniptt/guards": "^0.2.0", |     "@sniptt/guards": "^0.2.0", | ||||||
|     "@stoplight/elements": "^7.16.2", |     "@stoplight/elements": "^8.0.5", | ||||||
|     "@swc/jest": "^0.2.29", |     "@swc/jest": "^0.2.29", | ||||||
|     "@tabler/icons-react": "^2.44.0", |     "@tabler/icons-react": "^2.44.0", | ||||||
|     "@types/lodash.camelcase": "^4.3.7", |     "@types/lodash.camelcase": "^4.3.7", | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| import { Injectable } from '@nestjs/common'; | import { Injectable } from '@nestjs/common'; | ||||||
|  |  | ||||||
| import { Request } from 'express'; | import { Request } from 'express'; | ||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| import { TokenService } from 'src/core/auth/services/token.service'; | import { TokenService } from 'src/core/auth/services/token.service'; | ||||||
| import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service'; | import { ObjectMetadataService } from 'src/metadata/object-metadata/object-metadata.service'; | ||||||
| @@ -16,6 +16,7 @@ import { | |||||||
|   computeSchemaComponents, |   computeSchemaComponents, | ||||||
| } from 'src/core/open-api/utils/components.utils'; | } from 'src/core/open-api/utils/components.utils'; | ||||||
| import { computeSchemaTags } from 'src/core/open-api/utils/compute-schema-tags.utils'; | import { computeSchemaTags } from 'src/core/open-api/utils/compute-schema-tags.utils'; | ||||||
|  | import { computeWebhooks } from 'src/core/open-api/utils/computeWebhooks.utils'; | ||||||
|  |  | ||||||
| @Injectable() | @Injectable() | ||||||
| export class OpenApiService { | export class OpenApiService { | ||||||
| @@ -24,7 +25,7 @@ export class OpenApiService { | |||||||
|     private readonly objectMetadataService: ObjectMetadataService, |     private readonly objectMetadataService: ObjectMetadataService, | ||||||
|   ) {} |   ) {} | ||||||
|  |  | ||||||
|   async generateCoreSchema(request: Request): Promise<OpenAPIV3.Document> { |   async generateCoreSchema(request: Request): Promise<OpenAPIV3_1.Document> { | ||||||
|     const schema = baseSchema(); |     const schema = baseSchema(); | ||||||
|  |  | ||||||
|     let objectMetadataItems; |     let objectMetadataItems; | ||||||
| @@ -46,7 +47,21 @@ export class OpenApiService { | |||||||
|       paths[`/${item.namePlural}/{id}`] = computeSingleResultPath(item); |       paths[`/${item.namePlural}/{id}`] = computeSingleResultPath(item); | ||||||
|  |  | ||||||
|       return paths; |       return paths; | ||||||
|     }, schema.paths as OpenAPIV3.PathsObject); |     }, schema.paths as OpenAPIV3_1.PathsObject); | ||||||
|  |  | ||||||
|  |     schema.webhooks = objectMetadataItems.reduce( | ||||||
|  |       (paths, item) => { | ||||||
|  |         paths[`Create ${item.nameSingular}`] = computeWebhooks('create', item); | ||||||
|  |         paths[`Update ${item.nameSingular}`] = computeWebhooks('update', item); | ||||||
|  |         paths[`Delete ${item.nameSingular}`] = computeWebhooks('delete', item); | ||||||
|  |  | ||||||
|  |         return paths; | ||||||
|  |       }, | ||||||
|  |       {} as Record< | ||||||
|  |         string, | ||||||
|  |         OpenAPIV3_1.PathItemObject | OpenAPIV3_1.ReferenceObject | ||||||
|  |       >, | ||||||
|  |     ); | ||||||
|  |  | ||||||
|     schema.tags = computeSchemaTags(objectMetadataItems); |     schema.tags = computeSchemaTags(objectMetadataItems); | ||||||
|  |  | ||||||
| @@ -63,7 +78,7 @@ export class OpenApiService { | |||||||
|     return schema; |     return schema; | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   async generateMetaDataSchema(): Promise<OpenAPIV3.Document> { |   async generateMetaDataSchema(): Promise<OpenAPIV3_1.Document> { | ||||||
|     //TODO Add once Rest MetaData api is ready |     //TODO Add once Rest MetaData api is ready | ||||||
|     const schema = baseSchema(); |     const schema = baseSchema(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,8 +1,8 @@ | |||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| import { computeOpenApiPath } from 'src/core/open-api/utils/path.utils'; | import { computeOpenApiPath } from 'src/core/open-api/utils/path.utils'; | ||||||
|  |  | ||||||
| export const baseSchema = (): OpenAPIV3.Document => { | export const baseSchema = (): OpenAPIV3_1.Document => { | ||||||
|   return { |   return { | ||||||
|     openapi: '3.0.3', |     openapi: '3.0.3', | ||||||
|     info: { |     info: { | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | ||||||
| import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity'; | import { FieldMetadataType } from 'src/metadata/field-metadata/field-metadata.entity'; | ||||||
| @@ -12,7 +12,7 @@ import { | |||||||
|   computeOrderByParameters, |   computeOrderByParameters, | ||||||
| } from 'src/core/open-api/utils/parameters.utils'; | } from 'src/core/open-api/utils/parameters.utils'; | ||||||
|  |  | ||||||
| type Property = OpenAPIV3.SchemaObject; | type Property = OpenAPIV3_1.SchemaObject; | ||||||
|  |  | ||||||
| type Properties = { | type Properties = { | ||||||
|   [name: string]: Property; |   [name: string]: Property; | ||||||
| @@ -99,13 +99,13 @@ const getRequiredFields = (item: ObjectMetadataEntity): string[] => { | |||||||
|  |  | ||||||
| const computeSchemaComponent = ( | const computeSchemaComponent = ( | ||||||
|   item: ObjectMetadataEntity, |   item: ObjectMetadataEntity, | ||||||
| ): OpenAPIV3.SchemaObject => { | ): OpenAPIV3_1.SchemaObject => { | ||||||
|   const result = { |   const result = { | ||||||
|     type: 'object', |     type: 'object', | ||||||
|     description: item.description, |     description: item.description, | ||||||
|     properties: getSchemaComponentsProperties(item), |     properties: getSchemaComponentsProperties(item), | ||||||
|     example: {}, |     example: {}, | ||||||
|   } as OpenAPIV3.SchemaObject; |   } as OpenAPIV3_1.SchemaObject; | ||||||
|  |  | ||||||
|   const requiredFields = getRequiredFields(item); |   const requiredFields = getRequiredFields(item); | ||||||
|  |  | ||||||
| @@ -126,20 +126,20 @@ const computeSchemaComponent = ( | |||||||
|  |  | ||||||
| export const computeSchemaComponents = ( | export const computeSchemaComponents = ( | ||||||
|   objectMetadataItems: ObjectMetadataEntity[], |   objectMetadataItems: ObjectMetadataEntity[], | ||||||
| ): Record<string, OpenAPIV3.SchemaObject> => { | ): Record<string, OpenAPIV3_1.SchemaObject> => { | ||||||
|   return objectMetadataItems.reduce( |   return objectMetadataItems.reduce( | ||||||
|     (schemas, item) => { |     (schemas, item) => { | ||||||
|       schemas[capitalize(item.nameSingular)] = computeSchemaComponent(item); |       schemas[capitalize(item.nameSingular)] = computeSchemaComponent(item); | ||||||
|  |  | ||||||
|       return schemas; |       return schemas; | ||||||
|     }, |     }, | ||||||
|     {} as Record<string, OpenAPIV3.SchemaObject>, |     {} as Record<string, OpenAPIV3_1.SchemaObject>, | ||||||
|   ); |   ); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeParameterComponents = (): Record< | export const computeParameterComponents = (): Record< | ||||||
|   string, |   string, | ||||||
|   OpenAPIV3.ParameterObject |   OpenAPIV3_1.ParameterObject | ||||||
| > => { | > => { | ||||||
|   return { |   return { | ||||||
|     idPath: computeIdPathParameter(), |     idPath: computeIdPathParameter(), | ||||||
|   | |||||||
| @@ -1,11 +1,11 @@ | |||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | ||||||
| import { capitalize } from 'src/utils/capitalize'; | import { capitalize } from 'src/utils/capitalize'; | ||||||
|  |  | ||||||
| export const computeSchemaTags = ( | export const computeSchemaTags = ( | ||||||
|   items: ObjectMetadataEntity[], |   items: ObjectMetadataEntity[], | ||||||
| ): OpenAPIV3.TagObject[] => { | ): OpenAPIV3_1.TagObject[] => { | ||||||
|   const results = [{ name: 'General', description: 'General requests' }]; |   const results = [{ name: 'General', description: 'General requests' }]; | ||||||
|  |  | ||||||
|   items.forEach((item) => { |   items.forEach((item) => { | ||||||
|   | |||||||
| @@ -0,0 +1,74 @@ | |||||||
|  | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
|  | import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | ||||||
|  | import { capitalize } from 'src/utils/capitalize'; | ||||||
|  |  | ||||||
|  | export const computeWebhooks = ( | ||||||
|  |   type: 'create' | 'update' | 'delete', | ||||||
|  |   item: ObjectMetadataEntity, | ||||||
|  | ): OpenAPIV3_1.PathItemObject => { | ||||||
|  |   return { | ||||||
|  |     post: { | ||||||
|  |       tags: [item.nameSingular], | ||||||
|  |       security: [], | ||||||
|  |       requestBody: { | ||||||
|  |         description: `*${type}*.**${item.nameSingular}**, ***.**${item.nameSingular}**, ***.*****`, | ||||||
|  |         content: { | ||||||
|  |           'application/json': { | ||||||
|  |             schema: { | ||||||
|  |               type: 'object', | ||||||
|  |               properties: { | ||||||
|  |                 targetUrl: { | ||||||
|  |                   type: 'string', | ||||||
|  |                   example: 'https://example.com/incomingWebhook', | ||||||
|  |                 }, | ||||||
|  |                 eventType: { | ||||||
|  |                   type: 'string', | ||||||
|  |                   enum: [ | ||||||
|  |                     '*.*', | ||||||
|  |                     '*.' + item.nameSingular, | ||||||
|  |                     type + '.' + item.nameSingular, | ||||||
|  |                   ], | ||||||
|  |                 }, | ||||||
|  |                 objectMetadata: { | ||||||
|  |                   type: 'object', | ||||||
|  |                   properties: { | ||||||
|  |                     id: { | ||||||
|  |                       type: 'string', | ||||||
|  |                       example: '370985db-22d8-4463-8e5f-2271d30913bd', | ||||||
|  |                     }, | ||||||
|  |                     nameSingular: { | ||||||
|  |                       type: 'string', | ||||||
|  |                       enum: [item.nameSingular], | ||||||
|  |                     }, | ||||||
|  |                   }, | ||||||
|  |                 }, | ||||||
|  |                 workspaceId: { | ||||||
|  |                   type: 'string', | ||||||
|  |                   example: '872cfcf1-c79f-42bc-877d-5829f06eb3f9', | ||||||
|  |                 }, | ||||||
|  |                 webhookId: { | ||||||
|  |                   type: 'string', | ||||||
|  |                   example: '90056586-1228-4e03-a507-70140aa85c05', | ||||||
|  |                 }, | ||||||
|  |                 eventDate: { | ||||||
|  |                   type: 'string', | ||||||
|  |                   example: '2024-02-14T11:27:01.779Z', | ||||||
|  |                 }, | ||||||
|  |                 record: { | ||||||
|  |                   $ref: `#/components/schemas/${capitalize(item.nameSingular)}`, | ||||||
|  |                 }, | ||||||
|  |               }, | ||||||
|  |             }, | ||||||
|  |           }, | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |       responses: { | ||||||
|  |         '200': { | ||||||
|  |           description: | ||||||
|  |             'Return a 200 status to indicate that the data was received successfully', | ||||||
|  |         }, | ||||||
|  |       }, | ||||||
|  |     }, | ||||||
|  |   } as OpenAPIV3_1.PathItemObject; | ||||||
|  | }; | ||||||
| @@ -1,8 +1,8 @@ | |||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| export const getErrorResponses = ( | export const getErrorResponses = ( | ||||||
|   description: string, |   description: string, | ||||||
| ): OpenAPIV3.ResponseObject => { | ): OpenAPIV3_1.ResponseObject => { | ||||||
|   return { |   return { | ||||||
|     description, |     description, | ||||||
|     content: { |     content: { | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| import { OrderByDirection } from 'src/workspace/workspace-query-builder/interfaces/record.interface'; | import { OrderByDirection } from 'src/workspace/workspace-query-builder/interfaces/record.interface'; | ||||||
|  |  | ||||||
| @@ -7,7 +7,7 @@ import { Conjunctions } from 'src/core/api-rest/api-rest-query-builder/factories | |||||||
| import { DEFAULT_ORDER_DIRECTION } from 'src/core/api-rest/api-rest-query-builder/factories/input-factories/order-by-input.factory'; | import { DEFAULT_ORDER_DIRECTION } from 'src/core/api-rest/api-rest-query-builder/factories/input-factories/order-by-input.factory'; | ||||||
| import { DEFAULT_CONJUNCTION } from 'src/core/api-rest/api-rest-query-builder/factories/input-factories/filter-utils/add-default-conjunction.utils'; | import { DEFAULT_CONJUNCTION } from 'src/core/api-rest/api-rest-query-builder/factories/input-factories/filter-utils/add-default-conjunction.utils'; | ||||||
|  |  | ||||||
| export const computeLimitParameters = (): OpenAPIV3.ParameterObject => { | export const computeLimitParameters = (): OpenAPIV3_1.ParameterObject => { | ||||||
|   return { |   return { | ||||||
|     name: 'limit', |     name: 'limit', | ||||||
|     in: 'query', |     in: 'query', | ||||||
| @@ -22,7 +22,7 @@ export const computeLimitParameters = (): OpenAPIV3.ParameterObject => { | |||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeOrderByParameters = (): OpenAPIV3.ParameterObject => { | export const computeOrderByParameters = (): OpenAPIV3_1.ParameterObject => { | ||||||
|   return { |   return { | ||||||
|     name: 'order_by', |     name: 'order_by', | ||||||
|     in: 'query', |     in: 'query', | ||||||
| @@ -49,7 +49,7 @@ export const computeOrderByParameters = (): OpenAPIV3.ParameterObject => { | |||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeDepthParameters = (): OpenAPIV3.ParameterObject => { | export const computeDepthParameters = (): OpenAPIV3_1.ParameterObject => { | ||||||
|   return { |   return { | ||||||
|     name: 'depth', |     name: 'depth', | ||||||
|     in: 'query', |     in: 'query', | ||||||
| @@ -62,7 +62,7 @@ export const computeDepthParameters = (): OpenAPIV3.ParameterObject => { | |||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeFilterParameters = (): OpenAPIV3.ParameterObject => { | export const computeFilterParameters = (): OpenAPIV3_1.ParameterObject => { | ||||||
|   return { |   return { | ||||||
|     name: 'filter', |     name: 'filter', | ||||||
|     in: 'query', |     in: 'query', | ||||||
| @@ -95,7 +95,7 @@ export const computeFilterParameters = (): OpenAPIV3.ParameterObject => { | |||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeLastCursorParameters = (): OpenAPIV3.ParameterObject => { | export const computeLastCursorParameters = (): OpenAPIV3_1.ParameterObject => { | ||||||
|   return { |   return { | ||||||
|     name: 'last_cursor', |     name: 'last_cursor', | ||||||
|     in: 'query', |     in: 'query', | ||||||
| @@ -107,7 +107,7 @@ export const computeLastCursorParameters = (): OpenAPIV3.ParameterObject => { | |||||||
|   }; |   }; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeIdPathParameter = (): OpenAPIV3.ParameterObject => { | export const computeIdPathParameter = (): OpenAPIV3_1.ParameterObject => { | ||||||
|   return { |   return { | ||||||
|     name: 'id', |     name: 'id', | ||||||
|     in: 'path', |     in: 'path', | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| import { OpenAPIV3 } from 'openapi-types'; | import { OpenAPIV3_1 } from 'openapi-types'; | ||||||
|  |  | ||||||
| import { capitalize } from 'src/utils/capitalize'; | import { capitalize } from 'src/utils/capitalize'; | ||||||
| import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | import { ObjectMetadataEntity } from 'src/metadata/object-metadata/object-metadata.entity'; | ||||||
| @@ -12,7 +12,7 @@ import { getRequestBody } from 'src/core/open-api/utils/request-body.utils'; | |||||||
|  |  | ||||||
| export const computeManyResultPath = ( | export const computeManyResultPath = ( | ||||||
|   item: ObjectMetadataEntity, |   item: ObjectMetadataEntity, | ||||||
| ): OpenAPIV3.PathItemObject => { | ): OpenAPIV3_1.PathItemObject => { | ||||||
|   return { |   return { | ||||||
|     get: { |     get: { | ||||||
|       tags: [item.namePlural], |       tags: [item.namePlural], | ||||||
| @@ -44,12 +44,12 @@ export const computeManyResultPath = ( | |||||||
|         '401': { $ref: '#/components/responses/401' }, |         '401': { $ref: '#/components/responses/401' }, | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|   } as OpenAPIV3.PathItemObject; |   } as OpenAPIV3_1.PathItemObject; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeSingleResultPath = ( | export const computeSingleResultPath = ( | ||||||
|   item: ObjectMetadataEntity, |   item: ObjectMetadataEntity, | ||||||
| ): OpenAPIV3.PathItemObject => { | ): OpenAPIV3_1.PathItemObject => { | ||||||
|   return { |   return { | ||||||
|     get: { |     get: { | ||||||
|       tags: [item.namePlural], |       tags: [item.namePlural], | ||||||
| @@ -92,10 +92,10 @@ export const computeSingleResultPath = ( | |||||||
|         '401': { $ref: '#/components/responses/401' }, |         '401': { $ref: '#/components/responses/401' }, | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|   } as OpenAPIV3.PathItemObject; |   } as OpenAPIV3_1.PathItemObject; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| export const computeOpenApiPath = (): OpenAPIV3.PathItemObject => { | export const computeOpenApiPath = (): OpenAPIV3_1.PathItemObject => { | ||||||
|   return { |   return { | ||||||
|     get: { |     get: { | ||||||
|       tags: ['General'], |       tags: ['General'], | ||||||
| @@ -105,5 +105,5 @@ export const computeOpenApiPath = (): OpenAPIV3.PathItemObject => { | |||||||
|         '200': getJsonResponse(), |         '200': getJsonResponse(), | ||||||
|       }, |       }, | ||||||
|     }, |     }, | ||||||
|   } as OpenAPIV3.PathItemObject; |   } as OpenAPIV3_1.PathItemObject; | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										136
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								yarn.lock
									
									
									
									
									
								
							| @@ -12336,29 +12336,29 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/elements-core@npm:~7.16.3": | "@stoplight/elements-core@npm:~8.0.5": | ||||||
|   version: 7.16.3 |   version: 8.0.5 | ||||||
|   resolution: "@stoplight/elements-core@npm:7.16.3" |   resolution: "@stoplight/elements-core@npm:8.0.5" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@stoplight/http-spec": "npm:^6.0.0" |     "@stoplight/http-spec": "npm:^7.0.2" | ||||||
|     "@stoplight/json": "npm:^3.18.1" |     "@stoplight/json": "npm:^3.18.1" | ||||||
|     "@stoplight/json-schema-ref-parser": "npm:^9.0.5" |     "@stoplight/json-schema-ref-parser": "npm:^9.0.5" | ||||||
|     "@stoplight/json-schema-sampler": "npm:0.2.3" |     "@stoplight/json-schema-sampler": "npm:0.2.3" | ||||||
|     "@stoplight/json-schema-tree": "npm:^3.0.0" |     "@stoplight/json-schema-tree": "npm:^4.0.0" | ||||||
|     "@stoplight/json-schema-viewer": "npm:^4.14.1" |     "@stoplight/json-schema-viewer": "npm:^4.14.2" | ||||||
|     "@stoplight/markdown-viewer": "npm:^5.6.0" |     "@stoplight/markdown-viewer": "npm:^5.6.0" | ||||||
|     "@stoplight/mosaic": "npm:^1.46.1" |     "@stoplight/mosaic": "npm:^1.51.3" | ||||||
|     "@stoplight/mosaic-code-editor": "npm:^1.46.1" |     "@stoplight/mosaic-code-editor": "npm:^1.51.3" | ||||||
|     "@stoplight/mosaic-code-viewer": "npm:^1.46.1" |     "@stoplight/mosaic-code-viewer": "npm:^1.51.3" | ||||||
|     "@stoplight/path": "npm:^1.3.2" |     "@stoplight/path": "npm:^1.3.2" | ||||||
|     "@stoplight/react-error-boundary": "npm:^3.0.0" |     "@stoplight/react-error-boundary": "npm:^3.0.0" | ||||||
|     "@stoplight/types": "npm:^14.0.0" |     "@stoplight/types": "npm:^14.1.1" | ||||||
|     "@stoplight/yaml": "npm:^4.2.3" |     "@stoplight/yaml": "npm:^4.2.3" | ||||||
|     classnames: "npm:^2.2.6" |     classnames: "npm:^2.2.6" | ||||||
|     httpsnippet-lite: "npm:^3.0.5" |     httpsnippet-lite: "npm:^3.0.5" | ||||||
|     jotai: "npm:1.3.9" |     jotai: "npm:1.3.9" | ||||||
|     json-schema: "npm:^0.4.0" |     json-schema: "npm:^0.4.0" | ||||||
|     lodash: "npm:^4.17.19" |     lodash: "npm:^4.17.21" | ||||||
|     nanoid: "npm:^3.1.32" |     nanoid: "npm:^3.1.32" | ||||||
|     prop-types: "npm:^15.7.2" |     prop-types: "npm:^15.7.2" | ||||||
|     react-query: "npm:^3.34.19" |     react-query: "npm:^3.34.19" | ||||||
| @@ -12371,51 +12371,49 @@ __metadata: | |||||||
|   peerDependencies: |   peerDependencies: | ||||||
|     react: ">=16.8" |     react: ">=16.8" | ||||||
|     react-dom: ">=16.8" |     react-dom: ">=16.8" | ||||||
|   checksum: 7dac752aa91c9efe2338df26f3a62b3498707756798054d1289472df7837a7428076c3d95e4942f5f2d65d8a8fab3067486c97fb6764b8bf3d03a9ac0bfba4a9 |   checksum: 0dd56fd70b95c497ef17e51f57cb31d632dbeee88241e9884fcb50badabc2bba257058b69ebef5b4b4ca099441b36d565d4bd4f36bc313c24fc250cd45278cb5 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/elements@npm:^7.16.2": | "@stoplight/elements@npm:^8.0.5": | ||||||
|   version: 7.16.3 |   version: 8.0.5 | ||||||
|   resolution: "@stoplight/elements@npm:7.16.3" |   resolution: "@stoplight/elements@npm:8.0.5" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@stoplight/elements-core": "npm:~7.16.3" |     "@stoplight/elements-core": "npm:~8.0.5" | ||||||
|     "@stoplight/http-spec": "npm:^6.0.0" |     "@stoplight/http-spec": "npm:^7.0.2" | ||||||
|     "@stoplight/json": "npm:^3.18.1" |     "@stoplight/json": "npm:^3.18.1" | ||||||
|     "@stoplight/mosaic": "npm:^1.46.1" |     "@stoplight/mosaic": "npm:^1.51.3" | ||||||
|     "@stoplight/types": "npm:^14.0.0" |     "@stoplight/types": "npm:^14.1.1" | ||||||
|     "@stoplight/yaml": "npm:^4.2.3" |     "@stoplight/yaml": "npm:^4.2.3" | ||||||
|     classnames: "npm:^2.2.6" |     classnames: "npm:^2.2.6" | ||||||
|     file-saver: "npm:^2.0.5" |     file-saver: "npm:^2.0.5" | ||||||
|     lodash: "npm:^4.17.19" |     lodash: "npm:^4.17.21" | ||||||
|     react-query: "npm:^3.34.19" |     react-query: "npm:^3.34.19" | ||||||
|     react-router-dom: "npm:^5.2.0" |     react-router-dom: "npm:^5.2.0" | ||||||
|   peerDependencies: |   peerDependencies: | ||||||
|     react: ">=16.8" |     react: ">=16.8" | ||||||
|     react-dom: ">=16.8" |     react-dom: ">=16.8" | ||||||
|   checksum: bbc90b219a9b36509ead591d65f5fda842ce1de0217a7ef5f3b0cda22e3e8e28b5f7de80b5d6c9681bec3a17dc7d973e8415093625c6769a06d52774a706ae14 |   checksum: 4e3466ffcce215f33df15dbc33be681f69f18f460171395f7444cf1975c1cf6c9cd9878ff53571677ab48b59ac671c41ca0d073239bb84268bf2877ab4dfa79f | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/http-spec@npm:^6.0.0": | "@stoplight/http-spec@npm:^7.0.2": | ||||||
|   version: 6.0.3 |   version: 7.0.2 | ||||||
|   resolution: "@stoplight/http-spec@npm:6.0.3" |   resolution: "@stoplight/http-spec@npm:7.0.2" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@stoplight/json": "npm:^3.18.1" |     "@stoplight/json": "npm:^3.18.1" | ||||||
|     "@stoplight/json-schema-generator": "npm:1.0.2" |     "@stoplight/json-schema-generator": "npm:1.0.2" | ||||||
|     "@stoplight/types": "npm:14.0.0" |     "@stoplight/types": "npm:14.1.0" | ||||||
|     "@types/json-schema": "npm:7.0.11" |     "@types/json-schema": "npm:7.0.11" | ||||||
|     "@types/swagger-schema-official": "npm:~2.0.22" |     "@types/swagger-schema-official": "npm:~2.0.22" | ||||||
|     "@types/type-is": "npm:^1.6.3" |     "@types/type-is": "npm:^1.6.3" | ||||||
|     fnv-plus: "npm:^1.3.1" |     fnv-plus: "npm:^1.3.1" | ||||||
|     lodash.isequalwith: "npm:^4.4.0" |     lodash: "npm:^4.17.21" | ||||||
|     lodash.pick: "npm:^4.4.0" |  | ||||||
|     lodash.pickby: "npm:^4.6.0" |  | ||||||
|     openapi3-ts: "npm:^2.0.2" |     openapi3-ts: "npm:^2.0.2" | ||||||
|     postman-collection: "npm:^4.1.2" |     postman-collection: "npm:^4.1.2" | ||||||
|     tslib: "npm:^2.6.2" |     tslib: "npm:^2.6.2" | ||||||
|     type-is: "npm:^1.6.18" |     type-is: "npm:^1.6.18" | ||||||
|   checksum: c00121bd0c3322d78bb9c5aee2259ce05c4e2a7bd32fb5e09c14a173ac0d0c05d7bb62a23a81998dd645d8383a120e906efa8822bc5f78a110ac5ba02123c827 |   checksum: 79a9d810a03ee5da02a3c05f12fdc551af8c1c29d453fa0be92070c8fa4c156fd430aeb28ddfea01f03e9397fb901e6e27b8c70f95572ddae0e0b7a11b2cd407 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| @@ -12470,25 +12468,25 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/json-schema-tree@npm:^3.0.0": | "@stoplight/json-schema-tree@npm:^4.0.0": | ||||||
|   version: 3.0.0 |   version: 4.0.0 | ||||||
|   resolution: "@stoplight/json-schema-tree@npm:3.0.0" |   resolution: "@stoplight/json-schema-tree@npm:4.0.0" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@stoplight/json": "npm:^3.12.0" |     "@stoplight/json": "npm:^3.12.0" | ||||||
|     "@stoplight/json-schema-merge-allof": "npm:^0.8.0" |     "@stoplight/json-schema-merge-allof": "npm:^0.8.0" | ||||||
|     "@stoplight/lifecycle": "npm:^2.3.2" |     "@stoplight/lifecycle": "npm:^2.3.2" | ||||||
|     "@types/json-schema": "npm:^7.0.7" |     "@types/json-schema": "npm:^7.0.7" | ||||||
|     magic-error: "npm:0.0.1" |     magic-error: "npm:0.0.1" | ||||||
|   checksum: fa07eefe61bbcabe12f29324dfa59def4b9565b40fb786953091c9c6dce584bf510c935d38560b926d30a8f5b3e1467329be9d0a224971dfd997e55f1c5e1f0a |   checksum: 4e75ccadb60b097965cec0152c680f59aad3bf3a95e51480e5dc70c5cb10ed6ee07f81798ece5dd0fde9e4d616e501f8a6d546d8de5f2774f700dc704de991d0 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/json-schema-viewer@npm:^4.14.1": | "@stoplight/json-schema-viewer@npm:^4.14.2": | ||||||
|   version: 4.14.1 |   version: 4.15.1 | ||||||
|   resolution: "@stoplight/json-schema-viewer@npm:4.14.1" |   resolution: "@stoplight/json-schema-viewer@npm:4.15.1" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@stoplight/json": "npm:^3.20.1" |     "@stoplight/json": "npm:^3.20.1" | ||||||
|     "@stoplight/json-schema-tree": "npm:^3.0.0" |     "@stoplight/json-schema-tree": "npm:^4.0.0" | ||||||
|     "@stoplight/react-error-boundary": "npm:^2.0.0" |     "@stoplight/react-error-boundary": "npm:^2.0.0" | ||||||
|     "@types/json-schema": "npm:^7.0.7" |     "@types/json-schema": "npm:^7.0.7" | ||||||
|     classnames: "npm:^2.2.6" |     classnames: "npm:^2.2.6" | ||||||
| @@ -12501,7 +12499,7 @@ __metadata: | |||||||
|     "@stoplight/mosaic-code-viewer": ^1.32 |     "@stoplight/mosaic-code-viewer": ^1.32 | ||||||
|     react: ">=16.8" |     react: ">=16.8" | ||||||
|     react-dom: ">=16.8" |     react-dom: ">=16.8" | ||||||
|   checksum: 2a9ff42861420467324bcd6176905da8cfca1fd5be22aa3a6c152b0c1d7ae2cbacebf462c65e288d482f97f189bf5ef8ae842aa42df422d5ae133e48c6cb9875 |   checksum: bc76248d3df3d7acf3b1040c25d0a9dfecdd8f030252d950465679528e23e328d7f0658fb2c8348d61c52665642bccb57854c2c4a10ab5a40d0f475d6ef8afee | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| @@ -12578,9 +12576,9 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/mosaic-code-editor@npm:^1.46.1": | "@stoplight/mosaic-code-editor@npm:^1.51.3": | ||||||
|   version: 1.48.4 |   version: 1.51.3 | ||||||
|   resolution: "@stoplight/mosaic-code-editor@npm:1.48.4" |   resolution: "@stoplight/mosaic-code-editor@npm:1.51.3" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@fortawesome/fontawesome-svg-core": "npm:^6.1.1" |     "@fortawesome/fontawesome-svg-core": "npm:^6.1.1" | ||||||
|     "@fortawesome/react-fontawesome": "npm:^0.2.0" |     "@fortawesome/react-fontawesome": "npm:^0.2.0" | ||||||
| @@ -12589,8 +12587,8 @@ __metadata: | |||||||
|     "@react-types/radio": "npm:3.1.2" |     "@react-types/radio": "npm:3.1.2" | ||||||
|     "@react-types/shared": "npm:3.9.0" |     "@react-types/shared": "npm:3.9.0" | ||||||
|     "@react-types/switch": "npm:3.1.2" |     "@react-types/switch": "npm:3.1.2" | ||||||
|     "@stoplight/mosaic": "npm:1.48.4" |     "@stoplight/mosaic": "npm:1.51.3" | ||||||
|     "@stoplight/mosaic-code-viewer": "npm:1.48.4" |     "@stoplight/mosaic-code-viewer": "npm:1.51.3" | ||||||
|     "@stoplight/types": "npm:^13.7.0" |     "@stoplight/types": "npm:^13.7.0" | ||||||
|     clsx: "npm:^1.1.1" |     clsx: "npm:^1.1.1" | ||||||
|     copy-to-clipboard: "npm:^3.3.1" |     copy-to-clipboard: "npm:^3.3.1" | ||||||
| @@ -12609,13 +12607,13 @@ __metadata: | |||||||
|     zustand: "npm:^3.5.2" |     zustand: "npm:^3.5.2" | ||||||
|   peerDependencies: |   peerDependencies: | ||||||
|     react: ">= 16.14" |     react: ">= 16.14" | ||||||
|   checksum: 0f37cec67de896932b096d3608e419943c4177e28607e8fa845c695847525990029fb0f2b1ad6abb066c9983787d81f7d3e8cade1d0f6eff373078201e12e7e4 |   checksum: 0d1cd4a048bcb4d6332523704bc0b1ba46b98dc8e444e76233a2c3c63c1047aa2e64b12a5d89367996db67d53796b317af0948e825765ed2a6cfc5c1e62602a0 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/mosaic-code-viewer@npm:1.48.4, @stoplight/mosaic-code-viewer@npm:^1.46.1": | "@stoplight/mosaic-code-viewer@npm:1.51.3, @stoplight/mosaic-code-viewer@npm:^1.51.3": | ||||||
|   version: 1.48.4 |   version: 1.51.3 | ||||||
|   resolution: "@stoplight/mosaic-code-viewer@npm:1.48.4" |   resolution: "@stoplight/mosaic-code-viewer@npm:1.51.3" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@fortawesome/fontawesome-svg-core": "npm:^6.1.1" |     "@fortawesome/fontawesome-svg-core": "npm:^6.1.1" | ||||||
|     "@fortawesome/react-fontawesome": "npm:^0.2.0" |     "@fortawesome/react-fontawesome": "npm:^0.2.0" | ||||||
| @@ -12624,7 +12622,7 @@ __metadata: | |||||||
|     "@react-types/radio": "npm:3.1.2" |     "@react-types/radio": "npm:3.1.2" | ||||||
|     "@react-types/shared": "npm:3.9.0" |     "@react-types/shared": "npm:3.9.0" | ||||||
|     "@react-types/switch": "npm:3.1.2" |     "@react-types/switch": "npm:3.1.2" | ||||||
|     "@stoplight/mosaic": "npm:1.48.4" |     "@stoplight/mosaic": "npm:1.51.3" | ||||||
|     "@stoplight/types": "npm:^13.7.0" |     "@stoplight/types": "npm:^13.7.0" | ||||||
|     clsx: "npm:^1.1.1" |     clsx: "npm:^1.1.1" | ||||||
|     copy-to-clipboard: "npm:^3.3.1" |     copy-to-clipboard: "npm:^3.3.1" | ||||||
| @@ -12643,13 +12641,13 @@ __metadata: | |||||||
|     zustand: "npm:^3.5.2" |     zustand: "npm:^3.5.2" | ||||||
|   peerDependencies: |   peerDependencies: | ||||||
|     react: ">= 16.14" |     react: ">= 16.14" | ||||||
|   checksum: 2247ec4e08e19edc86931c41071ba840c5df3f289acd4c45854d3666ff4d1ce06836b8506e64f2022fe237b3bf1d73bb9536860d299e83d930426c65faae0e82 |   checksum: a65594884cd50f748436fddf71fb2faa5323156f2f68fd824961db7210fea6a9e3d15d527773babce3b350c1f17321d173d91ec8be0306ef7a0849738022a07f | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/mosaic@npm:1.48.4, @stoplight/mosaic@npm:^1.46.1": | "@stoplight/mosaic@npm:1.51.3, @stoplight/mosaic@npm:^1.51.3": | ||||||
|   version: 1.48.4 |   version: 1.51.3 | ||||||
|   resolution: "@stoplight/mosaic@npm:1.48.4" |   resolution: "@stoplight/mosaic@npm:1.51.3" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@fortawesome/fontawesome-svg-core": "npm:^6.1.1" |     "@fortawesome/fontawesome-svg-core": "npm:^6.1.1" | ||||||
|     "@fortawesome/react-fontawesome": "npm:^0.2.0" |     "@fortawesome/react-fontawesome": "npm:^0.2.0" | ||||||
| @@ -12678,7 +12676,7 @@ __metadata: | |||||||
|     zustand: "npm:^3.5.2" |     zustand: "npm:^3.5.2" | ||||||
|   peerDependencies: |   peerDependencies: | ||||||
|     react: ">= 16.14" |     react: ">= 16.14" | ||||||
|   checksum: 031a02edd6f16d0e05792d29fbef08a86574b93e753d4c02d8c4787f40ee31082599164c33c6d7f456f322a9e1c38c87bd854150977c01a17dc45a86416707c5 |   checksum: b6549ba18187aed374ff0ee3acbd5defa8b22fc04595a472b047026662ae5da899ec9c2b3d67190565a1c039bcddb63dfbb27335fb340355e56ce744fa3098b2 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| @@ -12717,13 +12715,13 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/types@npm:14.0.0": | "@stoplight/types@npm:14.1.0": | ||||||
|   version: 14.0.0 |   version: 14.1.0 | ||||||
|   resolution: "@stoplight/types@npm:14.0.0" |   resolution: "@stoplight/types@npm:14.1.0" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@types/json-schema": "npm:^7.0.4" |     "@types/json-schema": "npm:^7.0.4" | ||||||
|     utility-types: "npm:^3.10.0" |     utility-types: "npm:^3.10.0" | ||||||
|   checksum: 81a57ec9362258642f659a6a3818958e83db671d687aeba89fb9ba401b5e6d7f04a1d988c5b47a3b055cf2d5f1474ad04719086528a1f71e7ed8d8c394f64a72 |   checksum: 6b822270d7d59e5d73eb8edf185dd69ffeb681ac4a8af5b15c646b70a440df6c52c9af051fcf8244468d219928f0c62c5dbb77f4ce05ed5b22c99495b7275715 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| @@ -12747,13 +12745,13 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "@stoplight/types@npm:^14.0.0": | "@stoplight/types@npm:^14.1.1": | ||||||
|   version: 14.1.0 |   version: 14.1.1 | ||||||
|   resolution: "@stoplight/types@npm:14.1.0" |   resolution: "@stoplight/types@npm:14.1.1" | ||||||
|   dependencies: |   dependencies: | ||||||
|     "@types/json-schema": "npm:^7.0.4" |     "@types/json-schema": "npm:^7.0.4" | ||||||
|     utility-types: "npm:^3.10.0" |     utility-types: "npm:^3.10.0" | ||||||
|   checksum: 6b822270d7d59e5d73eb8edf185dd69ffeb681ac4a8af5b15c646b70a440df6c52c9af051fcf8244468d219928f0c62c5dbb77f4ce05ed5b22c99495b7275715 |   checksum: 1573d842fee99a7f1eea1f2b17c28dcbfb1be51b72f2ef794e07d265b2fb8900654b5848f608952cd1e3dedf6c7ec157c82c65d4d95728d6309f4b1722a11450 | ||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| @@ -31986,13 +31984,6 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "lodash.isequalwith@npm:^4.4.0": |  | ||||||
|   version: 4.4.0 |  | ||||||
|   resolution: "lodash.isequalwith@npm:4.4.0" |  | ||||||
|   checksum: edb7f01c6d949fad36c756e7b1af6ee1df8b9663cee62880186a3b241e133a981bc7eed42cf14715a58f939d6d779185c3ead0c3f0d617d1ad59f50b423eb5d5 |  | ||||||
|   languageName: node |  | ||||||
|   linkType: hard |  | ||||||
| 
 |  | ||||||
| "lodash.isinteger@npm:^4.0.4": | "lodash.isinteger@npm:^4.0.4": | ||||||
|   version: 4.0.4 |   version: 4.0.4 | ||||||
|   resolution: "lodash.isinteger@npm:4.0.4" |   resolution: "lodash.isinteger@npm:4.0.4" | ||||||
| @@ -32105,13 +32096,6 @@ __metadata: | |||||||
|   languageName: node |   languageName: node | ||||||
|   linkType: hard |   linkType: hard | ||||||
| 
 | 
 | ||||||
| "lodash.pickby@npm:^4.6.0": |  | ||||||
|   version: 4.6.0 |  | ||||||
|   resolution: "lodash.pickby@npm:4.6.0" |  | ||||||
|   checksum: 46befadb64ab0f61159977174b291f87b005cec1c7bd73d1b6949ec4cdff483c1be0e34398df8955b76ce06a3e93a4a5c5a552a4299520390d6993c5420c7ab9 |  | ||||||
|   languageName: node |  | ||||||
|   linkType: hard |  | ||||||
| 
 |  | ||||||
| "lodash.snakecase@npm:^4.1.1": | "lodash.snakecase@npm:^4.1.1": | ||||||
|   version: 4.1.1 |   version: 4.1.1 | ||||||
|   resolution: "lodash.snakecase@npm:4.1.1" |   resolution: "lodash.snakecase@npm:4.1.1" | ||||||
| @@ -44225,7 +44209,7 @@ __metadata: | |||||||
|     "@sentry/react": "npm:^7.88.0" |     "@sentry/react": "npm:^7.88.0" | ||||||
|     "@sentry/tracing": "npm:^7.99.0" |     "@sentry/tracing": "npm:^7.99.0" | ||||||
|     "@sniptt/guards": "npm:^0.2.0" |     "@sniptt/guards": "npm:^0.2.0" | ||||||
|     "@stoplight/elements": "npm:^7.16.2" |     "@stoplight/elements": "npm:^8.0.5" | ||||||
|     "@storybook/addon-actions": "npm:^7.6.3" |     "@storybook/addon-actions": "npm:^7.6.3" | ||||||
|     "@storybook/addon-coverage": "npm:^1.0.0" |     "@storybook/addon-coverage": "npm:^1.0.0" | ||||||
|     "@storybook/addon-essentials": "npm:^7.6.7" |     "@storybook/addon-essentials": "npm:^7.6.7" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 brendanlaschke
					brendanlaschke