diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 791de5335465..4d7d0e6458cb 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -277,26 +277,7 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" - /v1/source_definitions/create: - post: - tags: - - source_definition - summary: Creates a sourceDefinition - operationId: createSourceDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDefinitionCreate" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDefinitionRead" - "422": - $ref: "#/components/responses/InvalidInputResponse" + /v1/source_definitions/update: post: tags: @@ -469,47 +450,6 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" - /v1/source_definitions/update_custom: - post: - tags: - - source_definition - summary: Update a custom sourceDefinition for the given workspace - operationId: updateCustomSourceDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CustomSourceDefinitionUpdate" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDefinitionRead" - "404": - $ref: "#/components/responses/NotFoundResponse" - "422": - $ref: "#/components/responses/InvalidInputResponse" - /v1/source_definitions/delete_custom: - post: - tags: - - source_definition - summary: Delete a custom source definition for the given workspace - operationId: deleteCustomSourceDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDefinitionIdWithWorkspaceId" - required: true - responses: - "204": - description: The resource was deleted successfully. - "404": - $ref: "#/components/responses/NotFoundResponse" - "422": - $ref: "#/components/responses/InvalidInputResponse" /v1/source_definitions/grant_definition: post: tags: @@ -798,26 +738,6 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" - /v1/destination_definitions/create: - post: - tags: - - destination_definition - summary: Creates a destinationsDefinition - operationId: createDestinationDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DestinationDefinitionCreate" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/DestinationDefinitionRead" - "422": - $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definitions/update: post: tags: @@ -991,47 +911,6 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" - /v1/destination_definitions/update_custom: - post: - tags: - - destination_definition - summary: Update a custom destinationDefinition for the given workspace - operationId: updateCustomDestinationDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/CustomDestinationDefinitionUpdate" - responses: - "200": - description: Successful operation - content: - application/json: - schema: - $ref: "#/components/schemas/DestinationDefinitionRead" - "404": - $ref: "#/components/responses/NotFoundResponse" - "422": - $ref: "#/components/responses/InvalidInputResponse" - /v1/destination_definitions/delete_custom: - post: - tags: - - destination_definition - summary: Delete a custom destination definition for the given workspace - operationId: deleteCustomDestinationDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DestinationDefinitionIdWithWorkspaceId" - required: true - responses: - "204": - description: The destination was deleted successfully. - "404": - $ref: "#/components/responses/NotFoundResponse" - "422": - $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definitions/grant_definition: post: tags: @@ -2680,16 +2559,6 @@ components: $ref: "#/components/schemas/WorkspaceId" sourceDefinition: $ref: "#/components/schemas/SourceDefinitionCreate" - CustomSourceDefinitionUpdate: - type: object - required: - - workspaceId - - sourceDefinition - properties: - workspaceId: - $ref: "#/components/schemas/WorkspaceId" - sourceDefinition: - $ref: "#/components/schemas/SourceDefinitionUpdate" SourceDefinitionIdWithWorkspaceId: type: object required: @@ -3050,16 +2919,6 @@ components: $ref: "#/components/schemas/WorkspaceId" destinationDefinition: $ref: "#/components/schemas/DestinationDefinitionCreate" - CustomDestinationDefinitionUpdate: - type: object - required: - - workspaceId - - destinationDefinition - properties: - workspaceId: - $ref: "#/components/schemas/WorkspaceId" - destinationDefinition: - $ref: "#/components/schemas/DestinationDefinitionUpdate" DestinationDefinitionIdWithWorkspaceId: type: object required: diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java index f5916639534d..d2325703298d 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/DestinationDefinitionApiController.java @@ -6,8 +6,6 @@ import io.airbyte.api.generated.DestinationDefinitionApi; import io.airbyte.api.model.generated.CustomDestinationDefinitionCreate; -import io.airbyte.api.model.generated.CustomDestinationDefinitionUpdate; -import io.airbyte.api.model.generated.DestinationDefinitionCreate; import io.airbyte.api.model.generated.DestinationDefinitionIdRequestBody; import io.airbyte.api.model.generated.DestinationDefinitionIdWithWorkspaceId; import io.airbyte.api.model.generated.DestinationDefinitionRead; @@ -31,21 +29,6 @@ public DestinationDefinitionRead createCustomDestinationDefinition(final CustomD return ApiHelper.execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(customDestinationDefinitionCreate)); } - // TODO: Deprecate this route in favor of createCustomDestinationDefinition - // since all connector definitions created through the API are custom - @Override - public DestinationDefinitionRead createDestinationDefinition(final DestinationDefinitionCreate destinationDefinitionCreate) { - return ApiHelper.execute(() -> destinationDefinitionsHandler.createPrivateDestinationDefinition(destinationDefinitionCreate)); - } - - @Override - public void deleteCustomDestinationDefinition(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { - ApiHelper.execute(() -> { - destinationDefinitionsHandler.deleteCustomDestinationDefinition(destinationDefinitionIdWithWorkspaceId); - return null; - }); - } - @Override public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { ApiHelper.execute(() -> { @@ -98,11 +81,6 @@ public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinition }); } - @Override - public DestinationDefinitionRead updateCustomDestinationDefinition(final CustomDestinationDefinitionUpdate customDestinationDefinitionUpdate) { - return ApiHelper.execute(() -> destinationDefinitionsHandler.updateCustomDestinationDefinition(customDestinationDefinitionUpdate)); - } - @Override public DestinationDefinitionRead updateDestinationDefinition(final DestinationDefinitionUpdate destinationDefinitionUpdate) { return ApiHelper.execute(() -> destinationDefinitionsHandler.updateDestinationDefinition(destinationDefinitionUpdate)); diff --git a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java index c47ab1fac43e..8820b6287e4f 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java +++ b/airbyte-server/src/main/java/io/airbyte/server/apis/SourceDefinitionApiController.java @@ -6,10 +6,8 @@ import io.airbyte.api.generated.SourceDefinitionApi; import io.airbyte.api.model.generated.CustomSourceDefinitionCreate; -import io.airbyte.api.model.generated.CustomSourceDefinitionUpdate; import io.airbyte.api.model.generated.PrivateSourceDefinitionRead; import io.airbyte.api.model.generated.PrivateSourceDefinitionReadList; -import io.airbyte.api.model.generated.SourceDefinitionCreate; import io.airbyte.api.model.generated.SourceDefinitionIdRequestBody; import io.airbyte.api.model.generated.SourceDefinitionIdWithWorkspaceId; import io.airbyte.api.model.generated.SourceDefinitionRead; @@ -31,21 +29,6 @@ public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefin return ApiHelper.execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(customSourceDefinitionCreate)); } - // TODO: Deprecate this route in favor of createCustomSourceDefinition - // since all connector definitions created through the API are custom - @Override - public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { - return ApiHelper.execute(() -> sourceDefinitionsHandler.createPrivateSourceDefinition(sourceDefinitionCreate)); - } - - @Override - public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { - ApiHelper.execute(() -> { - sourceDefinitionsHandler.deleteCustomSourceDefinition(sourceDefinitionIdWithWorkspaceId); - return null; - }); - } - @Override public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { ApiHelper.execute(() -> { @@ -97,11 +80,6 @@ public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWork }); } - @Override - public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) { - return ApiHelper.execute(() -> sourceDefinitionsHandler.updateCustomSourceDefinition(customSourceDefinitionUpdate)); - } - @Override public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate sourceDefinitionUpdate) { return ApiHelper.execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); diff --git a/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java b/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java index 0a995f4ba717..03d79f536440 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java +++ b/airbyte-server/src/main/java/io/airbyte/server/handlers/DestinationDefinitionsHandler.java @@ -8,7 +8,6 @@ import com.google.common.annotations.VisibleForTesting; import io.airbyte.api.model.generated.CustomDestinationDefinitionCreate; -import io.airbyte.api.model.generated.CustomDestinationDefinitionUpdate; import io.airbyte.api.model.generated.DestinationDefinitionCreate; import io.airbyte.api.model.generated.DestinationDefinitionIdRequestBody; import io.airbyte.api.model.generated.DestinationDefinitionIdWithWorkspaceId; @@ -184,20 +183,6 @@ public DestinationDefinitionRead getDestinationDefinitionForWorkspace( return getDestinationDefinition(new DestinationDefinitionIdRequestBody().destinationDefinitionId(definitionId)); } - public DestinationDefinitionRead createPrivateDestinationDefinition(final DestinationDefinitionCreate destinationDefCreate) - throws JsonValidationException, IOException { - final StandardDestinationDefinition destinationDefinition = destinationDefinitionFromCreate(destinationDefCreate) - .withPublic(false) - .withCustom(false); - if (!protocolVersionRange.isSupported(new Version(destinationDefinition.getProtocolVersion()))) { - throw new UnsupportedProtocolVersionException(destinationDefinition.getProtocolVersion(), protocolVersionRange.min(), - protocolVersionRange.max()); - } - configRepository.writeStandardDestinationDefinition(destinationDefinition); - - return buildDestinationDefinitionRead(destinationDefinition); - } - public DestinationDefinitionRead createCustomDestinationDefinition(final CustomDestinationDefinitionCreate customDestinationDefinitionCreate) throws IOException { final StandardDestinationDefinition destinationDefinition = destinationDefinitionFromCreate( @@ -281,16 +266,6 @@ public DestinationDefinitionRead updateDestinationDefinition(final DestinationDe return buildDestinationDefinitionRead(newDestination); } - public DestinationDefinitionRead updateCustomDestinationDefinition(final CustomDestinationDefinitionUpdate customDestinationDefinitionUpdate) - throws IOException, JsonValidationException, ConfigNotFoundException { - final UUID definitionId = customDestinationDefinitionUpdate.getDestinationDefinition().getDestinationDefinitionId(); - final UUID workspaceId = customDestinationDefinitionUpdate.getWorkspaceId(); - if (!configRepository.workspaceCanUseCustomDefinition(definitionId, workspaceId)) { - throw new IdNotFoundKnownException("Cannot find the requested definition with given id for this workspace", definitionId.toString()); - } - return updateDestinationDefinition(customDestinationDefinitionUpdate.getDestinationDefinition()); - } - public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) throws JsonValidationException, ConfigNotFoundException, IOException { // "delete" all destinations associated with the destination definition as well. This will cascade @@ -309,16 +284,6 @@ public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody configRepository.writeStandardDestinationDefinition(persistedDestinationDefinition); } - public void deleteCustomDestinationDefinition(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) - throws IOException, JsonValidationException, ConfigNotFoundException { - final UUID definitionId = destinationDefinitionIdWithWorkspaceId.getDestinationDefinitionId(); - final UUID workspaceId = destinationDefinitionIdWithWorkspaceId.getWorkspaceId(); - if (!configRepository.workspaceCanUseCustomDefinition(definitionId, workspaceId)) { - throw new IdNotFoundKnownException("Cannot find the requested definition with given id for this workspace", definitionId.toString()); - } - deleteDestinationDefinition(new DestinationDefinitionIdRequestBody().destinationDefinitionId(definitionId)); - } - private ConnectorSpecification getSpecForImage(final String dockerRepository, final String imageTag) throws IOException { final String imageName = DockerUtils.getTaggedImageName(dockerRepository, imageTag); final SynchronousResponse getSpecResponse = schedulerSynchronousClient.createGetSpecJob(imageName); diff --git a/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java b/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java index 7d07cb59ec1a..9d4005af9d10 100644 --- a/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java +++ b/airbyte-server/src/main/java/io/airbyte/server/handlers/SourceDefinitionsHandler.java @@ -8,7 +8,6 @@ import com.google.common.annotations.VisibleForTesting; import io.airbyte.api.model.generated.CustomSourceDefinitionCreate; -import io.airbyte.api.model.generated.CustomSourceDefinitionUpdate; import io.airbyte.api.model.generated.PrivateSourceDefinitionRead; import io.airbyte.api.model.generated.PrivateSourceDefinitionReadList; import io.airbyte.api.model.generated.ReleaseStage; @@ -190,19 +189,6 @@ public SourceDefinitionRead getSourceDefinitionForWorkspace(final SourceDefiniti return getSourceDefinition(new SourceDefinitionIdRequestBody().sourceDefinitionId(definitionId)); } - public SourceDefinitionRead createPrivateSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) - throws JsonValidationException, IOException { - final StandardSourceDefinition sourceDefinition = sourceDefinitionFromCreate(sourceDefinitionCreate) - .withPublic(false) - .withCustom(false); - if (!protocolVersionRange.isSupported(new Version(sourceDefinition.getProtocolVersion()))) { - throw new UnsupportedProtocolVersionException(sourceDefinition.getProtocolVersion(), protocolVersionRange.min(), protocolVersionRange.max()); - } - configRepository.writeStandardSourceDefinition(sourceDefinition); - - return buildSourceDefinitionRead(sourceDefinition); - } - public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) throws IOException { final StandardSourceDefinition sourceDefinition = sourceDefinitionFromCreate(customSourceDefinitionCreate.getSourceDefinition()) @@ -280,16 +266,6 @@ public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate return buildSourceDefinitionRead(newSource); } - public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) - throws IOException, JsonValidationException, ConfigNotFoundException { - final UUID definitionId = customSourceDefinitionUpdate.getSourceDefinition().getSourceDefinitionId(); - final UUID workspaceId = customSourceDefinitionUpdate.getWorkspaceId(); - if (!configRepository.workspaceCanUseCustomDefinition(definitionId, workspaceId)) { - throw new IdNotFoundKnownException("Cannot find the requested definition with given id for this workspace", definitionId.toString()); - } - return updateSourceDefinition(customSourceDefinitionUpdate.getSourceDefinition()); - } - public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) throws JsonValidationException, IOException, ConfigNotFoundException { // "delete" all sources associated with the source definition as well. This will cascade to @@ -307,16 +283,6 @@ public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDef configRepository.writeStandardSourceDefinition(persistedSourceDefinition); } - public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) - throws IOException, JsonValidationException, ConfigNotFoundException { - final UUID definitionId = sourceDefinitionIdWithWorkspaceId.getSourceDefinitionId(); - final UUID workspaceId = sourceDefinitionIdWithWorkspaceId.getWorkspaceId(); - if (!configRepository.workspaceCanUseCustomDefinition(definitionId, workspaceId)) { - throw new IdNotFoundKnownException("Cannot find the requested definition with given id for this workspace", definitionId.toString()); - } - deleteSourceDefinition(new SourceDefinitionIdRequestBody().sourceDefinitionId(definitionId)); - } - private ConnectorSpecification getSpecForImage(final String dockerRepository, final String imageTag) throws IOException { final String imageName = DockerUtils.getTaggedImageName(dockerRepository, imageTag); final SynchronousResponse getSpecResponse = schedulerSynchronousClient.createGetSpecJob(imageName); diff --git a/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java b/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java index daad65516f51..203f474c00c9 100644 --- a/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java +++ b/airbyte-server/src/test/java/io/airbyte/server/handlers/DestinationDefinitionsHandlerTest.java @@ -336,85 +336,6 @@ void testGetDefinitionWithGrantForWorkspace() throws JsonValidationException, Co assertEquals(expectedDestinationDefinitionRead, actualDestinationDefinitionRead); } - @Test - @DisplayName("createDestinationDefinition should correctly create a destinationDefinition") - void testCreateDestinationDefinition() throws URISyntaxException, IOException, JsonValidationException { - final StandardDestinationDefinition destination = generateDestinationDefinition(); - final String imageName = DockerUtils.getTaggedImageName(destination.getDockerRepository(), destination.getDockerImageTag()); - - when(uuidSupplier.get()).thenReturn(destination.getDestinationDefinitionId()); - when(schedulerSynchronousClient.createGetSpecJob(imageName)).thenReturn(new SynchronousResponse<>( - destination.getSpec(), - SynchronousJobMetadata.mock(ConfigType.GET_SPEC))); - - final DestinationDefinitionCreate create = new DestinationDefinitionCreate() - .name(destination.getName()) - .dockerRepository(destination.getDockerRepository()) - .dockerImageTag(destination.getDockerImageTag()) - .documentationUrl(new URI(destination.getDocumentationUrl())) - .icon(destination.getIcon()) - .resourceRequirements(new io.airbyte.api.model.generated.ActorDefinitionResourceRequirements() - ._default(new io.airbyte.api.model.generated.ResourceRequirements() - .cpuRequest(destination.getResourceRequirements().getDefault().getCpuRequest())) - .jobSpecific(Collections.emptyList())); - - final DestinationDefinitionRead expectedRead = new DestinationDefinitionRead() - .name(destination.getName()) - .dockerRepository(destination.getDockerRepository()) - .dockerImageTag(destination.getDockerImageTag()) - .documentationUrl(new URI(destination.getDocumentationUrl())) - .destinationDefinitionId(destination.getDestinationDefinitionId()) - .icon(DestinationDefinitionsHandler.loadIcon(destination.getIcon())) - .protocolVersion(DEFAULT_PROTOCOL_VERSION) - .releaseStage(ReleaseStage.CUSTOM) - .resourceRequirements(new io.airbyte.api.model.generated.ActorDefinitionResourceRequirements() - ._default(new io.airbyte.api.model.generated.ResourceRequirements() - .cpuRequest(destination.getResourceRequirements().getDefault().getCpuRequest())) - .jobSpecific(Collections.emptyList())); - - final DestinationDefinitionRead actualRead = destinationDefinitionsHandler.createPrivateDestinationDefinition(create); - - assertEquals(expectedRead, actualRead); - verify(schedulerSynchronousClient).createGetSpecJob(imageName); - verify(configRepository).writeStandardDestinationDefinition(destination - .withProtocolVersion(DEFAULT_PROTOCOL_VERSION) - .withReleaseDate(null) - .withReleaseStage(StandardDestinationDefinition.ReleaseStage.CUSTOM)); - } - - @Test - @DisplayName("createDestinationDefinition should not create a destinationDefinition with unsupported protocol version") - void testCreateDestinationDefinitionShouldCheckProtocolVersion() throws URISyntaxException, IOException, JsonValidationException { - final String invalidProtocolVersion = "121.5.6"; - final StandardDestinationDefinition destination = generateDestinationDefinition(); - destination.getSpec().setProtocolVersion(invalidProtocolVersion); - final String imageName = DockerUtils.getTaggedImageName(destination.getDockerRepository(), destination.getDockerImageTag()); - - when(uuidSupplier.get()).thenReturn(destination.getDestinationDefinitionId()); - when(schedulerSynchronousClient.createGetSpecJob(imageName)).thenReturn(new SynchronousResponse<>( - destination.getSpec(), - SynchronousJobMetadata.mock(ConfigType.GET_SPEC))); - - final DestinationDefinitionCreate create = new DestinationDefinitionCreate() - .name(destination.getName()) - .dockerRepository(destination.getDockerRepository()) - .dockerImageTag(destination.getDockerImageTag()) - .documentationUrl(new URI(destination.getDocumentationUrl())) - .icon(destination.getIcon()) - .resourceRequirements(new io.airbyte.api.model.generated.ActorDefinitionResourceRequirements() - ._default(new io.airbyte.api.model.generated.ResourceRequirements() - .cpuRequest(destination.getResourceRequirements().getDefault().getCpuRequest())) - .jobSpecific(Collections.emptyList())); - - assertThrows(UnsupportedProtocolVersionException.class, () -> destinationDefinitionsHandler.createPrivateDestinationDefinition(create)); - - verify(schedulerSynchronousClient).createGetSpecJob(imageName); - verify(configRepository, never()).writeStandardDestinationDefinition(destination - .withProtocolVersion(DEFAULT_PROTOCOL_VERSION) - .withReleaseDate(null) - .withReleaseStage(StandardDestinationDefinition.ReleaseStage.CUSTOM)); - } - @Test @DisplayName("createCustomDestinationDefinition should correctly create a destinationDefinition") void testCreateCustomDestinationDefinition() throws URISyntaxException, IOException, JsonValidationException { diff --git a/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java b/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java index 480ab6b7f2b5..e1cc08a5edff 100644 --- a/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java +++ b/airbyte-server/src/test/java/io/airbyte/server/handlers/SourceDefinitionsHandlerTest.java @@ -324,89 +324,6 @@ void testGetDefinitionWithGrantForWorkspace() throws JsonValidationException, Co assertEquals(expectedSourceDefinitionRead, actualSourceDefinitionRead); } - @Test - @DisplayName("createSourceDefinition should correctly create a sourceDefinition") - void testCreateSourceDefinition() throws URISyntaxException, IOException, JsonValidationException { - final StandardSourceDefinition sourceDefinition = generateSourceDefinition(); - final String imageName = DockerUtils.getTaggedImageName(sourceDefinition.getDockerRepository(), sourceDefinition.getDockerImageTag()); - - when(uuidSupplier.get()).thenReturn(sourceDefinition.getSourceDefinitionId()); - when(schedulerSynchronousClient.createGetSpecJob(imageName)).thenReturn(new SynchronousResponse<>( - sourceDefinition.getSpec(), - SynchronousJobMetadata.mock(ConfigType.GET_SPEC))); - - final SourceDefinitionCreate create = new SourceDefinitionCreate() - .name(sourceDefinition.getName()) - .dockerRepository(sourceDefinition.getDockerRepository()) - .dockerImageTag(sourceDefinition.getDockerImageTag()) - .documentationUrl(new URI(sourceDefinition.getDocumentationUrl())) - .icon(sourceDefinition.getIcon()) - .resourceRequirements(new io.airbyte.api.model.generated.ActorDefinitionResourceRequirements() - ._default(new io.airbyte.api.model.generated.ResourceRequirements() - .cpuRequest(sourceDefinition.getResourceRequirements().getDefault().getCpuRequest())) - .jobSpecific(Collections.emptyList())); - - final SourceDefinitionRead expectedRead = new SourceDefinitionRead() - .name(sourceDefinition.getName()) - .dockerRepository(sourceDefinition.getDockerRepository()) - .dockerImageTag(sourceDefinition.getDockerImageTag()) - .documentationUrl(new URI(sourceDefinition.getDocumentationUrl())) - .sourceDefinitionId(sourceDefinition.getSourceDefinitionId()) - .icon(SourceDefinitionsHandler.loadIcon(sourceDefinition.getIcon())) - .protocolVersion(DEFAULT_PROTOCOL_VERSION) - .releaseStage(ReleaseStage.CUSTOM) - .resourceRequirements(new io.airbyte.api.model.generated.ActorDefinitionResourceRequirements() - ._default(new io.airbyte.api.model.generated.ResourceRequirements() - .cpuRequest(sourceDefinition.getResourceRequirements().getDefault().getCpuRequest())) - .jobSpecific(Collections.emptyList())); - - final SourceDefinitionRead actualRead = sourceDefinitionsHandler.createPrivateSourceDefinition(create); - - assertEquals(expectedRead, actualRead); - verify(schedulerSynchronousClient).createGetSpecJob(imageName); - verify(configRepository) - .writeStandardSourceDefinition( - sourceDefinition - .withReleaseDate(null) - .withReleaseStage(StandardSourceDefinition.ReleaseStage.CUSTOM) - .withProtocolVersion(DEFAULT_PROTOCOL_VERSION)); - } - - @Test - @DisplayName("createSourceDefinition should not create a sourceDefinition with an unsupported protocol version") - void testCreateSourceDefinitionWithInvalidProtocol() throws URISyntaxException, IOException, JsonValidationException { - final String invalidProtocol = "131.1.2"; - final StandardSourceDefinition sourceDefinition = generateSourceDefinition(); - sourceDefinition.getSpec().setProtocolVersion(invalidProtocol); - final String imageName = DockerUtils.getTaggedImageName(sourceDefinition.getDockerRepository(), sourceDefinition.getDockerImageTag()); - - when(uuidSupplier.get()).thenReturn(sourceDefinition.getSourceDefinitionId()); - when(schedulerSynchronousClient.createGetSpecJob(imageName)).thenReturn(new SynchronousResponse<>( - sourceDefinition.getSpec(), - SynchronousJobMetadata.mock(ConfigType.GET_SPEC))); - - final SourceDefinitionCreate create = new SourceDefinitionCreate() - .name(sourceDefinition.getName()) - .dockerRepository(sourceDefinition.getDockerRepository()) - .dockerImageTag(sourceDefinition.getDockerImageTag()) - .documentationUrl(new URI(sourceDefinition.getDocumentationUrl())) - .icon(sourceDefinition.getIcon()) - .resourceRequirements(new io.airbyte.api.model.generated.ActorDefinitionResourceRequirements() - ._default(new io.airbyte.api.model.generated.ResourceRequirements() - .cpuRequest(sourceDefinition.getResourceRequirements().getDefault().getCpuRequest())) - .jobSpecific(Collections.emptyList())); - - assertThrows(UnsupportedProtocolVersionException.class, () -> sourceDefinitionsHandler.createPrivateSourceDefinition(create)); - - verify(schedulerSynchronousClient).createGetSpecJob(imageName); - verify(configRepository, never()) - .writeStandardSourceDefinition( - sourceDefinition - .withReleaseDate(null) - .withReleaseStage(StandardSourceDefinition.ReleaseStage.CUSTOM) - .withProtocolVersion(DEFAULT_PROTOCOL_VERSION)); - } - @Test @DisplayName("createCustomSourceDefinition should correctly create a sourceDefinition") void testCreateCustomSourceDefinition() throws URISyntaxException, IOException, JsonValidationException { diff --git a/airbyte-test-utils/src/main/java/io/airbyte/test/utils/AirbyteAcceptanceTestHarness.java b/airbyte-test-utils/src/main/java/io/airbyte/test/utils/AirbyteAcceptanceTestHarness.java index a85f6498975a..0094cd92791a 100644 --- a/airbyte-test-utils/src/main/java/io/airbyte/test/utils/AirbyteAcceptanceTestHarness.java +++ b/airbyte-test-utils/src/main/java/io/airbyte/test/utils/AirbyteAcceptanceTestHarness.java @@ -25,6 +25,8 @@ import io.airbyte.api.client.model.generated.ConnectionState; import io.airbyte.api.client.model.generated.ConnectionStatus; import io.airbyte.api.client.model.generated.ConnectionUpdate; +import io.airbyte.api.client.model.generated.CustomDestinationDefinitionCreate; +import io.airbyte.api.client.model.generated.CustomSourceDefinitionCreate; import io.airbyte.api.client.model.generated.DestinationCreate; import io.airbyte.api.client.model.generated.DestinationDefinitionCreate; import io.airbyte.api.client.model.generated.DestinationDefinitionRead; @@ -644,20 +646,24 @@ private Map localConfig(final PostgreSQLContainer psql, return dbConfig; } - public SourceDefinitionRead createE2eSourceDefinition() throws ApiException { - return apiClient.getSourceDefinitionApi().createSourceDefinition(new SourceDefinitionCreate() - .name("E2E Test Source") - .dockerRepository("airbyte/source-e2e-test") - .dockerImageTag(SOURCE_E2E_TEST_CONNECTOR_VERSION) - .documentationUrl(URI.create("https://example.com"))); + public SourceDefinitionRead createE2eSourceDefinition(final UUID workspaceId) throws ApiException { + return apiClient.getSourceDefinitionApi().createCustomSourceDefinition(new CustomSourceDefinitionCreate() + .workspaceId(workspaceId) + .sourceDefinition(new SourceDefinitionCreate() + .name("E2E Test Source") + .dockerRepository("airbyte/source-e2e-test") + .dockerImageTag(SOURCE_E2E_TEST_CONNECTOR_VERSION) + .documentationUrl(URI.create("https://example.com")))); } - public DestinationDefinitionRead createE2eDestinationDefinition() throws ApiException { - return apiClient.getDestinationDefinitionApi().createDestinationDefinition(new DestinationDefinitionCreate() - .name("E2E Test Destination") - .dockerRepository("airbyte/destination-e2e-test") - .dockerImageTag(DESTINATION_E2E_TEST_CONNECTOR_VERSION) - .documentationUrl(URI.create("https://example.com"))); + public DestinationDefinitionRead createE2eDestinationDefinition(final UUID workspaceId) throws ApiException { + return apiClient.getDestinationDefinitionApi().createCustomDestinationDefinition(new CustomDestinationDefinitionCreate() + .workspaceId(workspaceId) + .destinationDefinition(new DestinationDefinitionCreate() + .name("E2E Test Destination") + .dockerRepository("airbyte/destination-e2e-test") + .dockerImageTag(DESTINATION_E2E_TEST_CONNECTOR_VERSION) + .documentationUrl(URI.create("https://example.com")))); } public SourceRead createPostgresSource(final boolean isLegacy) throws ApiException { diff --git a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AdvancedAcceptanceTests.java b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AdvancedAcceptanceTests.java index a78778e7eaae..216159195f1c 100644 --- a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AdvancedAcceptanceTests.java +++ b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AdvancedAcceptanceTests.java @@ -153,8 +153,8 @@ void testManualSync() throws Exception { @RetryingTest(3) @Order(2) void testCheckpointing() throws Exception { - final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(); - final DestinationDefinitionRead destinationDefinition = testHarness.createE2eDestinationDefinition(); + final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(workspaceId); + final DestinationDefinitionRead destinationDefinition = testHarness.createE2eDestinationDefinition(workspaceId); final SourceRead source = testHarness.createSource( "E2E Test Source -" + UUID.randomUUID(), @@ -244,8 +244,8 @@ void testRedactionOfSensitiveRequestBodies() throws Exception { @RetryingTest(3) @Order(4) void testBackpressure() throws Exception { - final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(); - final DestinationDefinitionRead destinationDefinition = testHarness.createE2eDestinationDefinition(); + final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(workspaceId); + final DestinationDefinitionRead destinationDefinition = testHarness.createE2eDestinationDefinition(workspaceId); final SourceRead source = testHarness.createSource( "E2E Test Source -" + UUID.randomUUID(), diff --git a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/BasicAcceptanceTests.java b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/BasicAcceptanceTests.java index 757f2a90018f..aaa219ed07d1 100644 --- a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/BasicAcceptanceTests.java +++ b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/BasicAcceptanceTests.java @@ -371,7 +371,7 @@ void testCreateConnection() throws ApiException { @Test @Order(7) void testCancelSync() throws Exception { - final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(); + final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(workspaceId); final SourceRead source = testHarness.createSource( E2E_TEST_SOURCE + UUID.randomUUID(), @@ -763,7 +763,7 @@ void testUpdateConnectionWhenWorkflowUnreachable() throws Exception { void testManualSyncRepairsWorkflowWhenWorkflowUnreachable() throws Exception { // This test only covers the specific behavior of updating a connection that does not have an // underlying temporal workflow. - final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(); + final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(workspaceId); final SourceRead source = testHarness.createSource( E2E_TEST_SOURCE + UUID.randomUUID(), workspaceId, @@ -837,7 +837,7 @@ void testResetConnectionRepairsWorkflowWhenWorkflowUnreachable() throws Exceptio @Test @Order(18) void testResetCancelsRunningSync() throws Exception { - final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(); + final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(workspaceId); final SourceRead source = testHarness.createSource( E2E_TEST_SOURCE + UUID.randomUUID(), @@ -1476,8 +1476,8 @@ private void waitForSuccessfulJobWithRetries(final UUID connectionId, final int @Test @Disabled void testFailureTimeout() throws Exception { - final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(); - final DestinationDefinitionRead destinationDefinition = testHarness.createE2eDestinationDefinition(); + final SourceDefinitionRead sourceDefinition = testHarness.createE2eSourceDefinition(workspaceId); + final DestinationDefinitionRead destinationDefinition = testHarness.createE2eDestinationDefinition(workspaceId); final SourceRead source = testHarness.createSource( E2E_TEST_SOURCE + UUID.randomUUID(), diff --git a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/VersioningAcceptanceTests.java b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/VersioningAcceptanceTests.java index 43d1d824e34a..9147d1257d82 100644 --- a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/VersioningAcceptanceTests.java +++ b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/VersioningAcceptanceTests.java @@ -9,6 +9,8 @@ import io.airbyte.api.client.AirbyteApiClient; import io.airbyte.api.client.invoker.generated.ApiClient; import io.airbyte.api.client.invoker.generated.ApiException; +import io.airbyte.api.client.model.generated.CustomDestinationDefinitionCreate; +import io.airbyte.api.client.model.generated.CustomSourceDefinitionCreate; import io.airbyte.api.client.model.generated.DestinationDefinitionCreate; import io.airbyte.api.client.model.generated.DestinationDefinitionIdRequestBody; import io.airbyte.api.client.model.generated.DestinationDefinitionRead; @@ -70,13 +72,15 @@ void tearDown() { }) void testCreateSourceSpec(final String dockerImageTag, final String expectedProtocolVersion) throws ApiException, URISyntaxException { - final SourceDefinitionCreate sourceDefinitionCreate = new SourceDefinitionCreate() - .dockerImageTag(dockerImageTag) - .dockerRepository("airbyte/source-e2e-test") - .documentationUrl(new URI("https://hub.docker.com/r/airbyte/source-e2e-test")) - .name("Source E2E Test Connector"); - - final SourceDefinitionRead sourceDefinitionRead = apiClient.getSourceDefinitionApi().createSourceDefinition(sourceDefinitionCreate); + final CustomSourceDefinitionCreate sourceDefinitionCreate = new CustomSourceDefinitionCreate() + .workspaceId(workspaceId) + .sourceDefinition(new SourceDefinitionCreate() + .dockerImageTag(dockerImageTag) + .dockerRepository("airbyte/source-e2e-test") + .documentationUrl(new URI("https://hub.docker.com/r/airbyte/source-e2e-test")) + .name("Source E2E Test Connector")); + + final SourceDefinitionRead sourceDefinitionRead = apiClient.getSourceDefinitionApi().createCustomSourceDefinition(sourceDefinitionCreate); assertEquals(expectedProtocolVersion, sourceDefinitionRead.getProtocolVersion()); final SourceDefinitionIdRequestBody sourceDefinitionReq = new SourceDefinitionIdRequestBody() @@ -96,16 +100,19 @@ void testCreateSourceSpec(final String dockerImageTag, final String expectedProt }) void testCreateDestinationSpec(final String dockerImageTag, final String expectedProtocolVersion) throws ApiException, URISyntaxException { - final DestinationDefinitionCreate destDefinitionCreate = new DestinationDefinitionCreate() - .dockerImageTag(dockerImageTag) - // We are currently using source because the destination-e2e-test connector is facing a regression - // For the purpose of the test, at this moment, using source works because we only check version - .dockerRepository("airbyte/source-e2e-test") - .documentationUrl(new URI("https://hub.docker.com/r/airbyte/destination-e2e-test")) - .name("Dest E2E Test Connector"); + final CustomDestinationDefinitionCreate destDefinitionCreate = + new CustomDestinationDefinitionCreate() + .workspaceId(workspaceId) + .destinationDefinition(new DestinationDefinitionCreate() + .dockerImageTag(dockerImageTag) + // We are currently using source because the destination-e2e-test connector is facing a regression + // For the purpose of the test, at this moment, using source works because we only check version + .dockerRepository("airbyte/source-e2e-test") + .documentationUrl(new URI("https://hub.docker.com/r/airbyte/destination-e2e-test")) + .name("Dest E2E Test Connector")); final DestinationDefinitionRead destDefinitionRead = - apiClient.getDestinationDefinitionApi().createDestinationDefinition(destDefinitionCreate); + apiClient.getDestinationDefinitionApi().createCustomDestinationDefinition(destDefinitionCreate); assertEquals(expectedProtocolVersion, destDefinitionRead.getProtocolVersion()); final DestinationDefinitionIdRequestBody destDefinitionReq = new DestinationDefinitionIdRequestBody() diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index b1b26c98dd65..4254a82bbd63 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -256,8 +256,6 @@

