MyApi.credentials.ts
export class MyApi implements ICredentialType {
name = "myApi";
displayName = "My API";
properties: INodeProperties[] = [
{
displayName: "URL Base de la Plataforma",
name: "baseUrl",
type: "string",
default: "http://myapi.com",
placeholder: "http://myapi.com",
required: true,
hint: "Haz clic en `Guardar` para autenticarte.",
description: "",
},
{
displayName: "Secreto",
name: "adminToken",
type: "hidden",
typeOptions: {
password: true,
},
default: "",
description:
"Completado a través de sobrescrituras de credenciales de n8n.",
},
];
test: ICredentialTestRequest = {
request: {
method: "GET",
baseURL: "={{$credentials.baseUrl}}",
url: "/health",
},
};
}
import type {
ICredentialDataDecryptedObject,
ICredentialTestRequest,
ICredentialType,
IHttpRequestOptions,
INodeProperties,
} from 'n8n-workflow';
export class OpenAiApi implements ICredentialType {
name = 'openAiApi';
displayName = 'OpenAI';
documentationUrl = 'openai';
properties: INodeProperties[] = [
{
displayName: 'Clave API',
name: 'apiKey',
type: 'string',
typeOptions: { password: true },
required: true,
default: '',
},
{
displayName: 'ID de Organización (opcional)',
name: 'organizationId',
type: 'string',
default: '',
hint: 'Solo es necesario si perteneces a múltiples organizaciones',
description:
"Para usuarios que pertenecen a múltiples organizaciones, puedes establecer qué organización se utiliza para una solicitud de API. El uso de estas solicitudes de API se contabilizará contra la cuota de suscripción de la organización especificada.",
},
{
displayName: 'URL Base',
name: 'url',
type: 'string',
default: 'https://api.openai.com/v1',
description: 'Anula la URL base predeterminada de la API',
},
{
displayName: 'Agregar Encabezado Personalizado',
name: 'header',
type: 'boolean',
default: false,
},
{
displayName: 'Nombre del Encabezado',
name: 'headerName',
type: 'string',
displayOptions: {
show: {
header: [true],
},
},
default: '',
},
{
displayName: 'Valor del Encabezado',
name: 'headerValue',
type: 'string',
typeOptions: {
password: true,
},
displayOptions: {
show: {
header: [true],
},
},
default: '',
},
];
test: ICredentialTestRequest = {
request: {
baseURL: '={{$credentials?.url}}',
url: '/models',
},
};
async authenticate(
credentials: ICredentialDataDecryptedObject,
requestOptions: IHttpRequestOptions,
): Promise<IHttpRequestOptions> {
requestOptions.headers ??= {};
requestOptions.headers['Authorization'] = `Bearer ${credentials.apiKey}`;
requestOptions.headers['OpenAI-Organization'] = credentials.organizationId;
if (
credentials.header &&
typeof credentials.headerName === 'string' &&
credentials.headerName &&
typeof credentials.headerValue === 'string'
) {
requestOptions.headers[credentials.headerName] = credentials.headerValue;
}
return requestOptions;
}
}