Saltar al contenido principal

BZ-Java-Client

SDK de Java fácil de usar para desarrolladores y con tipado seguro, diseñado específicamente para aprovechar la API openapi.
Built By SpeakeasyMIT License

Resumen

APIs de Benzinga: Esta API REST ofrece endpoints para todas las APIs de Benzinga.

Tabla de contenido

Instalación del SDK

Introducción

Se requiere JDK 11 o posterior. Los siguientes ejemplos muestran cómo se utiliza un artefacto del SDK publicado: Gradle:
implementation 'org.benzinga:BZClient:0.2.7'
Maven:
<dependency>
    <groupId>org.benzinga</groupId>
    <artifactId>BZClient</artifactId>
    <version>0.2.7</version>
</dependency>

Cómo compilar

Después de clonar el repositorio de Git en tu sistema de archivos, puedes compilar el artefacto del SDK a partir del código fuente en el directorio build ejecutando ./gradlew build en sistemas *nix o gradlew.bat en sistemas Windows. Si deseas compilar desde el código fuente y publicar el artefacto del SDK en tu repositorio local de Maven (en tu sistema de archivos), usa el siguiente comando (después de clonar el repositorio de Git localmente): En *nix:
./gradlew publishToMavenLocal -Pskip.signing
En Windows:
gradlew.bat publishToMavenLocal -Pskip.signing

Ejemplo de uso del SDK

Ejemplo

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()) {
            // manejar la respuesta
        }
    }
}

Autenticación

Esquemas de seguridad por cliente

Este SDK admite el siguiente esquema de seguridad a nivel global:
NameTypeScheme
apiKeyAuthapiKeyAPI key
Para autenticarse con la API, el parámetro apiKeyAuth debe configurarse al inicializar la instancia del cliente del SDK. Por ejemplo:
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()) {
            // manejar la respuesta
        }
    }
}

Recursos y operaciones disponibles

  • get - Obtener opiniones de analistas V1
  • Obtener - Obtener datos de texto sin procesar de informes de analistas
  • get - Obtener Barras V2
  • Obtener - Obtener Bulls Say Bears Say V1
  • get - Obtener llamadas de resultados
  • get - Obtener Calificaciones de Consenso
  • get - Obtener figuras y ratios derivados v3
  • getV22 - Obtener dividendos V2.2
  • get - Obtener dividendos V2 y V2.1
  • get - Obtener ratios de beneficios v2.1
  • get - Obtener resultados financieros
  • get - Obtener transcripciones de llamadas de resultados
  • getAudio - Obtener archivos de audio de transcripciones de llamadas de resultados
  • get - Obtener datos económicos
  • get - Obtener eventos
  • get - Obtener informes de operaciones gubernamentales
  • get - Obtener operaciones del gobierno
  • get - Obtener Guidance
  • Obtener - Obtener transacción de insider
  • getOwner - Obtener titular de transacción de insider
  • getV21 - Obtener IPOs V2.1
  • get - Obtener IPOs V2
  • bulkSync - Obtener logotipos para las claves de búsqueda especificadas
  • search - Obtener logotipos para las claves de búsqueda especificadas
  • get - Obtener fusiones y adquisiciones
  • get - Obtener noticias
  • getRemoved - Obtener noticias eliminadas
  • get - Obtener datos de Newsquantified
  • get - Obtener ofertas
  • get - Obtener ratios operativos v2.1
  • get - Obtener OptionActivity V1

quotedelayed()

  • getV1 - Obtener cotizaciones en diferido V1
  • get - Obtener cotizaciones diferidas V2
  • get - Obtener ratings
  • get - Obtener analistas de calificaciones
  • get - Obtener firmas de análisis y calificación
  • get - Obtener eliminados (v2)
  • get - Obtener splits
  • get - Obtener datos de tendencias de tickers
  • getList - Obtener datos de la lista de tendencias de tickers
  • get - Obtener ratios de valoración v2.1

Reintentos

Algunos de los endpoints de este SDK admiten reintentos. Si utilizas el SDK sin ninguna configuración, recurrirá a la estrategia de reintentos predeterminada proporcionada por la API. Sin embargo, la estrategia de reintentos predeterminada se puede modificar para cada operación o para todo el SDK. Para cambiar la estrategia de reintentos predeterminada para una única llamada a la API, puedes proporcionar un objeto RetryConfig mediante el método builder retryConfig:
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()) {
            // gestionar respuesta
        }
    }
}
Si quieres reemplazar la estrategia de reintentos predeterminada para todas las operaciones que admiten reintentos, puedes proporcionar una configuración durante la inicialización del SDK:
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()) {
            // manejar la respuesta
        }
    }
}

Manejo de errores

El manejo de errores en este SDK debería corresponderse en gran medida con tus expectativas. Todas las operaciones devuelven un objeto de respuesta o lanzan una excepción. De forma predeterminada, un error de la API lanzará una excepción models/errors/APIException. Cuando se especifican respuestas de error personalizadas para una operación, el SDK también puede lanzar la excepción asociada. Puedes consultar las tablas de Errores correspondientes en la documentación del SDK para obtener más detalles sobre los posibles tipos de excepción para cada operación. Por ejemplo, el método get lanza las siguientes excepciones:
Tipo de errorCódigo de estadoTipo de contenido
models/errors/ApiErrorResponse400, 500application/json
models/errors/APIException4XX, 5XX/

Ejemplo

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()) {
            // gestionar respuesta
        }
    }
}

Selección del servidor

Seleccionar servidor por índice

Puedes sobrescribir el servidor predeterminado a nivel global usando el método del builder .serverIndex(int serverIdx) al inicializar la instancia del cliente del SDK. El servidor seleccionado se usará luego como predeterminado en las operaciones que lo utilicen. En esta tabla se enumeran los índices asociados con los servidores disponibles:
#Servidor
0https://api.benzinga.com
1https://api.benzinga.com/api/v1
2https://api.benzinga.com/api/v2
3https://api.benzinga.com/api/v2.1
4https://api.benzinga.com/api/v2.2

Ejemplo

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()) {
            // manejar la respuesta
        }
    }
}

Sobrescribir la URL del servidor por cliente

El servidor predeterminado también se puede sobrescribir globalmente mediante el método del builder .serverURL(String serverUrl) al inicializar la instancia de cliente del SDK. Por ejemplo:
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()) {
            // manejar la respuesta
        }
    }
}

Desarrollo

Madurez

Este SDK está en fase beta y puede haber cambios incompatibles entre versiones sin una actualización de versión mayor. Por lo tanto, recomendamos fijar la dependencia a una versión específica del paquete. De este modo, puedes instalar la misma versión cada vez sin sufrir cambios incompatibles, a menos que estés buscando intencionalmente la versión más reciente.

Contribuciones

Si bien valoramos las contribuciones de código abierto a este SDK, esta biblioteca se genera de forma programática. Cualquier cambio manual realizado en archivos internos se sobrescribirá la próxima vez que se genere. Esperamos recibir sus comentarios. No dude en abrir un PR o un issue con una prueba de concepto y haremos todo lo posible por incluirlo en una versión futura.

SDK creado por Speakeasy