From f7433f203c00cf3251cbd1a22af68b53e3c943ea Mon Sep 17 00:00:00 2001 From: git-phu Date: Wed, 16 Mar 2022 12:38:47 -0700 Subject: [PATCH 01/16] listActorDefinitions apis now require workspaceId - listSourceDefinitions takes workspaceId - listDestinationDefinitions takes workspaceId --- airbyte-api/src/main/openapi/config.yaml | 10 ++++++++ .../airbyte/server/apis/ConfigurationApi.java | 4 ++-- .../test/acceptance/AcceptanceTests.java | 9 ++++--- .../MigrationAcceptanceTest.java | 15 +++++++----- .../api/generated-api-html/index.html | 24 +++++++++++++++++++ 5 files changed, 51 insertions(+), 11 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index c1cd8f8974b9..7d2abe733565 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -296,6 +296,11 @@ paths: - source_definition summary: List all the sourceDefinitions the current Airbyte deployment is configured to use operationId: listSourceDefinitions + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WorkspaceIdRequestBody" responses: "200": description: Successful operation @@ -654,6 +659,11 @@ paths: - destination_definition summary: List all the destinationDefinitions the current Airbyte deployment is configured to use operationId: listDestinationDefinitions + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WorkspaceIdRequestBody" responses: "200": description: Successful operation 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 bc757db728e2..7c04f32760b7 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 @@ -305,7 +305,7 @@ public NotificationRead tryNotificationConfig(final Notification notification) { // SOURCE @Override - public SourceDefinitionReadList listSourceDefinitions() { + public SourceDefinitionReadList listSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { return execute(sourceDefinitionsHandler::listSourceDefinitions); } @@ -452,7 +452,7 @@ public DbMigrationExecutionRead executeMigrations(final DbMigrationRequestBody r // DESTINATION @Override - public DestinationDefinitionReadList listDestinationDefinitions() { + public DestinationDefinitionReadList listDestinationDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { return execute(destinationDefinitionsHandler::listDestinationDefinitions); } diff --git a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java index 7024560abe23..a90d946cf86a 100644 --- a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java +++ b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java @@ -69,6 +69,7 @@ import io.airbyte.api.client.model.SourceIdRequestBody; import io.airbyte.api.client.model.SourceRead; import io.airbyte.api.client.model.SyncMode; +import io.airbyte.api.client.model.WorkspaceIdRequestBody; import io.airbyte.commons.features.EnvVariableFeatureFlags; import io.airbyte.commons.features.FeatureFlags; import io.airbyte.commons.json.Jsons; @@ -782,7 +783,7 @@ public void testCheckpointing() throws Exception { // now cancel it so that we freeze state! try { apiClient.getJobsApi().cancelJob(new JobIdRequestBody().id(connectionSyncRead1.getJob().getId())); - } catch (Exception e) {} + } catch (final Exception e) {} final ConnectionState connectionState = waitForConnectionState(apiClient, connectionId); @@ -1306,7 +1307,8 @@ private OperationRead createOperation() throws ApiException { } private UUID getDestinationDefId() throws ApiException { - return apiClient.getDestinationDefinitionApi().listDestinationDefinitions().getDestinationDefinitions() + return apiClient.getDestinationDefinitionApi().listDestinationDefinitions( + new WorkspaceIdRequestBody().workspaceId(workspaceId)).getDestinationDefinitions() .stream() .filter(dr -> dr.getName().toLowerCase().contains("postgres")) .findFirst() @@ -1436,7 +1438,8 @@ private SourceRead createSource(final String name, final UUID workspaceId, final } private UUID getPostgresSourceDefinitionId() throws ApiException { - return apiClient.getSourceDefinitionApi().listSourceDefinitions().getSourceDefinitions() + return apiClient.getSourceDefinitionApi().listSourceDefinitions( + new WorkspaceIdRequestBody().workspaceId(workspaceId)).getSourceDefinitions() .stream() .filter(sourceRead -> sourceRead.getName().equalsIgnoreCase("postgres")) .findFirst() diff --git a/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java b/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java index a10185ce2bd2..9b2610c20718 100644 --- a/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java +++ b/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java @@ -190,14 +190,15 @@ private static void assertHealthy() throws ApiException { private static void assertDataFromApi(final ApiClient apiClient) throws ApiException { final WorkspaceIdRequestBody workspaceIdRequestBody = assertWorkspaceInformation(apiClient); - assertSourceDefinitionInformation(apiClient); - assertDestinationDefinitionInformation(apiClient); + assertSourceDefinitionInformation(apiClient, workspaceIdRequestBody); + assertDestinationDefinitionInformation(apiClient, workspaceIdRequestBody); assertConnectionInformation(apiClient, workspaceIdRequestBody); } - private static void assertSourceDefinitionInformation(final ApiClient apiClient) throws ApiException { + private static void assertSourceDefinitionInformation(final ApiClient apiClient, final WorkspaceIdRequestBody workspaceIdRequestBody) + throws ApiException { final SourceDefinitionApi sourceDefinitionApi = new SourceDefinitionApi(apiClient); - final List sourceDefinitions = sourceDefinitionApi.listSourceDefinitions().getSourceDefinitions(); + final List sourceDefinitions = sourceDefinitionApi.listSourceDefinitions(workspaceIdRequestBody).getSourceDefinitions(); assertTrue(sourceDefinitions.size() >= 58); boolean foundMysqlSourceDefinition = false; boolean foundPostgresSourceDefinition = false; @@ -224,9 +225,11 @@ private static void assertSourceDefinitionInformation(final ApiClient apiClient) assertTrue(foundPostgresSourceDefinition); } - private static void assertDestinationDefinitionInformation(final ApiClient apiClient) throws ApiException { + private static void assertDestinationDefinitionInformation(final ApiClient apiClient, final WorkspaceIdRequestBody workspaceIdRequestBody) + throws ApiException { final DestinationDefinitionApi destinationDefinitionApi = new DestinationDefinitionApi(apiClient); - final List destinationDefinitions = destinationDefinitionApi.listDestinationDefinitions().getDestinationDefinitions(); + final List destinationDefinitions = + destinationDefinitionApi.listDestinationDefinitions(workspaceIdRequestBody).getDestinationDefinitions(); assertTrue(destinationDefinitions.size() >= 10); boolean foundPostgresDestinationDefinition = false; boolean foundLocalCSVDestinationDefinition = false; diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 72b355632265..637ef4ca717e 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -2797,7 +2797,19 @@

422

+

Consumes

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

Request body

+
+
WorkspaceIdRequestBody WorkspaceIdRequestBody (optional)
+ +
Body Parameter
+ +
@@ -6136,7 +6148,19 @@

200

+

Consumes

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

Request body

+
+
WorkspaceIdRequestBody WorkspaceIdRequestBody (optional)
+ +
Body Parameter
+ +
From ff61ece4fbca345e1271e72448f10bd0976830e3 Mon Sep 17 00:00:00 2001 From: git-phu Date: Wed, 16 Mar 2022 19:08:19 -0700 Subject: [PATCH 02/16] actorDefinitionCreate apis now require workspaceId - SourceDefinitionCreate takes workspaceId - DestinationDefinitionCreate takes workspaceId --- airbyte-api/src/main/openapi/config.yaml | 6 ++++++ .../java/io/airbyte/test/acceptance/AcceptanceTests.java | 6 ++++-- docs/reference/api/generated-api-html/index.html | 6 ++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 7d2abe733565..5095d2fecc8c 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -2118,11 +2118,14 @@ components: SourceDefinitionCreate: type: object required: + - workspaceId - name - dockerRepository - dockerImageTag - documentationUrl properties: + workspaceId: + $ref: "#/components/schemas/WorkspaceId" name: type: string dockerRepository: @@ -2402,11 +2405,14 @@ components: DestinationDefinitionCreate: type: object required: + - workspaceId - name - dockerRepository - dockerImageTag - documentationUrl properties: + workspaceId: + $ref: "#/components/schemas/WorkspaceId" name: type: string dockerRepository: diff --git a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java index a90d946cf86a..300281334ec6 100644 --- a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java +++ b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java @@ -1407,7 +1407,8 @@ private SourceDefinitionRead createE2eSourceDefinition() throws ApiException { .name("E2E Test Source") .dockerRepository("airbyte/source-e2e-test") .dockerImageTag(SOURCE_E2E_TEST_CONNECTOR_VERSION) - .documentationUrl(URI.create("https://example.com"))); + .documentationUrl(URI.create("https://example.com")) + .workspaceId(workspaceId)); } private DestinationDefinitionRead createE2eDestinationDefinition() throws ApiException { @@ -1415,7 +1416,8 @@ private DestinationDefinitionRead createE2eDestinationDefinition() throws ApiExc .name("E2E Test Destination") .dockerRepository("airbyte/destination-e2e-test") .dockerImageTag(DESTINATION_E2E_TEST_CONNECTOR_VERSION) - .documentationUrl(URI.create("https://example.com"))); + .documentationUrl(URI.create("https://example.com")) + .workspaceId(workspaceId)); } private SourceRead createPostgresSource() throws ApiException { diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 637ef4ca717e..5a4895cf75ce 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -8798,7 +8798,8 @@

DestinationCreate - DestinationDefinitionCreate - Up

-
name
+
workspaceId
UUID format: uuid
+
name
dockerRepository
dockerImageTag
documentationUrl
URI format: uri
@@ -9319,7 +9320,8 @@

SourceCreate - SourceDefinitionCreate - Up

-
name
+
workspaceId
UUID format: uuid
+
name
dockerRepository
dockerImageTag
documentationUrl
URI format: uri
From 84b35edda305bdb3260bc56387138618275f0b67 Mon Sep 17 00:00:00 2001 From: git-phu Date: Wed, 16 Mar 2022 19:12:18 -0700 Subject: [PATCH 03/16] source_definitions/list_opt_in --- airbyte-api/src/main/openapi/config.yaml | 37 +++++ .../airbyte/server/apis/ConfigurationApi.java | 6 + .../api/generated-api-html/index.html | 138 ++++++++++++++++++ 3 files changed, 181 insertions(+) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 5095d2fecc8c..83e0b7990d91 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -322,6 +322,24 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceDefinitionReadList" + /v1/source_definitions/list_opt_in: + post: + tags: + - source_definition + summary: List all opt-in sourceDefinitions along with the current workspace's opt-in statuses + operationId: listSourceDefinitionOptIns + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WorkspaceIdRequestBody" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionOptInReadList" /v1/source_definitions/get: post: tags: @@ -2190,6 +2208,25 @@ components: type: array items: $ref: "#/components/schemas/SourceDefinitionRead" + SourceDefinitionOptInRead: + type: object + required: + - sourceDefinition + - optIn + properties: + sourceDefinition: + $ref: "#/components/schemas/SourceDefinitionRead" + optIn: + type: boolean + SourceDefinitionOptInReadList: + type: object + required: + - sourceDefinitionOptIns + properties: + sourceDefinitionOptIns: + type: array + items: + $ref: "#/components/schemas/SourceDefinitionOptInRead" # SOURCE SPECIFICATION SourceDefinitionSpecification: description: The specification for what values are required to configure the sourceDefinition. 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 7c04f32760b7..98177191bf36 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 @@ -58,6 +58,7 @@ import io.airbyte.api.model.SourceCreate; import io.airbyte.api.model.SourceDefinitionCreate; import io.airbyte.api.model.SourceDefinitionIdRequestBody; +import io.airbyte.api.model.SourceDefinitionOptInReadList; import io.airbyte.api.model.SourceDefinitionRead; import io.airbyte.api.model.SourceDefinitionReadList; import io.airbyte.api.model.SourceDefinitionSpecificationRead; @@ -314,6 +315,11 @@ public SourceDefinitionReadList listLatestSourceDefinitions() { return execute(sourceDefinitionsHandler::listLatestSourceDefinitions); } + @Override + public SourceDefinitionOptInReadList listSourceDefinitionOptIns(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return null; + } + @Override public SourceDefinitionRead getSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { return execute(() -> sourceDefinitionsHandler.getSourceDefinition(sourceDefinitionIdRequestBody)); diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 5a4895cf75ce..bf5d6c052b24 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -336,6 +336,7 @@

SourceDefinition

  • post /v1/source_definitions/delete
  • post /v1/source_definitions/get
  • post /v1/source_definitions/list_latest
  • +
  • post /v1/source_definitions/list_opt_in
  • post /v1/source_definitions/list
  • post /v1/source_definitions/update
  • @@ -6140,6 +6141,126 @@

    200

    SourceDefinitionReadList

    +
    +
    + Up +
    post /v1/source_definitions/list_opt_in
    +
    List all opt-in sourceDefinitions along with the current workspace's opt-in statuses (listSourceDefinitionOptIns)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    WorkspaceIdRequestBody WorkspaceIdRequestBody (optional)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "sourceDefinitionOptIns" : [ {
    +    "sourceDefinition" : {
    +      "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",
    +      "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +    },
    +    "optIn" : true
    +  }, {
    +    "sourceDefinition" : {
    +      "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",
    +      "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +    },
    +    "optIn" : true
    +  } ]
    +}
    + +

    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 + SourceDefinitionOptInReadList +
    +
    +
    +

    SourceDefinitionOptInRead - Up

    +
    +
    +
    sourceDefinition
    +
    optIn
    +
    +
    +

    SourceDefinitionRead - Up

    From 1acbc47cd47a88b1604d9ccce0ea264cd961194c Mon Sep 17 00:00:00 2001 From: git-phu Date: Wed, 16 Mar 2022 19:13:08 -0700 Subject: [PATCH 04/16] destination_definitions/list_opt_in --- airbyte-api/src/main/openapi/config.yaml | 37 +++++ .../airbyte/server/apis/ConfigurationApi.java | 6 + .../api/generated-api-html/index.html | 138 ++++++++++++++++++ 3 files changed, 181 insertions(+) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 83e0b7990d91..2cd6d5eb9084 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -703,6 +703,24 @@ paths: application/json: schema: $ref: "#/components/schemas/DestinationDefinitionReadList" + /v1/destination_definitions/list_opt_in: + post: + tags: + - destination_definition + summary: List all opt-in destinationDefinitions along with the current workspace's opt-in statuses + operationId: listDestinationDefinitionOptIns + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WorkspaceIdRequestBody" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionOptInReadList" /v1/destination_definitions/get: post: tags: @@ -2514,6 +2532,25 @@ components: type: array items: $ref: "#/components/schemas/DestinationDefinitionRead" + DestinationDefinitionOptInRead: + type: object + required: + - destinationDefinition + - optIn + properties: + destinationDefinition: + $ref: "#/components/schemas/DestinationDefinitionRead" + optIn: + type: boolean + DestinationDefinitionOptInReadList: + type: object + required: + - destinationDefinitionOptIns + properties: + destinationDefinitionOptIns: + type: array + items: + $ref: "#/components/schemas/DestinationDefinitionOptInRead" # DESTINATION DEFINITION SPECIFICATION DestinationDefinitionSpecification: description: The specification for what values are required to configure the destinationDefinition. 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 98177191bf36..a348513d2fdf 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 @@ -23,6 +23,7 @@ import io.airbyte.api.model.DestinationCreate; import io.airbyte.api.model.DestinationDefinitionCreate; import io.airbyte.api.model.DestinationDefinitionIdRequestBody; +import io.airbyte.api.model.DestinationDefinitionOptInReadList; import io.airbyte.api.model.DestinationDefinitionRead; import io.airbyte.api.model.DestinationDefinitionReadList; import io.airbyte.api.model.DestinationDefinitionSpecificationRead; @@ -467,6 +468,11 @@ public DestinationDefinitionReadList listLatestDestinationDefinitions() { return execute(destinationDefinitionsHandler::listLatestDestinationDefinitions); } + @Override + public DestinationDefinitionOptInReadList listDestinationDefinitionOptIns(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return null; + } + @Override public DestinationDefinitionRead getDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { return execute(() -> destinationDefinitionsHandler.getDestinationDefinition(destinationDefinitionIdRequestBody)); diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index bf5d6c052b24..a6ed8ed69c57 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -262,6 +262,7 @@

    DestinationDefinition

  • post /v1/destination_definitions/create
  • post /v1/destination_definitions/delete
  • post /v1/destination_definitions/get
  • +
  • post /v1/destination_definitions/list_opt_in
  • post /v1/destination_definitions/list
  • post /v1/destination_definitions/list_latest
  • post /v1/destination_definitions/update
  • @@ -2790,6 +2791,126 @@

    422

    InvalidInputExceptionInfo

    +
    +
    + Up +
    post /v1/destination_definitions/list_opt_in
    +
    List all opt-in destinationDefinitions along with the current workspace's opt-in statuses (listDestinationDefinitionOptIns)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    WorkspaceIdRequestBody WorkspaceIdRequestBody (optional)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "destinationDefinitionOptIns" : [ {
    +    "optIn" : true,
    +    "destinationDefinition" : {
    +      "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",
    +      "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +    }
    +  }, {
    +    "optIn" : true,
    +    "destinationDefinition" : {
    +      "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",
    +      "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 + DestinationDefinitionOptInReadList +
    +
    +
    +

    DestinationDefinitionOptInRead - Up

    +
    +
    +
    destinationDefinition
    +
    optIn
    +
    +
    +

    DestinationDefinitionRead - Up

    From 9431fcb6ff839591d901b0ed4a0550a517846487 Mon Sep 17 00:00:00 2001 From: git-phu Date: Wed, 16 Mar 2022 19:14:12 -0700 Subject: [PATCH 05/16] create/delete source definition grants --- airbyte-api/src/main/openapi/config.yaml | 52 ++++++ .../airbyte/server/apis/ConfigurationApi.java | 12 ++ .../api/generated-api-html/index.html | 149 ++++++++++++++++++ 3 files changed, 213 insertions(+) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 2cd6d5eb9084..85bba6ecb340 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -340,6 +340,48 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceDefinitionOptInReadList" + /v1/source_definitions/grant_definition: + post: + tags: + - source_definition + summary: Opt in to a non-public, non-custom sourceDefinition + operationId: createSourceDefinitionOptIn + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionOptInUpdate" + required: true + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionOptInRead" + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" + /v1/source_definitions/revoke_definition: + post: + tags: + - source_definition + summary: Opt out of a non-public, non-custom sourceDefinition + operationId: deleteSourceDefinitionOptIn + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionOptInUpdate" + required: true + responses: + "204": + description: The resource was deleted successfully. + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/source_definitions/get: post: tags: @@ -2245,6 +2287,16 @@ components: type: array items: $ref: "#/components/schemas/SourceDefinitionOptInRead" + SourceDefinitionOptInUpdate: + type: object + required: + - sourceDefinitionId + - workspaceId + properties: + sourceDefinitionId: + $ref: "#/components/schemas/SourceDefinitionId" + workspaceId: + $ref: "#/components/schemas/WorkspaceId" # SOURCE SPECIFICATION SourceDefinitionSpecification: description: The specification for what values are required to configure the sourceDefinition. 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 a348513d2fdf..9ac8bb6db81d 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 @@ -59,7 +59,9 @@ import io.airbyte.api.model.SourceCreate; import io.airbyte.api.model.SourceDefinitionCreate; import io.airbyte.api.model.SourceDefinitionIdRequestBody; +import io.airbyte.api.model.SourceDefinitionOptInRead; import io.airbyte.api.model.SourceDefinitionOptInReadList; +import io.airbyte.api.model.SourceDefinitionOptInUpdate; import io.airbyte.api.model.SourceDefinitionRead; import io.airbyte.api.model.SourceDefinitionReadList; import io.airbyte.api.model.SourceDefinitionSpecificationRead; @@ -331,6 +333,11 @@ public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate return execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(sourceDefinitionCreate)); } + @Override + public SourceDefinitionOptInRead createSourceDefinitionOptIn(final SourceDefinitionOptInUpdate sourceDefinitionOptInUpdate) { + return null; + } + @Override public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate sourceDefinitionUpdate) { return execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); @@ -344,6 +351,11 @@ public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDef }); } + @Override + public void deleteSourceDefinitionOptIn(final SourceDefinitionOptInUpdate sourceDefinitionOptInUpdate) { + + } + // SOURCE SPECIFICATION @Override diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index a6ed8ed69c57..a8e265d45e89 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -334,7 +334,9 @@

    Source

    SourceDefinition


    +
    +
    + Up +
    post /v1/source_definitions/grant_definition
    +
    Opt in to a non-public, non-custom sourceDefinition (createSourceDefinitionOptIn)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    SourceDefinitionOptInUpdate SourceDefinitionOptInUpdate (required)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "sourceDefinition" : {
    +    "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",
    +    "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +  },
    +  "optIn" : true
    +}
    + +

    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 + SourceDefinitionOptInRead +

    404

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

    422

    + Input failed validation + InvalidInputExceptionInfo +
    +
    Up @@ -6051,6 +6143,54 @@

    Request body

    + + + +

    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 +
    post /v1/source_definitions/revoke_definition
    +
    Opt out of a non-public, non-custom sourceDefinition (deleteSourceDefinitionOptIn)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    SourceDefinitionOptInUpdate SourceDefinitionOptInUpdate (required)
    + +
    Body Parameter
    + +
    + + + + + @@ -8644,6 +8784,7 @@

    Table of Contents

  • SourceDefinitionIdRequestBody -
  • SourceDefinitionOptInRead -
  • SourceDefinitionOptInReadList -
  • +
  • SourceDefinitionOptInUpdate -
  • SourceDefinitionRead -
  • SourceDefinitionReadList -
  • SourceDefinitionSpecificationRead -
  • @@ -9612,6 +9753,14 @@

    SourceDefinitionOptInReadList<
    sourceDefinitionOptIns

    +
    +

    SourceDefinitionOptInUpdate - Up

    +
    +
    +
    sourceDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    +
    +

    SourceDefinitionRead - Up

    From 4c97d37bfd43cc30dcf938729ba32203113181a5 Mon Sep 17 00:00:00 2001 From: git-phu Date: Wed, 16 Mar 2022 19:14:34 -0700 Subject: [PATCH 06/16] create/delete destination definition grants --- airbyte-api/src/main/openapi/config.yaml | 52 ++++++ .../airbyte/server/apis/ConfigurationApi.java | 12 ++ .../api/generated-api-html/index.html | 149 ++++++++++++++++++ 3 files changed, 213 insertions(+) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 85bba6ecb340..88d8b36531ef 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -763,6 +763,48 @@ paths: application/json: schema: $ref: "#/components/schemas/DestinationDefinitionOptInReadList" + /v1/destination_definitions/grant_definition: + post: + tags: + - destination_definition + summary: Opt in to a non-public, non-custom destinationDefinition + operationId: createDestinationDefinitionOptIn + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionOptInUpdate" + required: true + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionOptInRead" + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" + /v1/destination_definitions/revoke_definition: + post: + tags: + - destination_definition + summary: Opt out of a non-public, non-custom destinationDefinition + operationId: deleteDestinationDefinitionOptIn + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionOptInUpdate" + required: true + responses: + "204": + description: The resource was deleted successfully. + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definitions/get: post: tags: @@ -2603,6 +2645,16 @@ components: type: array items: $ref: "#/components/schemas/DestinationDefinitionOptInRead" + DestinationDefinitionOptInUpdate: + type: object + required: + - destinationDefinitionId + - workspaceId + properties: + destinationDefinitionId: + $ref: "#/components/schemas/DestinationDefinitionId" + workspaceId: + $ref: "#/components/schemas/WorkspaceId" # DESTINATION DEFINITION SPECIFICATION DestinationDefinitionSpecification: description: The specification for what values are required to configure the destinationDefinition. 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 9ac8bb6db81d..56b4e874632f 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 @@ -23,7 +23,9 @@ import io.airbyte.api.model.DestinationCreate; import io.airbyte.api.model.DestinationDefinitionCreate; import io.airbyte.api.model.DestinationDefinitionIdRequestBody; +import io.airbyte.api.model.DestinationDefinitionOptInRead; import io.airbyte.api.model.DestinationDefinitionOptInReadList; +import io.airbyte.api.model.DestinationDefinitionOptInUpdate; import io.airbyte.api.model.DestinationDefinitionRead; import io.airbyte.api.model.DestinationDefinitionReadList; import io.airbyte.api.model.DestinationDefinitionSpecificationRead; @@ -495,6 +497,11 @@ public DestinationDefinitionRead createDestinationDefinition(final DestinationDe return execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(destinationDefinitionCreate)); } + @Override + public DestinationDefinitionOptInRead createDestinationDefinitionOptIn(final DestinationDefinitionOptInUpdate destinationDefinitionOptInUpdate) { + return null; + } + @Override public DestinationDefinitionRead updateDestinationDefinition(final DestinationDefinitionUpdate destinationDefinitionUpdate) { return execute(() -> destinationDefinitionsHandler.updateDestinationDefinition(destinationDefinitionUpdate)); @@ -508,6 +515,11 @@ public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody }); } + @Override + public void deleteDestinationDefinitionOptIn(final DestinationDefinitionOptInUpdate destinationDefinitionOptInUpdate) { + + } + // DESTINATION SPECIFICATION @Override diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index a8e265d45e89..2f1ce6141d65 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -260,7 +260,9 @@

    Destination

    DestinationDefinition


    +
    +
    + Up +
    post /v1/destination_definitions/grant_definition
    +
    Opt in to a non-public, non-custom destinationDefinition (createDestinationDefinitionOptIn)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    DestinationDefinitionOptInUpdate DestinationDefinitionOptInUpdate (required)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "optIn" : true,
    +  "destinationDefinition" : {
    +    "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",
    +    "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 + DestinationDefinitionOptInRead +

    404

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

    422

    + Input failed validation + InvalidInputExceptionInfo +
    +
    Up @@ -2684,6 +2776,54 @@

    Request body

    + + + +

    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 +
    post /v1/destination_definitions/revoke_definition
    +
    Opt out of a non-public, non-custom destinationDefinition (deleteDestinationDefinitionOptIn)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    DestinationDefinitionOptInUpdate DestinationDefinitionOptInUpdate (required)
    + +
    Body Parameter
    + +
    + + + + + @@ -8722,6 +8862,7 @@

    Table of Contents

  • DestinationDefinitionIdRequestBody -
  • DestinationDefinitionOptInRead -
  • DestinationDefinitionOptInReadList -
  • +
  • DestinationDefinitionOptInUpdate -
  • DestinationDefinitionRead -
  • DestinationDefinitionReadList -
  • DestinationDefinitionSpecificationRead -
  • @@ -9216,6 +9357,14 @@

    DestinationDefinitionOptI
    destinationDefinitionOptIns

    +
    +

    DestinationDefinitionOptInUpdate - Up

    +
    +
    +
    destinationDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    +
    +

    DestinationDefinitionRead - Up

    From 3df0873db46a69a84714336a46a9f35322feddfa Mon Sep 17 00:00:00 2001 From: git-phu Date: Fri, 18 Mar 2022 15:17:46 -0700 Subject: [PATCH 07/16] PR feedback - remove use of opt-in - update description of definition list apis --- airbyte-api/src/main/openapi/config.yaml | 82 +- .../airbyte/server/apis/ConfigurationApi.java | 25 +- .../api/generated-api-html/index.html | 946 +++++++++--------- 3 files changed, 528 insertions(+), 525 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 88d8b36531ef..97369c650a7a 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -294,7 +294,7 @@ paths: post: tags: - source_definition - summary: List all the sourceDefinitions the current Airbyte deployment is configured to use + summary: List all the sourceDefinitions the given workspace is configured to use operationId: listSourceDefinitions requestBody: content: @@ -322,12 +322,12 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceDefinitionReadList" - /v1/source_definitions/list_opt_in: + /v1/source_definitions/list_private: post: tags: - source_definition - summary: List all opt-in sourceDefinitions along with the current workspace's opt-in statuses - operationId: listSourceDefinitionOptIns + summary: List all private, non-custom sourceDefinitions, and for each indicate whether the given workspace has a grant for using the definition + operationId: listPrivateSourceDefinitions requestBody: content: application/json: @@ -339,18 +339,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceDefinitionOptInReadList" + $ref: "#/components/schemas/PrivateSourceDefinitionReadList" /v1/source_definitions/grant_definition: post: tags: - source_definition - summary: Opt in to a non-public, non-custom sourceDefinition - operationId: createSourceDefinitionOptIn + summary: grant a private, non-custom sourceDefinition to a given workspace + operationId: grantSourceDefinitionToWorkspace requestBody: content: application/json: schema: - $ref: "#/components/schemas/SourceDefinitionOptInUpdate" + $ref: "#/components/schemas/SourceDefinitionGrantUpdate" required: true responses: "200": @@ -358,7 +358,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceDefinitionOptInRead" + $ref: "#/components/schemas/PrivateSourceDefinitionRead" "404": $ref: "#/components/responses/NotFoundResponse" "422": @@ -367,13 +367,13 @@ paths: post: tags: - source_definition - summary: Opt out of a non-public, non-custom sourceDefinition - operationId: deleteSourceDefinitionOptIn + summary: revoke a grant to a private, non-custom sourceDefinition from a given workspace + operationId: revokeSourceDefinitionFromWorkspace requestBody: content: application/json: schema: - $ref: "#/components/schemas/SourceDefinitionOptInUpdate" + $ref: "#/components/schemas/SourceDefinitionGrantUpdate" required: true responses: "204": @@ -717,7 +717,7 @@ paths: post: tags: - destination_definition - summary: List all the destinationDefinitions the current Airbyte deployment is configured to use + summary: List all the destinationDefinitions the given workspace is configured to use operationId: listDestinationDefinitions requestBody: content: @@ -745,12 +745,14 @@ paths: application/json: schema: $ref: "#/components/schemas/DestinationDefinitionReadList" - /v1/destination_definitions/list_opt_in: + /v1/destination_definitions/list_private: post: tags: - destination_definition - summary: List all opt-in destinationDefinitions along with the current workspace's opt-in statuses - operationId: listDestinationDefinitionOptIns + summary: + List all private, non-custom destinationDefinitions, and for each indicate whether the given workspace has a grant for using the + definition + operationId: listPrivateDestinationDefinitions requestBody: content: application/json: @@ -762,18 +764,18 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/DestinationDefinitionOptInReadList" + $ref: "#/components/schemas/PrivateDestinationDefinitionReadList" /v1/destination_definitions/grant_definition: post: tags: - destination_definition - summary: Opt in to a non-public, non-custom destinationDefinition - operationId: createDestinationDefinitionOptIn + summary: grant a private, non-custom destinationDefinition to a given workspace + operationId: grantDestinationDefinitionToWorkspace requestBody: content: application/json: schema: - $ref: "#/components/schemas/DestinationDefinitionOptInUpdate" + $ref: "#/components/schemas/DestinationDefinitionGrantUpdate" required: true responses: "200": @@ -781,7 +783,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/DestinationDefinitionOptInRead" + $ref: "#/components/schemas/PrivateDestinationDefinitionRead" "404": $ref: "#/components/responses/NotFoundResponse" "422": @@ -790,13 +792,13 @@ paths: post: tags: - destination_definition - summary: Opt out of a non-public, non-custom destinationDefinition - operationId: deleteDestinationDefinitionOptIn + summary: revoke a grant to a private, non-custom destinationDefinition from a given workspace + operationId: revokeDestinationDefinitionFromWorkspace requestBody: content: application/json: schema: - $ref: "#/components/schemas/DestinationDefinitionOptInUpdate" + $ref: "#/components/schemas/DestinationDefinitionGrantUpdate" required: true responses: "204": @@ -2310,26 +2312,26 @@ components: type: array items: $ref: "#/components/schemas/SourceDefinitionRead" - SourceDefinitionOptInRead: + PrivateSourceDefinitionRead: type: object required: - sourceDefinition - - optIn + - granted properties: sourceDefinition: $ref: "#/components/schemas/SourceDefinitionRead" - optIn: + granted: type: boolean - SourceDefinitionOptInReadList: + PrivateSourceDefinitionReadList: type: object required: - - sourceDefinitionOptIns + - sourceDefinitionGrants properties: - sourceDefinitionOptIns: + sourceDefinitionGrants: type: array items: - $ref: "#/components/schemas/SourceDefinitionOptInRead" - SourceDefinitionOptInUpdate: + $ref: "#/components/schemas/PrivateSourceDefinitionRead" + SourceDefinitionGrantUpdate: type: object required: - sourceDefinitionId @@ -2626,26 +2628,26 @@ components: type: array items: $ref: "#/components/schemas/DestinationDefinitionRead" - DestinationDefinitionOptInRead: + PrivateDestinationDefinitionRead: type: object required: - destinationDefinition - - optIn + - granted properties: destinationDefinition: $ref: "#/components/schemas/DestinationDefinitionRead" - optIn: + granted: type: boolean - DestinationDefinitionOptInReadList: + PrivateDestinationDefinitionReadList: type: object required: - - destinationDefinitionOptIns + - destinationDefinitionGrants properties: - destinationDefinitionOptIns: + destinationDefinitionGrants: type: array items: - $ref: "#/components/schemas/DestinationDefinitionOptInRead" - DestinationDefinitionOptInUpdate: + $ref: "#/components/schemas/PrivateDestinationDefinitionRead" + DestinationDefinitionGrantUpdate: type: object required: - destinationDefinitionId 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 56b4e874632f..328aefb5a571 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 @@ -22,10 +22,8 @@ import io.airbyte.api.model.DestinationCoreConfig; import io.airbyte.api.model.DestinationCreate; import io.airbyte.api.model.DestinationDefinitionCreate; +import io.airbyte.api.model.DestinationDefinitionGrantUpdate; import io.airbyte.api.model.DestinationDefinitionIdRequestBody; -import io.airbyte.api.model.DestinationDefinitionOptInRead; -import io.airbyte.api.model.DestinationDefinitionOptInReadList; -import io.airbyte.api.model.DestinationDefinitionOptInUpdate; import io.airbyte.api.model.DestinationDefinitionRead; import io.airbyte.api.model.DestinationDefinitionReadList; import io.airbyte.api.model.DestinationDefinitionSpecificationRead; @@ -54,16 +52,18 @@ import io.airbyte.api.model.OperationReadList; import io.airbyte.api.model.OperationUpdate; import io.airbyte.api.model.OperatorConfiguration; +import io.airbyte.api.model.PrivateDestinationDefinitionRead; +import io.airbyte.api.model.PrivateDestinationDefinitionReadList; +import io.airbyte.api.model.PrivateSourceDefinitionRead; +import io.airbyte.api.model.PrivateSourceDefinitionReadList; import io.airbyte.api.model.SetInstancewideDestinationOauthParamsRequestBody; import io.airbyte.api.model.SetInstancewideSourceOauthParamsRequestBody; import io.airbyte.api.model.SlugRequestBody; import io.airbyte.api.model.SourceCoreConfig; import io.airbyte.api.model.SourceCreate; import io.airbyte.api.model.SourceDefinitionCreate; +import io.airbyte.api.model.SourceDefinitionGrantUpdate; import io.airbyte.api.model.SourceDefinitionIdRequestBody; -import io.airbyte.api.model.SourceDefinitionOptInRead; -import io.airbyte.api.model.SourceDefinitionOptInReadList; -import io.airbyte.api.model.SourceDefinitionOptInUpdate; import io.airbyte.api.model.SourceDefinitionRead; import io.airbyte.api.model.SourceDefinitionReadList; import io.airbyte.api.model.SourceDefinitionSpecificationRead; @@ -321,7 +321,7 @@ public SourceDefinitionReadList listLatestSourceDefinitions() { } @Override - public SourceDefinitionOptInReadList listSourceDefinitionOptIns(final WorkspaceIdRequestBody workspaceIdRequestBody) { + public PrivateSourceDefinitionReadList listPrivateSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { return null; } @@ -336,7 +336,7 @@ public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate } @Override - public SourceDefinitionOptInRead createSourceDefinitionOptIn(final SourceDefinitionOptInUpdate sourceDefinitionOptInUpdate) { + public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionGrantUpdate sourceDefinitionGrantUpdate) { return null; } @@ -354,7 +354,7 @@ public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDef } @Override - public void deleteSourceDefinitionOptIn(final SourceDefinitionOptInUpdate sourceDefinitionOptInUpdate) { + public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionGrantUpdate sourceDefinitionOptInUpdate) { } @@ -483,7 +483,7 @@ public DestinationDefinitionReadList listLatestDestinationDefinitions() { } @Override - public DestinationDefinitionOptInReadList listDestinationDefinitionOptIns(final WorkspaceIdRequestBody workspaceIdRequestBody) { + public PrivateDestinationDefinitionReadList listPrivateDestinationDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { return null; } @@ -498,7 +498,8 @@ public DestinationDefinitionRead createDestinationDefinition(final DestinationDe } @Override - public DestinationDefinitionOptInRead createDestinationDefinitionOptIn(final DestinationDefinitionOptInUpdate destinationDefinitionOptInUpdate) { + public PrivateDestinationDefinitionRead grantDestinationDefinitionToWorkspace( + final DestinationDefinitionGrantUpdate destinationDefinitionOptInUpdate) { return null; } @@ -516,7 +517,7 @@ public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody } @Override - public void deleteDestinationDefinitionOptIn(final DestinationDefinitionOptInUpdate destinationDefinitionOptInUpdate) { + public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinitionGrantUpdate destinationDefinitionOptInUpdate) { } diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 2f1ce6141d65..ba301a0fd9ef 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -260,13 +260,13 @@

    Destination

    DestinationDefinition

    DestinationDefinitionSpecification

    @@ -336,13 +336,13 @@

    Source

    SourceDefinition

    SourceDefinitionSpecification

    @@ -2660,96 +2660,6 @@

    422

    InvalidInputExceptionInfo

    -
    -
    - Up -
    post /v1/destination_definitions/grant_definition
    -
    Opt in to a non-public, non-custom destinationDefinition (createDestinationDefinitionOptIn)
    -
    - - -

    Consumes

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

    Request body

    -
    -
    DestinationDefinitionOptInUpdate DestinationDefinitionOptInUpdate (required)
    - -
    Body Parameter
    - -
    - - - - -

    Return type

    - - - - -

    Example data

    -
    Content-Type: application/json
    -
    {
    -  "optIn" : true,
    -  "destinationDefinition" : {
    -    "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",
    -    "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 - DestinationDefinitionOptInRead -

    404

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

    422

    - Input failed validation - InvalidInputExceptionInfo -
    -
    Up @@ -2776,54 +2686,6 @@

    Request body

    - - - -

    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 -
    post /v1/destination_definitions/revoke_definition
    -
    Opt out of a non-public, non-custom destinationDefinition (deleteDestinationDefinitionOptIn)
    -
    - - -

    Consumes

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

    Request body

    -
    -
    DestinationDefinitionOptInUpdate DestinationDefinitionOptInUpdate (required)
    - -
    Body Parameter
    - -
    - - - - - @@ -2933,11 +2795,11 @@

    422

    InvalidInputExceptionInfo

    -
    +
    Up -
    post /v1/destination_definitions/list_opt_in
    -
    List all opt-in destinationDefinitions along with the current workspace's opt-in statuses (listDestinationDefinitionOptIns)
    +
    post /v1/destination_definitions/grant_definition
    +
    grant a private, non-custom destinationDefinition to a given workspace (grantDestinationDefinitionToWorkspace)
    @@ -2949,7 +2811,7 @@

    Consumes

    Request body

    -
    WorkspaceIdRequestBody WorkspaceIdRequestBody (optional)
    +
    DestinationDefinitionGrantUpdate DestinationDefinitionGrantUpdate (required)
    Body Parameter
    @@ -2960,7 +2822,7 @@

    Request body

    Return type

    @@ -2969,75 +2831,39 @@

    Return type

    Example data

    Content-Type: application/json
    {
    -  "destinationDefinitionOptIns" : [ {
    -    "optIn" : true,
    -    "destinationDefinition" : {
    -      "resourceRequirements" : {
    -        "default" : {
    +  "destinationDefinition" : {
    +    "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"
    -        },
    -        "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",
    -      "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    -    }
    -  }, {
    -    "optIn" : true,
    -    "destinationDefinition" : {
    -      "resourceRequirements" : {
    -        "default" : {
    +        }
    +      }, {
    +        "resourceRequirements" : {
               "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",
    -      "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    -    }
    -  } ]
    +        }
    +      } ]
    +    },
    +    "documentationUrl" : "https://openapi-generator.tech",
    +    "dockerImageTag" : "dockerImageTag",
    +    "releaseDate" : "2000-01-23",
    +    "dockerRepository" : "dockerRepository",
    +    "name" : "name",
    +    "icon" : "icon",
    +    "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +  },
    +  "granted" : true
     }

    Produces

    @@ -3050,14 +2876,20 @@

    Produces

    Responses

    200

    Successful operation - DestinationDefinitionOptInReadList + PrivateDestinationDefinitionRead +

    404

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

    422

    + Input failed validation + InvalidInputExceptionInfo

    Up
    post /v1/destination_definitions/list
    -
    List all the destinationDefinitions the current Airbyte deployment is configured to use (listDestinationDefinitions)
    +
    List all the destinationDefinitions the given workspace is configured to use (listDestinationDefinitions)
    @@ -3246,13 +3078,133 @@

    Example data

    } } ] }, - "documentationUrl" : "https://openapi-generator.tech", - "dockerImageTag" : "dockerImageTag", - "releaseDate" : "2000-01-23", - "dockerRepository" : "dockerRepository", - "name" : "name", - "icon" : "icon", - "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" + "documentationUrl" : "https://openapi-generator.tech", + "dockerImageTag" : "dockerImageTag", + "releaseDate" : "2000-01-23", + "dockerRepository" : "dockerRepository", + "name" : "name", + "icon" : "icon", + "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 + DestinationDefinitionReadList +
    +
    +
    +
    + Up +
    post /v1/destination_definitions/list_private
    +
    List all private, non-custom destinationDefinitions, and for each indicate whether the given workspace has a grant for using the definition (listPrivateDestinationDefinitions)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    WorkspaceIdRequestBody WorkspaceIdRequestBody (optional)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "destinationDefinitionGrants" : [ {
    +    "destinationDefinition" : {
    +      "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",
    +      "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +    },
    +    "granted" : true
    +  }, {
    +    "destinationDefinition" : {
    +      "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",
    +      "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +    },
    +    "granted" : true
       } ]
     }
    @@ -3266,7 +3218,55 @@

    Produces

    Responses

    200

    Successful operation - DestinationDefinitionReadList + PrivateDestinationDefinitionReadList +
    +
    +
    +
    + Up +
    post /v1/destination_definitions/revoke_definition
    +
    revoke a grant to a private, non-custom destinationDefinition from a given workspace (revokeDestinationDefinitionFromWorkspace)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    DestinationDefinitionGrantUpdate DestinationDefinitionGrantUpdate (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

    - - -

    Example data

    -
    Content-Type: application/json
    -
    {
    -  "sourceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
    -  "connectionConfiguration" : {
    -    "user" : "charles"
    -  },
    -  "name" : "name",
    -  "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
    -  "sourceName" : "sourceName",
    -  "workspaceId" : "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 -
    SourceRead -

    404

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

    422

    - Input failed validation - InvalidInputExceptionInfo -
    -
    -

    SourceDefinition

    -
    -
    - 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",
    -  "dockerRepository" : "dockerRepository",
    -  "name" : "name",
    -  "icon" : "icon",
    -  "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/grant_definition
    -
    Opt in to a non-public, non-custom sourceDefinition (createSourceDefinitionOptIn)
    -
    - - -

    Consumes

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

    Request body

    -
    -
    SourceDefinitionOptInUpdate SourceDefinitionOptInUpdate (required)
    - -
    Body Parameter
    - -
    - - - - -

    Return type

    - - - - -

    Example data

    -
    Content-Type: application/json
    -
    {
    -  "sourceDefinition" : {
    -    "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",
    -    "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +    
    +
    +    

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "sourceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
    +  "connectionConfiguration" : {
    +    "user" : "charles"
       },
    -  "optIn" : true
    +  "name" : "name",
    +  "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
    +  "sourceName" : "sourceName",
    +  "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
     }

    Produces

    @@ -6248,7 +6073,7 @@

    Produces

    Responses

    200

    Successful operation - SourceDefinitionOptInRead + SourceRead

    404

    Object with given id was not found. NotFoundKnownExceptionInfo @@ -6257,11 +6082,12 @@

    422

    InvalidInputExceptionInfo

    -
    +

    SourceDefinition

    +
    Up -
    post /v1/source_definitions/delete
    -
    Delete a source definition (deleteSourceDefinition)
    +
    post /v1/source_definitions/create
    +
    Creates a sourceDefinition (createSourceDefinition)
    @@ -6273,7 +6099,7 @@

    Consumes

    Request body

    -
    SourceDefinitionIdRequestBody SourceDefinitionIdRequestBody (required)
    +
    SourceDefinitionCreate SourceDefinitionCreate (optional)
    Body Parameter
    @@ -6282,9 +6108,48 @@

    Request body

    +

    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",
    +  "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +}

    Produces

    This API call produces the following media types according to the Accept request header; @@ -6294,22 +6159,19 @@

    Produces

    Responses

    -

    204

    - The resource was deleted successfully. - -

    404

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

    200

    + Successful operation + SourceDefinitionRead

    422

    Input failed validation InvalidInputExceptionInfo

    -
    +
    Up -
    post /v1/source_definitions/revoke_definition
    -
    Opt out of a non-public, non-custom sourceDefinition (deleteSourceDefinitionOptIn)
    +
    post /v1/source_definitions/delete
    +
    Delete a source definition (deleteSourceDefinition)
    @@ -6321,7 +6183,7 @@

    Consumes

    Request body

    -
    SourceDefinitionOptInUpdate SourceDefinitionOptInUpdate (required)
    +
    SourceDefinitionIdRequestBody SourceDefinitionIdRequestBody (required)
    Body Parameter
    @@ -6440,6 +6302,96 @@

    422

    InvalidInputExceptionInfo

    +
    +
    + Up +
    post /v1/source_definitions/grant_definition
    +
    grant a private, non-custom sourceDefinition to a given workspace (grantSourceDefinitionToWorkspace)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    SourceDefinitionGrantUpdate SourceDefinitionGrantUpdate (required)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "sourceDefinition" : {
    +    "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",
    +    "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +  },
    +  "granted" : true
    +}
    + +

    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 + PrivateSourceDefinitionRead +

    404

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

    422

    + Input failed validation + InvalidInputExceptionInfo +
    +
    Up @@ -6542,11 +6494,11 @@

    200

    SourceDefinitionReadList

    -
    +
    Up -
    post /v1/source_definitions/list_opt_in
    -
    List all opt-in sourceDefinitions along with the current workspace's opt-in statuses (listSourceDefinitionOptIns)
    +
    post /v1/source_definitions/list_private
    +
    List all private, non-custom sourceDefinitions, and for each indicate whether the given workspace has a grant for using the definition (listPrivateSourceDefinitions)
    @@ -6569,7 +6521,7 @@

    Request body

    Return type

    @@ -6578,7 +6530,7 @@

    Return type

    Example data

    Content-Type: application/json
    {
    -  "sourceDefinitionOptIns" : [ {
    +  "sourceDefinitionGrants" : [ {
         "sourceDefinition" : {
           "resourceRequirements" : {
             "default" : {
    @@ -6611,7 +6563,7 @@ 

    Example data

    "icon" : "icon", "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, - "optIn" : true + "granted" : true }, { "sourceDefinition" : { "resourceRequirements" : { @@ -6645,7 +6597,7 @@

    Example data

    "icon" : "icon", "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, - "optIn" : true + "granted" : true } ] }
    @@ -6659,14 +6611,14 @@

    Produces

    Responses

    200

    Successful operation - SourceDefinitionOptInReadList + PrivateSourceDefinitionReadList

    Up
    post /v1/source_definitions/list
    -
    List all the sourceDefinitions the current Airbyte deployment is configured to use (listSourceDefinitions)
    +
    List all the sourceDefinitions the given workspace is configured to use (listSourceDefinitions)
    @@ -6776,6 +6728,54 @@

    200

    SourceDefinitionReadList

    +
    +
    + Up +
    post /v1/source_definitions/revoke_definition
    +
    revoke a grant to a private, non-custom sourceDefinition from a given workspace (revokeSourceDefinitionFromWorkspace)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    SourceDefinitionGrantUpdate SourceDefinitionGrantUpdate (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 +
    +
    -

    DestinationDefinitionIdRequestBody - Up

    +

    DestinationDefinitionGrantUpdate - Up

    destinationDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    -

    DestinationDefinitionOptInRead - Up

    -
    -
    -
    destinationDefinition
    -
    optIn
    -
    -
    - -
    -

    DestinationDefinitionOptInUpdate - Up

    +

    DestinationDefinitionIdRequestBody - Up

    destinationDefinitionId
    UUID format: uuid
    -
    workspaceId
    UUID format: uuid
    @@ -9803,6 +9788,36 @@

    Pagination - rowOffset (optional)

    +
    +

    PrivateDestinationDefinitionRead - Up

    +
    +
    +
    destinationDefinition
    +
    granted
    +
    +
    + +
    +

    PrivateSourceDefinitionRead - Up

    +
    +
    +
    sourceDefinition
    +
    granted
    +
    +
    +
    -

    SourceDefinitionIdRequestBody - Up

    +

    SourceDefinitionGrantUpdate - Up

    sourceDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    -

    SourceDefinitionOptInRead - Up

    -
    -
    -
    sourceDefinition
    -
    optIn
    -
    -
    - -
    -

    SourceDefinitionOptInUpdate - Up

    +

    SourceDefinitionIdRequestBody - Up

    sourceDefinitionId
    UUID format: uuid
    -
    workspaceId
    UUID format: uuid
    From 0bcc6e0c4d56ab9ab7ad263c0299db1826dbd50a Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 12:03:56 -0700 Subject: [PATCH 08/16] new create/list source definition routes - create new routes instead of making breaking changes to existing ones - existing create/list routes will be repurposed as admin only routes --- airbyte-api/src/main/openapi/config.yaml | 58 ++++- .../airbyte/server/apis/ConfigurationApi.java | 13 +- .../api/generated-api-html/index.html | 202 +++++++++++++++++- 3 files changed, 260 insertions(+), 13 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 97369c650a7a..ba2b8ece8d9f 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -294,13 +294,8 @@ paths: post: tags: - source_definition - summary: List all the sourceDefinitions the given workspace is configured to use + summary: List all the sourceDefinitions the current Airbyte deployment is configured to use operationId: listSourceDefinitions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/WorkspaceIdRequestBody" responses: "200": description: Successful operation @@ -340,6 +335,44 @@ paths: application/json: schema: $ref: "#/components/schemas/PrivateSourceDefinitionReadList" + /v1/source_definitions/list_for_workspace: + post: + tags: + - source_definition + summary: List all the sourceDefinitions the given workspace is configured to use + operationId: listSourceDefinitionsForWorkspace + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WorkspaceIdRequestBody" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionReadList" + /v1/source_definitions/create_custom: + post: + tags: + - source_definition + summary: Creates a custom sourceDefinition for the given workspace + operationId: createCustomSourceDefinition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CustomSourceDefinitionCreate" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionRead" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/source_definitions/grant_definition: post: tags: @@ -2240,14 +2273,11 @@ components: SourceDefinitionCreate: type: object required: - - workspaceId - name - dockerRepository - dockerImageTag - documentationUrl properties: - workspaceId: - $ref: "#/components/schemas/WorkspaceId" name: type: string dockerRepository: @@ -2312,6 +2342,16 @@ components: type: array items: $ref: "#/components/schemas/SourceDefinitionRead" + CustomSourceDefinitionCreate: + type: object + required: + - workspaceId + - sourceDefinition + properties: + workspaceId: + $ref: "#/components/schemas/WorkspaceId" + sourceDefinition: + $ref: "#/components/schemas/SourceDefinitionCreate" PrivateSourceDefinitionRead: type: object required: 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 328aefb5a571..4e08558536c0 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 @@ -16,6 +16,7 @@ import io.airbyte.api.model.ConnectionSearch; import io.airbyte.api.model.ConnectionState; import io.airbyte.api.model.ConnectionUpdate; +import io.airbyte.api.model.CustomSourceDefinitionCreate; import io.airbyte.api.model.DbMigrationExecutionRead; import io.airbyte.api.model.DbMigrationReadList; import io.airbyte.api.model.DbMigrationRequestBody; @@ -311,10 +312,15 @@ public NotificationRead tryNotificationConfig(final Notification notification) { // SOURCE @Override - public SourceDefinitionReadList listSourceDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { + public SourceDefinitionReadList listSourceDefinitions() { return execute(sourceDefinitionsHandler::listSourceDefinitions); } + @Override + public SourceDefinitionReadList listSourceDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return null; + } + @Override public SourceDefinitionReadList listLatestSourceDefinitions() { return execute(sourceDefinitionsHandler::listLatestSourceDefinitions); @@ -335,6 +341,11 @@ public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate return execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(sourceDefinitionCreate)); } + @Override + public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { + return null; + } + @Override public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionGrantUpdate sourceDefinitionGrantUpdate) { return null; diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index ba301a0fd9ef..0e5bd2d6ddf2 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -335,6 +335,7 @@

    Source

    SourceDefinition

    @@ -6083,6 +6085,90 @@

    422


    SourceDefinition

    +
    +
    + Up +
    post /v1/source_definitions/create_custom
    +
    Creates a custom sourceDefinition for the given workspace (createCustomSourceDefinition)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    CustomSourceDefinitionCreate CustomSourceDefinitionCreate (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",
    +  "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 @@ -6618,7 +6704,109 @@

    200

    Up
    post /v1/source_definitions/list
    -
    List all the sourceDefinitions the given workspace is configured to use (listSourceDefinitions)
    +
    List all the sourceDefinitions the current Airbyte deployment is configured to use (listSourceDefinitions)
    +
    + + + + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "sourceDefinitions" : [ {
    +    "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",
    +    "sourceDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +  }, {
    +    "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",
    +    "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 + SourceDefinitionReadList +
    +
    +
    +
    + Up +
    post /v1/source_definitions/list_for_workspace
    +
    List all the sourceDefinitions the given workspace is configured to use (listSourceDefinitionsForWorkspace)
    @@ -8850,6 +9038,7 @@

    Table of Contents

  • ConnectionState -
  • ConnectionStatus -
  • ConnectionUpdate -
  • +
  • CustomSourceDefinitionCreate -
  • DataType -
  • DbMigrationExecutionRead -
  • DbMigrationRead -
  • @@ -9256,6 +9445,14 @@

    ConnectionUpdate - resourceRequirements (optional)

    +
    +

    CustomSourceDefinitionCreate - Up

    +
    +
    +
    workspaceId
    UUID format: uuid
    +
    sourceDefinition
    +
    +

    DataType - Up

    @@ -9886,8 +10083,7 @@

    SourceCreate - SourceDefinitionCreate - Up

    -
    workspaceId
    UUID format: uuid
    -
    name
    +
    name
    dockerRepository
    dockerImageTag
    documentationUrl
    URI format: uri
    From d6cbc19968dcfd0aeaf930bd784482db8e614607 Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 12:17:42 -0700 Subject: [PATCH 09/16] new create/list destination definition routes - create new routes instead of making breaking changes to existing ones - existing create/list routes will be repurposed as admin only routes --- airbyte-api/src/main/openapi/config.yaml | 58 ++++- .../airbyte/server/apis/ConfigurationApi.java | 13 +- .../api/generated-api-html/index.html | 202 +++++++++++++++++- 3 files changed, 260 insertions(+), 13 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index ba2b8ece8d9f..ce73381da28b 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -750,13 +750,8 @@ paths: post: tags: - destination_definition - summary: List all the destinationDefinitions the given workspace is configured to use + summary: List all the destinationDefinitions the current Airbyte deployment is configured to use operationId: listDestinationDefinitions - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/WorkspaceIdRequestBody" responses: "200": description: Successful operation @@ -798,6 +793,44 @@ paths: application/json: schema: $ref: "#/components/schemas/PrivateDestinationDefinitionReadList" + /v1/destination_definitions/list_for_workspace: + post: + tags: + - destination_definition + summary: List all the destinationDefinitions the given workspace is configured to use + operationId: listDestinationDefinitionsForWorkspace + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/WorkspaceIdRequestBody" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionReadList" + /v1/destination_definitions/create_custom: + post: + tags: + - destination_definition + summary: Creates a custom destinationDefinition for the given workspace + operationId: createCustomDestinationDefinition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/CustomDestinationDefinitionCreate" + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionRead" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definitions/grant_definition: post: tags: @@ -2596,14 +2629,11 @@ components: DestinationDefinitionCreate: type: object required: - - workspaceId - name - dockerRepository - dockerImageTag - documentationUrl properties: - workspaceId: - $ref: "#/components/schemas/WorkspaceId" name: type: string dockerRepository: @@ -2668,6 +2698,16 @@ components: type: array items: $ref: "#/components/schemas/DestinationDefinitionRead" + CustomDestinationDefinitionCreate: + type: object + required: + - workspaceId + - destinationDefinition + properties: + workspaceId: + $ref: "#/components/schemas/WorkspaceId" + destinationDefinition: + $ref: "#/components/schemas/DestinationDefinitionCreate" PrivateDestinationDefinitionRead: type: object required: 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 4e08558536c0..2f4603085006 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 @@ -16,6 +16,7 @@ import io.airbyte.api.model.ConnectionSearch; import io.airbyte.api.model.ConnectionState; import io.airbyte.api.model.ConnectionUpdate; +import io.airbyte.api.model.CustomDestinationDefinitionCreate; import io.airbyte.api.model.CustomSourceDefinitionCreate; import io.airbyte.api.model.DbMigrationExecutionRead; import io.airbyte.api.model.DbMigrationReadList; @@ -484,10 +485,15 @@ public DbMigrationExecutionRead executeMigrations(final DbMigrationRequestBody r // DESTINATION @Override - public DestinationDefinitionReadList listDestinationDefinitions(final WorkspaceIdRequestBody workspaceIdRequestBody) { + public DestinationDefinitionReadList listDestinationDefinitions() { return execute(destinationDefinitionsHandler::listDestinationDefinitions); } + @Override + public DestinationDefinitionReadList listDestinationDefinitionsForWorkspace(final WorkspaceIdRequestBody workspaceIdRequestBody) { + return null; + } + @Override public DestinationDefinitionReadList listLatestDestinationDefinitions() { return execute(destinationDefinitionsHandler::listLatestDestinationDefinitions); @@ -508,6 +514,11 @@ public DestinationDefinitionRead createDestinationDefinition(final DestinationDe return execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(destinationDefinitionCreate)); } + @Override + public DestinationDefinitionRead createCustomDestinationDefinition(final CustomDestinationDefinitionCreate customDestinationDefinitionCreate) { + return null; + } + @Override public PrivateDestinationDefinitionRead grantDestinationDefinitionToWorkspace( final DestinationDefinitionGrantUpdate destinationDefinitionOptInUpdate) { diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 0e5bd2d6ddf2..22dd2df9f4d2 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -259,11 +259,13 @@

    Destination

    DestinationDefinition


    DestinationDefinition

    +
    +
    + Up +
    post /v1/destination_definitions/create_custom
    +
    Creates a custom destinationDefinition for the given workspace (createCustomDestinationDefinition)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    CustomDestinationDefinitionCreate CustomDestinationDefinitionCreate (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",
    +  "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 @@ -2891,7 +2977,109 @@

    422

    Up
    post /v1/destination_definitions/list
    -
    List all the destinationDefinitions the given workspace is configured to use (listDestinationDefinitions)
    +
    List all the destinationDefinitions the current Airbyte deployment is configured to use (listDestinationDefinitions)
    +
    + + + + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    {
    +  "destinationDefinitions" : [ {
    +    "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",
    +    "destinationDefinitionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +  }, {
    +    "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",
    +    "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 + DestinationDefinitionReadList +
    +
    +
    +
    + Up +
    post /v1/destination_definitions/list_for_workspace
    +
    List all the destinationDefinitions the given workspace is configured to use (listDestinationDefinitionsForWorkspace)
    @@ -9038,6 +9226,7 @@

    Table of Contents

  • ConnectionState -
  • ConnectionStatus -
  • ConnectionUpdate -
  • +
  • CustomDestinationDefinitionCreate -
  • CustomSourceDefinitionCreate -
  • DataType -
  • DbMigrationExecutionRead -
  • @@ -9445,6 +9634,14 @@

    ConnectionUpdate - resourceRequirements (optional)

    +
    +

    CustomDestinationDefinitionCreate - Up

    +
    +
    +
    workspaceId
    UUID format: uuid
    +
    destinationDefinition
    +
    +

    CustomSourceDefinitionCreate - Up

    @@ -9523,8 +9720,7 @@

    DestinationCreate - DestinationDefinitionCreate - Up

    -
    workspaceId
    UUID format: uuid
    -
    name
    +
    name
    dockerRepository
    dockerImageTag
    documentationUrl
    URI format: uri
    From f72e21c2ca5257eb3a2b10825dfbee19777899b7 Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 12:43:28 -0700 Subject: [PATCH 10/16] revert acceptance test changes --- .../airbyte/test/acceptance/AcceptanceTests.java | 15 +++++---------- .../MigrationAcceptanceTest.java | 15 ++++++--------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java index 300281334ec6..7024560abe23 100644 --- a/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java +++ b/airbyte-tests/src/acceptanceTests/java/io/airbyte/test/acceptance/AcceptanceTests.java @@ -69,7 +69,6 @@ import io.airbyte.api.client.model.SourceIdRequestBody; import io.airbyte.api.client.model.SourceRead; import io.airbyte.api.client.model.SyncMode; -import io.airbyte.api.client.model.WorkspaceIdRequestBody; import io.airbyte.commons.features.EnvVariableFeatureFlags; import io.airbyte.commons.features.FeatureFlags; import io.airbyte.commons.json.Jsons; @@ -783,7 +782,7 @@ public void testCheckpointing() throws Exception { // now cancel it so that we freeze state! try { apiClient.getJobsApi().cancelJob(new JobIdRequestBody().id(connectionSyncRead1.getJob().getId())); - } catch (final Exception e) {} + } catch (Exception e) {} final ConnectionState connectionState = waitForConnectionState(apiClient, connectionId); @@ -1307,8 +1306,7 @@ private OperationRead createOperation() throws ApiException { } private UUID getDestinationDefId() throws ApiException { - return apiClient.getDestinationDefinitionApi().listDestinationDefinitions( - new WorkspaceIdRequestBody().workspaceId(workspaceId)).getDestinationDefinitions() + return apiClient.getDestinationDefinitionApi().listDestinationDefinitions().getDestinationDefinitions() .stream() .filter(dr -> dr.getName().toLowerCase().contains("postgres")) .findFirst() @@ -1407,8 +1405,7 @@ private SourceDefinitionRead createE2eSourceDefinition() throws ApiException { .name("E2E Test Source") .dockerRepository("airbyte/source-e2e-test") .dockerImageTag(SOURCE_E2E_TEST_CONNECTOR_VERSION) - .documentationUrl(URI.create("https://example.com")) - .workspaceId(workspaceId)); + .documentationUrl(URI.create("https://example.com"))); } private DestinationDefinitionRead createE2eDestinationDefinition() throws ApiException { @@ -1416,8 +1413,7 @@ private DestinationDefinitionRead createE2eDestinationDefinition() throws ApiExc .name("E2E Test Destination") .dockerRepository("airbyte/destination-e2e-test") .dockerImageTag(DESTINATION_E2E_TEST_CONNECTOR_VERSION) - .documentationUrl(URI.create("https://example.com")) - .workspaceId(workspaceId)); + .documentationUrl(URI.create("https://example.com"))); } private SourceRead createPostgresSource() throws ApiException { @@ -1440,8 +1436,7 @@ private SourceRead createSource(final String name, final UUID workspaceId, final } private UUID getPostgresSourceDefinitionId() throws ApiException { - return apiClient.getSourceDefinitionApi().listSourceDefinitions( - new WorkspaceIdRequestBody().workspaceId(workspaceId)).getSourceDefinitions() + return apiClient.getSourceDefinitionApi().listSourceDefinitions().getSourceDefinitions() .stream() .filter(sourceRead -> sourceRead.getName().equalsIgnoreCase("postgres")) .findFirst() diff --git a/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java b/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java index 9b2610c20718..a10185ce2bd2 100644 --- a/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java +++ b/airbyte-tests/src/automaticMigrationAcceptanceTest/java/io/airbyte/test/automaticMigrationAcceptance/MigrationAcceptanceTest.java @@ -190,15 +190,14 @@ private static void assertHealthy() throws ApiException { private static void assertDataFromApi(final ApiClient apiClient) throws ApiException { final WorkspaceIdRequestBody workspaceIdRequestBody = assertWorkspaceInformation(apiClient); - assertSourceDefinitionInformation(apiClient, workspaceIdRequestBody); - assertDestinationDefinitionInformation(apiClient, workspaceIdRequestBody); + assertSourceDefinitionInformation(apiClient); + assertDestinationDefinitionInformation(apiClient); assertConnectionInformation(apiClient, workspaceIdRequestBody); } - private static void assertSourceDefinitionInformation(final ApiClient apiClient, final WorkspaceIdRequestBody workspaceIdRequestBody) - throws ApiException { + private static void assertSourceDefinitionInformation(final ApiClient apiClient) throws ApiException { final SourceDefinitionApi sourceDefinitionApi = new SourceDefinitionApi(apiClient); - final List sourceDefinitions = sourceDefinitionApi.listSourceDefinitions(workspaceIdRequestBody).getSourceDefinitions(); + final List sourceDefinitions = sourceDefinitionApi.listSourceDefinitions().getSourceDefinitions(); assertTrue(sourceDefinitions.size() >= 58); boolean foundMysqlSourceDefinition = false; boolean foundPostgresSourceDefinition = false; @@ -225,11 +224,9 @@ private static void assertSourceDefinitionInformation(final ApiClient apiClient, assertTrue(foundPostgresSourceDefinition); } - private static void assertDestinationDefinitionInformation(final ApiClient apiClient, final WorkspaceIdRequestBody workspaceIdRequestBody) - throws ApiException { + private static void assertDestinationDefinitionInformation(final ApiClient apiClient) throws ApiException { final DestinationDefinitionApi destinationDefinitionApi = new DestinationDefinitionApi(apiClient); - final List destinationDefinitions = - destinationDefinitionApi.listDestinationDefinitions(workspaceIdRequestBody).getDestinationDefinitions(); + final List destinationDefinitions = destinationDefinitionApi.listDestinationDefinitions().getDestinationDefinitions(); assertTrue(destinationDefinitions.size() >= 10); boolean foundPostgresDestinationDefinition = false; boolean foundLocalCSVDestinationDefinition = false; From 00a918644c283ad8a4e08e3332e92b44a8c983ad Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 14:25:59 -0700 Subject: [PATCH 11/16] new update/delete actor definition routes - create new routes instead of making breaking changes to existing ones - existing create/list routes will be repurposed as admin only routes --- airbyte-api/src/main/openapi/config.yaml | 122 +++++++ .../airbyte/server/apis/ConfigurationApi.java | 24 ++ .../api/generated-api-html/index.html | 310 ++++++++++++++++++ 3 files changed, 456 insertions(+) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index ce73381da28b..eceb07526782 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -373,6 +373,47 @@ paths: $ref: "#/components/schemas/SourceDefinitionRead" "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/CustomSourceDefinitionDelete" + 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: @@ -831,6 +872,47 @@ paths: $ref: "#/components/schemas/DestinationDefinitionRead" "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/CustomDestinationDefinitionDelete" + required: true + responses: + "204": + description: The redestination was deleted successfully. + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definitions/grant_definition: post: tags: @@ -2385,6 +2467,26 @@ components: $ref: "#/components/schemas/WorkspaceId" sourceDefinition: $ref: "#/components/schemas/SourceDefinitionCreate" + CustomSourceDefinitionUpdate: + type: object + required: + - workspaceId + - sourceDefinitionUpdate + properties: + workspaceId: + $ref: "#/components/schemas/WorkspaceId" + sourceDefinition: + $ref: "#/components/schemas/SourceDefinitionUpdate" + CustomSourceDefinitionDelete: + type: object + required: + - sourceDefinitionId + - workspaceId + properties: + sourceDefinitionId: + $ref: "#/components/schemas/SourceDefinitionId" + workspaceId: + $ref: "#/components/schemas/WorkspaceId" PrivateSourceDefinitionRead: type: object required: @@ -2708,6 +2810,26 @@ components: $ref: "#/components/schemas/WorkspaceId" destinationDefinition: $ref: "#/components/schemas/DestinationDefinitionCreate" + CustomDestinationDefinitionUpdate: + type: object + required: + - workspaceId + - destinationDefinitionUpdate + properties: + workspaceId: + $ref: "#/components/schemas/WorkspaceId" + destinationDefinition: + $ref: "#/components/schemas/DestinationDefinitionUpdate" + CustomDestinationDefinitionDelete: + type: object + required: + - destinationDefinitionId + - workspaceId + properties: + destinationDefinitionId: + $ref: "#/components/schemas/DestinationDefinitionId" + workspaceId: + $ref: "#/components/schemas/WorkspaceId" PrivateDestinationDefinitionRead: type: object required: 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 2f4603085006..0f884351323a 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 @@ -17,7 +17,11 @@ import io.airbyte.api.model.ConnectionState; import io.airbyte.api.model.ConnectionUpdate; import io.airbyte.api.model.CustomDestinationDefinitionCreate; +import io.airbyte.api.model.CustomDestinationDefinitionDelete; +import io.airbyte.api.model.CustomDestinationDefinitionUpdate; import io.airbyte.api.model.CustomSourceDefinitionCreate; +import io.airbyte.api.model.CustomSourceDefinitionDelete; +import io.airbyte.api.model.CustomSourceDefinitionUpdate; import io.airbyte.api.model.DbMigrationExecutionRead; import io.airbyte.api.model.DbMigrationReadList; import io.airbyte.api.model.DbMigrationRequestBody; @@ -357,6 +361,11 @@ public SourceDefinitionRead updateSourceDefinition(final SourceDefinitionUpdate return execute(() -> sourceDefinitionsHandler.updateSourceDefinition(sourceDefinitionUpdate)); } + @Override + public SourceDefinitionRead updateCustomSourceDefinition(final CustomSourceDefinitionUpdate customSourceDefinitionUpdate) { + return null; + } + @Override public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDefinitionIdRequestBody) { execute(() -> { @@ -365,6 +374,11 @@ public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDef }); } + @Override + public void deleteCustomSourceDefinition(final CustomSourceDefinitionDelete customSourceDefinitionDelete) { + + } + @Override public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionGrantUpdate sourceDefinitionOptInUpdate) { @@ -530,6 +544,11 @@ public DestinationDefinitionRead updateDestinationDefinition(final DestinationDe return execute(() -> destinationDefinitionsHandler.updateDestinationDefinition(destinationDefinitionUpdate)); } + @Override + public DestinationDefinitionRead updateCustomDestinationDefinition(final CustomDestinationDefinitionUpdate customDestinationDefinitionUpdate) { + return null; + } + @Override public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { execute(() -> { @@ -538,6 +557,11 @@ public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody }); } + @Override + public void deleteCustomDestinationDefinition(final CustomDestinationDefinitionDelete customDestinationDefinitionDelete) { + + } + @Override public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinitionGrantUpdate destinationDefinitionOptInUpdate) { diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 22dd2df9f4d2..b756ea78bf00 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -261,6 +261,7 @@

    DestinationDefinition

    DestinationDefinitionSpecification

    @@ -339,6 +341,7 @@

    SourceDefinition

    SourceDefinitionSpecification

    @@ -2748,6 +2752,54 @@

    422

    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

    +
    +
    CustomDestinationDefinitionDelete CustomDestinationDefinitionDelete (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 redestination was deleted successfully. + +

    404

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

    422

    + Input failed validation + InvalidInputExceptionInfo +
    +
    Up @@ -3459,6 +3511,93 @@

    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",
    +  "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 @@ -6441,6 +6580,54 @@

    422

    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

    +
    +
    CustomSourceDefinitionDelete CustomSourceDefinitionDelete (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 @@ -7152,6 +7339,93 @@

    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",
    +  "dockerRepository" : "dockerRepository",
    +  "name" : "name",
    +  "icon" : "icon",
    +  "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 +
    +
    +
    +

    CustomDestinationDefinitionDelete - Up

    +
    +
    +
    destinationDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    +
    +
    +
    +

    CustomDestinationDefinitionUpdate - Up

    +
    +
    +
    workspaceId
    UUID format: uuid
    +
    destinationDefinition (optional)
    +
    +
    +
    +

    CustomSourceDefinitionDelete - Up

    +
    +
    +
    sourceDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    +
    +
    +
    +

    CustomSourceDefinitionUpdate - Up

    +
    +
    +
    workspaceId
    UUID format: uuid
    +
    sourceDefinition (optional)
    +
    +

    DataType - Up

    From c902119d88272207b1005ac90c921ac766cf36bf Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 14:31:38 -0700 Subject: [PATCH 12/16] rearrange routes in config.yaml --- airbyte-api/src/main/openapi/config.yaml | 168 +++++++++++------------ 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index eceb07526782..c460202a7a6c 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -317,6 +317,48 @@ paths: application/json: schema: $ref: "#/components/schemas/SourceDefinitionReadList" + /v1/source_definitions/get: + post: + tags: + - source_definition + summary: Get source + operationId: getSourceDefinition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionIdRequestBody" + required: true + 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: + post: + tags: + - source_definition + summary: Delete a source definition + operationId: deleteSourceDefinition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionIdRequestBody" + required: true + responses: + "204": + description: The resource was deleted successfully. + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/source_definitions/list_private: post: tags: @@ -456,48 +498,6 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" - /v1/source_definitions/get: - post: - tags: - - source_definition - summary: Get source - operationId: getSourceDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDefinitionIdRequestBody" - required: true - 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: - post: - tags: - - source_definition - summary: Delete a source definition - operationId: deleteSourceDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDefinitionIdRequestBody" - required: true - responses: - "204": - description: The resource was deleted successfully. - "404": - $ref: "#/components/responses/NotFoundResponse" - "422": - $ref: "#/components/responses/InvalidInputResponse" /v1/source_definition_specifications/get: post: tags: @@ -814,6 +814,48 @@ paths: application/json: schema: $ref: "#/components/schemas/DestinationDefinitionReadList" + /v1/destination_definitions/get: + post: + tags: + - destination_definition + summary: Get destinationDefinition + operationId: getDestinationDefinition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionIdRequestBody" + required: true + 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: + post: + tags: + - destination_definition + summary: Delete a destination definition + operationId: deleteDestinationDefinition + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionIdRequestBody" + required: true + responses: + "204": + description: The resource was deleted successfully. + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definitions/list_private: post: tags: @@ -955,48 +997,6 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" - /v1/destination_definitions/get: - post: - tags: - - destination_definition - summary: Get destinationDefinition - operationId: getDestinationDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DestinationDefinitionIdRequestBody" - required: true - 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: - post: - tags: - - destination_definition - summary: Delete a destination definition - operationId: deleteDestinationDefinition - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/DestinationDefinitionIdRequestBody" - required: true - responses: - "204": - description: The resource was deleted successfully. - "404": - $ref: "#/components/responses/NotFoundResponse" - "422": - $ref: "#/components/responses/InvalidInputResponse" /v1/destination_definition_specifications/get: post: tags: From 8192aff2ee4ed1def47856d4849f4f97a7611fb6 Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 16:06:56 -0700 Subject: [PATCH 13/16] PR feedback --- airbyte-api/src/main/openapi/config.yaml | 14 ++++++++------ docs/reference/api/generated-api-html/index.html | 12 ++++++------ 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index c460202a7a6c..809d5704168a 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -363,7 +363,9 @@ paths: post: tags: - source_definition - summary: List all private, non-custom sourceDefinitions, and for each indicate whether the given workspace has a grant for using the definition + summary: + List all private, non-custom sourceDefinitions, and for each indicate whether the given workspace has a grant for using the definition. Used + by admins to view and modify a given workspace's grants. operationId: listPrivateSourceDefinitions requestBody: content: @@ -862,7 +864,7 @@ paths: - destination_definition summary: List all private, non-custom destinationDefinitions, and for each indicate whether the given workspace has a grant for using the - definition + definition. Used by admins to view and modify a given workspace's grants. operationId: listPrivateDestinationDefinitions requestBody: content: @@ -2500,9 +2502,9 @@ components: PrivateSourceDefinitionReadList: type: object required: - - sourceDefinitionGrants + - sourceDefinitions properties: - sourceDefinitionGrants: + sourceDefinitions: type: array items: $ref: "#/components/schemas/PrivateSourceDefinitionRead" @@ -2843,9 +2845,9 @@ components: PrivateDestinationDefinitionReadList: type: object required: - - destinationDefinitionGrants + - destinationDefinitions properties: - destinationDefinitionGrants: + destinationDefinitions: type: array items: $ref: "#/components/schemas/PrivateDestinationDefinitionRead" diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index b756ea78bf00..17e3a39167d3 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -3347,7 +3347,7 @@

    200

    Up
    post /v1/destination_definitions/list_private
    -
    List all private, non-custom destinationDefinitions, and for each indicate whether the given workspace has a grant for using the definition (listPrivateDestinationDefinitions)
    +
    List all private, non-custom destinationDefinitions, and for each indicate whether the given workspace has a grant for using the definition. Used by admins to view and modify a given workspace's grants. (listPrivateDestinationDefinitions)
    @@ -3379,7 +3379,7 @@

    Return type

    Example data

    Content-Type: application/json
    {
    -  "destinationDefinitionGrants" : [ {
    +  "destinationDefinitions" : [ {
         "destinationDefinition" : {
           "resourceRequirements" : {
             "default" : {
    @@ -6959,7 +6959,7 @@ 

    200

    Up
    post /v1/source_definitions/list_private
    -
    List all private, non-custom sourceDefinitions, and for each indicate whether the given workspace has a grant for using the definition (listPrivateSourceDefinitions)
    +
    List all private, non-custom sourceDefinitions, and for each indicate whether the given workspace has a grant for using the definition. Used by admins to view and modify a given workspace's grants. (listPrivateSourceDefinitions)
    @@ -6991,7 +6991,7 @@

    Return type

    Example data

    Content-Type: application/json
    {
    -  "sourceDefinitionGrants" : [ {
    +  "sourceDefinitions" : [ {
         "sourceDefinition" : {
           "resourceRequirements" : {
             "default" : {
    @@ -10503,7 +10503,7 @@ 

    PrivateDestinationDefinitio

    PrivateDestinationDefinitionReadList - Up

    -
    destinationDefinitionGrants
    +
    destinationDefinitions

    From 3e11a1aa096664d815685802cd39f023d33b00a0 Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 17:12:05 -0700 Subject: [PATCH 14/16] new create actor definition routes - create new routes instead of making breaking changes to existing ones - existing create/list routes will be repurposed as admin only routes --- airbyte-api/src/main/openapi/config.yaml | 82 ++++--- .../airbyte/server/apis/ConfigurationApi.java | 50 ++-- .../api/generated-api-html/index.html | 222 +++++++++++++++--- 3 files changed, 274 insertions(+), 80 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 809d5704168a..b2168c40a135 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -417,6 +417,29 @@ paths: $ref: "#/components/schemas/SourceDefinitionRead" "422": $ref: "#/components/responses/InvalidInputResponse" + /v1/source_definitions/get_for_workspace: + post: + tags: + - source_definition + summary: Get a sourceDefinition that is configured for the given workspace + operationId: getSourceDefinitionForWorkspace + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourceDefinitionIdWithWorkspaceId" + required: true + 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/update_custom: post: tags: @@ -449,7 +472,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CustomSourceDefinitionDelete" + $ref: "#/components/schemas/SourceDefinitionIdWithWorkspaceId" required: true responses: "204": @@ -468,7 +491,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceDefinitionGrantUpdate" + $ref: "#/components/schemas/SourceDefinitionIdWithWorkspaceId" required: true responses: "200": @@ -491,7 +514,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceDefinitionGrantUpdate" + $ref: "#/components/schemas/SourceDefinitionIdWithWorkspaceId" required: true responses: "204": @@ -916,6 +939,29 @@ paths: $ref: "#/components/schemas/DestinationDefinitionRead" "422": $ref: "#/components/responses/InvalidInputResponse" + /v1/destination_definitions/get_for_workspace: + post: + tags: + - destination_definition + summary: Get a destinationDefinition that is configured for the given workspace + operationId: getDestinationDefinitionForWorkspace + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationDefinitionIdWithWorkspaceId" + required: true + 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/update_custom: post: tags: @@ -948,7 +994,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/CustomDestinationDefinitionDelete" + $ref: "#/components/schemas/DestinationDefinitionIdWithWorkspaceId" required: true responses: "204": @@ -967,7 +1013,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/DestinationDefinitionGrantUpdate" + $ref: "#/components/schemas/DestinationDefinitionIdWithWorkspaceId" required: true responses: "200": @@ -990,7 +1036,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/DestinationDefinitionGrantUpdate" + $ref: "#/components/schemas/DestinationDefinitionIdWithWorkspaceId" required: true responses: "204": @@ -2479,7 +2525,7 @@ components: $ref: "#/components/schemas/WorkspaceId" sourceDefinition: $ref: "#/components/schemas/SourceDefinitionUpdate" - CustomSourceDefinitionDelete: + SourceDefinitionIdWithWorkspaceId: type: object required: - sourceDefinitionId @@ -2508,16 +2554,6 @@ components: type: array items: $ref: "#/components/schemas/PrivateSourceDefinitionRead" - SourceDefinitionGrantUpdate: - type: object - required: - - sourceDefinitionId - - workspaceId - properties: - sourceDefinitionId: - $ref: "#/components/schemas/SourceDefinitionId" - workspaceId: - $ref: "#/components/schemas/WorkspaceId" # SOURCE SPECIFICATION SourceDefinitionSpecification: description: The specification for what values are required to configure the sourceDefinition. @@ -2822,7 +2858,7 @@ components: $ref: "#/components/schemas/WorkspaceId" destinationDefinition: $ref: "#/components/schemas/DestinationDefinitionUpdate" - CustomDestinationDefinitionDelete: + DestinationDefinitionIdWithWorkspaceId: type: object required: - destinationDefinitionId @@ -2851,16 +2887,6 @@ components: type: array items: $ref: "#/components/schemas/PrivateDestinationDefinitionRead" - DestinationDefinitionGrantUpdate: - type: object - required: - - destinationDefinitionId - - workspaceId - properties: - destinationDefinitionId: - $ref: "#/components/schemas/DestinationDefinitionId" - workspaceId: - $ref: "#/components/schemas/WorkspaceId" # DESTINATION DEFINITION SPECIFICATION DestinationDefinitionSpecification: description: The specification for what values are required to configure the destinationDefinition. 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 0f884351323a..f96f51ad4d7d 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 @@ -17,10 +17,8 @@ import io.airbyte.api.model.ConnectionState; import io.airbyte.api.model.ConnectionUpdate; import io.airbyte.api.model.CustomDestinationDefinitionCreate; -import io.airbyte.api.model.CustomDestinationDefinitionDelete; import io.airbyte.api.model.CustomDestinationDefinitionUpdate; import io.airbyte.api.model.CustomSourceDefinitionCreate; -import io.airbyte.api.model.CustomSourceDefinitionDelete; import io.airbyte.api.model.CustomSourceDefinitionUpdate; import io.airbyte.api.model.DbMigrationExecutionRead; import io.airbyte.api.model.DbMigrationReadList; @@ -28,8 +26,8 @@ import io.airbyte.api.model.DestinationCoreConfig; import io.airbyte.api.model.DestinationCreate; import io.airbyte.api.model.DestinationDefinitionCreate; -import io.airbyte.api.model.DestinationDefinitionGrantUpdate; import io.airbyte.api.model.DestinationDefinitionIdRequestBody; +import io.airbyte.api.model.DestinationDefinitionIdWithWorkspaceId; import io.airbyte.api.model.DestinationDefinitionRead; import io.airbyte.api.model.DestinationDefinitionReadList; import io.airbyte.api.model.DestinationDefinitionSpecificationRead; @@ -68,8 +66,8 @@ import io.airbyte.api.model.SourceCoreConfig; import io.airbyte.api.model.SourceCreate; import io.airbyte.api.model.SourceDefinitionCreate; -import io.airbyte.api.model.SourceDefinitionGrantUpdate; import io.airbyte.api.model.SourceDefinitionIdRequestBody; +import io.airbyte.api.model.SourceDefinitionIdWithWorkspaceId; import io.airbyte.api.model.SourceDefinitionRead; import io.airbyte.api.model.SourceDefinitionReadList; import io.airbyte.api.model.SourceDefinitionSpecificationRead; @@ -342,17 +340,17 @@ public SourceDefinitionRead getSourceDefinition(final SourceDefinitionIdRequestB } @Override - public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { - return execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(sourceDefinitionCreate)); + public SourceDefinitionRead getSourceDefinitionForWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + return null; } @Override - public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { - return null; + public SourceDefinitionRead createSourceDefinition(final SourceDefinitionCreate sourceDefinitionCreate) { + return execute(() -> sourceDefinitionsHandler.createCustomSourceDefinition(sourceDefinitionCreate)); } @Override - public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionGrantUpdate sourceDefinitionGrantUpdate) { + public SourceDefinitionRead createCustomSourceDefinition(final CustomSourceDefinitionCreate customSourceDefinitionCreate) { return null; } @@ -375,12 +373,17 @@ public void deleteSourceDefinition(final SourceDefinitionIdRequestBody sourceDef } @Override - public void deleteCustomSourceDefinition(final CustomSourceDefinitionDelete customSourceDefinitionDelete) { + public void deleteCustomSourceDefinition(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + + } + @Override + public PrivateSourceDefinitionRead grantSourceDefinitionToWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { + return null; } @Override - public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionGrantUpdate sourceDefinitionOptInUpdate) { + public void revokeSourceDefinitionFromWorkspace(final SourceDefinitionIdWithWorkspaceId sourceDefinitionIdWithWorkspaceId) { } @@ -524,18 +527,18 @@ public DestinationDefinitionRead getDestinationDefinition(final DestinationDefin } @Override - public DestinationDefinitionRead createDestinationDefinition(final DestinationDefinitionCreate destinationDefinitionCreate) { - return execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(destinationDefinitionCreate)); + public DestinationDefinitionRead getDestinationDefinitionForWorkspace( + final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { + return null; } @Override - public DestinationDefinitionRead createCustomDestinationDefinition(final CustomDestinationDefinitionCreate customDestinationDefinitionCreate) { - return null; + public DestinationDefinitionRead createDestinationDefinition(final DestinationDefinitionCreate destinationDefinitionCreate) { + return execute(() -> destinationDefinitionsHandler.createCustomDestinationDefinition(destinationDefinitionCreate)); } @Override - public PrivateDestinationDefinitionRead grantDestinationDefinitionToWorkspace( - final DestinationDefinitionGrantUpdate destinationDefinitionOptInUpdate) { + public DestinationDefinitionRead createCustomDestinationDefinition(final CustomDestinationDefinitionCreate customDestinationDefinitionCreate) { return null; } @@ -558,19 +561,26 @@ public void deleteDestinationDefinition(final DestinationDefinitionIdRequestBody } @Override - public void deleteCustomDestinationDefinition(final CustomDestinationDefinitionDelete customDestinationDefinitionDelete) { + public void deleteCustomDestinationDefinition(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { + + } + @Override + public PrivateDestinationDefinitionRead grantDestinationDefinitionToWorkspace( + final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { + return null; } @Override - public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinitionGrantUpdate destinationDefinitionOptInUpdate) { + public void revokeDestinationDefinitionFromWorkspace(final DestinationDefinitionIdWithWorkspaceId destinationDefinitionIdWithWorkspaceId) { } // DESTINATION SPECIFICATION @Override - public DestinationDefinitionSpecificationRead getDestinationDefinitionSpecification(final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { + public DestinationDefinitionSpecificationRead getDestinationDefinitionSpecification( + final DestinationDefinitionIdRequestBody destinationDefinitionIdRequestBody) { return execute(() -> schedulerHandler.getDestinationSpecification(destinationDefinitionIdRequestBody)); } diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 17e3a39167d3..61773ea40c26 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -264,6 +264,7 @@

    DestinationDefinition

  • post /v1/destination_definitions/delete_custom
  • post /v1/destination_definitions/delete
  • post /v1/destination_definitions/get
  • +
  • post /v1/destination_definitions/get_for_workspace
  • post /v1/destination_definitions/grant_definition
  • post /v1/destination_definitions/list
  • post /v1/destination_definitions/list_for_workspace
  • @@ -344,6 +345,7 @@

    SourceDefinition

  • post /v1/source_definitions/delete_custom
  • post /v1/source_definitions/delete
  • post /v1/source_definitions/get
  • +
  • post /v1/source_definitions/get_for_workspace
  • post /v1/source_definitions/grant_definition
  • post /v1/source_definitions/list_latest
  • post /v1/source_definitions/list_private
  • @@ -2768,7 +2770,7 @@

    Consumes

    Request body

    -
    CustomDestinationDefinitionDelete CustomDestinationDefinitionDelete (required)
    +
    DestinationDefinitionIdWithWorkspaceId DestinationDefinitionIdWithWorkspaceId (required)
    Body Parameter
    @@ -2873,6 +2875,93 @@

    Request body

    +

    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",
    +  "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 +
    post /v1/destination_definitions/get_for_workspace
    +
    Get a destinationDefinition that is configured for the given workspace (getDestinationDefinitionForWorkspace)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    DestinationDefinitionIdWithWorkspaceId DestinationDefinitionIdWithWorkspaceId (required)
    + +
    Body Parameter
    + +
    + + + +

    Return type

    DestinationDefinitionRead @@ -2951,7 +3040,7 @@

    Consumes

    Request body

    -
    DestinationDefinitionGrantUpdate DestinationDefinitionGrantUpdate (required)
    +
    DestinationDefinitionIdWithWorkspaceId DestinationDefinitionIdWithWorkspaceId (required)
    Body Parameter
    @@ -3479,7 +3568,7 @@

    Consumes

    Request body

    -
    DestinationDefinitionGrantUpdate DestinationDefinitionGrantUpdate (required)
    +
    DestinationDefinitionIdWithWorkspaceId DestinationDefinitionIdWithWorkspaceId (required)
    Body Parameter
    @@ -6596,7 +6685,7 @@

    Consumes

    Request body

    -
    CustomSourceDefinitionDelete CustomSourceDefinitionDelete (required)
    +
    SourceDefinitionIdWithWorkspaceId SourceDefinitionIdWithWorkspaceId (required)
    Body Parameter
    @@ -6701,6 +6790,93 @@

    Request body

    +

    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",
    +  "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 +
    +
    +
    +
    + Up +
    post /v1/source_definitions/get_for_workspace
    +
    Get a sourceDefinition that is configured for the given workspace (getSourceDefinitionForWorkspace)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    SourceDefinitionIdWithWorkspaceId SourceDefinitionIdWithWorkspaceId (required)
    + +
    Body Parameter
    + +
    + + + +

    Return type

    SourceDefinitionRead @@ -6779,7 +6955,7 @@

    Consumes

    Request body

    -
    -

    CustomDestinationDefinitionDelete - Up

    -
    -
    -
    destinationDefinitionId
    UUID format: uuid
    -
    workspaceId
    UUID format: uuid
    -
    -
    -
    -

    CustomSourceDefinitionDelete - Up

    -
    -
    -
    sourceDefinitionId
    UUID format: uuid
    -
    workspaceId
    UUID format: uuid
    -
    -
    -

    DestinationDefinitionGrantUpdate - Up

    +

    DestinationDefinitionIdRequestBody - Up

    destinationDefinitionId
    UUID format: uuid
    -
    workspaceId
    UUID format: uuid
    -

    DestinationDefinitionIdRequestBody - Up

    +

    DestinationDefinitionIdWithWorkspaceId - Up

    destinationDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    @@ -10598,18 +10756,18 @@

    SourceDefinitionCreate -

    -

    SourceDefinitionGrantUpdate - Up

    +

    SourceDefinitionIdRequestBody - Up

    sourceDefinitionId
    UUID format: uuid
    -
    workspaceId
    UUID format: uuid
    -

    SourceDefinitionIdRequestBody - Up

    +

    SourceDefinitionIdWithWorkspaceId - Up

    sourceDefinitionId
    UUID format: uuid
    +
    workspaceId
    UUID format: uuid
    From 3a3b4cdbd8b2d7b1053c9cd10a7b789eef6ae26b Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 17:18:06 -0700 Subject: [PATCH 15/16] typo --- airbyte-api/src/main/openapi/config.yaml | 4 ++-- docs/reference/api/generated-api-html/index.html | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index b2168c40a135..66271ac2fef6 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -2519,7 +2519,7 @@ components: type: object required: - workspaceId - - sourceDefinitionUpdate + - sourceDefinition properties: workspaceId: $ref: "#/components/schemas/WorkspaceId" @@ -2852,7 +2852,7 @@ components: type: object required: - workspaceId - - destinationDefinitionUpdate + - destinationDefinition properties: workspaceId: $ref: "#/components/schemas/WorkspaceId" diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 61773ea40c26..22c9042c4b9e 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -10099,7 +10099,7 @@

    CustomDestinationDefinitio
    workspaceId
    UUID format: uuid
    -
    destinationDefinition (optional)
    +
    destinationDefinition

    @@ -10115,7 +10115,7 @@

    CustomSourceDefinitionUpdate

    workspaceId
    UUID format: uuid
    -
    sourceDefinition (optional)
    +
    sourceDefinition
    From d362ff809d40bf752d8e0ecaaa9dfda86ffd31f0 Mon Sep 17 00:00:00 2001 From: git-phu Date: Mon, 21 Mar 2022 17:22:33 -0700 Subject: [PATCH 16/16] typo --- airbyte-api/src/main/openapi/config.yaml | 2 +- docs/reference/api/generated-api-html/index.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 66271ac2fef6..b5060b6f38a8 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -998,7 +998,7 @@ paths: required: true responses: "204": - description: The redestination was deleted successfully. + description: The destination was deleted successfully. "404": $ref: "#/components/responses/NotFoundResponse" "422": diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 22c9042c4b9e..84e32e6e0af0 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -2792,7 +2792,7 @@

    Produces

    Responses

    204

    - The redestination was deleted successfully. + The destination was deleted successfully.

    404

    Object with given id was not found.