Destination

DestinationDefinition

DestinationDefinitionSpecification

@@ -343,8 +340,6 @@

Source

SourceDefinition

SourceDefinitionSpecification

@@ -2666,139 +2660,6 @@

422

InvalidInputExceptionInfo
-
-
- Up -
post /v1/destination_definitions/create
-
Creates a destinationsDefinition (createDestinationDefinition)
-
- - -

Consumes

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

Request body

-
-
DestinationDefinitionCreate DestinationDefinitionCreate (optional)
- -
Body Parameter
- -
- - - - -

Return type

- - - - -

Example data

-
Content-Type: application/json
-
{
-  "resourceRequirements" : {
-    "default" : {
-      "cpu_limit" : "cpu_limit",
-      "memory_request" : "memory_request",
-      "memory_limit" : "memory_limit",
-      "cpu_request" : "cpu_request"
-    },
-    "jobSpecific" : [ {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    }, {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    } ]
-  },
-  "documentationUrl" : "https://openapi-generator.tech",
-  "dockerImageTag" : "dockerImageTag",
-  "releaseDate" : "2000-01-23",
-  "dockerRepository" : "dockerRepository",
-  "name" : "name",
-  "icon" : "icon",
-  "protocolVersion" : "protocolVersion",
-  "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
-}
- -

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 - DestinationDefinitionRead -

