vega-api-client
v0.0.4
Published
Generated TypeScript API client for Vega investment platform
Maintainers
Readme
vega-api-client
Generated TypeScript API client for the Vega investment platform. This package contains auto-generated React Query hooks and TypeScript types from the OpenAPI specification.
Installation
yarn add vega-api-clientQuick Start
1. Initialize the Client
Before using any API methods, initialize the client with your configured Axios instance:
// In your app initialization file (e.g., main.tsx or App.tsx)
import { initializeApiClient } from 'vega-api-client';
import axios from 'axios';
// Create your axios instance with interceptors, auth, etc.
const myAxiosInstance = axios.create({
baseURL: 'https://api.vega-alts.com',
headers: {
'Content-Type': 'application/json',
},
});
// Add your interceptors
myAxiosInstance.interceptors.request.use(/* ... */);
myAxiosInstance.interceptors.response.use(/* ... */);
// Initialize the API client
initializeApiClient(myAxiosInstance);2. Use Generated Hooks
import { useLogin } from 'vega-api-client/endpoints/auth-login-v1/auth-login-v1';
function LoginForm() {
const loginMutation = useLogin();
const handleLogin = async (email: string, password: string) => {
try {
const result = await loginMutation.mutateAsync({
data: { email, password }
});
console.log('Login successful:', result);
} catch (error) {
console.error('Login failed:', error);
}
};
return (
<form onSubmit={(e) => {
e.preventDefault();
handleLogin('[email protected]', 'password');
}}>
{/* form fields */}
</form>
);
}3. Use Types
import type { LoginUserRequest } from 'vega-api-client/types/loginUserRequest';
import type { ApiResponseLoginResponse } from 'vega-api-client/types/apiResponseLoginResponse';
const loginData: LoginUserRequest = {
email: '[email protected]',
password: 'password123',
};Package Structure
vega-api-client/
├── client.ts # Client initialization functions
├── types/ # TypeScript type definitions
│ ├── user.ts
│ ├── loginRequest.ts
│ └── ...
└── endpoints/ # API endpoints grouped by tag
├── auth-login-v1/
│ └── auth-login-v1.ts
├── subscriptions-v1/
└── ...Features
- 🎯 Type-Safe: Full TypeScript support with generated types
- ⚛️ React Query: Built-in hooks for data fetching and mutations
- 🔌 Bring Your Own Axios: Use your configured axios instance with all your interceptors
- 📦 Tree-Shakeable: Import only what you need
- 🔄 Auto-Generated: Always in sync with the backend OpenAPI spec
Advanced Usage
Custom Request Options
Pass axios config options to any API call:
const { mutate } = useLogin();
mutate({
data: { email, password }
}, {
// Custom axios options
timeout: 5000,
headers: {
'X-Custom-Header': 'value'
}
});Error Handling
Errors are standard Axios errors:
import type { ErrorType } from 'vega-api-client';
const { mutate } = useLogin({
mutation: {
onError: (error: ErrorType<unknown>) => {
if (error.response?.status === 401) {
console.error('Invalid credentials');
}
}
}
});Testing
For testing, you can inject a mock axios instance:
import { initializeApiClient, resetApiClient } from 'vega-api-client';
import axios from 'axios';
beforeEach(() => {
const mockAxios = axios.create();
mockAxios.defaults.adapter = 'http'; // or use mock adapter
initializeApiClient(mockAxios);
});
afterEach(() => {
resetApiClient();
});License
Apache-2.0
Support
For issues or questions, please contact the Vega platform team.
