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

# 웹훅 전송 테스트

> 이 엔드포인트는 테스트 데이터를 웹훅 엔드포인트로 전송하여 통합이 올바르게 동작하는지 확인할 수 있도록 합니다

<div id="overview">
  ## 개요
</div>

이 엔드포인트를 사용하여 설정한 엔드포인트로 테스트 웹훅 전송을 트리거할 수 있습니다. 이를 통해 실제 운영 데이터 수신 전에 웹훅 연동이 올바르게 동작하는지 확인할 수 있습니다.

<div id="testing-your-integration">
  ## 통합 테스트
</div>

이 엔드포인트를 호출하면 Benzinga가 사용자가 설정한 `destination` URL로 테스트 웹훅 페이로드를 전송합니다. 이 테스트 전송은 프로덕션 환경의 웹훅 전송과 동일한 형식과 재시도 로직을 따릅니다.

<div id="what-to-expect">
  ### 예상되는 사항
</div>

1. **즉시 응답**: 테스트 전송이 성공적으로 트리거되면 API는 `200` 상태 코드를 반환합니다.
2. **테스트 페이로드**: 웹훅 엔드포인트는 프로덕션 데이터와 동일한 형식의 테스트 페이로드를 수신합니다.
3. **전송 헤더**: 테스트 전송에는 프로덕션 전송과 마찬가지로 `X-BZ-Delivery` 헤더가 포함됩니다.

<div id="verify-your-integration">
  ### 통합 검증하기
</div>

이 엔드포인트를 사용하여 다음을 확인하십시오:

* 웹훅 엔드포인트가 외부에서 접근 가능함
* 엔드포인트가 웹훅 페이로드 형식을 올바르게 파싱할 수 있음
* 엔드포인트가 적절한 상태 코드(성공 시 2xx)로 응답함
* 엔드포인트가 30초 타임아웃 내에 응답함
* 멱등성 로직이 `X-BZ-Delivery` 헤더와 페이로드의 `id` 필드를 올바르게 처리함

<div id="best-practices">
  ## 모범 사례
</div>

* 먼저 운영 환경이 아닌 Webhook 엔드포인트로 테스트하세요
* 엔드포인트가 `200` 또는 `204` 상태 코드로 응답하는지 확인하세요
* 로그 및 모니터링에서 테스트 전달이 기록되는지 확인하세요
* 중복 제거 로직이 테스트 전달 ID와 함께 정상적으로 동작하는지 확인하세요
* 일시적으로 오류 상태 코드를 반환하여 오류 시나리오를 테스트하세요

<div id="troubleshooting">
  ## 문제 해결
</div>

<div id="424-delivery-error">
  ### 424 전달 오류
</div>

`424` 상태 코드를 받은 경우, 시스템이 테스트 페이로드를 대상 엔드포인트로 전달하지 못한 것입니다. 일반적인 원인은 다음과 같습니다:

* 대상 URL이 공개적으로 접근할 수 없음
* 대상 엔드포인트가 오류 상태 코드를 반환함
* 네트워크 연결 문제
* 대상 엔드포인트의 SSL/TLS 인증서 오류

<div id="400-invalid-request">
  ### 400 잘못된 요청
</div>

모든 필수 매개변수가 모두 제공되었고 형식이 올바른지 확인하세요:

* `destination`은(는) 유효한 HTTPS URL이어야 합니다.
* `version`은(는) `webhook/v1`이어야 합니다.
* `kind`는 지원되는 이벤트 kind 중 하나여야 합니다(예: `News/v1`, `Earnings/v1`, `Ratings/v1` 등).

<ResponseExample>
  ```json 응답 (200 OK) theme={null}
  {
    "status": "success"
  }
  ```

  ```json 응답 (400 Bad Request) theme={null}
  {
    "error": "Invalid destination URL"
  }
  ```

  ```json 응답 (424 Failed Dependency) theme={null}
  {
    "error": "Failed to deliver test payload to destination"
  }
  ```

  ```json 응답 (401 Unauthorized) theme={null}
  {
    "ok": false,
    "errors": [
      {
        "code": "auth_failed",
        "id": "unauthorized",
        "value": "Invalid or missing authentication token"
      }
    ]
  }
  ```

  ```json 응답 (404 Not Found) theme={null}
  {
    "ok": false,
    "errors": [
      {
        "code": "no_data_found",
        "id": "not_found",
        "value": "No data found for the specified parameters"
      }
    ]
  }
  ```

  ```json 응답 (500 Internal Server Error) theme={null}
  {
    "ok": false,
    "errors": [
      {
        "code": "internal_server_error",
        "id": "server_error",
        "value": "An unexpected error occurred while processing your request"
      }
    ]
  }
  ```
</ResponseExample>


## OpenAPI

````yaml ko/openapi/webhook_api.spec.yml GET /api/v1/webhook/test
openapi: 3.0.0
info:
  contact: {}
  description: Webhook 전송을 테스트하여 통합이 제대로 작동하는지 확인하세요
  title: Webhook API
  version: 1.0.0
servers:
  - url: https://api.benzinga.com
security: []
paths:
  /api/v1/webhook/test:
    get:
      summary: 웹훅 전송 테스트
      description: 이 엔드포인트는 테스트 데이터를 웹훅 엔드포인트로 전송하여 통합이 올바르게 동작하는지 확인할 수 있도록 합니다
      operationId: get-webhook-test
      parameters:
        - name: destination
          in: query
          required: true
          description: 테스트 데이터를 수신할 webhook 엔드포인트 url
          schema:
            type: string
            format: uri
          example: https://your-endpoint.com/webhook
        - name: version
          in: query
          required: true
          description: API 버전(현재는 webhook/v1)
          schema:
            type: string
            enum:
              - webhook/v1
            default: webhook/v1
        - name: kind
          in: query
          required: true
          description: 테스트 페이로드의 메시지 kind를 나타냅니다
          schema:
            type: string
            enum:
              - News/v1
              - Signals/v1
              - Earnings/v1
              - Ratings/v1
              - Dividends/v1
              - IPOs/v1
              - Guidance/v1
              - Splits/v1
              - OptionActivity/v1
              - Conference/v1
              - Economics/v1
              - Offerings/v1
              - MA/v1
              - Retail/v1
              - FDA/v1
              - WIIMs/v1
              - SECInsiderTransaction/v1
              - GovernmentTrade/v1
            default: News/v1
        - name: token
          in: query
          required: false
          description: 실서비스 환경에서 사용할 수 있도록 데이터를 변환하려면 토큰을 지정하세요
          schema:
            type: string
      responses:
        '200':
          description: 성공 - 테스트 웹훅이 성공적으로 전송되었습니다
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
        '400':
          description: 잘못된 요청 - 자세한 내용은 응답 본문에서 확인하세요
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Invalid destination URL
        '424':
          description: 전달 오류 - 테스트 페이로드를 전송하는 중 시스템 오류가 발생했습니다
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Failed to deliver test payload to destination
        '500':
          description: 내부 서버 오류
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Internal server error
      security:
        - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Key
      description: 사용자의 Benzinga API 키

````