422

- Input failed validation - InvalidInputExceptionInfo -
-
-
-
- Up -
post /v1/destination_definitions/delete_custom
-
Delete a custom destination definition for the given workspace (deleteCustomDestinationDefinition)
-
- - -

Consumes

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

Request body

-
-
DestinationDefinitionIdWithWorkspaceId DestinationDefinitionIdWithWorkspaceId (required)
- -
Body Parameter
- -
- - - - - - - - -

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

-

204

- The destination was deleted successfully. - -

404

- Object with given id was not found. - NotFoundKnownExceptionInfo -

422

- Input failed validation - InvalidInputExceptionInfo -
-
Up @@ -3608,94 +3469,6 @@

422

InvalidInputExceptionInfo

-
-
- Up -
post /v1/destination_definitions/update_custom
-
Update a custom destinationDefinition for the given workspace (updateCustomDestinationDefinition)
-
- - -

Consumes

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

Request body

-
-
CustomDestinationDefinitionUpdate CustomDestinationDefinitionUpdate (optional)
- -
Body Parameter
- -
- - - - -

Return type

- - - - -

Example data

-
Content-Type: application/json
-
{
-  "resourceRequirements" : {
-    "default" : {
-      "cpu_limit" : "cpu_limit",
-      "memory_request" : "memory_request",
-      "memory_limit" : "memory_limit",
-      "cpu_request" : "cpu_request"
-    },
-    "jobSpecific" : [ {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    }, {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    } ]
-  },
-  "documentationUrl" : "https://openapi-generator.tech",
-  "dockerImageTag" : "dockerImageTag",
-  "releaseDate" : "2000-01-23",
-  "dockerRepository" : "dockerRepository",
-  "name" : "name",
-  "icon" : "icon",
-  "protocolVersion" : "protocolVersion",
-  "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
-}
- -

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 - DestinationDefinitionRead -

