Schema Display

Display REST API endpoint documentation with parameters, request/response bodies.

The SchemaDisplay component visualizes REST API endpoints with HTTP methods, paths, parameters, and request/response schemas.

Install using CLI

AI Elements Vue
shadcn-vue CLI
npx ai-elements-vue@latest add schema-display

Install Manually

Copy and paste the following files into the same folder.

SchemaDisplay.vue
SchemaDisplayHeader.vue
SchemaDisplayMethod.vue
SchemaDisplayPath.vue
SchemaDisplayDescription.vue
SchemaDisplayContent.vue
SchemaDisplayParameters.vue
SchemaDisplayParameter.vue
SchemaDisplayRequest.vue
SchemaDisplayResponse.vue
SchemaDisplayBody.vue
SchemaDisplayProperty.vue
SchemaDisplayExample.vue
context.ts
index.ts
<script setup lang="ts">
import type { HTMLAttributes } from 'vue'
import type { HttpMethod, SchemaParameter, SchemaProperty } from './context'
import { cn } from '@repo/shadcn-vue/lib/utils'
import { provide } from 'vue'
import { SchemaDisplayKey } from './context'
import SchemaDisplayContent from './SchemaDisplayContent.vue'
import SchemaDisplayDescription from './SchemaDisplayDescription.vue'
import SchemaDisplayHeader from './SchemaDisplayHeader.vue'
import SchemaDisplayMethod from './SchemaDisplayMethod.vue'
import SchemaDisplayParameters from './SchemaDisplayParameters.vue'
import SchemaDisplayPath from './SchemaDisplayPath.vue'
import SchemaDisplayRequest from './SchemaDisplayRequest.vue'
import SchemaDisplayResponse from './SchemaDisplayResponse.vue'

interface Props extends /* @vue-ignore */ HTMLAttributes {
  method: HttpMethod
  path: string
  description?: string
  parameters?: SchemaParameter[]
  requestBody?: SchemaProperty[]
  responseBody?: SchemaProperty[]
  class?: HTMLAttributes['class']
}

const props = defineProps<Props>()

provide(SchemaDisplayKey, {
  method: props.method,
  path: props.path,
  description: props.description,
  parameters: props.parameters,
  requestBody: props.requestBody,
  responseBody: props.responseBody,
})
</script>

<template>
  <div
    :class="cn(
      'overflow-hidden rounded-lg border bg-background',
      props.class,
    )"
    v-bind="$attrs"
  >
    <slot>
      <SchemaDisplayHeader>
        <div class="flex items-center gap-3">
          <SchemaDisplayMethod />
          <SchemaDisplayPath />
        </div>
      </SchemaDisplayHeader>
      <SchemaDisplayDescription v-if="description" />
      <SchemaDisplayContent>
        <SchemaDisplayParameters v-if="parameters && parameters.length > 0" />
        <SchemaDisplayRequest v-if="requestBody && requestBody.length > 0" />
        <SchemaDisplayResponse v-if="responseBody && responseBody.length > 0" />
      </SchemaDisplayContent>
    </slot>
  </div>
</template>

Features

  • Color-coded HTTP methods
  • Path parameter highlighting
  • Collapsible parameters section
  • Request/response body schemas
  • Nested object property display
  • Required field indicators

Method Colors

MethodColor
GETGreen
POSTBlue
PUTOrange
PATCHYellow
DELETERed

Examples

Basic Usage

With Parameters

With Request/Response Bodies

Nested Properties

Props

<SchemaDisplay />

method"GET" | "POST" | "PUT" | "PATCH" | "DELETE"
HTTP method.
pathstring
API endpoint path.
descriptionstring
Endpoint description.
parametersSchemaParameter[]
URL/query parameters.
requestBodySchemaProperty[]
Request body properties.
responseBodySchemaProperty[]
Response body properties.

SchemaParameter

interface SchemaParameter {
  name: string
  type: string
  required?: boolean
  description?: string
  location?: 'path' | 'query' | 'header'
}

SchemaProperty

interface SchemaProperty {
  name: string
  type: string
  required?: boolean
  description?: string
  properties?: SchemaProperty[] // For objects
  items?: SchemaProperty // For arrays
}

Subcomponents

  • SchemaDisplayHeader - Header container
  • SchemaDisplayMethod - Color-coded method badge
  • SchemaDisplayPath - Path with highlighted parameters
  • SchemaDisplayDescription - Description text
  • SchemaDisplayContent - Content container
  • SchemaDisplayParameters - Collapsible parameters section
  • SchemaDisplayParameter - Individual parameter
  • SchemaDisplayRequest - Collapsible request body
  • SchemaDisplayResponse - Collapsible response body
  • SchemaDisplayProperty - Schema property (recursive)
  • SchemaDisplayExample - Code example block