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