404

- Object with given id was not found. - NotFoundKnownExceptionInfo -

422

- Input failed validation - InvalidInputExceptionInfo -
-
Up @@ -7096,140 +6869,6 @@

422

InvalidInputExceptionInfo

-
-
- Up -
post /v1/source_definitions/create
-
Creates a sourceDefinition (createSourceDefinition)
-
- - -

Consumes

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

Request body

-
-
SourceDefinitionCreate SourceDefinitionCreate (optional)
- -
Body Parameter
- -
- - - - -

Return type

- - - - -

Example data

-
Content-Type: application/json
-
{
-  "resourceRequirements" : {
-    "default" : {
-      "cpu_limit" : "cpu_limit",
-      "memory_request" : "memory_request",
-      "memory_limit" : "memory_limit",
-      "cpu_request" : "cpu_request"
-    },
-    "jobSpecific" : [ {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    }, {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    } ]
-  },
-  "documentationUrl" : "https://openapi-generator.tech",
-  "dockerImageTag" : "dockerImageTag",
-  "releaseDate" : "2000-01-23",
-  "sourceType" : "api",
-  "dockerRepository" : "dockerRepository",
-  "name" : "name",
-  "icon" : "icon",
-  "protocolVersion" : "protocolVersion",
-  "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
-}
- -

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 - SourceDefinitionRead -

