/* tslint:disable */
/* eslint-disable */
/**
 * Vectorize API (Beta)
 * API for Vectorize services
 *
 * The version of the OpenAPI document: 0.0.1
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


import * as runtime from '../runtime';
import type {
  DeleteFileResponse,
  GetPipelines400Response,
  GetUploadFilesResponse,
  StartFileUploadToConnectorRequest,
  StartFileUploadToConnectorResponse,
} from '../models/index';
import {
    DeleteFileResponseFromJSON,
    DeleteFileResponseToJSON,
    GetPipelines400ResponseFromJSON,
    GetPipelines400ResponseToJSON,
    GetUploadFilesResponseFromJSON,
    GetUploadFilesResponseToJSON,
    StartFileUploadToConnectorRequestFromJSON,
    StartFileUploadToConnectorRequestToJSON,
    StartFileUploadToConnectorResponseFromJSON,
    StartFileUploadToConnectorResponseToJSON,
} from '../models/index';

export interface DeleteFileFromConnectorRequest {
    organization: string;
    connectorId: string;
}

export interface GetUploadFilesFromConnectorRequest {
    organization: string;
    connectorId: string;
}

export interface StartFileUploadToConnectorOperationRequest {
    organization: string;
    connectorId: string;
    startFileUploadToConnectorRequest: StartFileUploadToConnectorRequest;
}

/**
 * 
 */
export class UploadsApi extends runtime.BaseAPI {

    /**
     * Delete a file from a file upload connector
     */
    async deleteFileFromConnectorRaw(requestParameters: DeleteFileFromConnectorRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<DeleteFileResponse>> {
        if (requestParameters['organization'] == null) {
            throw new runtime.RequiredError(
                'organization',
                'Required parameter "organization" was null or undefined when calling deleteFileFromConnector().'
            );
        }

        if (requestParameters['connectorId'] == null) {
            throw new runtime.RequiredError(
                'connectorId',
                'Required parameter "connectorId" was null or undefined when calling deleteFileFromConnector().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("bearerAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/org/{organization}/uploads/{connectorId}/files`.replace(`{${"organization"}}`, encodeURIComponent(String(requestParameters['organization']))).replace(`{${"connectorId"}}`, encodeURIComponent(String(requestParameters['connectorId']))),
            method: 'DELETE',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => DeleteFileResponseFromJSON(jsonValue));
    }

    /**
     * Delete a file from a file upload connector
     */
    async deleteFileFromConnector(requestParameters: DeleteFileFromConnectorRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<DeleteFileResponse> {
        const response = await this.deleteFileFromConnectorRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Get uploaded files from a file upload connector
     */
    async getUploadFilesFromConnectorRaw(requestParameters: GetUploadFilesFromConnectorRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<GetUploadFilesResponse>> {
        if (requestParameters['organization'] == null) {
            throw new runtime.RequiredError(
                'organization',
                'Required parameter "organization" was null or undefined when calling getUploadFilesFromConnector().'
            );
        }

        if (requestParameters['connectorId'] == null) {
            throw new runtime.RequiredError(
                'connectorId',
                'Required parameter "connectorId" was null or undefined when calling getUploadFilesFromConnector().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("bearerAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/org/{organization}/uploads/{connectorId}/files`.replace(`{${"organization"}}`, encodeURIComponent(String(requestParameters['organization']))).replace(`{${"connectorId"}}`, encodeURIComponent(String(requestParameters['connectorId']))),
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => GetUploadFilesResponseFromJSON(jsonValue));
    }

    /**
     * Get uploaded files from a file upload connector
     */
    async getUploadFilesFromConnector(requestParameters: GetUploadFilesFromConnectorRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetUploadFilesResponse> {
        const response = await this.getUploadFilesFromConnectorRaw(requestParameters, initOverrides);
        return await response.value();
    }

    /**
     * Upload a file to a file upload connector
     */
    async startFileUploadToConnectorRaw(requestParameters: StartFileUploadToConnectorOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<StartFileUploadToConnectorResponse>> {
        if (requestParameters['organization'] == null) {
            throw new runtime.RequiredError(
                'organization',
                'Required parameter "organization" was null or undefined when calling startFileUploadToConnector().'
            );
        }

        if (requestParameters['connectorId'] == null) {
            throw new runtime.RequiredError(
                'connectorId',
                'Required parameter "connectorId" was null or undefined when calling startFileUploadToConnector().'
            );
        }

        if (requestParameters['startFileUploadToConnectorRequest'] == null) {
            throw new runtime.RequiredError(
                'startFileUploadToConnectorRequest',
                'Required parameter "startFileUploadToConnectorRequest" was null or undefined when calling startFileUploadToConnector().'
            );
        }

        const queryParameters: any = {};

        const headerParameters: runtime.HTTPHeaders = {};

        headerParameters['Content-Type'] = 'application/json';

        if (this.configuration && this.configuration.accessToken) {
            const token = this.configuration.accessToken;
            const tokenString = await token("bearerAuth", []);

            if (tokenString) {
                headerParameters["Authorization"] = `Bearer ${tokenString}`;
            }
        }
        const response = await this.request({
            path: `/org/{organization}/uploads/{connectorId}/files`.replace(`{${"organization"}}`, encodeURIComponent(String(requestParameters['organization']))).replace(`{${"connectorId"}}`, encodeURIComponent(String(requestParameters['connectorId']))),
            method: 'PUT',
            headers: headerParameters,
            query: queryParameters,
            body: StartFileUploadToConnectorRequestToJSON(requestParameters['startFileUploadToConnectorRequest']),
        }, initOverrides);

        return new runtime.JSONApiResponse(response, (jsonValue) => StartFileUploadToConnectorResponseFromJSON(jsonValue));
    }

    /**
     * Upload a file to a file upload connector
     */
    async startFileUploadToConnector(requestParameters: StartFileUploadToConnectorOperationRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<StartFileUploadToConnectorResponse> {
        const response = await this.startFileUploadToConnectorRaw(requestParameters, initOverrides);
        return await response.value();
    }

}
