From d986da3064588cce836ff08eff3ab1efd254fc24 Mon Sep 17 00:00:00 2001 From: Andrew Jiang Date: Sat, 6 Apr 2024 00:34:07 +1100 Subject: [PATCH] feat: show file descriptions in multipart form (#618) --- fern/apis/fdr/definition/api/v1/read/type.yml | 6 +++++ .../fdr/definition/api/v1/register/type.yml | 6 +++++ .../endpoints/EndpointRequestSection.tsx | 8 +++---- packages/ui/app/src/util/resolver.ts | 24 +++++++++++++++---- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/fern/apis/fdr/definition/api/v1/read/type.yml b/fern/apis/fdr/definition/api/v1/read/type.yml index 4c0bfadee7..57c6a5024a 100644 --- a/fern/apis/fdr/definition/api/v1/read/type.yml +++ b/fern/apis/fdr/definition/api/v1/read/type.yml @@ -141,11 +141,17 @@ types: fileArray: FilePropertyArray FilePropertySingle: + extends: + - commons.WithDescription + - commons.WithAvailability properties: key: PropertyKey isOptional: boolean FilePropertyArray: + extends: + - commons.WithDescription + - commons.WithAvailability properties: key: PropertyKey isOptional: boolean diff --git a/fern/apis/fdr/definition/api/v1/register/type.yml b/fern/apis/fdr/definition/api/v1/register/type.yml index 8c3b9ffaa4..d3a44a5536 100644 --- a/fern/apis/fdr/definition/api/v1/register/type.yml +++ b/fern/apis/fdr/definition/api/v1/register/type.yml @@ -146,11 +146,17 @@ types: fileArray: FilePropertyArray FilePropertySingle: + extends: + - commons.WithDescription + - commons.WithAvailability properties: key: PropertyKey isOptional: boolean FilePropertyArray: + extends: + - commons.WithDescription + - commons.WithAvailability properties: key: PropertyKey isOptional: boolean diff --git a/packages/ui/app/src/api-page/endpoints/EndpointRequestSection.tsx b/packages/ui/app/src/api-page/endpoints/EndpointRequestSection.tsx index a1c2648f93..db18788303 100644 --- a/packages/ui/app/src/api-page/endpoints/EndpointRequestSection.tsx +++ b/packages/ui/app/src/api-page/endpoints/EndpointRequestSection.tsx @@ -63,7 +63,7 @@ export const EndpointRequestSection: React.FC = ({ file: (file) => ( {file.isOptional ? "optional file" : "file"} @@ -71,13 +71,13 @@ export const EndpointRequestSection: React.FC = ({ } anchorIdParts={[...anchorIdParts, file.key]} route={route} - availability={undefined} + availability={file.availability} /> ), fileArray: (fileArray) => ( {fileArray.isOptional ? "optional list of files" : "list of files"} @@ -85,7 +85,7 @@ export const EndpointRequestSection: React.FC = ({ } anchorIdParts={[...anchorIdParts, fileArray.key]} route={route} - availability={undefined} + availability={fileArray.availability} /> ), bodyProperty: (bodyProperty) => ( diff --git a/packages/ui/app/src/util/resolver.ts b/packages/ui/app/src/util/resolver.ts index 1ddbf2d3a2..d5251c4d8d 100644 --- a/packages/ui/app/src/util/resolver.ts +++ b/packages/ui/app/src/util/resolver.ts @@ -574,12 +574,14 @@ function resolveRequestBodyShape( async (property): Promise => { switch (property.type) { case "file": { + const description = await maybeSerializeMdxContent( + property.value.description, + ); return { type: property.value.type, key: property.value.key, - // TODO: support description and availability - description: undefined, - availability: undefined, + description, + availability: property.value.availability, isOptional: property.value.isOptional, }; } @@ -1498,12 +1500,26 @@ export interface ResolvedReferenceShape extends WithMetadata { } export declare namespace ResolvedFileUploadRequestProperty { + interface FileProperty extends WithMetadata { + type: "file"; + key: string; + isOptional: boolean; + } + interface FileArrayProperty extends WithMetadata { + type: "fileArray"; + key: string; + isOptional: boolean; + } + interface BodyProperty extends ResolvedObjectProperty { type: "bodyProperty"; } } -export type ResolvedFileUploadRequestProperty = APIV1Read.FileProperty | ResolvedFileUploadRequestProperty.BodyProperty; +export type ResolvedFileUploadRequestProperty = + | ResolvedFileUploadRequestProperty.FileProperty + | ResolvedFileUploadRequestProperty.FileArrayProperty + | ResolvedFileUploadRequestProperty.BodyProperty; export interface ResolvedFileUploadRequest extends WithMetadata { name: string;