From e89846cba9a4b27d77a20e74b90fdb32c78050ae Mon Sep 17 00:00:00 2001 From: Charles Date: Fri, 17 Jun 2022 10:59:41 -0700 Subject: [PATCH] update api for per stream (#13835) --- airbyte-api/build.gradle | 6 +- airbyte-api/src/main/openapi/config.yaml | 168 ++- .../airbyte/server/apis/ConfigurationApi.java | 8 +- .../src/core/request/AirbyteClient.ts | 4 +- .../api/generated-api-html/index.html | 1278 ++++++++++++++++- 5 files changed, 1445 insertions(+), 19 deletions(-) diff --git a/airbyte-api/build.gradle b/airbyte-api/build.gradle index 3b8b6e79dd49..3ab11ed2e37b 100644 --- a/airbyte-api/build.gradle +++ b/airbyte-api/build.gradle @@ -28,7 +28,7 @@ task generateApiServer(type: GenerateTask) { 'DestinationDefinitionSpecification': 'com.fasterxml.jackson.databind.JsonNode', 'DestinationConfiguration' : 'com.fasterxml.jackson.databind.JsonNode', 'StreamJsonSchema' : 'com.fasterxml.jackson.databind.JsonNode', - 'ConnectionStateObject' : 'com.fasterxml.jackson.databind.JsonNode', + 'StateBlob' : 'com.fasterxml.jackson.databind.JsonNode', ] generateApiDocumentation = false @@ -70,7 +70,7 @@ task generateApiClient(type: GenerateTask) { 'DestinationDefinitionSpecification': 'com.fasterxml.jackson.databind.JsonNode', 'DestinationConfiguration' : 'com.fasterxml.jackson.databind.JsonNode', 'StreamJsonSchema' : 'com.fasterxml.jackson.databind.JsonNode', - 'ConnectionStateObject' : 'com.fasterxml.jackson.databind.JsonNode', + 'StateBlob' : 'com.fasterxml.jackson.databind.JsonNode', ] library = "native" @@ -103,7 +103,7 @@ task generateApiDocs(type: GenerateTask) { 'DestinationDefinitionSpecification': 'com.fasterxml.jackson.databind.JsonNode', 'DestinationConfiguration' : 'com.fasterxml.jackson.databind.JsonNode', 'StreamJsonSchema' : 'com.fasterxml.jackson.databind.JsonNode', - 'ConnectionStateObject' : 'com.fasterxml.jackson.databind.JsonNode', + 'StateBlob' : 'com.fasterxml.jackson.databind.JsonNode', ] generateApiDocumentation = false diff --git a/airbyte-api/src/main/openapi/config.yaml b/airbyte-api/src/main/openapi/config.yaml index 426e93e63054..53b09f2d76ea 100644 --- a/airbyte-api/src/main/openapi/config.yaml +++ b/airbyte-api/src/main/openapi/config.yaml @@ -1402,6 +1402,29 @@ paths: $ref: "#/components/responses/NotFoundResponse" "422": $ref: "#/components/responses/InvalidInputResponse" + /v1/state/type/get: + post: + tags: + - connection + summary: Fetch the current type for a connection. + operationId: getStateType + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/ConnectionIdRequestBody" + required: true + responses: + "200": + description: Successful operation + content: + application/json: + schema: + $ref: "#/components/schemas/ConnectionStateType" + "404": + $ref: "#/components/responses/NotFoundResponse" + "422": + $ref: "#/components/responses/InvalidInputResponse" /v1/connections/search: post: tags: @@ -3585,7 +3608,6 @@ components: type: string description: Stream's name. jsonSchema: - description: Stream schema using Json Schema specs. $ref: "#/components/schemas/StreamJsonSchema" supportedSyncModes: type: array @@ -3610,6 +3632,7 @@ components: type: string description: Optional Source-defined namespace. Airbyte streams from the same sources should have the same namespace. Currently only used by JDBC destinations to determine what schema to write to. StreamJsonSchema: + description: Stream schema using Json Schema specs. type: object AirbyteStreamConfiguration: description: the mutable part of the stream to configure the destination @@ -3674,7 +3697,6 @@ components: configId: type: string pagination: - type: object $ref: "#/components/schemas/Pagination" JobIdRequestBody: type: object @@ -3707,6 +3729,19 @@ components: format: int64 status: $ref: "#/components/schemas/JobStatus" + streams: + type: array + items: + $ref: "#/components/schemas/StreamDescriptor" + StreamDescriptor: + type: object + required: + - name + properties: + name: + type: string + namespace: + type: string JobDebugRead: type: object required: @@ -3980,15 +4015,132 @@ components: $ref: "#/components/schemas/SynchronousJobRead" ConnectionState: type: object + description: Contains the state for a connection. The stateType field identifies what type of state it is. Only the field corresponding to that type will be set, the rest will be null. If stateType=not_set, then none of the fields will be set. required: - connectionId + - stateType properties: + stateType: + $ref: "#/components/schemas/ConnectionStateType" connectionId: $ref: "#/components/schemas/ConnectionId" - state: - $ref: "#/components/schemas/ConnectionStateObject" - ConnectionStateObject: + state: # legacy state object + $ref: "#/components/schemas/StateBlob" + streamState: + type: array + items: + $ref: "#/components/schemas/StreamState" + globalState: + $ref: "#/components/schemas/GlobalState" + StateBlob: + type: object + StreamState: + type: object + required: + - streamDescriptor + properties: + streamDescriptor: + $ref: "#/components/schemas/StreamDescriptor" + streamState: + $ref: "#/components/schemas/StateBlob" + GlobalState: + type: object + required: + - streamStates + properties: + shared_state: + $ref: "#/components/schemas/StateBlob" + streamStates: + type: array + items: + $ref: "#/components/schemas/StreamState" + ConnectionStateType: + type: string + enum: + - global + - stream + - legacy + - not_set + CatalogDiff: + type: object + description: Describes the difference between two Airbyte catalogs. + required: + - transforms + properties: + transforms: + description: list of stream transformations. order does not matter. + type: array + items: + $ref: "#/components/schemas/StreamTransform" + StreamTransform: + type: object + required: + - transformType + properties: + transformType: + type: string + enum: + - add_stream + - remove_stream + - update_stream + addStream: + $ref: "#/components/schemas/StreamDescriptor" + removeStream: + $ref: "#/components/schemas/StreamDescriptor" + updateStream: + type: array + description: list of field transformations. order does not matter. + items: + $ref: "#/components/schemas/FieldTransform" + FieldTransform: + type: object + description: "Describes the difference between two Streams." + required: + - transformType + properties: + transformType: + type: string + enum: + - add_field + - remove_field + - update_field_schema + addField: + $ref: "#/components/schemas/FieldNameAndSchema" + removeField: + $ref: "#/components/schemas/FieldNameAndSchema" + updateFieldSchema: + $ref: "#/components/schemas/FieldSchemaUpdate" + FieldNameAndSchema: + type: object + required: + - fieldName + - fieldSchema + properties: + fieldName: + type: array + items: + type: string + fieldSchema: + $ref: "#/components/schemas/FieldSchema" + FieldSchemaUpdate: type: object + required: + - fieldName + - oldSchema + - newSchema + properties: + fieldName: + type: array + items: + type: string + oldSchema: + $ref: "#/components/schemas/FieldSchema" + newSchema: + $ref: "#/components/schemas/FieldSchema" + FieldSchema: + description: JSONSchema representation of the field + type: object + additionalProperties: true ActorDefinitionResourceRequirements: description: actor definition specific resource requirements. if default is set, these are the requirements that should be set for ALL jobs run for this actor definition. it is overriden by the job type specific configurations. if not set, the platform will use defaults. these values will be overriden by configuration at the connection level. type: object @@ -4099,10 +4251,8 @@ components: $ref: "#/components/schemas/DbMigrationRead" # OAuth OAuthConfiguration: - description: OAuth specific blob. + description: The values required to configure OAuth flows. The schema for this must match the `OAuthConfigSpecification.oauthUserInputFromConnectorConfigSpecification` schema. OAuthInputConfiguration: - description: The values required to configure OAuth flows. - The schema for this must match the `OAuthConfigSpecification.oauthUserInputFromConnectorConfigSpecification` schema. $ref: "#/components/schemas/OAuthConfiguration" AdvancedAuth: type: object @@ -4372,6 +4522,8 @@ components: catalogId: type: string format: uuid + catalogDiff: + $ref: "#/components/schemas/CatalogDiff" WebBackendConnectionReadList: 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 0da999eed61c..61284a0f20a6 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 @@ -15,6 +15,7 @@ import io.airbyte.api.model.generated.ConnectionReadList; import io.airbyte.api.model.generated.ConnectionSearch; import io.airbyte.api.model.generated.ConnectionState; +import io.airbyte.api.model.generated.ConnectionStateType; import io.airbyte.api.model.generated.ConnectionUpdate; import io.airbyte.api.model.generated.CustomDestinationDefinitionCreate; import io.airbyte.api.model.generated.CustomDestinationDefinitionUpdate; @@ -727,6 +728,11 @@ public ConnectionState getState(final ConnectionIdRequestBody connectionIdReques return execute(() -> schedulerHandler.getState(connectionIdRequestBody)); } + @Override + public ConnectionStateType getStateType(final ConnectionIdRequestBody connectionIdRequestBody) { + return null; + } + // SCHEDULER @Override public CheckConnectionRead executeSourceCheckConnection(final SourceCoreConfig sourceConfig) { @@ -849,7 +855,7 @@ public boolean canImportDefinitons() { return archiveHandler.canImportDefinitions(); } - private T execute(final HandlerCall call) { + private static T execute(final HandlerCall call) { try { return call.call(); } catch (final ConfigNotFoundException e) { diff --git a/airbyte-webapp/src/core/request/AirbyteClient.ts b/airbyte-webapp/src/core/request/AirbyteClient.ts index b066780f316f..46717adf6721 100644 --- a/airbyte-webapp/src/core/request/AirbyteClient.ts +++ b/airbyte-webapp/src/core/request/AirbyteClient.ts @@ -413,13 +413,13 @@ export interface ActorDefinitionResourceRequirements { jobSpecific?: JobTypeResourceLimit[]; } -export interface ConnectionStateObject { +export interface StateBlob { [key: string]: any; } export interface ConnectionState { connectionId: ConnectionId; - state?: ConnectionStateObject; + state?: StateBlob; } export type CheckConnectionReadStatus = typeof CheckConnectionReadStatus[keyof typeof CheckConnectionReadStatus]; diff --git a/docs/reference/api/generated-api-html/index.html b/docs/reference/api/generated-api-html/index.html index 25fcbf390883..edbdaebfcd9f 100644 --- a/docs/reference/api/generated-api-html/index.html +++ b/docs/reference/api/generated-api-html/index.html @@ -225,6 +225,7 @@

Connection

  • post /v1/connections/delete
  • post /v1/connections/get
  • post /v1/state/get
  • +
  • post /v1/state/type/get
  • post /v1/connections/list_all
  • post /v1/connections/list
  • post /v1/connections/reset
  • @@ -679,7 +680,31 @@

    Return type

    Example data

    Content-Type: application/json
    {
    -  "connectionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91"
    +  "globalState" : {
    +    "streamStates" : [ {
    +      "streamDescriptor" : {
    +        "name" : "name",
    +        "namespace" : "namespace"
    +      }
    +    }, {
    +      "streamDescriptor" : {
    +        "name" : "name",
    +        "namespace" : "namespace"
    +      }
    +    } ]
    +  },
    +  "connectionId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91",
    +  "streamState" : [ {
    +    "streamDescriptor" : {
    +      "name" : "name",
    +      "namespace" : "namespace"
    +    }
    +  }, {
    +    "streamDescriptor" : {
    +      "name" : "name",
    +      "namespace" : "namespace"
    +    }
    +  } ]
     }

    Produces

    @@ -701,6 +726,62 @@

    422

    InvalidInputExceptionInfo
    +
    +
    + Up +
    post /v1/state/type/get
    +
    Fetch the current type for a connection. (getStateType)
    +
    + + +

    Consumes

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

    Request body

    +
    +
    ConnectionIdRequestBody ConnectionIdRequestBody (required)
    + +
    Body Parameter
    + +
    + + + + +

    Return type

    + + + + +

    Example data

    +
    Content-Type: application/json
    +
    null
    + +

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

    404

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

    422

    + Input failed validation + InvalidInputExceptionInfo +
    +
    Up @@ -1064,6 +1145,13 @@

    Example data

    "job" : { "createdAt" : 6, "configId" : "configId", + "streams" : [ { + "name" : "name", + "namespace" : "namespace" + }, { + "name" : "name", + "namespace" : "namespace" + } ], "id" : 0, "updatedAt" : 1 }, @@ -1389,6 +1477,13 @@

    Example data

    "job" : { "createdAt" : 6, "configId" : "configId", + "streams" : [ { + "name" : "name", + "namespace" : "namespace" + }, { + "name" : "name", + "namespace" : "namespace" + } ], "id" : 0, "updatedAt" : 1 }, @@ -3965,6 +4060,13 @@

    Example data

    "job" : { "createdAt" : 6, "configId" : "configId", + "streams" : [ { + "name" : "name", + "namespace" : "namespace" + }, { + "name" : "name", + "namespace" : "namespace" + } ], "id" : 0, "updatedAt" : 1 }, @@ -4360,6 +4462,13 @@

    Example data

    "job" : { "createdAt" : 6, "configId" : "configId", + "streams" : [ { + "name" : "name", + "namespace" : "namespace" + }, { + "name" : "name", + "namespace" : "namespace" + } ], "id" : 0, "updatedAt" : 1 }, @@ -4527,6 +4636,13 @@

    Example data

    "job" : { "createdAt" : 6, "configId" : "configId", + "streams" : [ { + "name" : "name", + "namespace" : "namespace" + }, { + "name" : "name", + "namespace" : "namespace" + } ], "id" : 0, "updatedAt" : 1 }, @@ -4627,6 +4743,13 @@

    Example data

    "job" : { "createdAt" : 6, "configId" : "configId", + "streams" : [ { + "name" : "name", + "namespace" : "namespace" + }, { + "name" : "name", + "namespace" : "namespace" + } ], "id" : 0, "updatedAt" : 1 }, @@ -7880,6 +8003,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8038,6 +8278,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8260,6 +8617,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8365,6 +8839,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8528,6 +9119,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8633,6 +9341,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8796,6 +9621,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -8901,6 +9843,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -9060,6 +10119,123 @@

    Example data

    "workspaceId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91" }, "destinationId" : "046b6c7f-0b8a-43b9-b35d-6489e6daee91", + "catalogDiff" : { + "transforms" : [ { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + }, { + "removeStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "transformType" : "add_stream", + "addStream" : { + "name" : "name", + "namespace" : "namespace" + }, + "updateStream" : [ { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + }, { + "updateFieldSchema" : { + "fieldName" : [ "fieldName", "fieldName" ], + "oldSchema" : { + "key" : "{}" + }, + "newSchema" : { + "key" : "{}" + } + }, + "addField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + }, + "transformType" : "add_field", + "removeField" : { + "fieldName" : [ "fieldName", "fieldName" ], + "fieldSchema" : { + "key" : "{}" + } + } + } ] + } ] + }, "resourceRequirements" : { "cpu_limit" : "cpu_limit", "memory_request" : "memory_request", @@ -9786,6 +10962,7 @@

    Table of Contents

  • AttemptStatus -
  • AttemptStreamStats -
  • AuthSpecification -
  • +
  • CatalogDiff -
  • CheckConnectionRead -
  • CheckOperationRead -
  • CompleteDestinationOAuthRequest -
  • @@ -9797,6 +10974,7 @@

    Table of Contents

  • ConnectionSchedule -
  • ConnectionSearch -
  • ConnectionState -
  • +
  • ConnectionStateType -
  • ConnectionStatus -
  • ConnectionUpdate -
  • CustomDestinationDefinitionCreate -
  • @@ -9825,6 +11003,10 @@

    Table of Contents

  • DestinationSearch -
  • DestinationSyncMode -
  • DestinationUpdate -
  • +
  • FieldNameAndSchema -
  • +
  • FieldSchemaUpdate -
  • +
  • FieldTransform -
  • +
  • GlobalState -
  • HealthCheckRead -
  • ImportRead -
  • ImportRequestBody -
  • @@ -9891,6 +11073,9 @@

    Table of Contents

  • SourceReadList -
  • SourceSearch -
  • SourceUpdate -
  • +
  • StreamDescriptor -
  • +
  • StreamState -
  • +
  • StreamTransform -
  • SyncMode -
  • SynchronousJobRead -
  • UploadRead -
  • @@ -10063,6 +11248,13 @@

    AuthSpecification - oauth2Specification (optional)

    +
    +

    CatalogDiff - Up

    +
    Describes the difference between two Airbyte catalogs.
    +
    +
    transforms
    array[StreamTransform] list of stream transformations. order does not matter.
    +
    +

    CheckConnectionRead - Up

    @@ -10186,12 +11378,21 @@

    ConnectionSearch -

    ConnectionState - Up

    -
    +
    Contains the state for a connection. The stateType field identifies what type of state it is. Only the field corresponding to that type will be set, the rest will be null. If stateType=not_set, then none of the fields will be set.
    -
    connectionId
    UUID format: uuid
    -
    state (optional)
    +
    stateType
    +
    connectionId
    UUID format: uuid
    +
    state (optional)
    +
    streamState (optional)
    +
    globalState (optional)

    +

    ConnectionStatus - Up

    Active means that data is flowing through the connection. Inactive means it is not. Deprecated means the connection is off and cannot be re-activated. the schema field describes the elements of the schema that will be synced.
    @@ -10449,6 +11650,43 @@

    DestinationUpdate - name

    +
    +

    FieldNameAndSchema - Up

    +
    +
    +
    fieldName
    +
    fieldSchema
    map[String, Object] JSONSchema representation of the field
    +
    +
    +
    +

    FieldSchemaUpdate - Up

    +
    +
    +
    fieldName
    +
    oldSchema
    map[String, Object] JSONSchema representation of the field
    +
    newSchema
    map[String, Object] JSONSchema representation of the field
    +
    +
    +
    +

    FieldTransform - Up

    +
    Describes the difference between two Streams.
    +
    +
    transformType
    +
    Enum:
    +
    add_field
    remove_field
    update_field_schema
    +
    addField (optional)
    +
    removeField (optional)
    +
    updateFieldSchema (optional)
    +
    +
    +
    +

    GlobalState - Up

    +
    +
    +
    shared_state (optional)
    +
    streamStates
    +
    +

    HealthCheckRead - Up

    @@ -10541,7 +11779,7 @@

    JobListRequestBody -
    configTypes
    configId
    -
    pagination (optional)
    +
    pagination (optional)

    @@ -10554,6 +11792,7 @@

    JobRead - createdAt

    Long format: int64
    updatedAt
    Long format: int64
    status
    +
    streams (optional)
    @@ -11017,6 +12256,34 @@

    SourceUpdate - name

    +
    +

    StreamDescriptor - Up

    +
    +
    +
    name
    +
    namespace (optional)
    +
    +
    +
    +

    StreamState - Up

    +
    +
    +
    streamDescriptor
    +
    streamState (optional)
    +
    +
    +
    +

    StreamTransform - Up

    +
    +
    +
    transformType
    +
    Enum:
    +
    add_stream
    remove_stream
    update_stream
    +
    addStream (optional)
    +
    removeStream (optional)
    +
    updateStream (optional)
    array[FieldTransform] list of field transformations. order does not matter.
    +
    +

    SyncMode - Up

    @@ -11088,6 +12355,7 @@

    WebBackendConnectionRead - <
    isSyncing
    resourceRequirements (optional)
    catalogId (optional)
    UUID format: uuid
    +
    catalogDiff (optional)