UNPKG

@sudowealth/schwab-api

Version:

TypeScript client for Charles Schwab API with OAuth support, market data, trading functionality, and complete type safety

93 lines (92 loc) 3.11 kB
/** * Central file for all API constants, URLs, and paths * This helps avoid duplication and ensures consistency across the codebase */ // Base URLs export const API_URLS = { PRODUCTION: 'https://api.schwabapi.com', SANDBOX: 'https://api-sandbox.schwabapi.com', }; // API Versions export const API_VERSIONS = { v1: 'v1', }; // OAuth endpoints export const OAUTH_ENDPOINTS = { AUTHORIZE: '/oauth/authorize', TOKEN: '/oauth/token', }; // Market Data endpoints const MARKET_DATA_BASE_PATH = `/marketdata/${API_VERSIONS.v1}`; const INSTRUMENT_BASE_PATH = `${MARKET_DATA_BASE_PATH}/instruments`; const MARKET_HOURS_BASE_PATH = `${MARKET_DATA_BASE_PATH}/markets`; export const MARKET_DATA = { QUOTES: { GET_QUOTES: `${MARKET_DATA_BASE_PATH}/quotes`, GET_QUOTE: `${MARKET_DATA_BASE_PATH}/{symbol_id}/quotes`, }, OPTIONS: { GET_OPTION_CHAIN: `${MARKET_DATA_BASE_PATH}/chains`, GET_OPTION_EXPIRATION_CHAIN: `${MARKET_DATA_BASE_PATH}/expirationchain`, }, PRICE_HISTORY: { GET_PRICE_HISTORY: `${MARKET_DATA_BASE_PATH}/pricehistory`, }, MOVERS: { GET_MOVERS: `${MARKET_DATA_BASE_PATH}/movers/{symbol_id}`, }, MARKET_HOURS: { GET_HOURS_FOR_MULTIPLE_MARKETS: MARKET_HOURS_BASE_PATH, GET_HOURS_FOR_SINGLE_MARKET: `${MARKET_HOURS_BASE_PATH}/{market_id}`, }, INSTRUMENTS: { GET_INSTRUMENTS: INSTRUMENT_BASE_PATH, GET_INSTRUMENT: `${INSTRUMENT_BASE_PATH}/{cusip_id}`, }, }; // Trading endpoints const TRADER_BASE_PATH = `/trader/${API_VERSIONS.v1}`; const ACCOUNT_BASE_PATH = `${TRADER_BASE_PATH}/accounts/{accountNumber}`; const ACCOUNT_ORDERS_BASE_PATH = `${ACCOUNT_BASE_PATH}/orders`; const ACCOUNT_TRANSACTIONS_BASE_PATH = `${ACCOUNT_BASE_PATH}/transactions`; export const TRADER = { ACCOUNTS: { GET_ACCOUNTS: `${TRADER_BASE_PATH}/accounts`, GET_ACCOUNT: ACCOUNT_BASE_PATH, GET_ACCOUNT_NUMBERS: `${TRADER_BASE_PATH}/accounts/accountNumbers`, }, ORDERS: { GET_ORDERS: `${TRADER_BASE_PATH}/orders`, GET_ORDERS_FOR_ACCOUNT: ACCOUNT_ORDERS_BASE_PATH, GET_ORDER: `${ACCOUNT_ORDERS_BASE_PATH}/{orderId}`, PLACE_ORDER: ACCOUNT_ORDERS_BASE_PATH, REPLACE_ORDER: `${ACCOUNT_ORDERS_BASE_PATH}/{orderId}`, CANCEL_ORDER: `${ACCOUNT_ORDERS_BASE_PATH}/{orderId}`, }, TRANSACTIONS: { GET_TRANSACTIONS: ACCOUNT_TRANSACTIONS_BASE_PATH, GET_TRANSACTION: `${ACCOUNT_TRANSACTIONS_BASE_PATH}/{transactionId}`, }, USER_PREFERENCES: { GET_USER_PREFERENCES: `${TRADER_BASE_PATH}/userPreference`, }, }; // Media types export const MEDIA_TYPES = { JSON: 'application/json', FORM: 'application/x-www-form-urlencoded', }; // OAuth Grant Types export const OAUTH_GRANT_TYPES = { AUTHORIZATION_CODE: 'authorization_code', REFRESH_TOKEN: 'refresh_token', }; // Environment names export const ENVIRONMENTS = { PRODUCTION: 'production', SANDBOX: 'sandbox', }; // Default timeout (in ms) export const TIMEOUTS = { DEFAULT_REQUEST: 30000, // 30 seconds };