---
title: "My Products"
slug: "api-gateway-myproducts"
tags: ["API Gateway", "API Gateway 사용", "api 호출", "catalog 게시", "resource", "리소스", "메서드", "문서 관리", "배포", "엔드포인트"]
updated: 2026-07-23T09:02:24Z
published: 2026-07-23T09:02:24Z
canonical: "guide-fin.ncloud-docs.com/api-gateway-myproducts"
---

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

# My Products

VPC 환경에서 이용 가능합니다.

My Products 메뉴에서는 여러 개의 API를 Product로 그룹화하여 관리하며 REST API 및 이와 관련된 리소스와 메서드를 정의하고 인증 방식을 설정할 수 있습니다. API를 게시하고, Product를 사용하고 있는 API Key로 사용자의 애플리케이션을 식별하거나 사용량을 제한할 수 있습니다.

## My Products 화면

API Gateway 이용을 위한 My Products 메뉴의 기본적인 설명은 다음과 같습니다. ![apigw-myproducts-screen_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/apigw-myproducts-screen_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① 메뉴명 | 현재 확인 중인 메뉴 이름, 운영 중인 Product 개수 |
| ② 기본 기능 | [Product 생성](/docs/api-gateway-start#Product%EC%83%9D%EC%84%B1), API Gateway 상세 정보 확인, My Products 화면 새로 고침 |
| ③ 생성 후 기능 | 운영 중인 Product [수정](/docs/api-gateway-myproducts#Product%EC%88%98%EC%A0%95), [삭제](/docs/api-gateway-myproducts#Product%EC%82%AD%EC%A0%9C) |
| ④ Product 목록 | 운영 중인 Product 목록 및 정보 확인 |
| ⑤ 검색창 및 필터 | 목록에서 원하는 Product 검색, 필터 기능을 이용하여 조건에 해당하는 Product 확인 |

## Product 목록 확인

생성하여 운영 중인 Product 목록에서 Product별 정보를 확인할 수 있습니다.

              참고

              

Product 생성 방법에 대한 내용은 [API Gateway 시작](/docs/api-gateway-start)을 참조해 주십시오.

생성한 Product의 정보를 확인하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록이 표시되면 요약 정보를 확인하거나 대상 Product를 클릭하여 상세 정보를 확인해 주십시오.  

![apigw-myproducts-list_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/apigw-myproducts-list_ko.png)
  - **Product ID**: Product의 고유 ID로 Product 생성 시 자동 설정됨
  - **Product 이름**: Product 생성 시 설정한 Product 이름
  - **설명**: Product 생성 시 설정한 해당 Product에 대한 설명
  - **구독 방식**: Product 생성 시 설정한 API 구독 방식
  - **상태**: API 게시 여부 표시
  - **Catalog**: 게시된 API에 대한 Overview 및 설명서(Swagger) 확인
  - **게시**: ![i-apigateway-publish](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-publish.png) 클릭 시 [API 게시](/docs/api-gateway-myproducts#API%EA%B2%8C%EC%8B%9C) 화면으로 이동
  - **API Keys**: Product에 연결된 [API Key](/docs/api-gateway-apikeys)의 상태별 현황. ![i-apigateway-apikeys](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apikeys.png) 클릭 시 API Key 확인, 추가, 상태 변경 및 [Usage Plan](/docs/api-gateway-usageplans) 확인, 수정 화면으로 이동.
  - **APIs**: Product에 생성된 API 목록 및 현황. ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png) 클릭 시 API 관리 화면으로 이동.
    - **API 이름**: API 이름을 클릭하면 해당 API 관리 화면으로 이동
    - **정의된 메서드**: API별 정의된 메서드 수
    - **Stage Document**: Stage 이름을 클릭하면 해당 API 설명서(Swagger) 화면으로 이동

## Product 수정

Product를 수정하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 수정할 Product의 체크 박스를 클릭해 선택한 후 **[수정]** 버튼을 클릭해 주십시오.
4. Product 수정 화면에서 Product 정보를 변경한 후 **[Product 수정]** 버튼을 클릭해 주십시오.
  - **이름**: Product 이름 표시
  - **설명**: Product에 대한 설명 수정 및 입력
  - **구독 방식**: Product 구독 방식을 선택
    - **공개 - 자율 구독**: Product의 API를 누구나 사용 가능
    - **보호 - 승인 필요**: Product의 API를 사용하기 위해서는 게시자의 승인이 필요
5. Product 수정 팝업 창에서 **[확인]** 버튼을 클릭해 주십시오.

## Product 삭제

Product를 삭제하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 삭제할 Product를 클릭해 선택한 후 **[삭제]** 버튼을 클릭해 주십시오.
4. 삭제 팝업 창에서 내용을 확인하고, **이름**에 삭제할 Product의 이름을 입력한 후 **[삭제]** 버튼을 클릭해 주십시오.

## API 등록

API를 생성 및 관리하며 관련 리소스와 메서드를 관리할 수 있습니다. 또한, API 사용자가 참조할 수 있는 정의된 API 명세와 Overview를 관리할 수 있으며, 스테이지를 활용하여 동일한 API를 여러 버전으로 운영할 수 있습니다. 백엔드 서비스의 안정화를 위한 스테이지별 캐시 사용, Throttling 정책, IP ACL 등을 설정할 수 있습니다.

### API 생성

생성한 Product에 여러 개의 API를 생성할 수 있습니다.

API를 생성하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 API를 생성할 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
4. API 목록 화면에서 **[API 생성]** 버튼을 클릭해 주십시오.
5. API 생성 화면의 **API 생성** 항목에서 생성 방법을 선택해 주십시오.
6. API 생성 방법에 따라 설정 정보를 입력해 주십시오.
  - API 생성 방법을 **새로운 API**로 선택한 경우, 다음의 항목을 설정
    - **API 이름**: 생성할 API 이름을 입력. API의 이름은 API Gateway의 호출 URL의 경로에 포함됨.
    - **설명**: 생성할 API의 설명을 입력
  - API 생성 방법을 **API 복사**로 선택한 경우, 다음의 항목을 설정
    - **API 이름**: 생성할 API 이름을 입력. API의 이름은 API Gateway의 호출 URL의 경로에 포함됨.
    - **설명**: 생성할 API의 설명을 입력
    - **API 복사**: 복사할 API가 있는 Product를 선택한 후 복사할 API를 선택
  - API 생성 방법을 **Swagger에서 가져오기**로 선택한 경우, 다음의 항목을 설정
    - **API 이름**: 생성할 API 이름을 입력. API의 이름은 API Gateway의 호출 URL의 경로에 포함됨.
    - **설명**: 생성할 API의 설명을 입력
    - **Swagger에서 가져오기** 영역
      - **[Swagger]** 탭 : 외부에 저장된 Swagger 파일을 가져와 API를 생성
        - **Drop files here or click to upload.**: 외부에 저장된 Swagger 파일을 드래그하거나 영역을 클릭해 탐색 창에서 Swagger 파일 선택
        - **경고 실패**: Swagger 파일을 가져올 때 오류 또는 경고가 발생하면 가져오기를 중단
        - **경고 무시**: Swagger 파일을 가져올 때 발생하는 오류 또는 경고에 관계없이 가져옴
      - **[미리보기]** 탭: Swagger 설정 상태 미리보기
  - API 생성 방법을 **API 예제**로 선택한 경우, 다음의 항목을 설정
    - **API 이름**: 생성할 예제 API 이름을 입력. API의 이름은 API Gateway의 호출 URL의 경로에 포함됨.
    - **설명**: 생성할 예제 API의 설명을 입력
    - **API 예제**: 생성할 예제 API의 세부 정보 표시
7. **[API 생성]** 버튼을 클릭해 주십시오. API 생성 방법이 **API 복사**인 경우 **[API 복사]** 버튼을 클릭해 주십시오.
8. API 생성 성공 팝업 창에서 **[확인]** 버튼을 클릭해 주십시오.

API가 생성된 후의 API 목록 화면에 대한 설명은 다음과 같습니다. ![apigw-myproducts-apilist1-2_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/apigw-myproducts-apilist1-2_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① API 이름 | 해당 Product에 생성되어 있는 API 목록. 클릭 시 사용 가능한 기능 및 상세 정보가 화면 오른쪽에 표시됨. |
| ② API 수정, 배포, 삭제 | [API 설명 수정](/docs/api-gateway-myproducts#API%EC%88%98%EC%A0%95), [Stage에 API 배포](/docs/api-gateway-myproducts#API%EB%B0%B0%ED%8F%AC), [API 삭제](/docs/api-gateway-myproducts#API%EC%82%AD%EC%A0%9C) |
| ③ **Resources** | [리소스 생성 및 관리](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EA%B4%80%EB%A6%AC)[메서드 생성 및 관리](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EA%B4%80%EB%A6%AC)API가 생성되면 기본으로 루트 리소스(Root Resource)인 `/` 생성 |
| ④ **Stages** | [Stage 생성 및 관리](/docs/api-gateway-myproducts#Stage%EA%B4%80%EB%A6%AC) |
| ⑤ **Gateway Responses** | API Gateway에서 발생한 [게이트웨이 응답 정의](/docs/api-gateway-myproducts#%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4%EC%9D%91%EB%8B%B5%EC%A0%95%EC%9D%98). 변경 사항을 적용하려면 API를 배포해야 함. |
| ⑥ **Models** | [요청과 응답의 바디 모델 정의](/docs/api-gateway-myproducts#%EC%9A%94%EC%B2%AD%EA%B3%BC%EC%9D%91%EB%8B%B5%EC%9D%98%EB%B0%94%EB%94%94%EB%AA%A8%EB%8D%B8%EC%A0%95%EC%9D%98). 수정 시 변경 사항을 적용하려면 API를 배포해야 함. |
| ⑦ **Overview** | [API 설명서의 Overview 작성](/docs/api-gateway-myproducts#API%EC%84%A4%EB%AA%85%EC%84%9C%EC%9D%98Overview%EC%9E%91%EC%84%B1) |

### API 수정

API에 대한 설명을 수정하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. Product 목록에서 수정할 API가 있는 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
3. API 목록에서 수정할 API를 클릭해 주십시오.
4. **[수정]** 버튼을 클릭해 주십시오.
5. API 수정 화면의 **설명** 항목에 설정 내용을 추가 또는 수정한 후 **[저장]** 버튼을 클릭해 주십시오.

### API 삭제

API를 삭제하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. Product 목록에서 삭제할 API가 있는 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
3. API 목록에서 삭제할 API를 클릭해 주십시오.
4. **[삭제]** 버튼을 클릭해 주십시오.
5. 삭제 팝업 창에서 삭제할 API 이름을 입력한 후 **[삭제]** 버튼을 클릭해 주십시오.

### 리소스 관리

API 사용에 필요한 리소스를 생성하고 관리할 수 있습니다.

**[Resources]** 탭 메뉴에 대한 설명은 다음과 같습니다. ![apigw-myproducts-resource_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/apigw-myproducts-resource_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① **리소스 생성** | API에 [새 리소스 생성](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%83%9D%EC%84%B1) |
| ② **리소스 보기** | [리소스 CORS 활성 여부 설정](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%9D%98CORS%EC%84%A4%EC%A0%95) |
| ③ **리소스 삭제** | 불필요한 [리소스 삭제](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%82%AD%EC%A0%9C) |
| ④ **API 가져오기** | Swagger 파일을 불러와서 리소스 생성([API가져오기](/docs/api-gateway-myproducts#API%EA%B0%80%EC%A0%B8%EC%98%A4%EA%B8%B0) 참고) |
| ⑤ 루트 리소스 경로 | API 생성 시 기본으로 생성되는 루트 리소스(`/`로 표시) |
| ⑥ 리소스 이름(경로) | [리소스 생성](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%83%9D%EC%84%B1) 시 설정한 API URL 경로 |
| ⑦ 메서드 | [메서드 생성](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%83%9D%EC%84%B1) 기능으로 리소스에 추가한 메서드 |
| ⑧ OPTIONS 메서드 | CORS를 활성화한 후 자동으로 생성된 메서드([리소스 생성](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%83%9D%EC%84%B1)의 7번 절차 또는 [리소스의 CORS 설정](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%9D%98CORS%EC%84%A4%EC%A0%95) 참고) |
| ⑨ **메서드 생성** | 리소스에 [메서드 생성](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%83%9D%EC%84%B1) 지원 메서드: ANY, GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD |
| ⑩ 메서드 목록 | 리소스에 추가된 메서드 목록(카드 타입)으로 해당 리소스의 설정 정보 확인 **[보기]**: 해당 [메서드 설정](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%84%A4%EC%A0%95) 페이지로 이동**[삭제]**: [메서드 삭제](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%82%AD%EC%A0%9C)OPTIONS 메서드는 **[보기]**/**[삭제]** 버튼 비활성화 |

#### 리소스 생성

리소스를 생성하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 리소스를 생성할 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 리소스를 생성할 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. **[리소스 생성]** 버튼을 클릭해 주십시오.
  - 이미 생성된 리소스의 하위에 리소스를 추가하려면 해당 리소스를 선택한 후 **[리소스 생성]** 버튼을 클릭해 주십시오.
  - 이미 생성된 리소스 중 경로가 `{variable+}`와 같이 `+`가 포함되어 하위 리소스를 포함하는 리소스에는 하위 리소스를 생성할 수 없습니다.
7. 리소스 목록 오른쪽에 표시된 리소스 생성 항목에 정보를 입력한 후 **[생성]** 버튼을 클릭해 주십시오.
  - **리소스 경로**: API URL 경로로 사용할 값을 입력

              참고

              

Endpoint 로 Cloud Functions의 Web Action을 사용한다면 `{type}` 변수는 예약어로 처리됩니다. `{type}` 변수는 Cloud Functions에서 Web action의 Content extensions를 정의하기 위한 예약어입니다. 따라서 Cloud Functions의 Web Action을 Endpoint로 사용하는 API의 리소스에 `{type}` 변수가 존재하는 경우, 해당 값을 Cloud Functions의 extension 변수 `{type}`에 사용하며, 해당 변수에 대한 정의가 없다면 빈값으로 처리합니다.
    - 괄호를 사용하여 리소스를 경로 변수로 지정할 수 있습니다.
      - <예시1> `{variable}`: 현재 경로를 변수로 사용
      - <예시2> `{variable+}`: 하위 리소스를 포함한 경로를 변수로 사용
    - 경로 변수는 엔드포인트의 경로에 파라미터로 사용할 수 있습니다.
  - **활성화 CORS**: CORS(Cross-Origin Resource Sharing) 활성 여부 선택. 활성화 선택 시 추가 항목 설정 필요.
    - **Access-Control-Allow-Method**: 클라이언트 요청(리소스 접근) 시 허용할 메서드 설정
    - **Access-Control-Allow-Headers**: 클라이언트 요청(리소스 접근) 시 허용할 헤더 설정
    - **Access-Control-Allow-Origin**: 클라이언트 요청(리소스 접근) 모든 도메인 허용(`*`), 또는 선별적 허용 설정
    - **Access-Control-Expose-Headers**: 클라이언트 요청(리소스 접근)에 포함 가능한 사용자 정의 헤더
    - **Access-Control-Max-Age**: 클라이언트가 Preflight 요청 결과를 저장할 기간. 해당 시간 동안에는 Preflight 요청을 다시 하지 않음.
    - **Access-Control-Allow-Credentials**: 클라이언트 요청(리소스 접근)의 자격 증명 모드(Request.credentials)가 `include`일 때의 응답 노출 여부를 설정. 필요시 `true`(유일값)로 설정, 불필요 시 헤더 미입력.
8. **[Resources]** 탭의 리소스 목록에 생성한 리소스가 표시되는지 확인해 주십시오.
  - **활성화 CORS** 항목을 활성화한 경우, API Gateway에서 CORS 요청을 처리하기 위해 OPTIONS 메서드가 생성되고 해당 리소스 목록에 표시됩니다. 단, OPTIONS 메서드는 수정할 수 없습니다.

#### 리소스의 CORS 설정

리소스의 CORS 활성 여부 설정하고, 활성 시 추가 항목을 설정할 수 있습니다.

리소스 확인 및 CORS 설정을 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 확인 및 설정할 리소스가 있는 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 확인 및 설정할 리소스를 클릭해 선택한 후 **[리소스 보기]** 버튼을 클릭해 주십시오.
7. CORS(기본 설정값: 비활성)를 설정하려면 **활성화 CORS**를 클릭해 활성화한 후 추가 헤더 항목을 설정해 주십시오.
  - 추가 헤더 항목에 대한 자세한 내용은 [리소스 생성](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%83%9D%EC%84%B1)의 7번 절차를 참고해 주십시오.
8. **[수정]** 버튼을 클릭해 주십시오.
  - CORS 활성화로 설정한 경우 OPTIONS 메서드가 생성되고 해당 리소스 목록에 표시됩니다.

#### 리소스 삭제

리소스를 삭제하는 방법은 다음과 같습니다.

              참고

              

OPTIONS 메서드는 삭제할 수 없습니다. [리소스의 CORS를 비활성화](/docs/api-gateway-myproducts#%EB%A6%AC%EC%86%8C%EC%8A%A4%EC%9D%98CORS%EC%84%A4%EC%A0%95)하면 자동으로 삭제됩니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 삭제할 리소스가 있는 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 삭제할 리소스를 클릭해 선택한 후 **[리소스 삭제]** 버튼을 클릭해 주십시오.
7. 삭제 팝업 창에서 내용을 확인한 후 **[삭제]** 버튼을 클릭해 주십시오.

#### API 가져오기

API 구성 관련 문서인 Swagger 파일을 이용하여 API 리소스를 가져올 수 있습니다.

외부에서 API 리소스를 가져오는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 대상 리소스를 클릭해 선택한 후 **[API 가져오기]** 버튼을 클릭해 주십시오.
  - API 가져오기를 실행하면 현재 저장된 리소스가 삭제되고, 가져온 API 정보가 새 리소스로 저장됩니다.
7. 외부에 저장된 Swagger 파일을 **Drop files here or click to upload.** 영역에 드래그하거나 영역을 클릭해 탐색 창에서 Swagger 파일을 선택해 주십시오.
8. API를 가져올 때 발생하는 오류 또는 경고에 대한 처리 방법을 선택해 주십시오.
  - **경고 실패**: Swagger 파일을 가져올 때 오류 또는 경고가 발생하면 가져오기를 중단
  - **경고 무시**: Swagger 파일을 가져올 때 발생하는 오류 또는 경고에 관계없이 가져옴
9. JSON 형식의 API 정의 세부 내역을 확인 및 수정한 후 **[API 가져오기]** 버튼을 클릭해 주십시오.
  - 설정한 내용을 미리 확인하려면 **[미리보기]** 탭을 클릭해 주십시오.
10. API 가져오기 팝업 창에서 내용을 확인한 후 **[예]** 버튼을 클릭해 주십시오.
  - 오류가 발생하면 오류 내역을 확인 및 수정한 후 다시 시도해 주십시오.

### 메서드 관리

API 리소스에 메서드를 생성 및 설정 할 수 있습니다.

#### 메서드 생성

리소스에 메서드를 생성하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 메서드를 생성할 리소스를 클릭해 주십시오.
7. 리소스 목록 오른쪽에 표시된 **[메서드 생성]** 드롭다운 메뉴에서 생성할 메서드 종류를 선택해 주십시오.
8. **[Settings]** 탭을 클릭해 설정 정보를 입력한 후 **[저장]** 버튼을 클릭해 주십시오.
  - **설명**: 메서드의 설명을 입력
  - **OperationID**: API 동작을 식별하기 위한 고유 ID를 입력합니다.
    - 영문과 숫자만 사용 가능하고, 숫자로 시작할 수 없으며 길이는 1~100자만 허용합니다.
  - **엔드포인트**: 서비스할 엔드포인트 설정. 엔드포인트 종류에 따라 메서드 설정 항목이 달라집니다.
    - **MOCK**: API Gateway에서 설정한 값을 반환
      - **Status Code**: 요청에 대한 응답 코드를 설정
      - **Header**: 요청에 대한 헤더를 입력
      - **Response**: 요청에 대한 바디를 입력
    - **HTTP(S)**: HTTP(S) 엔드포인트의 호출 결과를 반환
      - **Stream**: 파일 업로드 성격의 요청인 경우 활성화
        - Stream을 껐을 경우 응답 시간은 30초, 최대 요청 크기는 10 MB로 제한
        - Stream을 켰을 경우 응답 시간은 5분, 최대 요청 크기는 100 MB로 제한
      - **메서드**: 백엔드 서버로 요청할 메서드 선택
      - **URL 경로**: 백엔드 서버로 요청할 도메인을 제외한 URL 입력(엔드포인트로 호출할 URL 경로)
              참고

              

        - 리소스 경로 변수 및 요청 파라메터에서 정의한 쿼리 스트링과 헤더를 파라미터로 사용할 수 있습니다.
        - 파라미터는 괄호를 사용하여 정의합니다.  

![api-gateway-myproducts-endpointurl-v2](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/api-gateway-myproducts-endpointurl-v2.png)
    - **Naver Cloud Platform Service**: 네이버 클라우드 플랫폼에서 제공되는 서비스(<예시> Cloud Functions) 이용
      - **서비스**: 서비스 선택
      - **리전**: 서비스 지원 리전 선택
      - **액션**: 해당 서비스에 설정된 액션 선택
  - **API Key 필요**: API Key 사용 여부 선택
              참고

              

    - **API Key 필요** 설정을 하지 않은 경우, Product 구독 방식과 Usage Plan이 적용되지 않습니다.
    - 구독 방식을 보호(승인 필요) 방식으로 제공하거나 요청 처리량 제한 및 요청 한도를 적용하려면, **API Key 필요** 설정을 활성화해주시기 바랍니다.
  - **인증**: 인증 방법 설정

              참고

              

* **IAM 인증**은 네이버 클라우드의 **IAM 서비스를 통해 API Gateway에 접근하는 사용자를 인증하는 방식**입니다. 즉, **API 호출 시 IAM 인증을 통해 해당 사용자가 API를 호출할 자격이 있는지 검증**합니다. * **IAM + AUTHORIZATION 인증**은 **사용자 접근 인증에 API 수행 권한에 대한 인가 기능을 더한 방식**입니다. 사용자가 인증된 후에도 **특정 API 메서드를 수행할 수 있는 권한이 있는지 추가로 검증**하는 단계가 포함됩니다. 즉, **사용자는 IAM을 통해 인증되지만, 각 API 메서드별로 사전에 IAM에 등록된 권한이 부여된 경우에만 해당 API 액션을 수행**할 수 있습니다.
    - **NONE**: 인증 미사용
    - **IAM**: 네이버 클라우드 플랫폼에서 제공하는 IAM 인증 사용
    - **IAM + AUTHORIZATION**: 네이버 클라우드 플랫폼에서 제공하는 IAM을 통한 사용자 인증과 Method 단위 권한 인가 기능을 사용
    - 미리 생성한 Authorizer를 사용([Authorizer](/docs/api-gateway-authorizers) 참고)
  - **유효성 검사**: 유효성 검사 범위 선택
    - **NONE**: 유효성 검사 미실행
    - **Query Strings & Headers**: 쿼리 스트링과 헤더에 대한 유효성 검사 실행. 유효성 검사는 Parameters 탭에서 정의한 API 명세를 참고함.

#### 메서드 설정

생성한 메서드의 설정을 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 설정할 메서드를 포함하고 있는 상위 리소스를 클릭해 주십시오.
7. 설정할 메서드를 클릭해 주십시오.
  - 또는 상위 리소스의 메서드 목록에서 해당 메서드의 **[보기]** 버튼을 클릭해 주십시오.
8. **[Settings]** 및 **[Parameters]** 탭을 클릭해 각 항목을 설정해 주십시오.
  - **[Settings]** 탭의 설정 정보는 [메서드 생성](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%83%9D%EC%84%B1)을 참고해 주십시오.
  - **[Parameters]** 탭의 설정 정보는 [API 명세 정의](/docs/api-gateway-myproducts#API%EB%AA%85%EC%84%B8%EC%A0%95%EC%9D%98)를 참고해 주십시오.

#### 메서드 삭제

생성한 메서드를 삭제하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 삭제할 메서드를 포함하는 상위 리소스를 클릭해 주십시오.
7. 메서드 목록에서 삭제할 메서드의 **[삭제]** 버튼을 클릭해 주십시오.
8. 메서드 삭제 팝업 창에서 **[삭제]** 버튼을 클릭해 주십시오.

### API 명세 정의

API 명세(요청/응답 파라미터)를 정의할 수 있습니다. 정의한 API 명세는 Swagger UI를 생성하는 데 사용됩니다.

API 명세를 정의하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Resources]** 탭을 클릭해 주십시오.
6. 리소스 목록에서 대상 리소스의 메서드를 클릭해 선택한 후 오른쪽 화면에 표시된 상세 정보에서 **[Parameters]** 탭을 클릭해 주십시오.
7. 요청 및 응답 파라미터를 설정해 주십시오.
  - **요청** 영역: 요청에 대한 명세를 정의
    - **쿼리 스트링**: 요청의 쿼리 스트링을 정의. 엔드포인트로 호출할 URL 경로를 정의할 때 리소스 경로 변수처럼 변수로 사용 가능.
      - **이름**: 쿼리 스트링 이름 입력
      - **설명**: 쿼리 스트링에 대한 설명 입력
      - 변수 타입: 쿼리 스트링의 변수 타입(**string**, **boolean**, **integer**, **long**, **float**, **double**)을 선택
      - **Array**: 활성화하면 중복된 이름으로 여러 개의 쿼리 스트링을 생성
      - **Required**: 활성화하면 유효성 검사 대상에 포함
      - 항목을 추가하려면 설정 항목을 입력한 후 **[추가]** 버튼을 클릭해 주십시오.
      - 기존 추가된 항목을 삭제하려면 해당 항목의 **[삭제]** 버튼을 클릭한 후 쿼리 스트링 삭제 팝업 창의 **[삭제]** 버튼을 클릭해 주십시오.
    - **헤더**: 요청의 헤더를 정의. 엔드포인트로 호출할 URL 경로를 정의할 때 리소스 경로 변수처럼 변수로 사용 가능.
      - **이름**: 헤더 이름 입력
      - **설명**: 헤더에 대한 설명 입력
      - 변수 타입: 헤더의 변수 타입(**string**, **boolean**, **integer**, **long**, **float**, **double**)을 선택
      - **Array**: 활성화하면 중복된 이름으로 여러 개의 헤더를 생성
      - **Required**: 활성화하면 유효성 검사 대상에 포함
      - 항목을 추가하려면 설정 항목을 입력한 후 **[추가]** 버튼을 클릭해 주십시오.
      - 기존 추가된 항목을 삭제하려면 해당 항목의 **[삭제]** 버튼을 클릭한 후 헤더 삭제 팝업 창의 **[삭제]** 버튼을 클릭해 주십시오.
    - **폼 데이터**: 요청의 폼 데이터를 정의
      - **이름**: 폼 데이터 이름 입력
      - **설명**: 폼 데이터에 대한 설명 입력
      - 변수 타입: 폼 데이터의 변수 타입(**string**, **boolean**, **integer**, **long**, **float**, **double**, **file**)을 선택
      - **Array**: 활성화하면 중복된 이름으로 여러 개의 쿼리 스트링을 생성
      - **Required**: 활성화하면 유효성 검사 대상에 포함
      - 항목을 추가하려면 설정 항목을 입력한 후 **[추가]** 버튼을 클릭해 주십시오.
      - 기존 추가된 항목을 삭제하려면 해당 항목의 **[삭제]** 버튼을 클릭한 후 폼 데이터 삭제 팝업 창의 **[삭제]** 버튼을 클릭해 주십시오.
    - **바디**: 요청의 바디를 정의
      - **이름**: 바디 이름 입력
      - **설명**: 바디에 대한 설명 입력
      - **모델**: 바디 모델을 정의. 바디의 모델은 API 목록의 **[Models]** 탭에 정의된 모델을 사용([요청과 응답의 바디 모델 정의](/docs/api-gateway-myproducts#%EC%9A%94%EC%B2%AD%EA%B3%BC%EC%9D%91%EB%8B%B5%EC%9D%98%EB%B0%94%EB%94%94%EB%AA%A8%EB%8D%B8%EC%A0%95%EC%9D%98) 참고).
      - 요청의 바디를 정의하려면 설정 항목을 입력한 후 **[저장]** 버튼을 클릭해 주십시오.
      - 저장된 항목을 삭제하려면 해당 항목의 **[삭제]** 버튼을 클릭한 후 바디 삭제 팝업 창의 **[삭제]** 버튼을 클릭해 주십시오.
    - **컨텐츠 타입**: 요청 바디의 콘텐츠 타입을 정의

              참고

              

`application/x-www-form-urlencoded`, `multipart/form-data`는 정의된 폼 데이터를 이용하여 요청의 바디를 생성하고, 그 외 콘텐츠 타입은 바디를 사용해 주십시오.
      - 콘텐츠 타입을 추가하려면 입력란에 요청의 콘텐츠 타입을 입력한 후 **[추가]** 버튼을 클릭해 주십시오.
      - 기존 추가된 항목을 삭제하려면 해당 항목의 **[삭제]** 버튼을 클릭한 후 콘텐츠 타입 삭제 팝업 창의 **[삭제]** 버튼을 클릭해 주십시오.
  - **응답** 영역: 응답에 대한 명세를 정의
    - **[추가]**: 새 응답 코드 생성 및 정의
    - **[수정]**: 정의된 응답 코드 수정
    - **[삭제]**: 응답 코드 삭제
    - **헤더**(응답 코드 선택 시): 응답의 헤더를 정의
    - **바디**(응답 코드 선택 시): 응답의 바디를 정의
    - **컨텐츠 타입**: 응답 바디의 콘텐츠 타입을 정의

### Stage 관리

Stage를 활용하여 API를 여러 버전으로 배포, 운영할 수 있습니다. 백엔드 서비스의 안정화를 위한 스테이지별 캐시 사용, Throttling 정책, IP ACL, Content Encoding 등의 설정을 할 수 있습니다.

**[Stages]** 탭 메뉴에 대한 설명은 다음과 같습니다. ![apigw-fin-myproducts-stage_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/apigw-fin-myproducts-stage_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① **Stage 생성** | [Stage 생성](/docs/api-gateway-myproducts#Stage%EC%83%9D%EC%84%B1) |
| ② **Stage 삭제** | [Stage 삭제](/docs/api-gateway-myproducts#Stage%EC%82%AD%EC%A0%9C) |
| ③ **Canary 활성화** | API 명세를 Stage에 배포하기 전에 Canary 환경을 만들어 운영 환경에서 테스트할 수 있는 기능 활성화 Canary 활성화를 하면 [**[Canary 활성화]**](/docs/api-gateway-myproducts#Canary%ED%99%9C%EC%84%B1%ED%99%94%EB%B0%8F%ED%85%8C%EC%8A%A4%ED%8A%B8) 버튼 대신 [**[Canary 승격]**](/docs/api-gateway-myproducts#Canary%EC%8A%B9%EA%B2%A9) 버튼과 [**[Canary 비활성화]**](/docs/api-gateway-myproducts#Canary%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94) 버튼이 표시됨 |
| ④ 생성된 Stage 목록 | 생성한 Stage 목록과 경로 정보 |
| ⑤ 설정 및 정보 | Stage 목록에서 Stage 이름, 루트 리소스(/), 리소스, 메서드를 선택할 때 표시되는 설정 항목 및 정보 영역 |

Stage 목록에서 Stage 이름, 루트 리소스(/), 리소스, 메서드를 선택할 때 표시되는 정보는 다음과 같습니다.

- Stage 이름 선택 시 ![api-gateway-myproducts-stage2-v2_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/api-gateway-myproducts-stage2-v2_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① **Invoke URL** | 배포한 API를 호출할 수 있는 URL - 구성 형식: `https://{product-id}.apigw.fin-ntruss.com/{api-name}/{stage-name}` - 주소를 클립보드에 저장하려면 **[주소 복사]** 버튼 클릭 |
| ② **Settings** | Stage의 설정 확인 |
| ③ **Export** | Stage 내보내기 |
| ④ **Deployment History** | Stage에 배포된 API 버전 관리. Canary 환경에서는 미표시 |
| ⑤ **Usage Plans** | [API 사용량을 제어](/docs/api-gateway-myproducts#UsagePlans%EB%B3%80%EA%B2%BD). Canary 환경에서는 미표시 |
| ⑥ **Document** | Stage 정보를 Swagger 형식으로 확인 |
- 루트 리소스(`/`) 선택 시 ![api-gateway-myproducts-stage3-v2_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/api-gateway-myproducts-stage3-v2_ko.png)

| 영역 | 설명 |
| --- | --- |
| **Invoke URL** | 배포한 API를 호출할 수 있는 URL - 구성 형식: `https://{product-id}.apigw.fin-ntruss.com/{api-name}/{stage-name}` - 주소를 클립보드에 저장하려면 **[주소 복사]** 버튼 클릭 |
- 리소스 경로(이름) 선택 시 ![api-gateway-myproducts-stage4-v2_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/api-gateway-myproducts-stage4-v2_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① **Invoke URL** | 배포한 API를 호출할 수 있는 URL - 구성 형식: `https://{product-id}.apigw.fin-ntruss.com/{api-name}/{stage-name}` - 주소를 클립보드에 저장하려면 **[주소 복사]** 버튼 클릭 |
| ② 메서드 목록 | Stage에 배포된 API 리소스의 메서드 목록(카드 타입) - **[보기]**: 해당 Stage의 메서드 정보 보기 |
- 메서드 선택 시 ![api-gateway-myproducts-stage5-v2_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/api-gateway-myproducts-stage5-v2_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① **Invoke URL** | 배포한 API를 호출할 수 있는 URL - 구성 형식: `https://{product-id}.apigw.fin-ntruss.com/{api-name}/{stage-name}` - 주소를 클립보드에 저장하려면 **[주소 복사]** 버튼 클릭 |
| ② **Target** | 엔드포인트 도메인의 서비스명 |
| ③ **Stage 설정에 따르기** | [Stage 설정](/docs/api-gateway-myproducts#Stage%EC%84%A4%EC%A0%95)에 따른 API 캐시, Throttling 값 실행 - 이 페이지에서는 설정 변경 불가 |
| ④ **메서드 설정하기** | API 캐시, Throttling 값을 메서드에 직접 설정. 항목을 선택하면 아래 **API 캐시**, **Throttling** 항목 설정 가능 |
| ⑤ **API 캐시** | API 캐시(Cache) TTL 설정 |
| ⑥ **Throttling** | 등록한 메서드별로 초당 요청 수를 제한하여 백엔드 서버를 보호 |

#### Stage 생성

생성 및 설정한 API를 배포하려면 먼저 Stage를 생성해야 합니다.

Stage를 생성하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 Stage를 생성할 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. **[Stage 생성]** 버튼을 클릭해 주십시오.
7. Stage 생성 정보를 입력한 후 **[생성]** 버튼을 클릭해 주십시오.
  - **Stage 이름**: Stage의 이름을 입력. Stage의 이름은 API Gateway의 호출 URL의 경로에 포함됨.
  - **Endpoint 도메인**: 백엔드 서버의 도메인을 입력. API의 리소스 경로(Resource Path)와 결합하여 백엔드 서버로 호출할 API 경로가 됨.
              참고

              

Endpoint 도메인을 결정하는 API의 리소스 경로(Resource Path)는 **정적 경로(Exact Match)를 최우선**으로 라우팅하며, Path Variable(wildcard)을 포함한 경로는 그 다음 우선순위로 매칭됩니다.
  - **Certificate 이름**: [Client Certificates 인증서](/docs/api-gateway-clientcertificates) 선택(인증서의 유효 기간은 인증서 생성일로부터 1년)
  - **API 캐시**: 캐시(Cache)를 설정. 설정 선택 시 **TTL** 항목이 표시됨.
    - **TTL**: 캐시를 유지할 초(sec)를 입력
  - **Throttling**: 등록한 메서드별로 초당 요청 수를 제한하여 백엔드 서버를 보호
  - **IP ACL**: IP에 따라 API 요청을 제어
  - **유지 보수**: 모든 API가 정의된 상태 코드와 응답을 리턴하도록 설정
  - **Content Encoding**: 요청, 응답에 전송되는 데이터의 압축 및 인코딩 설정
8. Stage 생성 성공 팝업 창에서 **[확인]** 버튼을 클릭해 주십시오.
  - Stage가 생성되면 정의된 API가 새 Stage에 배포됩니다.

#### Stage 설정

Stage 설정을 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 설정할 Stage가 있는 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 설정할 Stage 이름을 클릭해 주십시오.
7. Stage 목록 오른쪽에 표시된 상세 정보 화면에서 **[Settings]** 탭을 클릭해 주십시오.
8. 설정 항목을 변경한 후 **[저장]** 버튼을 클릭해 주십시오.
  - Stage 설정 항목에 대한 설명은 [Stage 생성](/docs/api-gateway-myproducts#Stage%EC%83%9D%EC%84%B1)을 참고해 주십시오.
  - **API 캐시**의 TTL 값이 설정되어 있는 경우 이를 초기화하려면 **[초기화]** 버튼을 클릭한 후 캐시 초기화 팝업 창에서 **[삭제]** 버튼을 클릭해 주십시오. 이후 초기화 성공 팝업 창에서 **[확인]** 버튼을 클릭해 주십시오.
9. 수정 팝업 창에서 **[수정]** 버튼을 클릭해 주십시오.
10. 수정 성공 팝업 창에서 **[확인]** 버튼을 클릭해 주십시오.

#### Stage 삭제

Stage를 삭제하는 방법은 다음과 같습니다.

              참고

              

삭제한 Stage는 복구할 수 없습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 삭제할 Stage가 있는 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 삭제할 Stage 이름을 클릭해 주십시오.
7. **[Stage 삭제]** 버튼을 클릭해 주십시오.
8. 삭제 팝업 창에 삭제할 Stage 이름을 입력한 후 **[삭제]** 버튼을 클릭해 주십시오.

#### Stage 내보내기

Stage에 배포된 API를 Swagger JSON 2.0, Open API JSON 3.0, Java SDK 형식으로 다운로드할 수 있습니다.

배포된 API Swagger 파일을 내려받는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 내보낼 Stage 이름을 클릭해 주십시오.
7. Stage 목록 오른쪽에 표시된 상세 정보 화면에서 **[Export]** 탭을 클릭해 주십시오.
8. **플랫폼** 항목에서 내보낼 파일 형식을 선택한 후 **[내보내기]** 버튼을 클릭해 주십시오.
  - **Java SDK**를 선택한 경우에는 필요에 따라 추가 항목을 설정해 주십시오.

              참고

              

메서드별로 API 동작을 명확히 식별할 수 있도록 **Operation ID**를 지정하면, Swagger/OpenAPI 또는 SDK로 Export 시 각 메서드의 역할을 빠르게 파악할 수 있어 개발과 유지보수가 용이합니다. 예: getUserList, createUser, deleteUser

#### 배포 이력 확인 및 관리

Stage의 API 배포 이력을 확인하고, 내역을 다운받거나 이전 버전으로 배포하거나 이력을 삭제할 수 있습니다.

배포 이력을 확인하고 관리하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 API 배포 이력을 확인할 Stage 이름을 클릭해 주십시오.
7. Stage 목록 오른쪽에 표시된 상세 정보 화면에서 **[Deployment History]** 탭을 클릭해 주십시오.
8. 배포 이력을 확인하거나 이전 배포본을 다운로드, 배포, 삭제해 주십시오.
  - **배포일시**: API를 해당 Stage에 배포한 일시(UTC 기준)
  - **설명**: API 배포 시 입력한 설명
  - **배포된 Stage**: 현재 Stage에 배포된 항목에 ![i-apigateway-check](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-check.png) 표시
  - **내보내기**: 이전 배포본을 Swagger JSON 2.0 형식으로 다운로드
  - **배포**: 이전 배포본으로 배포
  - **삭제**: 배포 이력 삭제

#### Usage Plans 변경

Stage의 API 기본 요청 처리량과 요청 처리 한도를 설정할 수 있으며, [**Usage Plans**](/docs/api-gateway-usageplans) 메뉴에서 생성한 Usage Plan을 연결하고 관리할 수 있습니다.

Stage에서 Usage Plans을 설정 변경하는 방법은 다음과 같습니다.

              참고

              

- 사용량은 일/월의 시작을 기준으로 카운트됩니다.
- 엔드포인트의 응답 코드에 따라 사용량이 카운트됩니다.
- **API Key 필요** 설정을 활성화해야만 Usage Plan이 적용됩니다. API Key 필요 설정 방법은 [메서드 생성](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%83%9D%EC%84%B1) 을 참고해 주십시오.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 Usage Plan을 변경할 Stage 이름을 클릭해 주십시오.
7. Stage 목록 오른쪽에 표시된 상세 정보 화면에서 **[Usage Plans]** 탭을 클릭해 주십시오.
8. Usage Plan을 확인하고 필요시 수정해 주십시오.
  - **Default Usage Plan**: 요청 처리량과 요청 처리 한도를 확인 및 설정. **[수정]** 버튼을 클릭해 설정 변경 가능.
    - **요청 처리량**(Rate): 초당 요청 수를 설정
    - **요청 처리 한도**(Quota): 일별, 월별 API 사용량을 설정
    - 사용량은 일/월의 시작을 기준으로 카운트됩니다.
    - 엔드포인트의 응답 코드에 따라 사용량을 카운트합니다.
  - **[Usage Plan 연결]**/**[연결 해제]**: **Usage Plans** 메뉴에서 생성한 Usage Plan 연결 또는 해제
  - 목록: 해당 Stage에 연결된 Usage Plan 항목
  - 검색: 검색할 Usage Plan 이름을 입력한 후 ![i-apigateway-find](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-find.png)을 클릭해 검색
  - 정렬: 목록 페이지당 표시할 Usage Plan 개수 설정
  - Usage Plans에 관한 자세한 내용은 [Usage Plans](/docs/api-gateway-usageplans)을 참고해 주십시오.

#### Document 확인

Stage에 현재 배포된 API 문서를 확인할 수 있습니다.

API 문서를 확인하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 API 문서를 확인할 Stage 이름을 클릭해 주십시오.
7. Stage 목록 오른쪽에 표시된 상세 정보 화면에서 **[Document]** 탭을 클릭해 주십시오.
8. API 문서 내용을 확인해 주십시오.
  - 배포된 API 내용을 Swagger UI 형태로 확인하려면 **[미리보기]** 버튼을 클릭해 주십시오.

#### Canary 활성화 및 테스트

수정된 API 명세를 Stage에 배포하기 전에 Canary 환경을 만들고 운영 환경에서 테스트할 수 있습니다.

Canary를 활성화하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 Canary를 활성화할 Stage 이름을 클릭해 선택한 후 **[Canary 활성화]** 버튼을 클릭해 주십시오.
  - Stage 목록에 `Stage &#xc774;&#xb984;+(Canary)`로 Canary가 활성화됩니다.
7. Stage 목록에서 해당 Canary(`Stage &#xc774;&#xb984;+(Canary)`)를 클릭해 주십시오.
8. 오른쪽 화면에 표시된 상세 정보에서 **[Settings]**, **[Export]**, **[Document]** 탭을 클릭해 정보를 확인 및 설정해 주십시오.
  - **[Settings]**: [Canary 설정](/docs/api-gateway-myproducts#Canary%EC%84%A4%EC%A0%95)
  - **[Export]**: Canary에 배포된 API를 Swagger JSON 2.0, Open API JSON 3.0, Java SDK 형식으로 다운로드
  - **[Document]**: Canary에 배포된 API 문서 확인. 배포된 API 내용을 Swagger UI 형태로 확인하려면 **[미리보기]** 버튼을 클릭.

#### Canary 설정

활성화한 Canary를 설정하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 설정할 Canary(`Stage &#xc774;&#xb984;+(Canary)`)를 클릭해 주십시오.
7. 오른쪽 화면에 표시된 상세 정보에서 **[Settings]** 탭을 클릭해 주십시오.
8. 설정 화면에서 설정을 변경한 후 **[저장]** 버튼을 클릭해 주십시오.

- **Endpoint 도메인**: Canary의 Endpoint 도메인을 설정
- **Certificate 이름**: [Client Certificates 인증서](/docs/api-gateway-clientcertificates) 선택(인증서의 유효 기간은 인증서 생성일로부터 1년)
- **분배**: 요청을 Stage와 Canary에 분배할 방법 설정
  - **Percentage**: Canary 요청의 실행 비율 지정
  - **Condition**: 설정한 헤더(Header) 및 쿼리 스트링(Query String)과 요청이 동일하면 Canary 요청을 실행
- **API 캐시**: Stage의 API 캐시를 이용하여 Canary API 캐시를 활성화. Stage의 API 캐시가 비활성화인 경우 사용 불가
  - **TTL**: 캐시를 유지할 초(sec)를 입력
- **Throttling**: 등록한 메서드별로 초당 요청 수를 제한하여 백엔드 서버를 보호

#### Canary 승격

테스트를 완료한 Canary를 Stage에 배포할 수 있습니다.

Canary를 Stage에 배포하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 배포할 Canary(`Stage &#xc774;&#xb984;+(Canary)`)를 클릭해 선택한 후 **[Canary 승격]** 버튼을 클릭해 주십시오.
7. Canary 승격 팝업 창에서 내용을 확인한 후 **[예]** 버튼을 클릭해 주십시오.
  - Canary 승격을 완료하면 Canary 비활성화 상태로 변환되고 Stage 목록에서 삭제됩니다.
  - 배포 이력을 확인하려면 Stage 이름을 클릭한 후 오른쪽에 표시된 **[Deployment History]** 탭을 클릭해 주십시오. 자세한 내용은 [배포 이력 확인 및 관리](/docs/api-gateway-myproducts#%EB%B0%B0%ED%8F%AC%EC%9D%B4%EB%A0%A5%ED%99%95%EC%9D%B8%EB%B0%8F%EA%B4%80%EB%A6%AC)를 참고해 주십시오.

#### Canary 비활성화

활성화한 Canary를 비활성화(삭제)할 수 있습니다.

Canary를 비활성화하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Stages]** 탭을 클릭해 주십시오.
6. Stage 목록에서 비활성화할 Canary(`Stage &#xc774;&#xb984;+(Canary)`)를 클릭해 선택한 후 **[Canary 비활성화]** 버튼을 클릭해 주십시오.
7. Canary 비활성화 팝업 창에서 내용을 확인한 후 **[예]** 버튼을 클릭해 주십시오.
  - Canary 비활성화를 완료하면 Canary가 Stage 목록에서 삭제됩니다.

### 게이트웨이 응답 정의

미리 정의된 API Gateway 응답 설정을 변경할 수 있습니다.

#### 응답 확인 및 수정

API Gateway 응답을 확인하고, 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 대상 API를 클릭해 주십시오.
5. **[Gateway Responses]** 탭을 클릭해 주십시오.
6. 응답 목록에서 응답 유형을 클릭해 상세 정보를 확인하거나 변경해 주십시오.
  - **상세정보** 영역
    - **상태 코드**: 현재 정의된 응답 코드
    - **기본 설정**: 응답 유형이 기본 설정인지의 여부
    - 응답 유형에 대한 응답 코드를 수정하려면 **상태 코드** 항목의 **[수정]** 버튼을 클릭해 코드(100~599)를 수정한 후 **[저장]** 버튼을 클릭해 주십시오. 수정을 취소하려면 **[취소]** 버튼을 클릭해 주십시오.
    - 변경 사항이 설정되면 **기본 설정** 항목이 **예**에서 **아니오**로 변경됩니다.
  - **응답 헤더** 영역
    - 응답 헤더를 추가하려면 헤더 이름과 헤더 값(변수 또는 static)을 입력한 후 **[추가]** 버튼을 클릭해 주십시오.
    - 응답 헤더의 이름은 어떤 유효한 문자열도 될 수 있습니다.
    - 응답 헤더 값은 유효한 요구 파라미터나 작은따옴표로 묶은 static 값이 될 수 있습니다.
    - 추가한 응답 헤더를 삭제하려면 해당 응답 헤더의 **[삭제]** 버튼을 클릭한 후 응답 헤더 삭제 팝업 창에서 **[삭제]** 버튼을 클릭해 주십시오.
    - 응답 헤더와 응답 메시지에 사용할 수 있는 콘텐츠 변수는 [콘텐츠 변수](/docs/api-gateway-myproducts#%EC%BD%98%ED%85%90%EC%B8%A0%EB%B3%80%EC%88%98)를 참고해 주십시오.
  - **매핑 템플릿** 영역
    - 데이터 반환을 위한 본문 매핑 템플릿을 지정할 수 있습니다. 템플릿은 Apache Velocity Template Language(VTL)를 이용 시 선언됩니다.
    - 매핑 템플릿을 추가하려면 **[추가]** 버튼을 클릭한 후 매핑 템플릿 추가 팝업 창에서 콘텐츠 유형과 매핑 템플릿 정보를 입력한 후 **[추가]** 버튼을 클릭해 주십시오.
    - 매핑 템플릿을 수정하려면 목록에서 수정할 매핑 템플릿을 클릭해 선택한 후 **[수정]** 버튼을 클릭해 주십시오. 이후 매핑 템플릿 수정 팝업 창에서 매핑 템플릿 정보를 수정한 후 **[수정]** 버튼을 클릭해 주십시오.
    - 매핑 템플릿을 삭제하려면 목록에서 삭제할 매핑 템플릿을 클릭해 선택한 후 **[삭제]** 버튼을 클릭해 주십시오. 이후 매핑 템플릿 삭제 팝업 창에서 **[삭제]** 버튼을 클릭해 주십시오.
  - 변경 사항을 기본값으로 재설정하려면 목록에서 재설정할 응답 유형을 클릭해 선택한 후 **[재설정]** 버튼을 클릭해 주십시오. 이후 재설정 팝업 창에서 내용을 확인한 후 **[재설정]** 버튼을 클릭해 주십시오. 변경 사항이 설정되면 **기본 설정** 항목이 **아니오**에서 **예**로 변경됩니다.

#### 콘텐츠 변수

응답 헤더와 응답 메시지에는 다음의 콘텐츠 변수를 사용할 수 있습니다.

| 콘텐츠 변수 | 설명 |
| --- | --- |
| ${context.productName} | Product 이름 |
| ${context.apiName} | API 이름 |
| ${context.httpMethod} | 메서드 |
| ${context.error.message} | 에러 메시지 문자열 |
| ${context.error.messageString} | 에러 메시지 문자열, "$context.error.message" |
| ${context.error.responseType} | 응답 유형 |
| ${context.identity.accountId} | AccessKey의 계정ID(IAM 인증을 사용한 경우) |
| ${context.identity.apiKey} | API Key(API Key를 사용하는 경우) |
| ${context.identity.sourceIp} | 호출자 IP |
| ${context.identity.user} | ${context.identity.accountId}와 동일 |
| ${context.identity.userAgent} | User Agent |
| ${context.path} | URL 경로 |
| ${context.protocol} | 호출 프로토콜(<예시> HTTP/1.1) |
| ${context.requestId} | 요청 ID |
| ${context.requestTime} | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(millisecond)로 나타낸 숫자 |
| ${context.resourcePath} | 리소스 경로 |
| ${context.methodCode} | 엔드포인트의 메서드 |
| ${context.methodName} | 엔드포인트의 메서드 |
| ${context.status} | 응답 코드 |
| ${context.stage} | Stage 이름 |
| ${method.request.path.PARAM_NAME} | 요청의 경로 변수 |
| ${method.request.queryString.PARAM_NAME} | 요청의 쿼리 스트링 |
| ${method.request.header.PARAM_NAME} | 요청의 헤더 |

### 요청과 응답의 바디 모델 정의

API 명세에서 사용하기 위한 바디 모델을 정의할 수 있습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 바디 모델을 정의할 API를 클릭해 주십시오.
5. **[Models]** 탭을 클릭해 주십시오.
6. 필요에 따라 모델의 새로 정의하거나 수정 및 삭제해 주십시오.
  - 모델을 추가하려면 **[추가]** 버튼을 클릭한 후 Model 추가 팝업 창에서 정보를 입력한 다음 **[추가]** 버튼을 클릭해 주십시오.
    - **Model 이름**: 생성할 Model 이름 입력
    - **설명**: Model에 대한 설명 입력
    - **Schema**: 모델을 선언할 때는 JSON schema 사용
      - **[Schema]** 탭: 스키마 작성
      - **[미리보기]** 탭: 작성한 스키마 동작을 미리 확인
    - 작성 예제

```
{
    "title": "Person",
    "type": "object",
        "properties": {
            "firstName": {
                "type": "string"
            },
            "lastName": {
                "type": "string"
            },
            "age": {
                "description": "Age in years",
                "type": "integer",
                "minimum": 0
            }
        },
    "required": ["firstName", "lastName"]
}
```

- 모델을 수정하려면 목록에서 수정할 모델을 클릭해 선택한 후 **[수정]** 버튼을 클릭해 주십시오. 이후 Model 수정 팝업 창에서 모델 정보를 수정한 다음 **[수정]** 버튼을 클릭해 주십시오.
- 모델을 삭제하려면 목록에서 삭제할 모델을 클릭해 선택한 후 **[삭제]** 버튼을 클릭해 주십시오. 이후 삭제 팝업 창에서 **[삭제]** 버튼을 클릭해 주십시오.

### API 설명서의 Overview 작성

API 설명서의 Overview를 Markdown 문법으로 작성할 수 있습니다.

API 설명서의 Overview를 작성하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 설명서를 작성할 API를 클릭해 주십시오.
5. **[Overview]** 탭을 클릭해 주십시오.
6. **[수정]** 버튼을 클릭해 주십시오.
7. **[입력]** 탭을 클릭해 주십시오.
8. 입력란에 Markdown 문법으로 Overview를 작성한 후 **[저장]** 버튼을 클릭해 주십시오.
  - 작성한 내용을 미리 확인해 보려면 **[미리보기]** 탭을 클릭해 주십시오.
  - 작성한 Overview는 [Catalog에서 확인](/docs/api-gateway-myproducts#Catalog%ED%99%95%EC%9D%B8)할 수 있으며, Catalog 화면에서도 수정할 수 있습니다.

## API 배포

등록한 API를 배포하는 방법은 다음과 같습니다.

              참고

              

API를 배포하려면 먼저 Stage를 생성해야 합니다. Stage를 생성하는 방법은 [Stage 생성](/docs/api-gateway-myproducts#Stage%EC%83%9D%EC%84%B1)을 참고해 주십시오.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 배포할 API가 있는 Product의 **APIs** 열의 ![i-apigateway-apis](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apis.png)을 클릭해 주십시오.
  - 상세 정보의 **APIs** 목록에 있는 API 이름을 클릭하면 해당 API가 선택된 API 목록 화면으로 이동합니다.
4. API 목록에서 배포할 API를 클릭해 주십시오.
5. **[API 배포]** 버튼을 클릭해 주십시오.
6. API 배포 팝업 창에서 API 배포 정보를 설정한 후 **[추가]** 버튼을 클릭해 주십시오.
  - **배포할 Stage**: 배포할 Stage를 선택
  - **설명**: 배포에 대한 설명을 입력
7. API 배포 성공 팝업 창에서 **[확인]** 버튼을 클릭해 주십시오.
  - API는 하나의 Stage에 여러 번 배포할 수 있으며, [배포 이력(Deployment History)](/docs/api-gateway-myproducts#%EB%B0%B0%ED%8F%AC%EC%9D%B4%EB%A0%A5%ED%99%95%EC%9D%B8%EB%B0%8F%EA%B4%80%EB%A6%AC)을 통해 관리할 수 있습니다.

## API 호출

배포한 API를 호출할 수 있습니다. API 설정에 따라 호출할 때 인증이 필요합니다.

### 인증이 필요 없는 API 호출

인증이 필요 없는 API를 호출하는 경우 다음 예를 참고해 주십시오.

```
curl -i -X GET https://uh7m0wgsis.apigw.fin-ntruss.com/petStore/v1/pets
```

### API Key가 필요한 API 호출

API Key가 필요한 API를 호출하는 경우 다음 내용과 예를 참고해 주십시오.

| 헤더 | 설명 |
| --- | --- |
| x-ncp-apigw-api-key | API Gateway에서 발급받은 키(Primary Key 또는 Secondary Key) API Key를 요구하는 경우에만 추가 |

```
curl -i -X GET \
   -H "x-ncp-apigw-api-key:cstWXuw4wqp1EfuqDwZeMz5fh0epaTykRRRuy5Ra" \
 'https://uh7m0wgsis.apigw.fin-ntruss.com/petStore/v1/pets'
```

### IAM 인증이 필요한 API 호출

IAM 인증이 필요한 API를 호출하는 경우 다음 내용과 예를 참고해 주십시오.

> 관련 FAQ : [IAM 인증을 사용하여 API 호출 시 API 호출이 왜 실패하나요?](https://www.fin-ncloud.com/support/faq/prod/1474)

              참고

              

API 인증 방법이 **IAM** 또는 **IAM + AUTHORIZATION** 인 경우, 아래와 같이 API 호출 시 IAM 인증이 필요합니다. API 인증 방법 설정은 [메서드 생성](/docs/api-gateway-myproducts#%EB%A9%94%EC%84%9C%EB%93%9C%EC%83%9D%EC%84%B1)을 참조해 주십시오.

| 헤더 | 설명 |
| --- | --- |
| x-ncp-apigw-api-key | API Gateway에서 발급받은 키(Primary Key 또는 Secondary Key) API Key를 요구하는 경우에만 추가 |
| x-ncp-apigw-timestamp | 1970년 1월 1일 00:00:00 협정 세계시(UTC)부터의 경과 시간을 밀리초(millisecond)로 나타낸 것 API Gateway 서버와 시간차가 5분 이상 나는 경우 유효하지 않은 요청으로 간주 |
| x-ncp-iam-access-key | 포털 또는 Sub Account에서 발급받은 Access Key ID |
| x-ncp-apigw-signature-v2 | Access Key ID와 맵핑되는 SecretKey로 암호화한 서명 HMAC 암호화 알고리즘은 HmacSHA256 사용 |

```
curl -i -X GET \
   -H "x-ncp-apigw-timestamp:1505290625682" \
   -H "x-ncp-apigw-api-key:cstWXuw4wqp1EfuqDwZeMz5fh0epaTykRRRuy5Ra" \
   -H "x-ncp-iam-access-key:D78BB444D6D3C84CA38A" \
   -H "x-ncp-apigw-signature-v2:WTPItrmMIfLUk/UyUIyoQbA/z5hq9o3G8eQMolUzTEo=" \
 'https://uh7m0wgsis.apigw.fin-ntruss.com/photos/puppy.jpg?query1=&query2'
```

- Access Key ID, SecretKey 확인

Access Key ID, SecretKey는 네이버 클라우드 플랫폼 콘솔의 우측 상단 **My Account** > **계정 및 보안 관리** > **보안 관리** > **접근 관리** > **API 인증키**에서 확인할 수 있습니다.
- Signature 생성

| 요청 | StringToSign |
| --- | --- |
| GET /photos/puppy.jpg?query1=&query2 x-ncp-apigw-timestamp={timestamp} x-ncp-apigw-api-key={apiKey} x-ncp-iam-access-key={accesskey} x-ncp-apigw-signature-v2={signature} | GET /photos/puppy.jpg?query1=&query2 {timeStamp} {accessKey} |

              주의

              

요청 헤더의 x-ncp-apigw-timestamp 값과 StringToSign의 timestamp는 반드시 같아야 합니다.

              참고

              

  - 서명에 사용되는 URL에는 도메인이 포함되지 않습니다.
  - 개행문자는 \n을 사용합니다.

요청에 맞게 StringToSign를 생성하고 SecretKey를 HmacSHA256 알고리즘으로 암호화한 후 Base64로 인코딩합니다. 이 값을 `x-ncp-apigw-signature-v2`로 사용합니다. 코드 종류별 샘플 코드는 다음과 같습니다.

- Java 샘플 코드

```
public String makeSignature() {
  String space = " ";					// one space
  String newLine = "\n";					// new line
  String method = "GET";					// method
  String url = "/photos/puppy.jpg?query1=&query2";	// url (include query string)
  String timestamp = "{timestamp}";			// current timestamp (epoch)
  String accessKey = "{accessKey}";			// access key id (from portal or sub account)
  String secretKey = "{secretKey}";

  String message = new StringBuilder()
    .append(method)
    .append(space)
    .append(url)
    .append(newLine)
    .append(timestamp)
    .append(newLine)
    .append(accessKey)
    .toString();

  SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
  Mac mac = Mac.getInstance("HmacSHA256");
  mac.init(signingKey);

  byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));
  String encodeBase64String = Base64.getEncoder(rawHmac);

  return encodeBase64String;
}
```
- Javascript 샘플 코드

```
/*
https://code.google.com/archive/p/crypto-js/
https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/crypto-js/CryptoJS%20v3.1.2.zip
*/

/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
<script type="text/javascript" src="./CryptoJS/rollups/hmac-sha256.js"></script>
<script type="text/javascript" src="./CryptoJS/components/enc-base64.js"></script>

function makeSignature() {
  var space = " ";				// one space
  var newLine = "\n";				// new line
  var method = "GET";				// method
  var url = "/photos/puppy.jpg?query1=&query2";	// url (include query string)
  var timestamp = "{timestamp}";			// current timestamp (epoch)
  var accessKey = "{accessKey}";			// access key id (from portal or sub account)
  var secretKey = "{secretKey}";			// secret key (from portal or sub account)

  var hmac = CryptoJS.algo.HMAC.create(CryptoJS.algo.SHA256, secretKey);
  hmac.update(method);
  hmac.update(space);
  hmac.update(url);
  hmac.update(newLine);
  hmac.update(timestamp);
  hmac.update(newLine);
  hmac.update(accessKey);

  var hash = hmac.finalize();

  return hash.toString(CryptoJS.enc.Base64);
}
```
- Python3 샘플 코드

```
import hashlib
import hmac
import base64
import time

def	make_signature():
  timestamp = int(time.time() * 1000)
  timestamp = str(timestamp)

  access_key = "{accessKey}"				# access key id (from portal or sub account)
  secret_key = "{secretKey}"				# secret key (from portal or sub account)
  secret_key = bytes(secret_key, 'UTF-8')

  method = "GET"
  uri = "/photos/puppy.jpg?query1=&query2"

  message = method + " " + uri + "\n" + timestamp + "\n" + access_key
  message = bytes(message, 'UTF-8')
  signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
  return signingKey
```
- Bash 샘플 코드

```
function makeSignature() {
  nl=$'\\n'

  TIMESTAMP=$(echo $(($(date +%s%N)/1000000)))
  ACCESSKEY="{accessKey}"				# access key id (from portal or sub account)
  SECRETKEY="{secretKey}"				# secret key (from portal or sub account)

  METHOD="GET"
  URI="/photos/puppy.jpg?query1=&query2"

  SIG="$METHOD"' '"$URI"${nl}
  SIG+="$TIMESTAMP"${nl}
  SIG+="$ACCESSKEY"

  SIGNATURE=$(echo -n -e "$SIG"|iconv -t utf8 |openssl dgst -sha256 -hmac $SECRETKEY -binary|openssl enc -base64)
}
```
- Objective-C 샘플 코드

```
#include <CommonCrypto/CommonDigest.h>
#include <CommonCrypto/CommonHMAC.h>

- (NSString*) makeSignature
{
  NSString* space = @" ";
  NSString* newLine = @"\n";
  NSString* method = @"GET";
  NSString* url = @"/photos/puppy.jpg?query1=&query2";
  NSString* timestamp = @"{timestamp}";
  NSString* accessKey = @"{accessKey}";
  NSString* secretKey = @"{secretKey}";

  NSString* message = [[NSString alloc] init];
  message = [message stringByAppendingString:method];
  message = [message stringByAppendingString:space];
  message = [message stringByAppendingString:url];
  message = [message stringByAppendingString:newLine];
  message = [message stringByAppendingString:timestamp];
  message = [message stringByAppendingString:newLine];
  message = [message stringByAppendingString:accessKey];

  const char *cKey = [secretKey cStringUsingEncoding:NSASCIIStringEncoding];
  const char *cData = [message StringUsingEncoding:NSASCIIStringEncoding];
  unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
  CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
  NSData *hash = [[NSData alloc] initWithBytes:cHMAC length:sizeof(cHMAC)];

  const uint8_t* input = (const uint8_t*)[hash bytes];
  NSInteger length = [theData length];

  static char table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

  NSMutableData* data = [NSMutableData dataWithLength:((length + 2) / 3) * 4];
  uint8_t* output = (uint8_t*)data.mutableBytes;

  NSInteger i;
  for (i=0; i < length; i += 3) {

    NSInteger value = 0;
    NSInteger j;

    for (j = i; j < (i + 3); j++) {
      value <<= 8;

      if (j < length) {
        value |= (0xFF & input[j]);
      }
    }

    NSInteger theIndex = (i / 3) * 4;
    output[theIndex + 0] = table[(value >> 18) & 0x3F];
    output[theIndex + 1] = table[(value >> 12) & 0x3F];
    output[theIndex + 2] = (i + 1) < length ? table[(value >> 6) & 0x3F] : '=';
    output[theIndex + 3] = (i + 2) < length ? table[(value >> 0) & 0x3F] : '=';
  }

  return [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
}
```
- C# 샘플 코드

```
  using System;
  using System.Text;
  using System.Security.Cryptography;

  class ApiGateway
  {
      static String MakeSignature() {
          String method = "GET";
          String space = " ";
          String url = "/photos/puppy.jpg?query1=&query2";
          String newLine = "\n";
          String timestamp = "{timestamp}";
          String accessKey = "{accessKey}";
          String secretKey = "{secretKey}";
          
          var message = new StringBuilder();
          message.Append(method);
          message.Append(space);
          message.Append(url);
          message.Append(newLine);
          message.Append(timestamp);
          message.Append(newLine);
          message.Append(accessKey);
          string result = message.ToString();
          
          String signature = string.Empty;
          byte[] byteSecretKey = Encoding.UTF8.GetBytes(secretKey);
          using (HMACSHA256 hmacSha256 = new HMACSHA256(byteSecretKey))
          {
              Byte[] dataToHmac = System.Text.Encoding.UTF8.GetBytes(result);
              signature = Convert.ToBase64String(hmacSha256.ComputeHash(dataToHmac));
          }
          
          return signature;
      }
  }
```
- PHP 샘플 코드

```
  <?php
  function makeSignature() {
          $StringToSign = 'GET /photos/puppy.jpg?query1=&query2' . PHP_EOL . '{timestamp}' . PHP_EOL . '{accessKey}';
          $secret_key = '{secretKey}';

          $signature = base64_encode(hash_hmac('sha256', $StringToSign, $secret_key, true));

          return $signature;
  }
  ?>
```

### 에러 코드

API 호출 시 나타날 수 있는 에러 코드의 종류와 설명은 다음과 같습니다.

| HttpStatusCode | ErrorCode | ErrorMessage | 설명 |
| --- | --- | --- | --- |
| 400 | 100 | Bad Request Exception | protocol(https), endocing(UTF-8) 등 request 에러 |
| 401 | 200 | Authentication Failed | 인증 실패 |
| 401 | 210 | Permission Denied | 권한 없음 |
| 403 | 230 | Forbidden | 권한 없음 |
| 404 | 300 | Not Found Exception | Not found |
| 429 | 400 | Quota Exceeded | Quota 초과 |
| 429 | 410 | Throttle Limited | Rate 초과 |
| 429 | 420 | Rate Limited | Rate 초과 |
| 413 | 430 | Request Entity Too Large | 요청 엔티티 크기 초과 |
| 415 | 440 | Unsupported Media Type | 지원되지 않는 미디어 유형 |
| 503 | 500 | Endpoint Error | 엔드포인트 연결 에러 |
| 504 | 510 | Endpoint Timeout | 엔드포인트 연결 시간 초과 |
| 503 | 520 | Unknown Endpoint Domain | 알 수 없거나 설정 되지 않은 엔드포인트 |
| 503 | 530 | Connection Closed By Endpoint | 엔드포인트 연결 닫힘 |
| 500 | 900 | Unexpected Error | 예외 처리가 안된 에러 |

> 관련 FAQ : [API 호출시 에러가 발생하는 경우 에러 내용을 알 수 있나요?](https://www.fin-ncloud.com/support/faq/prod/1475)

### 에러 응답 형식

API 호출 시 나타날 수 있는 에러 응답 형식은 다음과 같습니다.

- 요청 Content-Type이 application/xml일 때

```
<?xml version='1.0' encoding='UTF-8' ?>
<Message>
    <error>
        <errorCode>210</errorCode>
        <message>Permission Denied</message>
    </error>
</Message>
```
- 그 외

```
{
  "error":{
      "errorCode":"210",
      "message":"Permission Denied"
  }
}
```

## 문서 관리

API 문서는 다음 3가지 종류가 있습니다. 각 문서에 대한 내용은 해당 사용 가이드를 참고해 주십시오.

- [API의 Overview](/docs/api-gateway-myproducts#API%EC%84%A4%EB%AA%85%EC%84%9C%EC%9D%98Overview%EC%9E%91%EC%84%B1): API 설명서의 개요
- [Stage의 Document](/docs/api-gateway-myproducts#Document%ED%99%95%EC%9D%B8): API 설명서
- [Product의 Catalog](/docs/api-gateway-myproducts#Catalog%ED%99%95%EC%9D%B8): 게시된 API 문서의 개요(Overview)와 설명서(Document)의 묶음

## Catalog 확인

게시된 API 문서의 개요(Overview)와 설명서(Document)를 확인할 수 있습니다. 개요의 경우 내용을 수정할 수 있습니다.

              참고

              

- Catalog를 확인하려면 먼저 [API를 Stage에 배포](/docs/api-gateway-myproducts#API%EB%B0%B0%ED%8F%AC)한 후 해당 Stage를 게시해야 합니다. API를 게시하는 방법은 [API 게시](/docs/api-gateway-myproducts#API%EA%B2%8C%EC%8B%9C)를 참고해 주십시오.
- 다른 사용자가 게시하여 공개한 Catalog를 참고 및 구독할 수 있습니다. 자세한 내용은 [**Published APIs**](/docs/api-gateway-publishedapis) 사용 가이드를 참고해 주십시오.

Catalog를 확인하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 Catalog를 확인할 Product의 **Catalog** 열의 ![i-apigateway-view](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-view.png)을 클릭해 주십시오.
4. 해당 Product의 API 목록에서 Catalog를 확인할 API의 이름을 클릭해 정보를 확인해 주십시오.
  - [**Overview**](/docs/api-gateway-myproducts#API%EC%84%A4%EB%AA%85%EC%84%9C%EC%9D%98Overview%EC%9E%91%EC%84%B1): API 설명서의 개요
    - 수정하려면 **[수정]** 버튼을 클릭해 **[입력]** 탭의 입력란에 내용을 입력한 후 **[저장]** 버튼을 클릭
    - 수정 작성한 내용을 미리 확인하려면 **[미리보기]** 탭 클릭
  - [**API 설명서**](/docs/api-gateway-myproducts#Document%ED%99%95%EC%9D%B8)
    - 게시된 API 설명서 내용을 Swagger UI 형태로 확인하려면 Stage 이름 또는 ![i-apigateway-view](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-view.png)을 클릭

## API 게시

개발한 API를 다른 사용자가 API 설명서를 참고하여 사용할 수 있도록 게시할 수 있습니다.

API를 게시하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **게시** 열의 ![i-apigateway-publish](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-publish.png)을 클릭해 주십시오.
4. 해당 Product의 Catalog 목록에서 게시할 API의 이름을 클릭하고 **[게시]** 버튼을 클릭해 주십시오.
5. 게시 성공 팝업 창이 나타나면 **[확인]** 버튼을 클릭해 주십시오.

## Stage에 API Key 연결 및 관리

**API Keys** 메뉴에서 생성한 API Key를 Stage에 등록하고, 사용 상태 및 API 사용량을 설정할 수 있습니다.

### API Key 연결

Stage에 API Key를 연결하는 방법은 다음과 같습니다.

              참고

              

Stage에 API Key를 연결하려면 먼저 API Key를 생성해야 합니다. 자세한 내용은 [API Keys](/docs/api-gateway-apikeys) 사용 가이드를 참고해 주십시오.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **API Keys** 열의 ![i-apigateway-apikeys](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apikeys.png)을 클릭해 주십시오.
4. **[내 API Key 추가]** 버튼을 클릭해 주십시오.
5. 내 API Key 추가 팝업 창에서 연결할 API Key를 클릭해 선택한 후 **[추가]** 버튼을 클릭해 주십시오.
  - API Key 이름을 입력한 후 ![i-apigateway-find](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-find.png)을 클릭해 원하는 API Key를 빠르게 찾을 수 있습니다.
6. API Key 목록 화면에서 Stage에 연결된 API Key가 추가되었는지 확인해 주십시오.

API Key가 연결된 후의 API Key 목록에 대한 설명은 다음과 같습니다. ![apigw-myproducts-apikeys_ko](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/apigw-myproducts-apikeys_ko.png)

| 영역 | 설명 |
| --- | --- |
| ① **내 API Key 추가** | Stage에 [API Key를 연결](/docs/api-gateway-myproducts#APIKey%EC%97%B0%EA%B2%B0) |
| ② **상태 변경** | API에 대한 [API Key의 사용 상태를 변경](/docs/api-gateway-myproducts#APIKey%EC%9D%98%EC%83%81%ED%83%9C%EB%B3%80%EA%B2%BD) |
| ③ **Usage Plans** | API Key에 대한 [Usage Plan 변경](/docs/api-gateway-myproducts#APIKey%EC%9D%98UsagePlan%EB%B3%80%EA%B2%BD) |
| ④ 검색창 | 검색 조건을 선택하고 검색어를 입력한 후 ![i-apigateway-find](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-find.png)을 클릭해 항목 검색 |
| ⑤ 필터 | API Key의 사용 상태에 따라 목록을 정렬 |
| ⑥ 정렬 | 목록 페이지당 표시할 API Key 개수 설정 |
| ⑦ API Key 목록 | 해당 Stage에 연결된 API Key 항목 - **API Key ID**: Stage에 연결한 API Key의 ID - **API Key 이름**: Stage에 연결한 API Key의 이름 - **Primary Key**: Stage에 연결한 API Key의 Primary Key - **Secondary Key**: Stage에 연결한 API Key의 Secondary Key - **상태**: 현재 API Key의 상태(**요청**, **승인**, **거부**, **요청 거부**, **요청 차단**) 표시 - **요청 일시**: API Key와 Stage 연결을 요청한 일시 - **수정 일시**: API Key의 상태를 수정한 일시 |

### API Key의 상태 변경

API에 대한 API Key의 사용 상태를 변경할 수 있습니다.

API Key의 사용 상태를 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **API Keys** 열의 ![i-apigateway-apikeys](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apikeys.png)을 클릭해 주십시오.
4. API Key 목록 화면에서 상태를 변경할 API Key를 클릭해 선택한 후 **[상태 변경]** 버튼을 클릭해 주십시오.
5. 상태 팝업 창에서 **상태**를 선택해 변경한 후 **[저장]** 버튼을 클릭해 주십시오.
  - **요청**: API Key 승인을 요청한 상태
  - **승인**: API를 호출할 수 있는 상태
  - **거부**: 승인된 API Key가 API를 호출할 수 없도록 거부한 상태
  - **요청 거부**: API Key 승인 요청을 거부한 상태
  - **요청 차단**: API Key 승인 요청을 차단한 상태

### API Key의 Usage Plan 변경

API Key의 Usage Plan을 변경하는 방법은 다음과 같습니다.

1. 네이버 클라우드 플랫폼 콘솔에서 **Menu** > **All Services** > **Application Services** > **API Gateway** 메뉴를 차례대로 클릭해 주십시오.
2. **My Products** 메뉴를 클릭해 주십시오.
3. Product 목록에서 대상 Product의 **API Keys** 열의 ![i-apigateway-apikeys](https://cdn.document360.io/0406ed95-101f-4cde-8dd8-308d03444a94/Images/Documentation/i-apigateway-apikeys.png)을 클릭해 주십시오.
4. API Key 목록 화면에서 Usage Plan을 변경할 API Key를 클릭해 선택한 후 **[Usage Plans]** 버튼을 클릭해 주십시오.
5. Usage Plans 목록 화면에서 대상 API를 선택한 후 **[Usage Plan 수정]** 버튼을 클릭해 주십시오.
  - **API**: API Key가 연결된 API 이름
  - **Stage**: API Key가 연결된 Stage 이름
  - **Usage Plan**: Stage에 설정되어 있는 Usage Plan 이름
  - **요청 일시**: API Key와 Stage 연결을 요청한 일시
  - **수정 일시**: Usage Plan을 설정 변경한 일시
  - **일별 호출수/요청 처리 한도**: 일별 호출 수와 Usage Plan에 설정된 일별 요청 처리 한도 값 표시
  - **월별 호출수/요청 처리 한도**: 월별 호출 수와 Usage Plan에 설정된 월별 요청 처리 한도 값 표시
6. Usage Plan 수정 팝업 창에서 **Usage Plan**을 선택해 변경한 후 **[저장]** 버튼을 클릭해 주십시오.
  - **기본 Usage Plan**: Stage의 **[Usage Plans]** 탭의 **Default Usage Plan** 항목에서 설정한 API 사용량([Stage의 Usage Plan 변경](/docs/api-gateway-myproducts#UsagePlans%EB%B3%80%EA%B2%BD) 참고)
  - Stage에 연결된 Usage plan: **Usage plans** 메뉴에서 생성하고 해당 Stage의 **[Usage Plans]** 탭에서 연결한 Usage plan 표시. Usage Plan 옆의 숫자는 연결된 Stage의 수.

## 사용한도

| 설명 | 제한 |
| --- | --- |
| **Product 생성 개수** | 60 |
| **Product당 가능한 API 생성 개수** | 20 |
| **API key 생성 개수** | 500 |
| **API당 Resource 생성 개수** | 300 |
| **API당 Stage 생성 개수** | 10 |
| **Usage plan 생성 개수** | 300 |
| **TTL 설정** | 1 ~ 3600초 |
| **TTL 설정 (Stream API)** | 캐시안됨 |
| **API 처리 시간** | 600초 |
| **Endpoint API 처리 시간** | 30초 |
| **Endpoint API 처리 시간 (Stream API)** | 300초 |
| **요청 바디** | 10 MB |
| **요청 바디 (Stream API)** | 100MB |
