- Fixed double /api/api/ issue in production - Updated all API files to remove /api/ prefix since baseURL already includes it - Files fixed: platform.ts, oauth.ts, customDomains.ts, domains.ts, business.ts, sandbox.ts - Production build will need to be rebuilt after pulling these changes
155 lines
4.6 KiB
TypeScript
155 lines
4.6 KiB
TypeScript
/**
|
|
* Business API - Resources and Users
|
|
*/
|
|
|
|
import apiClient from './client';
|
|
import { User, Resource, BusinessOAuthSettings, BusinessOAuthSettingsResponse, BusinessOAuthCredentialsResponse } from '../types';
|
|
|
|
/**
|
|
* Get all resources for the current business
|
|
*/
|
|
export const getResources = async (): Promise<Resource[]> => {
|
|
const response = await apiClient.get<Resource[]>('/resources/');
|
|
return response.data;
|
|
};
|
|
|
|
/**
|
|
* Get all users for the current business
|
|
*/
|
|
export const getBusinessUsers = async (): Promise<User[]> => {
|
|
const response = await apiClient.get<User[]>('/business/users/');
|
|
return response.data;
|
|
};
|
|
|
|
/**
|
|
* Get business OAuth settings and available platform providers
|
|
*/
|
|
export const getBusinessOAuthSettings = async (): Promise<BusinessOAuthSettingsResponse> => {
|
|
const response = await apiClient.get<{
|
|
settings: {
|
|
enabled_providers: string[];
|
|
allow_registration: boolean;
|
|
auto_link_by_email: boolean;
|
|
use_custom_credentials: boolean;
|
|
};
|
|
available_providers: Array<{
|
|
id: string;
|
|
name: string;
|
|
icon: string;
|
|
description: string;
|
|
}>;
|
|
}>('/business/oauth-settings/');
|
|
|
|
// Transform snake_case to camelCase
|
|
return {
|
|
settings: {
|
|
enabledProviders: response.data.settings.enabled_providers || [],
|
|
allowRegistration: response.data.settings.allow_registration,
|
|
autoLinkByEmail: response.data.settings.auto_link_by_email,
|
|
useCustomCredentials: response.data.settings.use_custom_credentials,
|
|
},
|
|
availableProviders: response.data.available_providers || [],
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Update business OAuth settings
|
|
*/
|
|
export const updateBusinessOAuthSettings = async (
|
|
settings: Partial<BusinessOAuthSettings>
|
|
): Promise<BusinessOAuthSettingsResponse> => {
|
|
// Transform camelCase to snake_case for backend
|
|
const backendData: Record<string, any> = {};
|
|
|
|
if (settings.enabledProviders !== undefined) {
|
|
backendData.enabled_providers = settings.enabledProviders;
|
|
}
|
|
if (settings.allowRegistration !== undefined) {
|
|
backendData.allow_registration = settings.allowRegistration;
|
|
}
|
|
if (settings.autoLinkByEmail !== undefined) {
|
|
backendData.auto_link_by_email = settings.autoLinkByEmail;
|
|
}
|
|
if (settings.useCustomCredentials !== undefined) {
|
|
backendData.use_custom_credentials = settings.useCustomCredentials;
|
|
}
|
|
|
|
const response = await apiClient.patch<{
|
|
settings: {
|
|
enabled_providers: string[];
|
|
allow_registration: boolean;
|
|
auto_link_by_email: boolean;
|
|
use_custom_credentials: boolean;
|
|
};
|
|
available_providers: Array<{
|
|
id: string;
|
|
name: string;
|
|
icon: string;
|
|
description: string;
|
|
}>;
|
|
}>('/business/oauth-settings/', backendData);
|
|
|
|
// Transform snake_case to camelCase
|
|
return {
|
|
settings: {
|
|
enabledProviders: response.data.settings.enabled_providers || [],
|
|
allowRegistration: response.data.settings.allow_registration,
|
|
autoLinkByEmail: response.data.settings.auto_link_by_email,
|
|
useCustomCredentials: response.data.settings.use_custom_credentials,
|
|
},
|
|
availableProviders: response.data.available_providers || [],
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Get business OAuth credentials (custom credentials for paid tiers)
|
|
*/
|
|
export const getBusinessOAuthCredentials = async (): Promise<BusinessOAuthCredentialsResponse> => {
|
|
const response = await apiClient.get<{
|
|
credentials: Record<string, {
|
|
client_id: string;
|
|
client_secret: string;
|
|
has_secret: boolean;
|
|
}>;
|
|
use_custom_credentials: boolean;
|
|
}>('/business/oauth-credentials/');
|
|
|
|
return {
|
|
credentials: response.data.credentials || {},
|
|
useCustomCredentials: response.data.use_custom_credentials,
|
|
};
|
|
};
|
|
|
|
/**
|
|
* Update business OAuth credentials (custom credentials for paid tiers)
|
|
*/
|
|
export const updateBusinessOAuthCredentials = async (
|
|
data: {
|
|
credentials?: Record<string, { client_id?: string; client_secret?: string }>;
|
|
useCustomCredentials?: boolean;
|
|
}
|
|
): Promise<BusinessOAuthCredentialsResponse> => {
|
|
const backendData: Record<string, any> = {};
|
|
|
|
if (data.credentials !== undefined) {
|
|
backendData.credentials = data.credentials;
|
|
}
|
|
if (data.useCustomCredentials !== undefined) {
|
|
backendData.use_custom_credentials = data.useCustomCredentials;
|
|
}
|
|
|
|
const response = await apiClient.patch<{
|
|
credentials: Record<string, {
|
|
client_id: string;
|
|
client_secret: string;
|
|
has_secret: boolean;
|
|
}>;
|
|
use_custom_credentials: boolean;
|
|
}>('/business/oauth-credentials/', backendData);
|
|
|
|
return {
|
|
credentials: response.data.credentials || {},
|
|
useCustomCredentials: response.data.use_custom_credentials,
|
|
};
|
|
};
|