Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 34 additions & 8 deletions examples/README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,41 @@
# Java Sample Implementation
# Upstox Java SDK Examples

## Websocket
This directory contains Java SDK code examples for the Upstox API, organized by category.

### Market stream feed
## Prerequisites

Java code to connect to the Upstox Websocket API for streaming live market data. It fetches market data for a list of instrument keys. When the client receives updates from the server, it decodes the incoming protobuf data into a FeedResponse object.
- Java 8 or higher
- Maven or Gradle
- An Upstox account with API access
- A valid access token

[Market updates using Upstox's websocket](websocket/market_data/v3)
## Maven Dependency

### Porfolio stream feed
Add the following dependency to your `pom.xml`:

Java code to connect to the Upstox WebSocket API for streaming live order updates. It fetches the order updates and prints them to the console.
```xml
<dependency>
<groupId>com.upstox.api</groupId>
<artifactId>upstox-java-api</artifactId>
<version>LATEST</version>
<scope>compile</scope>
</dependency>
```

[Order updates using Upstox's websocket](websocket/order_updates/)
## Folder Structure

| Category | Description |
|----------|-------------|
| [login](./login/) | Authentication — get access token and logout |
| [user](./user/) | User profile and fund/margin details |
| [orders](./orders/) | Place, modify, cancel orders and fetch order details |
| [portfolio](./portfolio/) | Positions, holdings, MTF positions, and position conversion |
| [market-quote](./market-quote/) | LTP, OHLC, full market quotes, and option greeks |
| [historical-data](./historical-data/) | Historical and intra-day candle data |
| [option-chain](./option-chain/) | Option contracts and put/call option chain |
| [expired-instruments](./expired-instruments/) | Expired instrument data and historical candles |
| [market-information](./market-information/) | Exchange status, market timings, and holidays |
| [gtt-orders](./gtt-orders/) | Good Till Triggered (GTT) order management |
| [margins](./margins/) | Order margin calculations |
| [charges](./charges/) | Brokerage charge calculations |
| [trade-profit-and-loss](./trade-profit-and-loss/) | Trade-wise profit and loss reports |
10 changes: 10 additions & 0 deletions examples/charges/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Charges – Example code

Links to all charge-related examples in the `code/` folder.

## 1. Brokerage Details

- 1.1 [Get brokerage details for equity delivery orders](code/brokerage-details.md#get-brokerage-details-for-equity-delivery-orders)
- 1.2 [Get brokerage details for equity intraday orders](code/brokerage-details.md#get-brokerage-details-for-equity-intraday-orders)
- 1.3 [Get brokerage details for equity futures and options delivery orders](code/brokerage-details.md#get-brokerage-details-for-equity-futures-and-options-delivery-orders)
- 1.4 [Get brokerage details for equity futures and options intraday orders](code/brokerage-details.md#get-brokerage-details-for-equity-futures-and-options-intraday-orders)
139 changes: 139 additions & 0 deletions examples/charges/code/brokerage-details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
## Get brokerage details for equity delivery orders

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.GetBrokerageResponse;
import com.upstox.auth.*;
import io.swagger.client.api.ChargeApi;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ChargeApi apiInstance = new ChargeApi();
String instrumentToken = "NSE_EQ|INE669E01016";
int quantity = 56;
String product = "D";
String transactionType = "BUY";
float price = 31.4F;
String apiVersion = "2.0";
try {
GetBrokerageResponse result = apiInstance.getBrokerage(instrumentToken, quantity, product, transactionType, price, apiVersion);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ChargeApi#getBrokerage");
e.printStackTrace();
}
}
}
```

## Get brokerage details for equity intraday orders

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.GetBrokerageResponse;
import com.upstox.auth.*;
import io.swagger.client.api.ChargeApi;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ChargeApi apiInstance = new ChargeApi();
String instrumentToken = "NSE_EQ|INE669E01016";
int quantity = 56;
String product = "I";
String transactionType = "BUY";
float price = 31.4F;
String apiVersion = "2.0";
try {
GetBrokerageResponse result = apiInstance.getBrokerage(instrumentToken, quantity, product, transactionType, price, apiVersion);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ChargeApi#getBrokerage");
e.printStackTrace();
}
}
}
```

## Get brokerage details for equity futures and options delivery orders

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.GetBrokerageResponse;
import com.upstox.auth.*;
import io.swagger.client.api.ChargeApi;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ChargeApi apiInstance = new ChargeApi();
String instrumentToken = "NSE_FO|35271";
int quantity = 5;
String product = "D";
String transactionType = "BUY";
float price = 1331.4F;
String apiVersion = "2.0";
try {
GetBrokerageResponse result = apiInstance.getBrokerage(instrumentToken, quantity, product, transactionType, price, apiVersion);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ChargeApi#getBrokerage");
e.printStackTrace();
}
}
}
```

## Get brokerage details for equity futures and options intraday orders

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.GetBrokerageResponse;
import com.upstox.auth.*;
import io.swagger.client.api.ChargeApi;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ChargeApi apiInstance = new ChargeApi();
String instrumentToken = "NSE_FO|35271";
int quantity = 5;
String product = "I";
String transactionType = "BUY";
float price = 1331.4F;
String apiVersion = "2.0";
try {
GetBrokerageResponse result = apiInstance.getBrokerage(instrumentToken, quantity, product, transactionType, price, apiVersion);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling ChargeApi#getBrokerage");
e.printStackTrace();
}
}
}
```
19 changes: 19 additions & 0 deletions examples/expired-instruments/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Expired Instruments – Example code

Links to all expired-instrument-related examples in the `code/` folder.

## 1. Get Expiries

- 1.1 [Get Expiries for given instrument](code/get-expiries.md#get-expiries-for-given-instrument)

## 2. Get Expired Future Contracts

- 2.1 [Get Expired Future Contracts for given instrument with expiry date](code/get-expired-future-contracts.md#get-expired-future-contracts-for-given-instrument-with-expiry-date)

## 3. Get Expired Option Contracts

- 3.1 [Get Expired Option Contracts for given instrument with expiry date](code/get-expired-option-contracts.md#get-expired-option-contracts-for-given-instrument-with-expiry-date)

## 4. Get Expired Historical Candle Data

- 4.1 [Get Historical Candle Data for Expired Instruments](code/get-expired-historical-candle-data.md#get-historical-candle-data-for-expired-instruments)
28 changes: 28 additions & 0 deletions examples/expired-instruments/code/get-expired-future-contracts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Get Expired Future Contracts for given instrument with expiry date

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.*;
import com.upstox.auth.*;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ExpiredInstrumentApi expiredInstrumentApi = new ExpiredInstrumentApi();
try {
GetExpiredFuturesContractResponse response = expiredInstrumentApi.getExpiredFutureContracts("NSE_INDEX|Nifty 50", "2024-11-27");
System.out.println(response);
} catch (ApiException e) {
System.out.println("Exception when calling ExpiredInstrumentApi#getExpiredFutureContracts");
System.out.println("Status code: " + e.getCode());
System.out.println("Error message: " + e.getResponseBody());
}
}
}
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Get Historical Candle Data for Expired Instruments

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.*;
import com.upstox.auth.*;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ExpiredInstrumentApi expiredInstrumentApi = new ExpiredInstrumentApi();
try {
GetHistoricalCandleResponse result = expiredInstrumentApi.getExpiredHistoricalCandleData("NSE_FO|54452|24-04-2025", "30minute", "2025-06-04", "2002-06-04");
System.out.println(result);
} catch (ApiException e) {
System.out.println("Exception when calling ExpiredInstrumentApi#getExpiredHistoricalCandleData");
System.out.println("Status code: " + e.getCode());
System.out.println("Error message: " + e.getResponseBody());
}
}
}
```
28 changes: 28 additions & 0 deletions examples/expired-instruments/code/get-expired-option-contracts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Get Expired Option Contracts for given instrument with expiry date

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.*;
import com.upstox.auth.*;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ExpiredInstrumentApi expiredInstrumentApi = new ExpiredInstrumentApi();
try {
GetOptionContractResponse result = expiredInstrumentApi.getExpiredOptionContracts("NSE_INDEX|Nifty 50", "2025-04-24");
System.out.println(result);
} catch (ApiException e) {
System.out.println("Exception when calling ExpiredInstrumentApi#getExpiredOptionContracts");
System.out.println("Status code: " + e.getCode());
System.out.println("Error message: " + e.getResponseBody());
}
}
}
```
28 changes: 28 additions & 0 deletions examples/expired-instruments/code/get-expiries.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Get Expiries for given instrument

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.*;
import com.upstox.auth.*;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();

OAuth OAUTH2 = (OAuth) defaultClient.getAuthentication("OAUTH2");
OAUTH2.setAccessToken("{your_access_token}");

ExpiredInstrumentApi expiredInstrumentApi = new ExpiredInstrumentApi();
try {
GetExpiriesResponse getExpiriesResponse = expiredInstrumentApi.getExpiries("NSE_INDEX|Nifty 50");
System.out.println(getExpiriesResponse);
} catch (ApiException e) {
System.out.println("Exception when calling ExpiredInstrumentApi#getExpiredInstruments");
System.out.println("Status code: " + e.getCode());
System.out.println("Error message: " + e.getResponseBody());
}
}
}
```
21 changes: 21 additions & 0 deletions examples/gtt-orders/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# GTT Orders – Example code

Links to all GTT-order-related examples in the `code/` folder.

## 1. Place GTT Order

- 1.1 [Place Single Leg GTT Order](code/place-gtt-order.md#place-single-leg-gtt-order)
- 1.2 [Place Multiple Leg GTT Order](code/place-gtt-order.md#place-multiple-leg-gtt-order)

## 2. Modify GTT Order

- 2.1 [Modify Single Leg GTT Order](code/modify-gtt-order.md#modify-single-leg-gtt-order)
- 2.2 [Modify Multiple Leg GTT Order](code/modify-gtt-order.md#modify-multiple-leg-gtt-order)

## 3. Cancel GTT Order

- 3.1 [Cancel GTT Order](code/cancel-gtt-order.md#cancel-gtt-order)

## 4. Get GTT Order Details

- 4.1 [Get GTT Order Details](code/get-gtt-order-details.md#get-gtt-order-details)
28 changes: 28 additions & 0 deletions examples/gtt-orders/code/cancel-gtt-order.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
## Cancel GTT Order

```java
import com.upstox.ApiClient;
import com.upstox.ApiException;
import com.upstox.Configuration;
import com.upstox.api.GttCancelOrderRequest;
import com.upstox.api.GttTriggerOrderResponse;
import com.upstox.api.OrderApiV3;

public class Main {
public static void main(String[] args) {
ApiClient defaultClient = Configuration.getDefaultApiClient();
defaultClient.setAccessToken("{your_access_token}");

OrderApiV3 apiInstance = new OrderApiV3();
GttCancelOrderRequest gttCancelOrderRequest = new GttCancelOrderRequest();
gttCancelOrderRequest.setGttOrderId("GTT-C25040144712");

try {
GttTriggerOrderResponse result = apiInstance.cancelGTTOrder(gttCancelOrderRequest);
System.out.println(result);
} catch (ApiException e) {
System.err.println("Exception when calling OrderApi->cancelGTTOrder: " + e.getMessage());
}
}
}
```
Loading
Loading