> ## 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.

# Webhook 전달 테스트

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

<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>

* 먼저 운영 환경이 아닌 웹훅 엔드포인트로 테스트합니다
* 엔드포인트가 `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`은 `News/v1`이어야 합니다.

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

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

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

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

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

  ```json Response (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 키

````