422

- Input failed validation - InvalidInputExceptionInfo -
-
-
-
- Up -
post /v1/source_definitions/delete_custom
-
Delete a custom source definition for the given workspace (deleteCustomSourceDefinition)
-
- - -

Consumes

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

Request body

-
-
SourceDefinitionIdWithWorkspaceId SourceDefinitionIdWithWorkspaceId (required)
- -
Body Parameter
- -
- - - - - - - - -

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

-

204

- The resource was deleted successfully. - -

404

- Object with given id was not found. - NotFoundKnownExceptionInfo -

422

- Input failed validation - InvalidInputExceptionInfo -
-
Up @@ -8050,95 +7689,6 @@

422

InvalidInputExceptionInfo

-
-
- Up -
post /v1/source_definitions/update_custom
-
Update a custom sourceDefinition for the given workspace (updateCustomSourceDefinition)
-
- - -

Consumes

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

Request body

-
-
CustomSourceDefinitionUpdate CustomSourceDefinitionUpdate (optional)
- -
Body Parameter
- -
- - - - -

Return type

- - - - -

Example data

-
Content-Type: application/json
-
{
-  "resourceRequirements" : {
-    "default" : {
-      "cpu_limit" : "cpu_limit",
-      "memory_request" : "memory_request",
-      "memory_limit" : "memory_limit",
-      "cpu_request" : "cpu_request"
-    },
-    "jobSpecific" : [ {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    }, {
-      "resourceRequirements" : {
-        "cpu_limit" : "cpu_limit",
-        "memory_request" : "memory_request",
-        "memory_limit" : "memory_limit",
-        "cpu_request" : "cpu_request"
-      }
-    } ]
-  },
-  "documentationUrl" : "https://openapi-generator.tech",
-  "dockerImageTag" : "dockerImageTag",
-  "releaseDate" : "2000-01-23",
-  "sourceType" : "api",
-  "dockerRepository" : "dockerRepository",
-  "name" : "name",
-  "icon" : "icon",
-  "protocolVersion" : "protocolVersion",
-  "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
-}
- -

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 - SourceDefinitionRead -

404

- Object with given id was not found. - NotFoundKnownExceptionInfo -

422

- Input failed validation - InvalidInputExceptionInfo -
-
-
-

CustomDestinationDefinitionUpdate - Up

-
-
-
workspaceId
UUID format: uuid
-
destinationDefinition
-
-
-
-

CustomSourceDefinitionUpdate - Up

-
-
-
workspaceId
UUID format: uuid
-
sourceDefinition
-
-