> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Spec Design Editor

> You can create new API Definition Documents (API Spec) by entering data through forms, import existing API Definition Documents, and update them. It supports OpenAPI 3.0.x and OpenAPI 2.x (Swagger) standards. You can use the API Definition Documents you create to create API Proxies.

## Spec Design Editor Concept

Spec Design Editor is the main tool used for creating, editing, and managing OpenAPI/Swagger specifications in API Designer's spec first approach. It creates new API Definition Documents (API Spec) by entering data through forms, imports and updates existing API Definition Documents. It supports OpenAPI 3.0.x and OpenAPI 2.x (Swagger) standards.

<CardGroup cols={2}>
  <Card title="Spec First Approach" icon="file-code">
    OpenAPI/Swagger specification is created first

    API design starts with specification.
  </Card>

  <Card title="Form-Based Editing" icon="pencil">
    Data entry is made through forms

    Creating and editing API Spec without writing code.
  </Card>

  <Card title="Import Support" icon="download">
    Existing API Specs can be imported

    OpenAPI 3.0.x and Swagger 2.x support.
  </Card>

  <Card title="API Proxy Creation" icon="network-wired">
    API Proxy is created from specification

    Automatic API Proxy creation from API Spec.
  </Card>
</CardGroup>

<Info>
  For detailed explanation of information entered through the API Spec Editor, you can refer to the [OpenAPI Specification](https://swagger.io/specification/) address.
</Info>

## Spec Design Editor Features

### OpenAPI/Swagger Specification

Creating and editing OpenAPI/Swagger specification in spec first approach:

<AccordionGroup>
  <Accordion title="API Spec Creation">
    * Creating empty API Spec
    * Importing existing Spec
    * URL or file upload
    * Spec authorization support
  </Accordion>

  <Accordion title="Endpoint and Operation Design">
    * Defining Path (address)
    * Determining HTTP method
    * Operation management
    * Parameter definitions
  </Accordion>

  <Accordion title="Data Model Management">
    * Creating data model
    * Importing shared data models
    * Schema design
    * Property management
  </Accordion>
</AccordionGroup>

### API Spec Management

Creation and management of API Definition Documents:

<CardGroup cols={2}>
  <Card title="Spec Creation" icon="plus-circle">
    New API Spec is created

    * Creating empty API
    * Importing existing Spec
    * Form-based editing
  </Card>

  <Card title="Spec Editing" icon="pencil">
    API Specs are edited and updated

    * Overview management
    * Endpoint and operation definitions
    * Data model management
  </Card>

  <Card title="API Proxy Creation" icon="network-wired">
    API Proxy is created from Spec

    * Automatic API Proxy creation
    * Using Spec as template
    * Creating multiple API Proxies
  </Card>
</CardGroup>

## API Definition Document List

When the **Spec Design Editor** link is clicked from the main menu, the API Definition Document List is displayed.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-1.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=a8a6c7d678a641fa45c1b7120a2f2680" alt="API Definition Document List" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1289" height="266" data-path="images/develop/spec-designer/spec-designer-1.png" />

Filter fields are located at the top of the list. When filter fields are updated, the list content is also updated according to the filter.

## Creating API Definition Document

Used for designing a non-existent API or creating documentation for APIs developed with code-first approach that do not have any definition document.

A new API Definition Document can be created by clicking the **+ New (Create)** button in the upper right of the list interface.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-2.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=b96f2e7e2eb35cead39ee47e197de02b" alt="Creating New API Definition Document" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1293" height="251" data-path="images/develop/spec-designer/spec-designer-2.png" />

There are two options when creating a new API Definition Document.

### Creating API Definition Document by Filling Form

When the new API Definition Document interface is opened, it is seen that **Blank API** option is selected by default among the two existing options.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-3.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=1384c9975a0a8a8bb9ce3b86fccdc7a9" alt="Blank API Option" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1340" height="525" data-path="images/develop/spec-designer/spec-designer-3.png" />

The fields used for the new API Definition Document interface are shown in the table below.

| Field                    | Description                                                                                                      |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------- |
| **Title** *(Title)*      | The title/name of the API Definition File displayed in the list. Required and must be unique within the project. |
| **Description**          | Description related to the API Definition File. Optional.                                                        |
| **Servers** *(Servers)*  | List of servers that the API serves/will serve.                                                                  |
| **Server - URL**         | Address where the API can be accessed. Required.                                                                 |
| **Server - Description** | Description related to this server. Optional.                                                                    |

After filling the **Title (Title)** field and creating at least one server record in the **Servers (Servers)** section, the **Create** button in the upper right becomes clickable and the definition file can be saved by pressing this button. Operations that can be performed after the definition file is saved are explained in the [API Definition Document Update](#api-definition-document-update) section.

### Importing Existing API Definition Document

The second option that can be used to create a new API Definition Document is importing an existing API Definition Document. For this, the **Import API Spec** option is selected.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-4.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=7dcfc7bee588b089d32999409b9cf850" alt="Import API Definition Document" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1336" height="438" data-path="images/develop/spec-designer/spec-designer-4.png" />

Two standards are supported for import. These are [OpenAPI 3.0.x](https://swagger.io/specification/) and [OpenAPI 2.x (Swagger)](https://swagger.io/specification/v2/) standards.

There are **Enter URL** and **Upload File** options for importing a file compatible with the selected standard.

#### Use Spec Authorization

Some definition files check that the client is authorized to view their content. For this, authentication data must be sent in the HTTP request. If the definition file at the URL to be accessed is such a file, this box is checked and credentials are entered.

When **Use Spec Authorization** is checked, optional **Basic Authentication** fields and the **Spec Authorization List** table are shown; add authorization keys with Key Name, Value, and Type columns.

<img src="https://mintcdn.com/apinizer/n-lYCW-DIyXqTQj_/images/develop/spec-designer/spec-designer-5.png?fit=max&auto=format&n=n-lYCW-DIyXqTQj_&q=85&s=ba5143c1bd3f82dd00ea1f8ce569cf77" alt="Spec Authorization enabled: Basic Authentication and Spec Authorization List" width="600" data-path="images/develop/spec-designer/spec-designer-5.png" />

#### Entering URL

The address that can be accessed to the existing API Definition File is entered in the **URL** field and the **Parse** button is clicked.

#### File Upload

The upload button is clicked, the existing API Definition File is selected, and the **Parse** button is clicked.

In both methods, after the parsing operation, Title (Title), Description, and Servers (Servers) fields appear. Unlike creating an empty API, the values of these fields are taken from the imported API Definition File. After this stage, the **Create** button in the upper right becomes clickable and the definition file can be saved by pressing this button.

## API Definition Document Update

When a record's Title column value is clicked in the API Definition Document list or the menu button in the rightmost column of that record is clicked and **Edit** option is selected, the API Definition File update interface opens.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-6.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=bf823347a14d7a530e55c3ec12fdeab7" alt="API Definition Document Update" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1337" height="253" data-path="images/develop/spec-designer/spec-designer-6.png" />

The API Definition Document settings are shown in the following image:

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-7.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=9f7ffc4c0e18aa355ab74304f4978049" alt="API Definition Document Settings" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1581" height="884" data-path="images/develop/spec-designer/spec-designer-7.png" />

### API Overview

When the update interface is first opened, **API Overview** opens. The Overview link is on the left side of the interface.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-8.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=1ab2c7201310de69e95d51645460bf6a" alt="Overview" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1573" height="887" data-path="images/develop/spec-designer/spec-designer-8.png" />

### Paths

Right below the Overview link, there is the **Paths** section.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-9.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=64054b8c441157a275cf7923dbe9b3d2" alt="Paths" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1571" height="887" data-path="images/develop/spec-designer/spec-designer-9.png" />

**Path** is the name given to each of the addresses where requests can be sent to an API.

#### Adding Path

To add a new one to the API's addresses, click the **+ New** button under the title of the Paths section.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-10.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=07ae431b4880598bc40452a90374e408" alt="Adding Path" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1581" height="886" data-path="images/develop/spec-designer/spec-designer-10.png" />

In the window that opens, enter the address to be added and click the **Save** button.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-11.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=572332a38534c4e1749a8eccc3d54e7d" alt="Path Addition Dialog" style={{maxWidth: '180px', width: '50%', height: 'auto'}} width="557" height="466" data-path="images/develop/spec-designer/spec-designer-11.png" />

#### Deleting Path

When any of the addresses in the list is clicked, that address is selected and a section where details related to that address can be managed is displayed on the right. The address can be deleted by clicking the **Delete** button in the upper right of this section.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-12.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=69d399272a280e99764c505550bdd59f" alt="Deleting Path" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1577" height="888" data-path="images/develop/spec-designer/spec-designer-12.png" />

#### Updating Path

When any of the addresses in the list is clicked, that address is selected and a section where details related to that address can be managed is displayed on the right.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-13.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=432ea383b2a7c8121bd4c9c79b87f2d0" alt="Updating Path" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1571" height="884" data-path="images/develop/spec-designer/spec-designer-13.png" />

##### Changing Path

At the top right, the address is displayed as a link. When the **Edit** button next to this link is clicked, the address can be updated from the window that opens.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-14.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=1f7fe34038e5362bb8168cd5b13704b2" alt="Editing Path" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1181" height="478" data-path="images/develop/spec-designer/spec-designer-14.png" />

The path editing settings are shown in the following image:

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-15.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=ed3f0f6baac44ac0e9a42a68cd0f1189" alt="Path Editing Dialog" style={{maxWidth: '250px', width: '50%', height: 'auto'}} width="591" height="469" data-path="images/develop/spec-designer/spec-designer-15.png" />

##### Operations

When a **Path** is selected, a section where **Operations** defined for that address can be managed appears on the right side of the interface.

**Operation**: Consists of each valid HTTP Method through which an API accepts requests on its defined addresses, along with identity and identifier information, parameters, request and response contents related to this method.

When any address is selected, the first of the **Operations** defined for that address is displayed as selected.

<Warning>
  The selected operation is indicated by a thin blue line at the bottom of the box containing the HTTP Method name.
</Warning>

In the above image, it is seen that the /pet/findByStatus address has been selected by the user, and the **Get** operation defined at this address has also been automatically selected and its detail is displayed.

###### Identity and Identification Fields

The fields used for Identity and Identification Fields are shown in the table below.

| Field                             | Description                                                                                                                                                                                                                                                           |
| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Summary** *(Summary)*           | Brief information about what the operation does. Optional.                                                                                                                                                                                                            |
| **Operation ID** *(Operation ID)* | Unique key of the operation.<br />• Must be unique among all operations of the API.<br />• Case-sensitive.<br />• Since tools and libraries can use this value to uniquely identify an operation, following common programming naming conventions is **RECOMMENDED**. |
| **Description**                   | Detailed description of the operation behavior. Optional.                                                                                                                                                                                                             |
| **Tags** *(Tags)*                 | Tags can be used to logically group operations by resources or other qualifiers. Optional. Multiple can be added.                                                                                                                                                     |

###### Header Parameters

This is the section where headers that can be sent to the Operation are managed.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-16.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=21b069d642ff2b049eb093e500f74bf9" alt="Header Parameters" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1142" height="211" data-path="images/develop/spec-designer/spec-designer-16.png" />

###### Query Parameters

This is the section where query parameters that the Operation can receive are managed.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-17.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=25847426de0ef233e24f8f7e8e3320ad" alt="Query Parameters" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1142" height="160" data-path="images/develop/spec-designer/spec-designer-17.png" />

###### Request Body

This is the section where example request bodies for the Operation can be managed. Example request bodies can be defined for one or more **Media Types**.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-18.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=749c091b54430c0548aca99a8b7f143e" alt="Request Body" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1138" height="323" data-path="images/develop/spec-designer/spec-designer-18.png" />

###### Responses

This is the section where **Responses** that can be returned for this Operation can be managed.

Each response consists of an **HTTP Status Code**, description of that status code, and **Response Body** created for one or more **Media Types**.

<Info>
  Apinizer allows defining multiple possible response bodies for a **Media Type** and under which conditions they can be returned.
</Info>

The following are seen in the image below:

* 200 and 400 codes can be returned for this Operation.
* For 200 code, responses can be returned from two different Media Types: application/json or application/xml.
* For application/json Media Type, if the value of the **status** parameter is "pending", a response body similar to the first row will be returned, if "sold", a response body similar to the second row will be returned.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-19.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=2934dcb1d0cad7d470f013cd8d38e3c7" alt="Responses" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1135" height="454" data-path="images/develop/spec-designer/spec-designer-19.png" />

###### Adding Operation

When a Path is selected, Operations defined for that Path are displayed with their related HTTP Methods colored. HTTP Methods that are not colored mean that no Operation has been defined for them yet. If an Operation is desired to be defined for any of these, the desired HTTP Method is selected. With this selection, it is seen that no Operation has been defined yet. Operation can be added for the selected method by pressing the **Add Operation** button.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-20.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=93b4dd9abf1f9c862445893a8187b7cd" alt="Adding Operation" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1149" height="526" data-path="images/develop/spec-designer/spec-designer-20.png" />

###### Deleting Operation

When an Operation is selected, a **Delete** button appears on the right side of the window. The selected Operation can be deleted by clicking this button. In the image below, the Delete operation is selected and the Delete button that will be used to delete this operation is seen.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-21.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=efd2e33252722b088f32ab374e8fcaa2" alt="Deleting Operation" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1156" height="485" data-path="images/develop/spec-designer/spec-designer-21.png" />

### Data Models

At the bottom of the left side of the interface, data types used by this API that are not standard primitive types are displayed.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-22.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=58218d629e1774ce7ab4b4da0a54455e" alt="Data Models" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1574" height="708" data-path="images/develop/spec-designer/spec-designer-22.png" />

#### Adding Data Model

To add a new data model, click the **+ New** button under the title of the section.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-23.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=53949004d560654bd6f598b717b3131f" alt="Adding Data Model" style={{maxWidth: '250px', width: '50%', height: 'auto'}} width="614" height="381" data-path="images/develop/spec-designer/spec-designer-23.png" />

In the window that opens, enter the name and description of the data model and click the **Save** button.

#### Importing Data Model

Models added through the Shared Query Model page can be imported into Data Models within the Spec.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-24.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=9d4637f31a154bac64cdea3936b9d54a" alt="Data Model Import" style={{maxWidth: '220px', width: '50%', height: 'auto'}} width="744" height="402" data-path="images/develop/spec-designer/spec-designer-24.png" />

#### Deleting Data Model

When any data model is clicked, its detail is displayed on the right. The data model can be deleted by clicking the **Delete** button in the upper right of this section that opens.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-25.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=ebbaf2f09a271ada7702556c75ac8c79" alt="Deleting Data Model" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1546" height="609" data-path="images/develop/spec-designer/spec-designer-25.png" />

#### Updating Data Model

When any data model is clicked, its detail is displayed on the right. This section contains the data model's name, description, and properties.

##### Changing Data Model Name

When the **Edit** icon next to the data model's name is clicked, a text box opens where the name can be updated. The desired change is made in this field.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-26.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=284211ad24e5077df8c201c2752de4e0" alt="Changing Data Model Name" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1143" height="78" data-path="images/develop/spec-designer/spec-designer-26.png" />

##### Properties

Each of the sub-fields of the data model is called a **Property**. A data model can be seen as a Class in Object-Oriented Programming, and a property as a property or attribute within this class.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-27.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=5dea4e3bf9a798a84424cfb4d43c1e81" alt="Properties" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1550" height="734" data-path="images/develop/spec-designer/spec-designer-27.png" />

###### Adding Property

When the **+** button at the far right of the row containing column headers of the table containing properties is clicked, a window opens where a new property can be entered.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-28.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=6ba9437f774f65d4225be29eedb0fd86" alt="Property Addition Dialog" style={{maxWidth: '600px', width: '100%', height: 'auto'}} width="1553" height="670" data-path="images/develop/spec-designer/spec-designer-28.png" />

Fill in the data fields in the window that opens and click the **Save** button.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-29.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=5be9a015ca26545e058d41ce3ee5eb7b" alt="Property Addition Dialog Detail" style={{maxWidth: '600px', width: '100%', height: 'auto'}} width="917" height="523" data-path="images/develop/spec-designer/spec-designer-29.png" />

The fields used to add a property are shown in the table below.

| Field                     | Description                                                                                        |
| ------------------------- | -------------------------------------------------------------------------------------------------- |
| **Name**                  | The name of the property. Required and must be unique within all Properties of the Data Model.     |
| **Description**           | Description about what the property is and how it will be used. Optional field.                    |
| **Required** *(Required)* | Specifies whether having a value for this property is required.                                    |
| **Type**                  | The type of the property. Basic types or types defined within the API can be used. Required field. |

###### Deleting Property

In the menu at the end of each property's row in the properties table, there is a **Remove** button that can be used to delete that property.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-30.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=dafe847030432bca8dd3949dd8529105" alt="Deleting Property" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1560" height="690" data-path="images/develop/spec-designer/spec-designer-30.png" />

###### Updating Property

If the value in the Name column of any property is clicked, the window where that property can be updated opens. After updates are made, the update operation is completed by pressing the **Save** button.

## Deleting API Definition Document

A record can be deleted by clicking the menu button in the rightmost column of the record to be deleted in the API Definition Document list and selecting **Remove**.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-31.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=f9acc2e823521cc126d669404b28a9fd" alt="Deleting API Definition Document" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1583" height="298" data-path="images/develop/spec-designer/spec-designer-31.png" />

## API Proxy Creation

An API Proxy can be created using this API Spec by clicking the **Create API Proxy** button in the update interface of the API Definition Document.

<img src="https://mintcdn.com/apinizer/lhZQlOH1wI3EhPE4/images/develop/spec-designer/spec-designer-32.png?fit=max&auto=format&n=lhZQlOH1wI3EhPE4&q=85&s=840a70cb5a0ca607da3e3b4a0cfb305e" alt="API Proxy Creation" style={{maxWidth: '800px', width: '100%', height: 'auto'}} width="1586" height="499" data-path="images/develop/spec-designer/spec-designer-32.png" />

<Warning>
  When creating an API Proxy using the API Definition File, the definitions in the definition file are used as a template for the API Proxy. After the API Proxy is created, changes made to the definition file through the Spec Design Editor do not affect the API Proxy, and changes made from the Design tab of the API Proxy do not affect the API Definition File.
</Warning>

<Warning>
  Multiple API Proxies can be created using one API Definition File.
</Warning>

## Spec Design Editor Usage Scenarios

API development scenarios with spec first approach:

<CardGroup cols={2}>
  <Card title="Spec First API Development" icon="file-code">
    1. Creating empty API Spec
    2. Defining endpoints and operations
    3. Creating data models
    4. Validating specification
    5. Creating API Proxy from Spec
    6. Automatic documentation generation
  </Card>

  <Card title="Existing API Documentation" icon="book">
    1. Importing existing API Spec
    2. Editing and updating specification
    3. Improving endpoints and data models
    4. Adding examples and descriptions
    5. Creating API Proxy from Spec
  </Card>
</CardGroup>

## Relationship Between Spec Design Editor and API Designer

Spec Design Editor plays a central role in API Designer's spec first approach. Workflow:

```
Spec Design Editor
   │
   │ OpenAPI/Swagger Spec
   │ (Spec First)
   │
   ▼
Shared Data Models
   │
   │ Model Import
   │ $ref References
   │
   ▼
API Spec
   │
   │ Creating API Proxy from Spec
   │
   ▼
API Proxy
   │
   │ Configuration
   │
   ▼
API Gateway
```

<CardGroup cols={4}>
  <Card title="1. Spec Creation" icon="file-code">
    OpenAPI/Swagger specification is created in Spec Design Editor

    Creating Spec with empty API or import.
  </Card>

  <Card title="2. Endpoint and Operation Definition" icon="code">
    Paths and operations are defined

    HTTP methods, parameters, and responses are managed.
  </Card>

  <Card title="3. Data Model Management" icon="database">
    Data models are created or imported

    Shared data models can be used.
  </Card>

  <Card title="4. API Proxy Creation" icon="rocket">
    API Proxy is created from Spec

    Automatic API Proxy creation and configuration.
  </Card>
</CardGroup>

<Info>
  This integration between Spec Design Editor and API Designer provides a seamless process from API design to deployment with spec first approach. Specification is created first, then API Proxy and documentation are automatically generated from this specification.
</Info>

## Spec Design Editor Advantages

Advantages provided by spec first approach:

<CardGroup cols={2}>
  <Card title="Spec First Approach" icon="file-code">
    * API design starts with specification
    * Standard OpenAPI/Swagger format
    * API design without writing code
  </Card>

  <Card title="Form-Based Editing" icon="pencil">
    * Easy editing through forms
    * Management with visual interface
    * Validation and error checking
  </Card>

  <Card title="Automatic Generation" icon="wand-magic-sparkles">
    * Creating API Proxy from specification
    * Automatic documentation generation
    * Consistent API structure
  </Card>

  <Card title="Standard Compliance" icon="check-circle">
    * Compliance with OpenAPI/Swagger standards
    * OpenAPI 3.0.x and Swagger 2.x support
    * Interoperability and tool support
  </Card>
</CardGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Shared Data Model" icon="database" href="/en/develop/api-design/data-models">
    Creating shared data models
  </Card>

  <Card title="API Proxy Creation" icon="network-wired" href="/en/develop/api-proxy-creation/api-creator-db-api-creation">
    Creating API Proxy from API Definition Documents
  </Card>

  <Card title="Quick Start" icon="rocket" href="/en/develop/quick-start">
    Quick start guide
  </Card>

  <Card title="API Designer" icon="wand-magic-sparkles" href="/en/concepts/core-components/api-designer">
    Learn about the API Designer component
  </Card>
</CardGroup>
