PromucFlow_constructor/app/client/src/entities/Datasource/RestAPIForm.ts
2023-07-04 17:41:56 +05:30

112 lines
2.3 KiB
TypeScript

import type { Property } from "entities/Action";
export enum AuthType {
NONE = "dbAuth",
OAuth2 = "oAuth2",
basic = "basic",
apiKey = "apiKey",
bearerToken = "bearerToken",
}
export enum SSLType {
DEFAULT = "DEFAULT",
SELF_SIGNED_CERTIFICATE = "SELF_SIGNED_CERTIFICATE",
}
export enum ApiKeyAuthType {
QueryParams = "queryParams",
Header = "header",
}
export enum GrantType {
ClientCredentials = "client_credentials",
AuthorizationCode = "authorization_code",
}
export type Authentication =
| ClientCredentials
| AuthorizationCode
| Basic
| ApiKey
| BearerToken;
export interface Connection {
ssl: SSL;
}
export interface SSL {
authType: SSLType;
authTypeControl: boolean;
certificateFile: Certificate;
}
export interface Certificate {
name: string;
base64Content: string | ArrayBuffer | null;
}
export interface ApiDatasourceForm {
datasourceId: string;
pluginId: string;
workspaceId: string;
isValid: boolean;
url: string;
headers?: Property[];
queryParameters?: Property[];
isSendSessionEnabled: boolean;
sessionSignatureKey: string;
authType: AuthType;
authentication?: Authentication;
connection?: Connection;
userPermissions?: string[];
name?: string;
}
export interface Oauth2Common {
authenticationType: AuthType.OAuth2;
accessTokenUrl: string;
clientId: string;
clientSecret: string;
headerPrefix: string;
scopeString: string;
isTokenHeader: boolean;
isAuthorizationHeader: boolean;
audience: string;
resource: string;
sendScopeWithRefreshToken: boolean;
refreshTokenClientCredentialsLocation: string;
useSelfSignedCert?: boolean;
}
export interface ClientCredentials extends Oauth2Common {
grantType: GrantType.ClientCredentials;
customTokenParameters: Property[];
}
export interface AuthorizationCode extends Oauth2Common {
grantType: GrantType.AuthorizationCode;
authorizationUrl: string;
customAuthenticationParameters: Property[];
isAuthorized: boolean;
}
export interface Basic {
authenticationType: AuthType.basic;
username: string;
password: string;
secretExists?: Record<string, boolean>;
}
export interface ApiKey {
authenticationType: AuthType.apiKey;
label: string;
headerPrefix: string;
value: string;
addTo: string;
}
export interface BearerToken {
authenticationType: AuthType.bearerToken;
bearerToken: string;
}