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

# Benzinga Java SDK

<div id="bz-java-client">
  # BZ-Java-Client
</div>

개발자 친화적이며 타입 안정성이 보장되는 Java SDK로, *openapi* API를 활용하기에 최적화되어 있습니다.

<div style={{ textAlign: "left" }}>
  <a href="https://www.speakeasy.com/?utm_source=openapi&utm_campaign=java">
    <img src="https://custom-icon-badges.demolab.com/badge/-Built%20By%20Speakeasy-212015?style=for-the-badge&logoColor=FBE331&logo=speakeasy&labelColor=545454" alt="Speakeasy에서 제작" />
  </a>

  <a href="https://mit-license.org/">
    <img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT 라이선스" style={{ width: "100px", height: "28px" }} />
  </a>
</div>

<div id="summary">
  ## 요약
</div>

Benzinga APIs: 이 REST API는 모든 Benzinga API에 접근하기 위한 엔드포인트를 제공합니다.

<div id="table-of-contents">
  ## 목차
</div>

* [BZ-Java-Client](#bz-java-client)
* [SDK 설치](#sdk-installation)
* [SDK 사용 예시](#sdk-example-usage)
* [인증](#authentication)
* [사용 가능한 리소스 및 작업](#available-resources-and-operations)
* [재시도](#retries)
* [오류 처리](#error-handling)
* [서버 선택](#server-selection)
* [개발](#development)
* [성숙도](#maturity)
* [기여](#contributions)

<div id="sdk-installation">
  ## SDK 설치
</div>

<div id="getting-started">
  ### 시작하기
</div>

JDK 11 이상이 필요합니다.

아래 예제는 배포된 SDK 아티팩트를 사용하는 방법을 보여줍니다:

Gradle:

```groovy theme={null}
implementation 'org.benzinga:BZClient:0.2.7'
```

Maven:

```xml theme={null}
<dependency>
    <groupId>org.benzinga</groupId>
    <artifactId>BZClient</artifactId>
    <version>0.2.7</version>
</dependency>
```

<div id="how-to-build">
  ### 빌드 방법
</div>

git 저장소를 로컬 파일 시스템에 클론한 후, \*nix 시스템에서는 `./gradlew build`를, Windows 시스템에서는 `gradlew.bat`를 실행하여 소스에서 SDK 아티팩트를 `build` 디렉터리로 빌드할 수 있습니다.

소스에서 빌드하고 SDK 아티팩트를 로컬 Maven 저장소(로컬 파일 시스템)에 게시하려면, git 저장소를 로컬에 클론한 뒤 다음 명령을 사용하십시오:

\*nix에서:

```bash theme={null}
./gradlew publishToMavenLocal -Pskip.signing
```

Windows에서는:

```bash theme={null}
gradlew.bat publishToMavenLocal -Pskip.signing
```

<div id="sdk-example-usage">
  ## SDK 사용 예시
</div>

### 예제

```java theme={null}
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // 응답 처리
        }
    }
}
```

<div id="authentication">
  ## 인증
</div>

<div id="per-client-security-schemes">
  ### 클라이언트별 보안 스키마
</div>

이 SDK는 전역적으로 다음 보안 스키마를 지원합니다:

| Name         | Type   | Scheme  |
| ------------ | ------ | ------- |
| `apiKeyAuth` | apiKey | API key |

API에 인증하려면 SDK 클라이언트 인스턴스를 초기화할 때 `apiKeyAuth` 파라미터를 설정해야 합니다. 예시는 다음과 같습니다:

```java theme={null}
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // 응답 처리
        }
    }
}
```

<div id="available-resources-and-operations">
  ## 사용 가능한 리소스 및 작업
</div>

<div id="analystinsights">
  ### [analystInsights()](/ko/sdks/java/analystinsights/README)
</div>

* [가져오기](/ko/sdks/java/analystinsights/README#get) - 애널리스트 인사이트 V1 조회

<div id="analystreportsrawtext">
  ### [analystReportsRawText()](/ko/sdks/java/analystreportsrawtext/README)
</div>

* [get](/ko/sdks/java/analystreportsrawtext/README#get) - 애널리스트 리포트 원문 텍스트 데이터 조회

<div id="bars">
  ### [bars()](/ko/sdks/java/bars/README)
</div>

* [get](/ko/sdks/java/bars/README#get) - Bars V2 가져오기

<div id="bullsbearssaybearssay">
  ### [bullsBearsSayBearsSay()](/ko/sdks/java/bullsbearssaybearssay/README)
</div>

* [get](/ko/sdks/java/bullsbearssaybearssay/README#get) - Bulls Say Bears Say V1 가져오기

<div id="conferencecalls">
  ### [conferenceCalls()](/ko/sdks/java/conferencecalls/README)
</div>

* [가져오기](/ko/sdks/java/conferencecalls/README#get) - 컨퍼런스 콜 가져오기

<div id="consensusratings">
  ### [consensusRatings()](/ko/sdks/java/consensusratings/README)
</div>

* [get](/ko/sdks/java/consensusratings/README#get) - 컨센서스 등급 가져오기

<div id="derivedfiguresandratios">
  ### [derivedFiguresAndRatios()](/ko/sdks/java/derivedfiguresandratios/README)
</div>

* [get](/ko/sdks/java/derivedfiguresandratios/README#get) - 파생 지표 및 비율 v3 가져오기

<div id="dividends">
  ### [dividends()](/ko/sdks/java/dividends/README)
</div>

* [getV22](/ko/sdks/java/dividends/README#getv22) - 배당금 V2.2 가져오기
* [get](/ko/sdks/java/dividends/README#get) - 배당금 V2 및 V2.1 가져오기

<div id="earningratios">
  ### [earningRatios()](/ko/sdks/java/earningratios/README)
</div>

* [가져오기](/ko/sdks/java/earningratios/README#get) - earning ratios v2.1 가져오기

<div id="earnings">
  ### [earnings()](/ko/sdks/java/earnings/README)
</div>

* [get](/ko/sdks/java/earnings/README#get) - 실적 조회

<div id="earningscalltranscripts">
  ### [earningsCallTranscripts()](/ko/sdks/java/earningscalltranscripts/README)
</div>

* [get](/ko/sdks/java/earningscalltranscripts/README#get) - 실적 발표 콜 전문 가져오기
* [getAudio](/ko/sdks/java/earningscalltranscripts/README#getaudio) - 실적 발표 콜 오디오 파일 가져오기

<div id="economics">
  ### [economics()](/ko/sdks/java/economics/README)
</div>

* [get](/ko/sdks/java/economics/README#get) - 경제 지표 데이터 가져오기

<div id="events">
  ### [events()](/ko/sdks/java/events/README)
</div>

* [get](/ko/sdks/java/events/README#get) - 이벤트 가져오기

<div id="fda">
  ### [fda()](/ko/sdks/java/fda/README)
</div>

* [get](/ko/sdks/java/fda/README#get) - FDA 조회

<div id="fundamentals">
  ### [fundamentals()](/ko/sdks/java/fundamentals/README)
</div>

* [getV21](/ko/sdks/java/fundamentals/README#getv21) - 기초 재무 지표 V2.1 가져오기
* [getAlphaBeta](/ko/sdks/java/fundamentals/README#getalphabeta) - 알파/베타 V2.1 가져오기
* [getCompanyV21](/ko/sdks/java/fundamentals/README#getcompanyv21) - 기업 데이터 v2.1 가져오기
* [getCompanyProfileV21](/ko/sdks/java/fundamentals/README#getcompanyprofilev21) - 기업 프로필 v2.1 가져오기
* [getShareClass](/ko/sdks/java/fundamentals/README#getshareclass) - 주식 클래스 V2.1 가져오기
* [getShareClassProfile](/ko/sdks/java/fundamentals/README#getshareclassprofile) - 주식 클래스 프로필 V2.1 가져오기
* [get](/ko/sdks/java/fundamentals/README#get) - 기초 재무 지표 V2 가져오기
* [getAssetClassification](/ko/sdks/java/fundamentals/README#getassetclassification) - 자산 분류 V2.1 가져오기
* [getEarningsReports](/ko/sdks/java/fundamentals/README#getearningsreports) - 실적 보고서 V2.1 가져오기
* [getFinancialsV21](/ko/sdks/java/fundamentals/README#getfinancialsv21) - 재무제표 V2.1 가져오기
* [getV3](/ko/sdks/java/fundamentals/README#getv3) - 기초 재무 지표 V3 가져오기
* [getBalanceSheetV3](/ko/sdks/java/fundamentals/README#getbalancesheetv3) - 대차대조표 V3 가져오기
* [getCashFlowV3](/ko/sdks/java/fundamentals/README#getcashflowv3) - 현금흐름표 V3 가져오기
* [getIncomeStatement](/ko/sdks/java/fundamentals/README#getincomestatement) - 손익계산서 V3 가져오기
* [getSharePriceRatios](/ko/sdks/java/fundamentals/README#getsharepriceratios) - 주가 비율 V3 가져오기

<div id="governmenttradereports">
  ### [governmentTradeReports()](/ko/sdks/java/governmenttradereports/README)
</div>

* [가져오기](/ko/sdks/java/governmenttradereports/README#get) - 정부 거래 보고서 가져오기

<div id="governmenttrades">
  ### [governmentTrades()](/ko/sdks/java/governmenttrades/README)
</div>

* [get](/ko/sdks/java/governmenttrades/README#get) - 정부 거래 데이터 가져오기

<div id="guidance">
  ### [guidance()](/ko/sdks/java/guidance/README)
</div>

* [get](/ko/sdks/java/guidance/README#get) - 가이던스 가져오기

<div id="insidertransaction">
  ### [insiderTransaction()](/ko/sdks/java/insidertransaction/README)
</div>

* [가져오기](/ko/sdks/java/insidertransaction/README#get) - Insider Transaction 가져오기

<div id="insidertransactions">
  ### [insiderTransactions()](/ko/sdks/java/insidertransactions/README)
</div>

* [getOwner](/ko/sdks/java/insidertransactions/README#getowner) - 인사이더 거래 소유자 가져오기

<div id="ipos">
  ### [ipos()](/ko/sdks/java/ipos/README)
</div>

* [getV21](/ko/sdks/java/ipos/README#getv21) - IPO v2.1 가져오기
* [get](/ko/sdks/java/ipos/README#get) - IPO V2 가져오기

<div id="logos">
  ### [logos()](/ko/sdks/java/logos/README)
</div>

* [bulkSync](/ko/sdks/java/logos/README#bulksync) - 지정된 검색 키로 로고 조회
* [search](/ko/sdks/java/logos/README#search) - 지정된 검색 키로 로고 조회

<div id="ma">
  ### [ma()](/ko/sdks/java/ma/README)
</div>

* [get](/ko/sdks/java/ma/README#get) - 인수 및 합병 데이터 가져오기

<div id="news">
  ### [news()](/ko/sdks/java/news/README)
</div>

* [get](/ko/sdks/java/news/README#get) - 뉴스 가져오기
* [getRemoved](/ko/sdks/java/news/README#getremoved) - 삭제된 뉴스 가져오기

<div id="newsquantified">
  ### [newsquantified()](/ko/sdks/java/newsquantified/README)
</div>

* [get](/ko/sdks/java/newsquantified/README#get) - Newsquantified 데이터 가져오기

<div id="offerings">
  ### [offerings()](/ko/sdks/java/offerings/README)
</div>

* [get](/ko/sdks/java/offerings/README#get) - Offerings 가져오기

<div id="operationratios">
  ### [operationRatios()](/ko/sdks/java/operationratios/README)
</div>

* [get](/ko/sdks/java/operationratios/README#get) - 운영 비율 v2.1 가져오기

<div id="optionactivity">
  ### [optionActivity()](/ko/sdks/java/optionactivity/README)
</div>

* [get](/ko/sdks/java/optionactivity/README#get) - OptionActivity V1 가져오기

### [quotedelayed()](/ko/sdks/java/quotedelayed/README)

* [getV1](/ko/sdks/java/quotedelayed/README#getv1) - 지연된 시세 V1 가져오기

<div id="quotedelayed">
  ### [quoteDelayed()](/ko/sdks/java/bzclientquotedelayed/README)
</div>

* [get](/ko/sdks/java/bzclientquotedelayed/README#get) - 지연 시세 V2 가져오기

<div id="ratings">
  ### [ratings()](/ko/sdks/java/ratings/README)
</div>

* [get](/ko/sdks/java/ratings/README#get) - Ratings 가져오기

<div id="ratingsanalysts">
  ### [ratingsAnalysts()](/ko/sdks/java/ratingsanalysts/README)
</div>

* [get](/ko/sdks/java/ratingsanalysts/README#get) - Ratings Analysts 가져오기

<div id="ratingsfirms">
  ### [ratingsFirms()](/ko/sdks/java/ratingsfirms/README)
</div>

* [get](/ko/sdks/java/ratingsfirms/README#get) - 평가 기관 가져오기

<div id="removed">
  ### [removed()](/ko/sdks/java/removed/README)
</div>

* [get](/ko/sdks/java/removed/README#get) - Removed 데이터 가져오기 (v2)

<div id="splits">
  ### [splits()](/ko/sdks/java/splits/README)
</div>

* [get](/ko/sdks/java/splits/README#get) - Splits 가져오기

<div id="tickertrends">
  ### [tickerTrends()](/ko/sdks/java/tickertrends/README)
</div>

* [get](/ko/sdks/java/tickertrends/README#get) - 티커 트렌드 데이터 가져오기
* [getList](/ko/sdks/java/tickertrends/README#getlist) - 티커 트렌드 목록 데이터 가져오기

<div id="valuationratios">
  ### [valuationRatios()](/ko/sdks/java/valuationratios/README)
</div>

* [get](/ko/sdks/java/valuationratios/README#get) - Valuation Ratios v2.1 가져오기

<div id="retries">
  ## 재시도
</div>

이 SDK의 일부 엔드포인트는 재시도를 지원합니다. 별도의 설정 없이 SDK를 사용할 경우, API에서 제공하는 기본 재시도 전략이 사용됩니다. 하지만 기본 재시도 전략은 개별 작업별로 또는 SDK 전체에 대해 재정의할 수 있습니다.

단일 API 호출에 대한 기본 재시도 전략을 변경하려면 `retryConfig` 빌더 메서드를 통해 `RetryConfig` 객체를 제공하면 됩니다:

```java theme={null}
package hello.world;

import java.lang.Exception;
import java.util.concurrent.TimeUnit;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;
import org.benzinga.BZClient.utils.BackoffStrategy;
import org.benzinga.BZClient.utils.RetryConfig;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .retryConfig(RetryConfig.builder()
                    .backoff(BackoffStrategy.builder()
                        .initialInterval(1L, TimeUnit.MILLISECONDS)
                        .maxInterval(50L, TimeUnit.MILLISECONDS)
                        .maxElapsedTime(1000L, TimeUnit.MILLISECONDS)
                        .baseFactor(1.1)
                        .jitterFactor(0.15)
                        .retryConnectError(false)
                        .build())
                    .build())
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // 응답 처리
        }
    }
}
```

재시도를 지원하는 모든 작업에 대한 기본 재시도 전략을 재정의하려면, SDK 초기화 시 설정을 제공하면 됩니다:

```java theme={null}
package hello.world;

import java.lang.Exception;
import java.util.concurrent.TimeUnit;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;
import org.benzinga.BZClient.utils.BackoffStrategy;
import org.benzinga.BZClient.utils.RetryConfig;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .retryConfig(RetryConfig.builder()
                    .backoff(BackoffStrategy.builder()
                        .initialInterval(1L, TimeUnit.MILLISECONDS)
                        .maxInterval(50L, TimeUnit.MILLISECONDS)
                        .maxElapsedTime(1000L, TimeUnit.MILLISECONDS)
                        .baseFactor(1.1)
                        .jitterFactor(0.15)
                        .retryConnectError(false)
                        .build())
                    .build())
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // 응답 처리
        }
    }
}
```

<div id="error-handling">
  ## 오류 처리
</div>

이 SDK에서의 오류 처리는 전반적으로 예상하는 방식과 크게 다르지 않습니다. 모든 오퍼레이션은 응답 객체를 반환하거나 예외를 던집니다.

기본적으로 API 오류는 `models/errors/APIException` 예외를 던집니다. 오퍼레이션에 대해 사용자 정의 오류 응답이 지정된 경우, SDK는 그에 연관된 예외를 추가로 던질 수 있습니다. 각 오퍼레이션에서 발생할 수 있는 예외 타입에 대한 자세한 내용은 SDK 문서의 해당 *오류* 표를 참조하십시오. 예를 들어, `get` 메서드는 다음 예외를 던집니다:

| 오류 타입                          | 상태 코드    | 콘텐츠 유형           |
| ------------------------------ | -------- | ---------------- |
| models/errors/ApiErrorResponse | 400, 500 | application/json |
| models/errors/APIException     | 4XX, 5XX | */*              |

### 예제

```java theme={null}
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.errors.ApiErrorResponse;
import org.benzinga.BZClient.models.operations.GetAnalystInsightsV1Request;
import org.benzinga.BZClient.models.operations.GetAnalystInsightsV1Response;

public class Application {

    public static void main(String[] args) throws ApiErrorResponse, Exception {

        Bzclient sdk = Bzclient.builder()
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystInsightsV1Request req = GetAnalystInsightsV1Request.builder()
                .build();

        GetAnalystInsightsV1Response res = sdk.analystInsights().get()
                .request(req)
                .call();

        if (res.modelsAnalystInsightsJSON().isPresent()) {
            // 응답 처리
        }
    }
}
```

<div id="server-selection">
  ## 서버 선택
</div>

<div id="select-server-by-index">
  ### 인덱스로 서버 선택
</div>

SDK 클라이언트 인스턴스를 초기화할 때 `.serverIndex(int serverIdx)` 빌더 메서드를 사용하여 전역 기본 서버를 재정의할 수 있습니다. 선택한 서버는 해당 서버를 사용하는 오퍼레이션의 기본값으로 사용됩니다. 다음 표는 사용 가능한 서버에 대응하는 인덱스를 보여줍니다:

| # | Server                              |
| - | ----------------------------------- |
| 0 | `https://api.benzinga.com`          |
| 1 | `https://api.benzinga.com/api/v1`   |
| 2 | `https://api.benzinga.com/api/v2`   |
| 3 | `https://api.benzinga.com/api/v2.1` |
| 4 | `https://api.benzinga.com/api/v2.2` |

<div id="example">
  #### 예제
</div>

```java theme={null}
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .serverIndex(4)
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // 응답 처리
        }
    }
}
```

<div id="override-server-url-per-client">
  ### 클라이언트별 서버 URL 재정의
</div>

기본 서버는 SDK 클라이언트 인스턴스를 초기화할 때 `.serverURL(String serverUrl)` 빌더 메서드를 사용하여 전역적으로 재정의할 수도 있습니다. 예를 들어:

```java theme={null}
package hello.world;

import java.lang.Exception;
import org.benzinga.BZClient.Bzclient;
import org.benzinga.BZClient.models.operations.GetAnalystReportsRawTextDataResponse;

public class Application {

    public static void main(String[] args) throws Exception {

        Bzclient sdk = Bzclient.builder()
                .serverURL("https://api.benzinga.com")
                .apiKeyAuth("<YOUR_API_KEY_HERE>")
            .build();

        GetAnalystReportsRawTextDataResponse res = sdk.analystReportsRawText().get()
                .page(700347L)
                .pagesize(558834L)
                .call();

        if (res.modelsAnalystReportRawTexts().isPresent()) {
            // 응답 처리
        }
    }
}
```

<div id="development">
  # 개발
</div>

<div id="maturity">
  ## 성숙도
</div>

이 SDK는 베타 단계에 있으며, 메이저 버전 업데이트 없이도 버전 간에 호환성이 깨지는 변경 사항이 발생할 수 있습니다. 따라서 특정 패키지 버전에 고정해서 사용하는 것을 권장합니다. 이렇게 하면, 의도적으로 최신 버전을 사용하려는 경우가 아니라면 매번 동일한 버전을 설치하면서 호환성 문제를 피할 수 있습니다.

<div id="contributions">
  ## 기여
</div>

이 SDK에 대한 오픈 소스 기여는 감사히 여기지만, 이 라이브러리는 프로그램을 통해 자동 생성되는 라이브러리입니다. 내부 파일에 수동으로 추가된 변경 사항은 다음 번 생성 시 모두 덮어씌워집니다.
여러분의 피드백을 기다리고 있습니다. Proof of Concept(POC)가 포함된 PR 또는 issue를 자유롭게 생성해 주시면, 향후 릴리스에 반영할 수 있도록 최선을 다하겠습니다.

<div id="sdk-created-by-speakeasy">
  ### [Speakeasy](https://www.speakeasy.com/?utm_source=openapi\&utm_campaign=java)로 생성된 SDK
</div>
