| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- import { api } from './client'
- export type CredentialType = 'basic' | 'bearer' | 'api_key' | 'oauth2' | 'imap' | 'mysql'
- export interface CredentialInfo {
- id: string
- name: string
- description?: string
- type: CredentialType
- createdBy: string
- createdAt: number
- updatedAt: number
- allowedWorkflows: string[]
- publicData?: Record<string, unknown> // Non-secret fields for editing
- }
- export interface BasicAuthData {
- username: string
- password: string
- }
- export interface BearerTokenData {
- token: string
- }
- export interface ApiKeyData {
- header_name: string
- key_value: string
- }
- export interface OAuth2Data {
- grant_type: 'client_credentials' | 'authorization_code'
- client_id: string
- client_secret: string
- token_url: string
- auth_url?: string
- scope?: string
- access_token?: string
- refresh_token?: string
- expires_at?: number
- }
- export interface ImapData {
- host: string
- port: number
- username: string
- password: string
- use_ssl: boolean
- }
- export interface MysqlData {
- host: string
- port: number
- username: string
- password: string
- database: string
- use_ssl: boolean
- }
- export interface CreateCredentialRequest {
- name: string
- description?: string
- type: CredentialType
- data: BasicAuthData | BearerTokenData | ApiKeyData | OAuth2Data | ImapData | MysqlData
- allowedWorkflows?: string[]
- }
- export interface UpdateCredentialRequest {
- name?: string
- description?: string
- data?: BasicAuthData | BearerTokenData | ApiKeyData | OAuth2Data | ImapData | MysqlData
- allowedWorkflows?: string[]
- }
- // Transform backend credential data to frontend format
- function transformCredential(data: any): CredentialInfo {
- return {
- id: data.id || data._id,
- name: data.name,
- description: data.description,
- type: data.type,
- createdBy: data.createdBy || data.ownerId,
- createdAt: data.createdAt || data._createdAt,
- updatedAt: data.updatedAt || data._updatedAt,
- allowedWorkflows: data.allowedWorkflows || [],
- publicData: data.publicData,
- }
- }
- export const credentialsApi = {
- list: async (): Promise<{ credentials: CredentialInfo[] }> => {
- const response = await api.get('/credentials')
- return {
- ...response.data,
- credentials: (response.data.credentials || []).map(transformCredential),
- }
- },
- get: async (id: string): Promise<CredentialInfo> => {
- const response = await api.get(`/credentials/${id}`)
- return transformCredential(response.data)
- },
- create: async (data: CreateCredentialRequest): Promise<CredentialInfo> => {
- const response = await api.post('/credentials', data)
- return transformCredential(response.data)
- },
- update: async (id: string, data: UpdateCredentialRequest): Promise<CredentialInfo> => {
- const response = await api.put(`/credentials/${id}`, data)
- return transformCredential(response.data)
- },
- delete: async (id: string): Promise<void> => {
- await api.delete(`/credentials/${id}`)
- },
- refreshOAuth2: async (id: string): Promise<{ success: boolean; expiresAt?: number }> => {
- const response = await api.post(`/credentials/${id}/refresh`)
- return response.data
- },
- }
|