From ce201bc4129b34e27550c6c195481349eccf0360 Mon Sep 17 00:00:00 2001 From: Charles Date: Tue, 6 Sep 2022 09:34:18 -0700 Subject: [PATCH] deprecate import / export endpoints (#16175) * deprecate import / export endpoints * remove fe deps on import / export * additional fe clean up --- airbyte-api/src/main/openapi/config.yaml | 94 ------- .../airbyte/server/apis/ConfigurationApi.java | 30 --- airbyte-webapp/package-lock.json | 71 ----- airbyte-webapp/package.json | 1 - .../components/FileDropZone/FileDropZone.tsx | 79 ------ .../src/components/FileDropZone/index.tsx | 3 - airbyte-webapp/src/core/ApiServices.tsx | 2 - .../domain/deployment/DeploymentService.ts | 13 - airbyte-webapp/src/locales/en.json | 2 - .../ConfigurationsPage/ConfigurationsPage.tsx | 119 +------- .../components/ImportConfigurationModal.tsx | 101 ------- .../api/generated-api-html/index.html | 253 ------------------ 12 files changed, 2 insertions(+), 766 deletions(-) delete mode 100644 airbyte-webapp/src/components/FileDropZone/FileDropZone.tsx delete mode 100644 airbyte-webapp/src/components/FileDropZone/index.tsx delete mode 100644 airbyte-webapp/src/core/domain/deployment/DeploymentService.ts delete mode 100644 airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/components/ImportConfigurationModal.tsx diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 84398e8b4187..e7baa7d5e14a 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -2212,100 +2212,6 @@ paths: schema: type: string format: binary - /v1/deployment/export: - post: - tags: - - deployment - summary: Export Airbyte Configuration and Data Archive - operationId: exportArchive - responses: - "200": - description: Successful operation - content: - application/x-gzip: - schema: - $ref: "#/components/schemas/AirbyteArchive" - /v1/deployment/import: - post: - tags: - - deployment - summary: Import Airbyte Configuration and Data Archive - operationId: importArchive - requestBody: - content: - application/x-gzip: - schema: - $ref: "#/components/schemas/AirbyteArchive" - required: true - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/ImportRead" - /v1/deployment/export_workspace: - post: - tags: - - deployment - summary: Export Airbyte Workspace Configuration - operationId: exportWorkspace - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/WorkspaceIdRequestBody" - required: true - responses: - "200": - description: Successful operation - content: - application/x-gzip: - schema: - $ref: "#/components/schemas/AirbyteArchive" - /v1/deployment/upload_archive_resource: - post: - tags: - - deployment - summary: Upload a GZIP archive tarball and stage it in the server's cache as a temporary resource - operationId: uploadArchiveResource - requestBody: - content: - application/x-gzip: - schema: - $ref: "#/components/schemas/AirbyteArchive" - required: true - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/UploadRead" - /v1/deployment/import_into_workspace: - post: - tags: - - deployment - summary: > - Import Airbyte Configuration into Workspace (this operation might change ids of imported - configurations). Note, in order to use this api endpoint, you might need to upload a - temporary archive resource with 'deployment/upload_archive_resource' first - operationId: importIntoWorkspace - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/ImportRequestBody" - required: true - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/ImportRead" - "404": - $ref: "#/components/responses/NotFoundResponse" /v1/attempt/set_workflow_in_attempt: post: tags: diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java index 004c461c1814..f568981233d3 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/ConfigurationApi.java @@ -42,8 +42,6 @@ import io.airbyte.api.model.generated.DestinationSearch; import io.airbyte.api.model.generated.DestinationUpdate; import io.airbyte.api.model.generated.HealthCheckRead; -import io.airbyte.api.model.generated.ImportRead; -import io.airbyte.api.model.generated.ImportRequestBody; import io.airbyte.api.model.generated.InternalOperationResult; import io.airbyte.api.model.generated.JobDebugInfoRead; import io.airbyte.api.model.generated.JobIdRequestBody; @@ -86,7 +84,6 @@ import io.airbyte.api.model.generated.SourceReadList; import io.airbyte.api.model.generated.SourceSearch; import io.airbyte.api.model.generated.SourceUpdate; -import io.airbyte.api.model.generated.UploadRead; import io.airbyte.api.model.generated.WebBackendConnectionCreate; import io.airbyte.api.model.generated.WebBackendConnectionRead; import io.airbyte.api.model.generated.WebBackendConnectionReadList; @@ -845,33 +842,6 @@ public WebBackendWorkspaceStateResult webBackendGetWorkspaceState(final WebBacke return execute(() -> webBackendConnectionsHandler.getWorkspaceState(webBackendWorkspaceState)); } - // ARCHIVES - - @Override - public File exportArchive() { - return execute(archiveHandler::exportData); - } - - @Override - public ImportRead importArchive(final File archiveFile) { - return execute(() -> archiveHandler.importData(archiveFile)); - } - - @Override - public File exportWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { - return execute(() -> archiveHandler.exportWorkspace(workspaceIdRequestBody)); - } - - @Override - public UploadRead uploadArchiveResource(final File archiveFile) { - return execute(() -> archiveHandler.uploadArchiveResource(archiveFile)); - } - - @Override - public ImportRead importIntoWorkspace(final ImportRequestBody importRequestBody) { - return execute(() -> archiveHandler.importIntoWorkspace(importRequestBody)); - } - @Override public InternalOperationResult setWorkflowInAttempt(final SetWorkflowInAttemptRequestBody requestBody) { return execute(() -> attemptHandler.setWorkflowInAttempt(requestBody)); diff --git a/airbyte-webapp/package-lock.json b/airbyte-webapp/package-lock.json index 8b788d2035ac..3d6b793e3c53 100644 --- a/airbyte-webapp/package-lock.json +++ b/airbyte-webapp/package-lock.json @@ -31,7 +31,6 @@ "query-string": "^6.13.1", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-dropzone": "^11.5.3", "react-helmet": "6.1.0", "react-intl": "^5.24.8", "react-lazylog": "^4.5.3", @@ -16409,14 +16408,6 @@ "node": ">= 4.5.0" } }, - "node_modules/attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", - "engines": { - "node": ">=4" - } - }, "node_modules/autoprefixer": { "version": "9.8.8", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", @@ -22734,22 +22725,6 @@ "url": "https://opencollective.com/webpack" } }, - "node_modules/file-selector": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz", - "integrity": "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==", - "dependencies": { - "tslib": "^2.0.3" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/file-selector/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, "node_modules/file-system-cache": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz", @@ -36263,22 +36238,6 @@ "react": "17.0.2" } }, - "node_modules/react-dropzone": { - "version": "11.5.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.5.3.tgz", - "integrity": "sha512-68+T6sWW5L89qJnn3SD1aRazhuRBhTT9JOI1W8vI5YWsfegM4C7tlGbPH1AgEbmZY5s8E8L0QhX0e3VdAa0KWA==", - "dependencies": { - "attr-accept": "^2.2.1", - "file-selector": "^0.2.2", - "prop-types": "^15.7.2" - }, - "engines": { - "node": ">= 10" - }, - "peerDependencies": { - "react": ">= 16.8" - } - }, "node_modules/react-element-to-jsx-string": { "version": "14.3.4", "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz", @@ -60213,11 +60172,6 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, - "attr-accept": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", - "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" - }, "autoprefixer": { "version": "9.8.8", "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", @@ -65219,21 +65173,6 @@ } } }, - "file-selector": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.4.tgz", - "integrity": "sha512-ZDsQNbrv6qRi1YTDOEWzf5J2KjZ9KMI1Q2SGeTkCJmNNW25Jg4TW4UMcmoqcg4WrAyKRcpBXdbWRxkfrOzVRbA==", - "requires": { - "tslib": "^2.0.3" - }, - "dependencies": { - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - } - } - }, "file-system-cache": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/file-system-cache/-/file-system-cache-1.1.0.tgz", @@ -75505,16 +75444,6 @@ "scheduler": "^0.20.2" } }, - "react-dropzone": { - "version": "11.5.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.5.3.tgz", - "integrity": "sha512-68+T6sWW5L89qJnn3SD1aRazhuRBhTT9JOI1W8vI5YWsfegM4C7tlGbPH1AgEbmZY5s8E8L0QhX0e3VdAa0KWA==", - "requires": { - "attr-accept": "^2.2.1", - "file-selector": "^0.2.2", - "prop-types": "^15.7.2" - } - }, "react-element-to-jsx-string": { "version": "14.3.4", "resolved": "https://registry.npmjs.org/react-element-to-jsx-string/-/react-element-to-jsx-string-14.3.4.tgz", diff --git a/airbyte-webapp/package.json b/airbyte-webapp/package.json index c1b9eaf54348..45439bd0ff0c 100644 --- a/airbyte-webapp/package.json +++ b/airbyte-webapp/package.json @@ -47,7 +47,6 @@ "query-string": "^6.13.1", "react": "^17.0.2", "react-dom": "^17.0.2", - "react-dropzone": "^11.5.3", "react-helmet": "6.1.0", "react-intl": "^5.24.8", "react-lazylog": "^4.5.3", diff --git a/airbyte-webapp/src/components/FileDropZone/FileDropZone.tsx b/airbyte-webapp/src/components/FileDropZone/FileDropZone.tsx deleted file mode 100644 index 4fa1296c95c5..000000000000 --- a/airbyte-webapp/src/components/FileDropZone/FileDropZone.tsx +++ /dev/null @@ -1,79 +0,0 @@ -import { faFile } from "@fortawesome/free-regular-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import React from "react"; -import { DropzoneOptions, useDropzone } from "react-dropzone"; -import styled from "styled-components"; - -const Content = styled.div<{ hasFiles: boolean }>` - width: 100%; - outline: none; - padding: 12px 10px; - border-radius: 4px; - font-size: 14px; - line-height: 20px; - font-weight: normal; - border: 1px solid ${({ theme, hasFiles }) => (hasFiles ? theme.primaryColor : theme.greyColor0)}; - background: ${({ theme, hasFiles }) => (hasFiles ? theme.primaryColor12 : theme.greyColor0)}; - color: ${({ theme }) => theme.greyColor40}; - cursor: pointer; - min-height: 95px; - text-align: center; - display: flex; - justify-content: center; - align-items: center; - flex-direction: column; - - &:hover { - background: ${({ theme }) => theme.greyColor20}; - border-color: ${({ theme }) => theme.greyColor20}; - } - - &:active { - border-color: ${({ theme }) => theme.primaryColor}; - } - - &:disabled { - pointer-events: none; - background: ${({ theme }) => theme.greyColor55}; - } -`; - -const FileView = styled.div` - color: ${({ theme }) => theme.textColor}; - - &:first-child { - margin-top: 7px; - } -`; - -const FileIcon = styled(FontAwesomeIcon)` - font-size: 16px; - margin-right: 8px; -`; - -interface IProps { - className?: string; - mainText?: React.ReactNode; - options?: DropzoneOptions; -} - -const FileDropZone: React.FC = ({ className, mainText, options }) => { - const { acceptedFiles, getRootProps, getInputProps } = useDropzone(options); - - return ( - - - {mainText} -
- {acceptedFiles.map((file, index) => ( - - - {file.name} - - ))} -
-
- ); -}; - -export default FileDropZone; diff --git a/airbyte-webapp/src/components/FileDropZone/index.tsx b/airbyte-webapp/src/components/FileDropZone/index.tsx deleted file mode 100644 index cd65b979540a..000000000000 --- a/airbyte-webapp/src/components/FileDropZone/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import FileDropZone from "./FileDropZone"; - -export default FileDropZone; diff --git a/airbyte-webapp/src/core/ApiServices.tsx b/airbyte-webapp/src/core/ApiServices.tsx index 6f52c327ea99..5845ff9e3b5e 100644 --- a/airbyte-webapp/src/core/ApiServices.tsx +++ b/airbyte-webapp/src/core/ApiServices.tsx @@ -5,7 +5,6 @@ import { useConfig } from "config"; import { OperationService } from "./domain/connection"; import { DestinationDefinitionService } from "./domain/connector/DestinationDefinitionService"; import { SourceDefinitionService } from "./domain/connector/SourceDefinitionService"; -import { DeploymentService } from "./domain/deployment/DeploymentService"; import { HealthService } from "./health/HealthService"; import { RequestMiddleware } from "./request/RequestMiddleware"; import { useGetService, useInjectServices } from "./servicesProvider"; @@ -18,7 +17,6 @@ export const ApiServices: React.FC = React.memo(({ children }) => { () => ({ SourceDefinitionService: new SourceDefinitionService(config.apiUrl, middlewares), DestinationDefinitionService: new DestinationDefinitionService(config.apiUrl, middlewares), - DeploymentService: new DeploymentService(config.apiUrl, middlewares), OperationService: new OperationService(config.apiUrl, middlewares), HealthService: new HealthService(config.apiUrl, middlewares), }), diff --git a/airbyte-webapp/src/core/domain/deployment/DeploymentService.ts b/airbyte-webapp/src/core/domain/deployment/DeploymentService.ts deleted file mode 100644 index 612092fd3a57..000000000000 --- a/airbyte-webapp/src/core/domain/deployment/DeploymentService.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { AirbyteArchive, exportArchive, importArchive } from "../../request/AirbyteClient"; -import { AirbyteRequestService } from "../../request/AirbyteRequestService"; - -export class DeploymentService extends AirbyteRequestService { - public async exportDeployment() { - const blob = await exportArchive(this.requestOptions); - return window.URL.createObjectURL(blob); - } - - public async importDeployment(file: AirbyteArchive) { - await importArchive(file, this.requestOptions); - } -} diff --git a/airbyte-webapp/src/locales/en.json b/airbyte-webapp/src/locales/en.json index 3afe8a7e0ecb..ab84608c894e 100644 --- a/airbyte-webapp/src/locales/en.json +++ b/airbyte-webapp/src/locales/en.json @@ -441,8 +441,6 @@ "admin.learnMore": "Learn more from our documentation to understand how to fill these field.", "admin.exportConfigurationText": "Download an archive of all configuration and state data. Exported data can be upgraded to another Airbyte version or can be exported to a different Airbyte deployment. For more information visit the configuration archive page in our docs.", "admin.importConfigurationText": "Upload an archive of all configuration and state data. Warning: This will overwrite all existing configuration!", - "admin.dropZoneTitle": "Drag 'n' drop file here, or click to select file", - "admin.dropZoneSubtitle": "Only *.tar and *.gz files will be accepted", "admin.logs": "Logs", "admin.logs.error": "Unable to download logs at this time.", "admin.downloadServerLogs": "Download Server Logs", diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx index 31b192b0002d..2e245dbef951 100644 --- a/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx +++ b/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/ConfigurationsPage.tsx @@ -1,16 +1,10 @@ -import React, { useState } from "react"; +import React from "react"; import { FormattedMessage } from "react-intl"; -import { useAsyncFn } from "react-use"; import styled from "styled-components"; -import { Button, ContentCard, Link, LoadingButton } from "components"; +import { ContentCard } from "components"; import HeadTitle from "components/HeadTitle"; -import { useConfig } from "config"; -import { DeploymentService } from "core/domain/deployment/DeploymentService"; -import { useServicesProvider } from "core/servicesProvider"; - -import ImportConfigurationModal from "./components/ImportConfigurationModal"; import LogsContent from "./components/LogsContent"; const Content = styled.div` @@ -21,119 +15,10 @@ const ControlContent = styled(ContentCard)` margin-top: 12px; `; -const ButtonContent = styled.div` - padding: 29px 28px 27px; - display: flex; - align-items: center; -`; - -const Text = styled.div` - margin-left: 20px; - font-size: 11px; - line-height: 13px; - color: ${({ theme }) => theme.greyColor40}; - white-space: pre-line; - flex: 1 0 0; -`; - -const DocLink = styled(Link).attrs({ as: "a" })` - text-decoration: none; - display: inline-block; -`; - -const Warning = styled.div` - font-weight: bold; -`; - const ConfigurationsPage: React.FC = () => { - const config = useConfig(); - const { getService } = useServicesProvider(); - const [isModalOpen, setIsModalOpen] = useState(false); - const [error, setError] = useState(null); - - const [{ loading }, onImport] = useAsyncFn( - async (fileBlob: Blob) => { - try { - const reader = new FileReader(); - reader.readAsArrayBuffer(fileBlob); - - return new Promise((resolve, reject) => { - reader.onloadend = async (e) => { - const file = e?.target?.result; - if (!file) { - throw new Error("No file"); - } - - try { - const deploymentService = getService("DeploymentService"); - await deploymentService.importDeployment(new Blob([file])); - window.location.reload(); - resolve(true); - } catch (e) { - reject(e); - } - }; - }); - } catch (e) { - setError(e); - } - }, - [getService] - ); - - const [{ loading: loadingExport }, onExport] = useAsyncFn(async () => { - const deploymentService = getService("DeploymentService"); - const file = await deploymentService.exportDeployment(); - window.location.assign(file); - }, []); - return ( - }> - - - - - - ( - - {lnk} - - ), - }} - /> - - - - - }> - - - - {warn}, - }} - /> - - {isModalOpen && ( - setIsModalOpen(false)} - onSubmit={onImport} - isLoading={loading} - error={error} - cleanError={() => setError(null)} - /> - )} - - }> diff --git a/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/components/ImportConfigurationModal.tsx b/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/components/ImportConfigurationModal.tsx deleted file mode 100644 index 2b25004ce84e..000000000000 --- a/airbyte-webapp/src/pages/SettingsPage/pages/ConfigurationsPage/components/ImportConfigurationModal.tsx +++ /dev/null @@ -1,101 +0,0 @@ -import React, { useState } from "react"; -import { FormattedMessage } from "react-intl"; -import styled from "styled-components"; - -import { Button } from "components"; -import FileDropZone from "components/FileDropZone"; -import Modal from "components/Modal"; - -export interface IProps { - onClose: () => void; - // eslint-disable-next-line @typescript-eslint/no-explicit-any - onSubmit: (data: any) => void; - message?: React.ReactNode; - isLoading?: boolean; - error?: Error | null | boolean; - cleanError?: () => void; -} - -const Content = styled.div` - padding: 18px 37px 28px; - font-size: 14px; - line-height: 28px; - width: 485px; -`; - -const ButtonWithMargin = styled(Button)` - margin-right: 9px; -`; - -const DropZoneSubtitle = styled.div` - font-size: 11px; - font-weight: bold; -`; - -const Bottom = styled.div` - display: flex; - justify-content: space-between; - align-items: center; - flex-direction: row; - padding-top: 27px; -`; - -const Error = styled.div` - color: ${({ theme }) => theme.dangerColor}; - font-size: 14px; - line-height: 17px; - margin-right: 10px; -`; - -const Note = styled.div` - padding-top: 8px; - text-align: center; -`; - -const DropZoneMainText = () => ( -
- - - - -
-); - -const ImportConfigurationModal: React.FC = ({ onClose, onSubmit, isLoading, error, cleanError }) => { - const [usersFile, setUsersFile] = useState(null); - - return ( - }> - - } - options={{ - onDrop: (files) => { - setUsersFile(files[0]); - cleanError?.(); - }, - maxFiles: 1, - accept: - "application/x-zip-compressed, application/zip, application/x-gzip, application/x-gtar, application/x-tgz", - }} - /> - - - - - {error ? : null} -
- - - - -
-
-
-
- ); -}; - -export default ImportConfigurationModal; diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 0de7ded6d3e0..5b98235929f7 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -243,14 +243,6 @@

DbMigration

  • post /v1/db_migrations/migrate
  • post /v1/db_migrations/list
  • -

    Deployment

    -

    Destination

    • post /v1/destinations/check_connection
    • @@ -2102,251 +2094,6 @@

      422

      InvalidInputExceptionInfo
      -

      Deployment

      -
      -
      - Up -
      post /v1/deployment/export
      -
      Export Airbyte Configuration and Data Archive (exportArchive)
      -
      - - - - - - - -

      Return type

      -
      - - File -
      - - - - -

      Produces

      - This API call produces the following media types according to the Accept request header; - the media type will be conveyed by the Content-Type response header. -
        -
      • application/x-gzip
      • -
      - -

      Responses

      -

      200

      - Successful operation - File -
      -
      -
      -
      - Up -
      post /v1/deployment/export_workspace
      -
      Export Airbyte Workspace Configuration (exportWorkspace)
      -
      - - -

      Consumes

      - This API call consumes the following media types via the Content-Type request header: -
        -
      • application/json
      • -
      - -

      Request body

      -
      -
      WorkspaceIdRequestBody WorkspaceIdRequestBody (required)
      - -
      Body Parameter
      - -
      - - - - -

      Return type

      -
      - - File -
      - - - - -

      Produces

      - This API call produces the following media types according to the Accept request header; - the media type will be conveyed by the Content-Type response header. -
        -
      • application/x-gzip
      • -
      - -

      Responses

      -

      200

      - Successful operation - File -
      -
      -
      -
      - Up -
      post /v1/deployment/import
      -
      Import Airbyte Configuration and Data Archive (importArchive)
      -
      - - -

      Consumes

      - This API call consumes the following media types via the Content-Type request header: -
        -
      • application/x-gzip
      • -
      - -

      Request body

      -
      -
      body file (required)
      - -
      Body Parameter
      - -
      - - - - -

      Return type

      -
      - ImportRead - -
      - - - -

      Example data

      -
      Content-Type: application/json
      -
      {
      -  "reason" : "reason",
      -  "status" : "succeeded"
      -}
      - -

      Produces

      - This API call produces the following media types according to the Accept request header; - the media type will be conveyed by the Content-Type response header. -
        -
      • application/json
      • -
      - -

      Responses

      -

      200

      - Successful operation - ImportRead -
      -
      -
      -
      - Up -
      post /v1/deployment/import_into_workspace
      -
      Import Airbyte Configuration into Workspace (this operation might change ids of imported configurations). Note, in order to use this api endpoint, you might need to upload a temporary archive resource with 'deployment/upload_archive_resource' first (importIntoWorkspace)
      -
      - - -

      Consumes

      - This API call consumes the following media types via the Content-Type request header: -
        -
      • application/json
      • -
      - -

      Request body

      -
      -
      ImportRequestBody ImportRequestBody (required)
      - -
      Body Parameter
      - -
      - - - - -

      Return type

      -
      - ImportRead - -
      - - - -

      Example data

      -
      Content-Type: application/json
      -
      {
      -  "reason" : "reason",
      -  "status" : "succeeded"
      -}
      - -

      Produces

      - This API call produces the following media types according to the Accept request header; - the media type will be conveyed by the Content-Type response header. -
        -
      • application/json
      • -
      - -

      Responses

      -

      200

      - Successful operation - ImportRead -

      404

      - Object with given id was not found. - NotFoundKnownExceptionInfo -
      -
      -
      -
      - Up -
      post /v1/deployment/upload_archive_resource
      -
      Upload a GZIP archive tarball and stage it in the server's cache as a temporary resource (uploadArchiveResource)
      -
      - - -

      Consumes

      - This API call consumes the following media types via the Content-Type request header: -
        -
      • application/x-gzip
      • -
      - -

      Request body

      -
      -
      body file (required)
      - -
      Body Parameter
      - -
      - - - - -

      Return type

      -
      - UploadRead - -
      - - - -

      Example data

      -
      Content-Type: application/json
      -
      {
      -  "resourceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
      -  "status" : "succeeded"
      -}
      - -

      Produces

      - This API call produces the following media types according to the Accept request header; - the media type will be conveyed by the Content-Type response header. -
        -
      • application/json
      • -
      - -

      Responses

      -

      200

      - Successful operation - UploadRead -
      -

      Destination