From 2114aca55717d51073d0b155cbd842a60c66259e Mon Sep 17 00:00:00 2001 From: perangel Date: Wed, 17 Jul 2024 09:49:17 -0400 Subject: [PATCH] fix: change `streams` to be a SetNestedAttribute This commit modifies the connection resource's `streams` attribute to be a `SetNestedAttribute` instead of a List. This is so that we can properly compute plan's that treat re-ordering of elements (streams) as a noop (if no attributes of the stream have been changed). Previously if you added a new stream to a connection resource in the middle of the list, or changed the order, the provider would compute that as a change that had to be applied. Additionally, we use a customer SetPlanModifier that may be parameterized with a `key` which is used to uniquely identify the elements in the set. NOTE: the current implementation of the plan modifier `uniqueByKey` assumes that the elements of the set are Objects. Since this is the only use case for this modifier, this seems reasonable for now. --- .genignore | 2 + airbyte.yaml | 2231 +++++++++-------- .../setplanmodifier/unique_by_key.go | 101 + internal/provider/connection_data_source.go | 2 +- internal/provider/connection_resource.go | 33 +- 5 files changed, 1253 insertions(+), 1116 deletions(-) create mode 100644 .genignore create mode 100644 internal/planmodifiers/setplanmodifier/unique_by_key.go diff --git a/.genignore b/.genignore new file mode 100644 index 000000000..b60da54ec --- /dev/null +++ b/.genignore @@ -0,0 +1,2 @@ +internal/provider/connection_resource.go +internal/provider/connection_data_resource.go diff --git a/airbyte.yaml b/airbyte.yaml index c24cb7656..a2d6ffd61 100644 --- a/airbyte.yaml +++ b/airbyte.yaml @@ -3323,92 +3323,6 @@ paths: type: "string" in: "path" required: true - /sources#Clazar: - post: - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceClazarCreateRequest" - tags: - - "Sources" - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SourceResponse" - description: "Successful operation" - "400": - description: "Invalid data" - "403": - description: "Not allowed" - operationId: "createSourceClazar" - summary: "Create a source" - description: - "Creates a source given a name, workspace id, and a json blob containing\ - \ the configuration for the source." - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Clazar#create - /sources/{sourceId}#Clazar: - get: - tags: - - "Sources" - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SourceResponse" - description: "Get a Source by the id in the path." - "403": - description: "Not allowed" - "404": - description: "Not found" - operationId: "getSourceClazar" - summary: "Get Source details" - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Clazar#read - put: - tags: - - "Sources" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceClazarPutRequest" - responses: - "2XX": - description: "The resource was updated successfully" - "403": - description: "Not allowed" - "404": - description: "Not found" - operationId: "putSourceClazar" - summary: "Update a Source fully" - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Clazar#update - delete: - tags: - - "Sources" - responses: - "2XX": - description: "The resource was deleted successfully" - "403": - description: "Not allowed" - "404": - description: "Not found" - operationId: "deleteSourceClazar" - summary: "Delete a Source" - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Clazar#delete - parameters: - - name: "sourceId" - schema: - format: "UUID" - type: "string" - in: "path" - required: true /sources#Clickhouse: post: requestBody: @@ -4269,92 +4183,6 @@ paths: type: "string" in: "path" required: true - /sources#Datadog: - post: - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDatadogCreateRequest" - tags: - - "Sources" - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SourceResponse" - description: "Successful operation" - "400": - description: "Invalid data" - "403": - description: "Not allowed" - operationId: "createSourceDatadog" - summary: "Create a source" - description: - "Creates a source given a name, workspace id, and a json blob containing\ - \ the configuration for the source." - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Datadog#create - /sources/{sourceId}#Datadog: - get: - tags: - - "Sources" - responses: - "200": - content: - application/json: - schema: - $ref: "#/components/schemas/SourceResponse" - description: "Get a Source by the id in the path." - "403": - description: "Not allowed" - "404": - description: "Not found" - operationId: "getSourceDatadog" - summary: "Get Source details" - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Datadog#read - put: - tags: - - "Sources" - requestBody: - content: - application/json: - schema: - $ref: "#/components/schemas/SourceDatadogPutRequest" - responses: - "2XX": - description: "The resource was updated successfully" - "403": - description: "Not allowed" - "404": - description: "Not found" - operationId: "putSourceDatadog" - summary: "Update a Source fully" - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Datadog#update - delete: - tags: - - "Sources" - responses: - "2XX": - description: "The resource was deleted successfully" - "403": - description: "Not allowed" - "404": - description: "Not found" - operationId: "deleteSourceDatadog" - summary: "Delete a Source" - x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Datadog#delete - parameters: - - name: "sourceId" - schema: - format: "UUID" - type: "string" - in: "path" - required: true /sources#Datascope: post: requestBody: @@ -6419,13 +6247,13 @@ paths: type: "string" in: "path" required: true - /sources#Goldcast: + /sources#GoogleAds: post: requestBody: content: application/json: schema: - $ref: "#/components/schemas/SourceGoldcastCreateRequest" + $ref: "#/components/schemas/SourceGoogleAdsCreateRequest" tags: - "Sources" responses: @@ -6439,14 +6267,14 @@ paths: description: "Invalid data" "403": description: "Not allowed" - operationId: "createSourceGoldcast" + operationId: "createSourceGoogleAds" summary: "Create a source" description: "Creates a source given a name, workspace id, and a json blob containing\ \ the configuration for the source." x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Goldcast#create - /sources/{sourceId}#Goldcast: + x-speakeasy-entity-operation: Source_GoogleAds#create + /sources/{sourceId}#GoogleAds: get: tags: - "Sources" @@ -6461,10 +6289,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "getSourceGoldcast" + operationId: "getSourceGoogleAds" summary: "Get Source details" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Goldcast#read + x-speakeasy-entity-operation: Source_GoogleAds#read put: tags: - "Sources" @@ -6472,7 +6300,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceGoldcastPutRequest" + $ref: "#/components/schemas/SourceGoogleAdsPutRequest" responses: "2XX": description: "The resource was updated successfully" @@ -6480,10 +6308,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "putSourceGoldcast" + operationId: "putSourceGoogleAds" summary: "Update a Source fully" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Goldcast#update + x-speakeasy-entity-operation: Source_GoogleAds#update delete: tags: - "Sources" @@ -6494,10 +6322,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "deleteSourceGoldcast" + operationId: "deleteSourceGoogleAds" summary: "Delete a Source" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_Goldcast#delete + x-speakeasy-entity-operation: Source_GoogleAds#delete parameters: - name: "sourceId" schema: @@ -6505,13 +6333,13 @@ paths: type: "string" in: "path" required: true - /sources#GoogleAds: + /sources#GoogleAnalyticsDataApi: post: requestBody: content: application/json: schema: - $ref: "#/components/schemas/SourceGoogleAdsCreateRequest" + $ref: "#/components/schemas/SourceGoogleAnalyticsDataApiCreateRequest" tags: - "Sources" responses: @@ -6525,14 +6353,14 @@ paths: description: "Invalid data" "403": description: "Not allowed" - operationId: "createSourceGoogleAds" + operationId: "createSourceGoogleAnalyticsDataApi" summary: "Create a source" description: "Creates a source given a name, workspace id, and a json blob containing\ \ the configuration for the source." x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAds#create - /sources/{sourceId}#GoogleAds: + x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#create + /sources/{sourceId}#GoogleAnalyticsDataApi: get: tags: - "Sources" @@ -6547,10 +6375,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "getSourceGoogleAds" + operationId: "getSourceGoogleAnalyticsDataApi" summary: "Get Source details" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAds#read + x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#read put: tags: - "Sources" @@ -6558,7 +6386,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceGoogleAdsPutRequest" + $ref: "#/components/schemas/SourceGoogleAnalyticsDataApiPutRequest" responses: "2XX": description: "The resource was updated successfully" @@ -6566,10 +6394,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "putSourceGoogleAds" + operationId: "putSourceGoogleAnalyticsDataApi" summary: "Update a Source fully" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAds#update + x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#update delete: tags: - "Sources" @@ -6580,10 +6408,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "deleteSourceGoogleAds" + operationId: "deleteSourceGoogleAnalyticsDataApi" summary: "Delete a Source" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAds#delete + x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#delete parameters: - name: "sourceId" schema: @@ -6591,13 +6419,13 @@ paths: type: "string" in: "path" required: true - /sources#GoogleAnalyticsDataApi: + /sources#GoogleAnalyticsV4ServiceAccountOnly: post: requestBody: content: application/json: schema: - $ref: "#/components/schemas/SourceGoogleAnalyticsDataApiCreateRequest" + $ref: "#/components/schemas/SourceGoogleAnalyticsV4ServiceAccountOnlyCreateRequest" tags: - "Sources" responses: @@ -6611,14 +6439,14 @@ paths: description: "Invalid data" "403": description: "Not allowed" - operationId: "createSourceGoogleAnalyticsDataApi" + operationId: "createSourceGoogleAnalyticsV4ServiceAccountOnly" summary: "Create a source" description: "Creates a source given a name, workspace id, and a json blob containing\ \ the configuration for the source." x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#create - /sources/{sourceId}#GoogleAnalyticsDataApi: + x-speakeasy-entity-operation: Source_GoogleAnalyticsV4ServiceAccountOnly#create + /sources/{sourceId}#GoogleAnalyticsV4ServiceAccountOnly: get: tags: - "Sources" @@ -6633,10 +6461,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "getSourceGoogleAnalyticsDataApi" + operationId: "getSourceGoogleAnalyticsV4ServiceAccountOnly" summary: "Get Source details" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#read + x-speakeasy-entity-operation: Source_GoogleAnalyticsV4ServiceAccountOnly#read put: tags: - "Sources" @@ -6644,7 +6472,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/SourceGoogleAnalyticsDataApiPutRequest" + $ref: "#/components/schemas/SourceGoogleAnalyticsV4ServiceAccountOnlyPutRequest" responses: "2XX": description: "The resource was updated successfully" @@ -6652,10 +6480,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "putSourceGoogleAnalyticsDataApi" + operationId: "putSourceGoogleAnalyticsV4ServiceAccountOnly" summary: "Update a Source fully" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#update + x-speakeasy-entity-operation: Source_GoogleAnalyticsV4ServiceAccountOnly#update delete: tags: - "Sources" @@ -6666,10 +6494,10 @@ paths: description: "Not allowed" "404": description: "Not found" - operationId: "deleteSourceGoogleAnalyticsDataApi" + operationId: "deleteSourceGoogleAnalyticsV4ServiceAccountOnly" summary: "Delete a Source" x-use-speakeasy-middleware: true - x-speakeasy-entity-operation: Source_GoogleAnalyticsDataApi#delete + x-speakeasy-entity-operation: Source_GoogleAnalyticsV4ServiceAccountOnly#delete parameters: - name: "sourceId" schema: @@ -12611,6 +12439,92 @@ paths: type: "string" in: "path" required: true + /sources#PunkApi: + post: + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourcePunkApiCreateRequest" + tags: + - "Sources" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SourceResponse" + description: "Successful operation" + "400": + description: "Invalid data" + "403": + description: "Not allowed" + operationId: "createSourcePunkApi" + summary: "Create a source" + description: + "Creates a source given a name, workspace id, and a json blob containing\ + \ the configuration for the source." + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Source_PunkApi#create + /sources/{sourceId}#PunkApi: + get: + tags: + - "Sources" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/SourceResponse" + description: "Get a Source by the id in the path." + "403": + description: "Not allowed" + "404": + description: "Not found" + operationId: "getSourcePunkApi" + summary: "Get Source details" + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Source_PunkApi#read + put: + tags: + - "Sources" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/SourcePunkApiPutRequest" + responses: + "2XX": + description: "The resource was updated successfully" + "403": + description: "Not allowed" + "404": + description: "Not found" + operationId: "putSourcePunkApi" + summary: "Update a Source fully" + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Source_PunkApi#update + delete: + tags: + - "Sources" + responses: + "2XX": + description: "The resource was deleted successfully" + "403": + description: "Not allowed" + "404": + description: "Not found" + operationId: "deleteSourcePunkApi" + summary: "Delete a Source" + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Source_PunkApi#delete + parameters: + - name: "sourceId" + schema: + format: "UUID" + type: "string" + in: "path" + required: true /sources#Pypi: post: requestBody: @@ -19577,6 +19491,92 @@ paths: type: "string" in: "path" required: true + /destinations#Langchain: + post: + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationLangchainCreateRequest" + tags: + - "Destinations" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationResponse" + description: "Successful operation" + "400": + description: "Invalid data" + "403": + description: "Not allowed" + operationId: "createDestinationLangchain" + summary: "Create a destination" + description: + "Creates a destination given a name, workspace id, and a json blob containing\ + \ the configuration for the destination." + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Destination_Langchain#create + /destinations/{destinationId}#Langchain: + get: + tags: + - "Destinations" + responses: + "200": + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationResponse" + description: "Get a Destination by the id in the path." + "403": + description: "Not allowed" + "404": + description: "Not found" + operationId: "getDestinationLangchain" + summary: "Get Destination details" + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Destination_Langchain#read + put: + tags: + - "Destinations" + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/DestinationLangchainPutRequest" + responses: + "2XX": + description: "The resource was updated successfully" + "403": + description: "Not allowed" + "404": + description: "Not found" + operationId: "putDestinationLangchain" + summary: "Update a Destination fully" + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Destination_Langchain#update + delete: + tags: + - "Destinations" + responses: + "2XX": + description: "The resource was deleted successfully" + "403": + description: "Not allowed" + "404": + description: "Not found" + operationId: "deleteDestinationLangchain" + summary: "Delete a Destination" + x-use-speakeasy-middleware: true + x-speakeasy-entity-operation: Destination_Langchain#delete + parameters: + - name: "destinationId" + schema: + format: "UUID" + type: "string" + in: "path" + required: true /destinations#Milvus: post: requestBody: @@ -21562,76 +21562,6 @@ components: OAuthInputConfiguration: $ref: "#/components/schemas/OAuthConfiguration" x-speakeasy-component: true - ApplicationCreate: - required: - - "name" - type: "object" - properties: - name: - type: "string" - x-speakeasy-component: true - ApplicationReadList: - required: - - "applications" - type: "object" - properties: - applications: - type: "array" - items: - $ref: "#/components/schemas/ApplicationRead" - x-speakeasy-component: true - ApplicationRead: - required: - - "id" - - "name" - - "clientId" - - "clientSecret" - - "createdAt" - type: "object" - properties: - id: - type: "string" - name: - type: "string" - clientId: - type: "string" - clientSecret: - type: "string" - createdAt: - type: "integer" - format: "int64" - x-speakeasy-component: true - ApplicationTokenRequestWithGrant: - required: - - "client_id" - - "client_secret" - - "grant_type" - type: "object" - properties: - client_id: - type: "string" - client_secret: - type: "string" - grant-type: - enum: - - "client_credentials" - x-speakeasy-component: true - PublicAccessTokenResponse: - required: - - "access_token" - - "token_type" - - "expires_in" - type: "object" - properties: - access_token: - type: "string" - token_type: - enum: - - "Bearer" - expires_in: - type: "integer" - format: "int64" - x-speakeasy-component: true RedirectUrlResponse: title: "Root Type for RedirectUrlResponse" description: "" @@ -22533,6 +22463,7 @@ components: properties: streams: type: "array" + format: "set" items: $ref: "#/components/schemas/StreamConfiguration" x-speakeasy-component: true @@ -23743,214 +23674,6 @@ components: order: 1 required: - "api_key" - source-datadog: - title: "Datadog Source Spec" - type: "object" - required: - - "api_key" - - "application_key" - - "sourceType" - properties: - api_key: - title: "API Key" - description: "Datadog API key" - type: "string" - airbyte_secret: true - order: 1 - x-speakeasy-param-sensitive: true - application_key: - title: "Application Key" - description: "Datadog application key" - type: "string" - airbyte_secret: true - order: 2 - x-speakeasy-param-sensitive: true - query: - title: "Query" - description: "The search query. This just applies to Incremental syncs.\ - \ If empty, it'll collect all logs." - type: "string" - order: 3 - start_date: - title: "Start date" - pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" - description: "UTC date and time in the format 2017-01-25T00:00:00Z. Any\ - \ data before this date will not be replicated. This just applies to Incremental\ - \ syncs." - type: "string" - examples: - - "2022-10-01T00:00:00Z" - order: 4 - site: - title: "Site" - description: "The site where Datadog data resides in." - type: "string" - enum: - - "datadoghq.com" - - "us3.datadoghq.com" - - "us5.datadoghq.com" - - "datadoghq.eu" - - "ddog-gov.com" - default: "datadoghq.com" - order: 5 - end_date: - title: "End date" - pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" - description: "UTC date and time in the format 2017-01-25T00:00:00Z. Data\ - \ after this date will not be replicated. An empty value will represent\ - \ the current datetime for each execution. This just applies to Incremental\ - \ syncs." - examples: - - "2022-10-01T00:00:00Z" - type: "string" - order: 6 - max_records_per_request: - type: "integer" - title: "Max records per requests" - default: 5000 - minimum: 1 - maximum: 5000 - description: "Maximum number of records to collect per request." - order: 7 - queries: - title: "Queries" - description: "List of queries to be run and used as inputs." - type: "array" - order: 8 - default: [] - items: - type: "object" - required: - - "name" - - "data_source" - - "query" - properties: - name: - title: "Query Name" - description: "The variable name for use in queries." - type: "string" - order: 1 - data_source: - title: "Data Source" - description: "A data source that is powered by the platform." - type: "string" - enum: - - "metrics" - - "cloud_cost" - - "logs" - - "rum" - order: 2 - query: - title: "Query" - description: "A classic query string." - type: "string" - order: 3 - sourceType: - title: "datadog" - const: "datadog" - enum: - - "datadog" - order: 0 - type: "string" - source-datadog-update: - title: "Datadog Source Spec" - type: "object" - required: - - "api_key" - - "application_key" - properties: - api_key: - title: "API Key" - description: "Datadog API key" - type: "string" - airbyte_secret: true - order: 1 - application_key: - title: "Application Key" - description: "Datadog application key" - type: "string" - airbyte_secret: true - order: 2 - query: - title: "Query" - description: "The search query. This just applies to Incremental syncs.\ - \ If empty, it'll collect all logs." - type: "string" - order: 3 - start_date: - title: "Start date" - pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" - description: "UTC date and time in the format 2017-01-25T00:00:00Z. Any\ - \ data before this date will not be replicated. This just applies to Incremental\ - \ syncs." - type: "string" - examples: - - "2022-10-01T00:00:00Z" - order: 4 - site: - title: "Site" - description: "The site where Datadog data resides in." - type: "string" - enum: - - "datadoghq.com" - - "us3.datadoghq.com" - - "us5.datadoghq.com" - - "datadoghq.eu" - - "ddog-gov.com" - default: "datadoghq.com" - order: 5 - end_date: - title: "End date" - pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" - description: "UTC date and time in the format 2017-01-25T00:00:00Z. Data\ - \ after this date will not be replicated. An empty value will represent\ - \ the current datetime for each execution. This just applies to Incremental\ - \ syncs." - examples: - - "2022-10-01T00:00:00Z" - type: "string" - order: 6 - max_records_per_request: - type: "integer" - title: "Max records per requests" - default: 5000 - minimum: 1 - maximum: 5000 - description: "Maximum number of records to collect per request." - order: 7 - queries: - title: "Queries" - description: "List of queries to be run and used as inputs." - type: "array" - order: 8 - default: [] - items: - type: "object" - required: - - "name" - - "data_source" - - "query" - properties: - name: - title: "Query Name" - description: "The variable name for use in queries." - type: "string" - order: 1 - data_source: - title: "Data Source" - description: "A data source that is powered by the platform." - type: "string" - enum: - - "metrics" - - "cloud_cost" - - "logs" - - "rum" - order: 2 - query: - title: "Query" - description: "A classic query string." - type: "string" - order: 3 source-dockerhub: type: "object" required: @@ -24051,17 +23774,27 @@ components: example: "1.0.0" order: 2 source-wikipedia-pageviews: + title: "Wikipedia Pageviews Spec" type: "object" required: + - "project" - "access" - "agent" - "article" - - "country" - - "end" - - "project" - "start" + - "end" + - "country" - "sourceType" properties: + project: + type: "string" + title: "Project" + description: "If you want to filter by project, use the domain of any Wikimedia\ + \ project." + examples: + - "en.wikipedia.org" + - "www.mediawiki.org" + - "commons.wikimedia.org" access: type: "string" title: "Access" @@ -24073,7 +23806,6 @@ components: - "desktop" - "mobile-app" - "mobile-web" - order: 0 agent: type: "string" title: "Agent" @@ -24085,7 +23817,6 @@ components: - "user" - "spider" - "automated" - order: 1 article: type: "string" title: "Article" @@ -24094,38 +23825,24 @@ components: \ so that non-URI-safe characters like %, / or ? are accepted." examples: - "Are_You_the_One%3F" - order: 2 - country: + start: type: "string" - title: "Country" - description: "The ISO 3166-1 alpha-2 code of a country for which to retrieve\ - \ top articles." - examples: - - "FR" - - "IN" - order: 3 + title: "Start" + description: "The date of the first day to include, in YYYYMMDD or YYYYMMDDHH\ + \ format." end: type: "string" title: "End" description: "The date of the last day to include, in YYYYMMDD or YYYYMMDDHH\ \ format." - order: 4 - project: + country: type: "string" - title: "Project" - description: "If you want to filter by project, use the domain of any Wikimedia\ - \ project." + title: "Country" + description: "The ISO 3166-1 alpha-2 code of a country for which to retrieve\ + \ top articles." examples: - - "en.wikipedia.org" - - "www.mediawiki.org" - - "commons.wikimedia.org" - order: 5 - start: - type: "string" - title: "Start" - description: "The date of the first day to include, in YYYYMMDD or YYYYMMDDHH\ - \ format. Also serves as the date to retrieve data for the top articles." - order: 6 + - "FR" + - "IN" sourceType: title: "wikipedia-pageviews" const: "wikipedia-pageviews" @@ -24134,16 +23851,26 @@ components: order: 0 type: "string" source-wikipedia-pageviews-update: + title: "Wikipedia Pageviews Spec" type: "object" required: + - "project" - "access" - "agent" - "article" - - "country" - - "end" - - "project" - "start" + - "end" + - "country" properties: + project: + type: "string" + title: "Project" + description: "If you want to filter by project, use the domain of any Wikimedia\ + \ project." + examples: + - "en.wikipedia.org" + - "www.mediawiki.org" + - "commons.wikimedia.org" access: type: "string" title: "Access" @@ -24155,7 +23882,6 @@ components: - "desktop" - "mobile-app" - "mobile-web" - order: 0 agent: type: "string" title: "Agent" @@ -24167,7 +23893,6 @@ components: - "user" - "spider" - "automated" - order: 1 article: type: "string" title: "Article" @@ -24176,38 +23901,24 @@ components: \ so that non-URI-safe characters like %, / or ? are accepted." examples: - "Are_You_the_One%3F" - order: 2 - country: + start: type: "string" - title: "Country" - description: "The ISO 3166-1 alpha-2 code of a country for which to retrieve\ - \ top articles." - examples: - - "FR" - - "IN" - order: 3 + title: "Start" + description: "The date of the first day to include, in YYYYMMDD or YYYYMMDDHH\ + \ format." end: type: "string" title: "End" description: "The date of the last day to include, in YYYYMMDD or YYYYMMDDHH\ \ format." - order: 4 - project: + country: type: "string" - title: "Project" - description: "If you want to filter by project, use the domain of any Wikimedia\ - \ project." + title: "Country" + description: "The ISO 3166-1 alpha-2 code of a country for which to retrieve\ + \ top articles." examples: - - "en.wikipedia.org" - - "www.mediawiki.org" - - "commons.wikimedia.org" - order: 5 - start: - type: "string" - title: "Start" - description: "The date of the first day to include, in YYYYMMDD or YYYYMMDDHH\ - \ format. Also serves as the date to retrieve data for the top articles." - order: 6 + - "FR" + - "IN" source-google-directory: title: "Google Directory Spec" type: "object" @@ -27591,14 +27302,6 @@ components: \ data. If you are a `Shopify Plus` user, leave the default value to speed\ \ up the fetch." default: false - job_termination_threshold: - type: "integer" - title: "BULK Job termination threshold" - description: "The max time in seconds, after which the single BULK Job should\ - \ be `CANCELED` and retried. The bigger the value the longer the BULK\ - \ Job is allowed to run." - default: 3600 - minimum: 1 sourceType: title: "shopify" const: "shopify" @@ -27700,26 +27403,18 @@ components: \ data. If you are a `Shopify Plus` user, leave the default value to speed\ \ up the fetch." default: false - job_termination_threshold: - type: "integer" - title: "BULK Job termination threshold" - description: "The max time in seconds, after which the single BULK Job should\ - \ be `CANCELED` and retried. The bigger the value the longer the BULK\ - \ Job is allowed to run." - default: 3600 - minimum: 1 source-omnisend: + title: "Omnisend Spec" type: "object" required: - "api_key" - "sourceType" properties: api_key: - type: "string" title: "API Key" - airbyte_secret: true + type: "string" description: "API Key" - order: 0 + airbyte_secret: true x-speakeasy-param-sensitive: true sourceType: title: "omnisend" @@ -27729,16 +27424,16 @@ components: order: 0 type: "string" source-omnisend-update: + title: "Omnisend Spec" type: "object" required: - "api_key" properties: api_key: - type: "string" title: "API Key" - airbyte_secret: true + type: "string" description: "API Key" - order: 0 + airbyte_secret: true source-mongodb-v2: title: "MongoDb Source Spec" type: "object" @@ -28768,7 +28463,7 @@ components: type: "boolean" required: - "filetype" - - title: "Unstructured Document Format" + - title: "Document File Type Format (Experimental)" type: "object" properties: filetype: @@ -29539,7 +29234,7 @@ components: type: "boolean" required: - "filetype" - - title: "Unstructured Document Format" + - title: "Document File Type Format (Experimental)" type: "object" properties: filetype: @@ -32592,51 +32287,13 @@ components: airbyte_secret: true order: 4 x-speakeasy-param-sensitive: true - - title: "Key Pair Authentication" - type: "object" - order: 1 - required: - - "username" - - "private_key" - properties: - auth_type: - type: "string" - const: "Key Pair Authentication" - order: 0 - enum: - - "Key Pair Authentication" - username: - description: "The username you created to allow Airbyte to access\ - \ the database." - examples: - - "AIRBYTE_USER" - type: "string" - title: "Username" - order: 1 - private_key: - type: "string" - title: "Private Key" - description: "RSA Private key to use for Snowflake connection. See\ - \ the docs for more information on how to obtain this key." - multiline: true - airbyte_secret: true - order: 2 - x-speakeasy-param-sensitive: true - private_key_password: - type: "string" - title: "Passphrase" - description: "Passphrase for private key" - airbyte_secret: true - order: 3 - x-speakeasy-param-sensitive: true - title: "Username and Password" type: "object" required: - "username" - "password" - "auth_type" - order: 2 + order: 1 properties: auth_type: type: "string" @@ -32763,49 +32420,13 @@ components: description: "Refresh Token for making authenticated requests." airbyte_secret: true order: 4 - - title: "Key Pair Authentication" - type: "object" - order: 1 - required: - - "username" - - "private_key" - properties: - auth_type: - type: "string" - const: "Key Pair Authentication" - order: 0 - enum: - - "Key Pair Authentication" - username: - description: "The username you created to allow Airbyte to access\ - \ the database." - examples: - - "AIRBYTE_USER" - type: "string" - title: "Username" - order: 1 - private_key: - type: "string" - title: "Private Key" - description: "RSA Private key to use for Snowflake connection. See\ - \ the docs for more information on how to obtain this key." - multiline: true - airbyte_secret: true - order: 2 - private_key_password: - type: "string" - title: "Passphrase" - description: "Passphrase for private key" - airbyte_secret: true - order: 3 - title: "Username and Password" type: "object" required: - "username" - "password" - "auth_type" - order: 2 + order: 1 properties: auth_type: type: "string" @@ -33430,7 +33051,7 @@ components: type: "boolean" required: - "filetype" - - title: "Unstructured Document Format" + - title: "Document File Type Format (Experimental)" type: "object" properties: filetype: @@ -33919,7 +33540,7 @@ components: type: "boolean" required: - "filetype" - - title: "Unstructured Document Format" + - title: "Document File Type Format (Experimental)" type: "object" properties: filetype: @@ -35296,16 +34917,6 @@ components: default: "Fail sync" order: 3 always_show: true - initial_load_timeout_hours: - type: "integer" - title: "Initial Load Timeout in Hours (Advanced)" - description: "The amount of time an initial load is allowed to continue\ - \ for before catching up on CDC logs." - default: 8 - min: 4 - max: 24 - order: 4 - always_show: true - title: "Scan Changes with User Defined Cursor" description: "Incrementally detects new inserts and updates using the\ \ here." airbyte_secret: true - source-goldcast: - title: "goldcast.io Source Spec" - type: "object" - required: - - "access_key" - - "sourceType" - properties: - access_key: - type: "string" - description: "Your API Access Key. See here. The key is case sensitive." - airbyte_secret: true - x-speakeasy-param-sensitive: true - sourceType: - title: "goldcast" - const: "goldcast" - enum: - - "goldcast" - order: 0 - type: "string" - source-goldcast-update: - title: "goldcast.io Source Spec" - type: "object" - required: - - "access_key" - properties: - access_key: - type: "string" - description: "Your API Access Key. See here. The key is case sensitive." - airbyte_secret: true source-pinterest: title: "Pinterest Spec" type: "object" @@ -40577,6 +40141,190 @@ components: desciption: "Optional, Possible values for an endpoint. Example values for\ \ launches-latest, upcoming, past" order: 1 + source-google-analytics-v4-service-account-only: + title: "Google Analytics (V4) Spec" + type: "object" + required: + - "view_id" + - "start_date" + - "sourceType" + properties: + credentials: + order: 0 + type: "object" + title: "Credentials" + description: "Credentials for the service" + oneOf: + - type: "object" + title: "Service Account Key Authentication" + required: + - "credentials_json" + properties: + auth_type: + type: "string" + const: "Service" + order: 0 + enum: + - "Service" + credentials_json: + title: "Service Account JSON Key" + type: "string" + description: "The JSON key of the service account to use for authorization" + examples: + - "{ \"type\": \"service_account\", \"project_id\": YOUR_PROJECT_ID,\ + \ \"private_key_id\": YOUR_PRIVATE_KEY, ... }" + airbyte_secret: true + start_date: + order: 1 + type: "string" + title: "Replication Start Date" + description: "The date in the format YYYY-MM-DD. Any data before this date\ + \ will not be replicated." + examples: + - "2020-06-01" + pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^$|[\\s\\S]+$" + format: "date" + view_id: + order: 2 + type: "string" + title: "View ID" + description: "The ID for the Google Analytics View you want to fetch data\ + \ from. This can be found from the Google Analytics Account Explorer." + end_date: + order: 3 + type: "string" + title: "Replication End Date" + description: "The date in the format YYYY-MM-DD. Any data after this date\ + \ will not be replicated." + examples: + - "2020-06-01" + pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^$|[\\s\\S]+$" + format: "date" + custom_reports: + order: 4 + type: "string" + title: "Custom Reports" + description: "A JSON array describing the custom reports you want to sync\ + \ from Google Analytics. See the docs for more information about the exact format you can use\ + \ to fill out this field." + window_in_days: + type: "integer" + title: "Data request time increment in days" + description: "The time increment used by the connector when requesting data\ + \ from the Google Analytics API. More information is available in the\ + \ the docs. The bigger this value is, the faster the sync will be,\ + \ but the more likely that sampling will be applied to your data, potentially\ + \ causing inaccuracies in the returned results. We recommend setting this\ + \ to 1 unless you have a hard requirement to make the sync faster at the\ + \ expense of accuracy. The minimum allowed value for this field is 1,\ + \ and the maximum is 364. " + examples: + - 30 + - 60 + - 90 + - 120 + - 200 + - 364 + default: 1 + order: 5 + sourceType: + title: "google-analytics-v4-service-account-only" + const: "google-analytics-v4-service-account-only" + enum: + - "google-analytics-v4-service-account-only" + order: 0 + type: "string" + source-google-analytics-v4-service-account-only-update: + title: "Google Analytics (V4) Spec" + type: "object" + required: + - "view_id" + - "start_date" + properties: + credentials: + order: 0 + type: "object" + title: "Credentials" + description: "Credentials for the service" + oneOf: + - type: "object" + title: "Service Account Key Authentication" + required: + - "credentials_json" + properties: + auth_type: + type: "string" + const: "Service" + order: 0 + enum: + - "Service" + credentials_json: + title: "Service Account JSON Key" + type: "string" + description: "The JSON key of the service account to use for authorization" + examples: + - "{ \"type\": \"service_account\", \"project_id\": YOUR_PROJECT_ID,\ + \ \"private_key_id\": YOUR_PRIVATE_KEY, ... }" + airbyte_secret: true + start_date: + order: 1 + type: "string" + title: "Replication Start Date" + description: "The date in the format YYYY-MM-DD. Any data before this date\ + \ will not be replicated." + examples: + - "2020-06-01" + pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^$|[\\s\\S]+$" + format: "date" + view_id: + order: 2 + type: "string" + title: "View ID" + description: "The ID for the Google Analytics View you want to fetch data\ + \ from. This can be found from the Google Analytics Account Explorer." + end_date: + order: 3 + type: "string" + title: "Replication End Date" + description: "The date in the format YYYY-MM-DD. Any data after this date\ + \ will not be replicated." + examples: + - "2020-06-01" + pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$|^$|[\\s\\S]+$" + format: "date" + custom_reports: + order: 4 + type: "string" + title: "Custom Reports" + description: "A JSON array describing the custom reports you want to sync\ + \ from Google Analytics. See the docs for more information about the exact format you can use\ + \ to fill out this field." + window_in_days: + type: "integer" + title: "Data request time increment in days" + description: "The time increment used by the connector when requesting data\ + \ from the Google Analytics API. More information is available in the\ + \ the docs. The bigger this value is, the faster the sync will be,\ + \ but the more likely that sampling will be applied to your data, potentially\ + \ causing inaccuracies in the returned results. We recommend setting this\ + \ to 1 unless you have a hard requirement to make the sync faster at the\ + \ expense of accuracy. The minimum allowed value for this field is 1,\ + \ and the maximum is 364. " + examples: + - 30 + - 60 + - 90 + - 120 + - 200 + - 364 + default: 1 + order: 5 source-bamboo-hr: title: "Bamboo HR Spec" type: "object" @@ -42768,7 +42516,7 @@ components: type: "boolean" required: - "filetype" - - title: "Unstructured Document Format" + - title: "Document File Type Format (Experimental)" type: "object" properties: filetype: @@ -43263,7 +43011,7 @@ components: type: "boolean" required: - "filetype" - - title: "Unstructured Document Format" + - title: "Document File Type Format (Experimental)" type: "object" properties: filetype: @@ -43446,6 +43194,70 @@ components: required: - "streams" - "credentials" + source-punk-api: + title: "Punk Api Spec" + type: "object" + required: + - "brewed_before" + - "brewed_after" + - "sourceType" + properties: + id: + title: "Beers with specific ID" + type: "string" + description: "To extract specific data with Unique ID" + examples: + - 1 + - 22 + brewed_before: + title: "Brewed before data to get incremental reads" + type: "string" + description: "To extract specific data with Unique ID" + pattern: "^[0-9]{2}-[0-9]{4}$" + examples: + - "MM-YYYY" + brewed_after: + title: "Brewed after data to get incremental reads" + type: "string" + description: "To extract specific data with Unique ID" + pattern: "^[0-9]{2}-[0-9]{4}$" + examples: + - "MM-YYYY" + sourceType: + title: "punk-api" + const: "punk-api" + enum: + - "punk-api" + order: 0 + type: "string" + source-punk-api-update: + title: "Punk Api Spec" + type: "object" + required: + - "brewed_before" + - "brewed_after" + properties: + id: + title: "Beers with specific ID" + type: "string" + description: "To extract specific data with Unique ID" + examples: + - 1 + - 22 + brewed_before: + title: "Brewed before data to get incremental reads" + type: "string" + description: "To extract specific data with Unique ID" + pattern: "^[0-9]{2}-[0-9]{4}$" + examples: + - "MM-YYYY" + brewed_after: + title: "Brewed after data to get incremental reads" + type: "string" + description: "To extract specific data with Unique ID" + pattern: "^[0-9]{2}-[0-9]{4}$" + examples: + - "MM-YYYY" source-tiktok-marketing: title: "TikTok Marketing Source Spec" type: "object" @@ -43545,10 +43357,8 @@ components: order: 3 type: "integer" include_deleted: - title: "Include Deleted Data in Reports and Ads, Ad Groups and Campaign\ - \ streams." - description: "Set to active if you want to include deleted data in report\ - \ based streams and Ads, Ad Groups and Campaign streams." + title: "Include Deleted Data in Reports" + description: "Set to active if you want to include deleted data in reports." default: false order: 4 type: "boolean" @@ -43656,10 +43466,8 @@ components: order: 3 type: "integer" include_deleted: - title: "Include Deleted Data in Reports and Ads, Ad Groups and Campaign\ - \ streams." - description: "Set to active if you want to include deleted data in report\ - \ based streams and Ads, Ad Groups and Campaign streams." + title: "Include Deleted Data in Reports" + description: "Set to active if you want to include deleted data in reports." default: false order: 4 type: "boolean" @@ -43670,6 +43478,7 @@ components: - "aws_key_id" - "aws_secret_key" - "aws_region_name" + - "start_date" - "sourceType" properties: aws_key_id: @@ -43692,7 +43501,6 @@ components: description: "The default AWS Region to use, for example, us-west-1 or us-west-2.\ \ When specifying a Region inline during client initialization, this property\ \ is named region_name." - default: "us-east-1" start_date: type: "string" title: "Start Date" @@ -43700,30 +43508,9 @@ components: \ is available for last 90 days only. Format: YYYY-MM-DD." examples: - "2021-01-01" + default: "1970-01-01" pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" format: "date" - lookup_attributes_filter: - title: "Filter applied while fetching records based on AttributeKey and\ - \ AttributeValue which will be appended on the request body" - type: "object" - required: - - "attribute_key" - - "attribute_value" - properties: - attribute_key: - type: "string" - title: "Attribute Key from the response to filter" - examples: - - "EventName" - default: "EventName" - x-speakeasy-param-sensitive: true - attribute_value: - type: "string" - title: "Corresponding value to the given attribute key" - examples: - - "ListInstanceAssociations" - - "ConsoleLogin" - default: "ListInstanceAssociations" sourceType: title: "aws-cloudtrail" const: "aws-cloudtrail" @@ -43738,6 +43525,7 @@ components: - "aws_key_id" - "aws_secret_key" - "aws_region_name" + - "start_date" properties: aws_key_id: type: "string" @@ -43757,7 +43545,6 @@ components: description: "The default AWS Region to use, for example, us-west-1 or us-west-2.\ \ When specifying a Region inline during client initialization, this property\ \ is named region_name." - default: "us-east-1" start_date: type: "string" title: "Start Date" @@ -43765,29 +43552,9 @@ components: \ is available for last 90 days only. Format: YYYY-MM-DD." examples: - "2021-01-01" + default: "1970-01-01" pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" format: "date" - lookup_attributes_filter: - title: "Filter applied while fetching records based on AttributeKey and\ - \ AttributeValue which will be appended on the request body" - type: "object" - required: - - "attribute_key" - - "attribute_value" - properties: - attribute_key: - type: "string" - title: "Attribute Key from the response to filter" - examples: - - "EventName" - default: "EventName" - attribute_value: - type: "string" - title: "Corresponding value to the given attribute key" - examples: - - "ListInstanceAssociations" - - "ConsoleLogin" - default: "ListInstanceAssociations" source-jira: title: "Jira Spec" type: "object" @@ -49779,68 +49546,6 @@ components: airbyte_secret: true type: "string" x-speakeasy-param-sensitive: true - credentials: - title: "Authentication" - description: "Credentials for connecting to the Facebook Marketing API" - type: "object" - oneOf: - - title: "Authenticate via Facebook Marketing (Oauth)" - type: "object" - properties: - auth_type: - title: "Auth Type" - default: "Client" - const: "Client" - enum: - - "Client" - type: "string" - client_id: - title: "Client ID" - description: "Client ID for the Facebook Marketing API" - airbyte_secret: true - type: "string" - client_secret: - title: "Client Secret" - description: "Client Secret for the Facebook Marketing API" - airbyte_secret: true - type: "string" - access_token: - title: "Access Token" - description: "The value of the generated access token. From your App’\ - s Dashboard, click on \"Marketing API\" then \"Tools\". Select permissions\ - \ ads_management, ads_read, read_insights, business_management.\ - \ Then click on \"Get token\". See the docs for more information." - airbyte_secret: true - type: "string" - x-speakeasy-param-sensitive: true - required: - - "client_id" - - "client_secret" - - "auth_type" - - title: "Service Account Key Authentication" - type: "object" - properties: - auth_type: - title: "Auth Type" - default: "Service" - const: "Service" - enum: - - "Service" - type: "string" - access_token: - title: "Access Token" - description: "The value of the generated access token. From your App’\ - s Dashboard, click on \"Marketing API\" then \"Tools\". Select permissions\ - \ ads_management, ads_read, read_insights, business_management.\ - \ Then click on \"Get token\". See the docs for more information." - airbyte_secret: true - type: "string" - x-speakeasy-param-sensitive: true - required: - - "access_token" - - "auth_type" start_date: title: "Start Date" description: "The date from which you'd like to replicate data for all incremental\ @@ -49980,6 +49685,7 @@ components: - "adset_end" - "adset_id" - "adset_name" + - "adset_start" - "age_targeting" - "attribution_setting" - "auction_bid" @@ -50336,66 +50042,6 @@ components: order: 1 airbyte_secret: true type: "string" - credentials: - title: "Authentication" - description: "Credentials for connecting to the Facebook Marketing API" - type: "object" - oneOf: - - title: "Authenticate via Facebook Marketing (Oauth)" - type: "object" - properties: - auth_type: - title: "Auth Type" - default: "Client" - const: "Client" - enum: - - "Client" - type: "string" - client_id: - title: "Client ID" - description: "Client ID for the Facebook Marketing API" - airbyte_secret: true - type: "string" - client_secret: - title: "Client Secret" - description: "Client Secret for the Facebook Marketing API" - airbyte_secret: true - type: "string" - access_token: - title: "Access Token" - description: "The value of the generated access token. From your App’\ - s Dashboard, click on \"Marketing API\" then \"Tools\". Select permissions\ - \ ads_management, ads_read, read_insights, business_management.\ - \ Then click on \"Get token\". See the docs for more information." - airbyte_secret: true - type: "string" - required: - - "client_id" - - "client_secret" - - "auth_type" - - title: "Service Account Key Authentication" - type: "object" - properties: - auth_type: - title: "Auth Type" - default: "Service" - const: "Service" - enum: - - "Service" - type: "string" - access_token: - title: "Access Token" - description: "The value of the generated access token. From your App’\ - s Dashboard, click on \"Marketing API\" then \"Tools\". Select permissions\ - \ ads_management, ads_read, read_insights, business_management.\ - \ Then click on \"Get token\". See the docs for more information." - airbyte_secret: true - type: "string" - required: - - "access_token" - - "auth_type" start_date: title: "Start Date" description: "The date from which you'd like to replicate data for all incremental\ @@ -50535,6 +50181,7 @@ components: - "adset_end" - "adset_id" - "adset_name" + - "adset_start" - "age_targeting" - "attribution_setting" - "auction_bid" @@ -50853,6 +50500,7 @@ components: required: - "account_ids" source-recruitee: + title: "Recruitee Spec" type: "object" required: - "api_key" @@ -50860,20 +50508,18 @@ components: - "sourceType" properties: api_key: - type: "string" title: "API Key" - airbyte_secret: true + type: "string" description: "Recruitee API Key. See here." - order: 0 + airbyte_secret: true x-speakeasy-param-sensitive: true company_id: - type: "integer" title: "Company ID" + type: "integer" description: "Recruitee Company ID. You can also find this ID on the Recruitee API\ \ tokens page." - order: 1 sourceType: title: "recruitee" const: "recruitee" @@ -50882,25 +50528,24 @@ components: order: 0 type: "string" source-recruitee-update: + title: "Recruitee Spec" type: "object" required: - "api_key" - "company_id" properties: api_key: - type: "string" title: "API Key" - airbyte_secret: true + type: "string" description: "Recruitee API Key. See here." - order: 0 + airbyte_secret: true company_id: - type: "integer" title: "Company ID" + type: "integer" description: "Recruitee Company ID. You can also find this ID on the Recruitee API\ \ tokens page." - order: 1 source-survey-sparrow: type: "object" required: @@ -53881,18 +53526,18 @@ components: - "client_secret" - "refresh_token" source-sendinblue: + title: "Sendinblue Spec" type: "object" required: - "api_key" - "sourceType" properties: api_key: - type: "string" title: "API Key" - airbyte_secret: true + type: "string" description: "Your API Key. See here." - order: 0 + airbyte_secret: true x-speakeasy-param-sensitive: true sourceType: title: "sendinblue" @@ -53902,17 +53547,17 @@ components: order: 0 type: "string" source-sendinblue-update: + title: "Sendinblue Spec" type: "object" required: - "api_key" properties: api_key: - type: "string" title: "API Key" - airbyte_secret: true + type: "string" description: "Your API Key. See here." - order: 0 + airbyte_secret: true source-github: title: "GitHub Source Spec" type: "object" @@ -54404,46 +54049,6 @@ components: type: "string" title: "Engine" description: "Engine name to connect to." - source-clazar: - type: "object" - required: - - "client_id" - - "client_secret" - - "sourceType" - properties: - client_id: - type: "string" - order: 0 - title: "Client ID" - airbyte_secret: true - client_secret: - type: "string" - order: 1 - title: "Client secret" - airbyte_secret: true - sourceType: - title: "clazar" - const: "clazar" - enum: - - "clazar" - order: 0 - type: "string" - source-clazar-update: - type: "object" - required: - - "client_id" - - "client_secret" - properties: - client_id: - type: "string" - order: 0 - title: "Client ID" - airbyte_secret: true - client_secret: - type: "string" - order: 1 - title: "Client secret" - airbyte_secret: true source-outreach: title: "Source Outreach Spec" type: "object" @@ -56775,22 +56380,31 @@ components: default: false order: 3 source-paystack: + title: "Paystack Source Spec" type: "object" required: - - "start_date" - "secret_key" + - "start_date" - "sourceType" properties: + secret_key: + type: "string" + title: "Secret Key" + pattern: "^(s|r)k_(live|test)_[a-zA-Z0-9]+$" + description: "The Paystack API key (usually starts with 'sk_live_'; find\ + \ yours here)." + airbyte_secret: true + x-speakeasy-param-sensitive: true start_date: type: "string" title: "Start Date" - format: "date-time" pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" description: "UTC date and time in the format 2017-01-25T00:00:00Z. Any\ \ data before this date will not be replicated." examples: - "2017-01-25T00:00:00Z" - order: 0 + format: "date-time" lookback_window_days: type: "integer" title: "Lookback Window (in days)" @@ -56799,17 +56413,6 @@ components: description: "When set, the connector will always reload data from the past\ \ N days, where N is the value set here. This is useful if your data is\ \ updated after creation." - order: 1 - secret_key: - type: "string" - title: "Secret Key" - pattern: "^(s|r)k_(live|test)_[a-zA-Z0-9]+$" - description: "The Paystack API key (usually starts with 'sk_live_'; find\ - \ yours here)." - airbyte_secret: true - order: 2 - x-speakeasy-param-sensitive: true sourceType: title: "paystack" const: "paystack" @@ -56818,21 +56421,29 @@ components: order: 0 type: "string" source-paystack-update: + title: "Paystack Source Spec" type: "object" required: - - "start_date" - "secret_key" + - "start_date" properties: + secret_key: + type: "string" + title: "Secret Key" + pattern: "^(s|r)k_(live|test)_[a-zA-Z0-9]+$" + description: "The Paystack API key (usually starts with 'sk_live_'; find\ + \ yours here)." + airbyte_secret: true start_date: type: "string" title: "Start Date" - format: "date-time" pattern: "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z$" description: "UTC date and time in the format 2017-01-25T00:00:00Z. Any\ \ data before this date will not be replicated." examples: - "2017-01-25T00:00:00Z" - order: 0 + format: "date-time" lookback_window_days: type: "integer" title: "Lookback Window (in days)" @@ -56841,16 +56452,6 @@ components: description: "When set, the connector will always reload data from the past\ \ N days, where N is the value set here. This is useful if your data is\ \ updated after creation." - order: 1 - secret_key: - type: "string" - title: "Secret Key" - pattern: "^(s|r)k_(live|test)_[a-zA-Z0-9]+$" - description: "The Paystack API key (usually starts with 'sk_live_'; find\ - \ yours here)." - airbyte_secret: true - order: 2 source-redshift: title: "Redshift Source Spec" type: "object" @@ -61087,6 +60688,7 @@ components: examples: - "2022-08" - "1851-01" + format: "date" order: 1 end_date: type: "string" @@ -61096,6 +60698,7 @@ components: examples: - "2022-08" - "1851-01" + format: "date" order: 2 period: type: "integer" @@ -61142,6 +60745,7 @@ components: examples: - "2022-08" - "1851-01" + format: "date" order: 1 end_date: type: "string" @@ -61151,6 +60755,7 @@ components: examples: - "2022-08" - "1851-01" + format: "date" order: 2 period: type: "integer" @@ -66455,8 +66060,8 @@ components: type: "string" warehouse: title: "Warehouse" - description: "Enter the name of the warehouse that you want to use as\ - \ a compute cluster" + description: "Enter the name of the warehouse that you want to sync\ + \ data into" order: 3 examples: - "AIRBYTE_WAREHOUSE" @@ -66892,8 +66497,8 @@ components: type: "string" warehouse: title: "Warehouse" - description: "Enter the name of the warehouse that you want to use as\ - \ a compute cluster" + description: "Enter the name of the warehouse that you want to sync\ + \ data into" order: 3 examples: - "AIRBYTE_WAREHOUSE" @@ -67240,6 +66845,47 @@ components: > docs for details." default: true order: 6 + encryption: + title: "Encryption" + type: "object" + description: "How to encrypt the staging data" + default: + encryption_type: "none" + oneOf: + - title: "No encryption" + description: "Staging data will be stored in plaintext." + type: "object" + required: + - "encryption_type" + properties: + encryption_type: + type: "string" + const: "none" + enum: + - "none" + default: "none" + - title: "AES-CBC envelope encryption" + description: "Staging data will be encrypted using AES-CBC envelope\ + \ encryption." + type: "object" + required: + - "encryption_type" + properties: + encryption_type: + type: "string" + const: "aes_cbc_envelope" + enum: + - "aes_cbc_envelope" + default: "aes_cbc_envelope" + key_encrypting_key: + type: "string" + title: "Key" + description: "The key, base64-encoded. Must be either 128, 192,\ + \ or 256 bits. Leave blank to have Airbyte generate an ephemeral\ + \ key for each sync." + airbyte_secret: true + x-speakeasy-param-sensitive: true + order: 7 raw_data_schema: type: "string" description: "The schema to write raw tables into (default: airbyte_internal)." @@ -67572,6 +67218,46 @@ components: > docs for details." default: true order: 6 + encryption: + title: "Encryption" + type: "object" + description: "How to encrypt the staging data" + default: + encryption_type: "none" + oneOf: + - title: "No encryption" + description: "Staging data will be stored in plaintext." + type: "object" + required: + - "encryption_type" + properties: + encryption_type: + type: "string" + const: "none" + enum: + - "none" + default: "none" + - title: "AES-CBC envelope encryption" + description: "Staging data will be encrypted using AES-CBC envelope\ + \ encryption." + type: "object" + required: + - "encryption_type" + properties: + encryption_type: + type: "string" + const: "aes_cbc_envelope" + enum: + - "aes_cbc_envelope" + default: "aes_cbc_envelope" + key_encrypting_key: + type: "string" + title: "Key" + description: "The key, base64-encoded. Must be either 128, 192,\ + \ or 256 bits. Leave blank to have Airbyte generate an ephemeral\ + \ key for each sync." + airbyte_secret: true + order: 7 raw_data_schema: type: "string" description: "The schema to write raw tables into (default: airbyte_internal)." @@ -68775,7 +68461,7 @@ components: order: 1 warehouse: description: "Enter the name of the warehouse that you want to use as a compute cluster" + >warehouse that you want to sync data into" examples: - "AIRBYTE_WAREHOUSE" type: "string" @@ -68965,7 +68651,7 @@ components: order: 1 warehouse: description: "Enter the name of the warehouse that you want to use as a compute cluster" + >warehouse that you want to sync data into" examples: - "AIRBYTE_WAREHOUSE" type: "string" @@ -75895,6 +75581,372 @@ components: type: "boolean" default: false description: "Add file extensions to the output file." + destination-langchain: + title: "Langchain Destination Config" + type: "object" + properties: + processing: + title: "ProcessingConfigModel" + type: "object" + properties: + chunk_size: + title: "Chunk size" + description: "Size of chunks in tokens to store in vector store (make\ + \ sure it is not too big for the context if your LLM)" + maximum: 8191 + type: "integer" + chunk_overlap: + title: "Chunk overlap" + description: "Size of overlap between chunks in tokens to store in vector\ + \ store to better capture relevant context" + default: 0 + type: "integer" + text_fields: + title: "Text fields to embed" + description: "List of fields in the record that should be used to calculate\ + \ the embedding. All other fields are passed along as meta fields.\ + \ The field list is applied to all streams in the same way and non-existing\ + \ fields are ignored. If none are defined, all fields are considered\ + \ text fields. When specifying text fields, you can access nested\ + \ fields in the record by using dot notation, e.g. `user.name` will\ + \ access the `name` field in the `user` object. It's also possible\ + \ to use wildcards to access all fields in an object, e.g. `users.*.name`\ + \ will access all `names` fields in all entries of the `users` array." + always_show: true + examples: + - "text" + - "user.name" + - "users.*.name" + type: "array" + items: + type: "string" + required: + - "chunk_size" + - "text_fields" + group: "processing" + embedding: + title: "Embedding" + description: "Embedding configuration" + group: "embedding" + type: "object" + oneOf: + - title: "OpenAI" + type: "object" + properties: + mode: + title: "Mode" + default: "openai" + const: "openai" + enum: + - "openai" + type: "string" + openai_key: + title: "OpenAI API key" + airbyte_secret: true + type: "string" + x-speakeasy-param-sensitive: true + required: + - "openai_key" + description: "Use the OpenAI API to embed text. This option is using the\ + \ text-embedding-ada-002 model with 1536 embedding dimensions." + - title: "Fake" + type: "object" + properties: + mode: + title: "Mode" + default: "fake" + const: "fake" + enum: + - "fake" + type: "string" + description: "Use a fake embedding made out of random vectors with 1536\ + \ embedding dimensions. This is useful for testing the data pipeline\ + \ without incurring any costs." + indexing: + title: "Indexing" + description: "Indexing configuration" + group: "indexing" + type: "object" + oneOf: + - title: "Pinecone" + type: "object" + properties: + mode: + title: "Mode" + default: "pinecone" + const: "pinecone" + enum: + - "pinecone" + type: "string" + pinecone_key: + title: "Pinecone API key" + airbyte_secret: true + type: "string" + x-speakeasy-param-sensitive: true + pinecone_environment: + title: "Pinecone environment" + description: "Pinecone environment to use" + type: "string" + index: + title: "Index" + description: "Pinecone index to use" + type: "string" + required: + - "pinecone_key" + - "pinecone_environment" + - "index" + description: "Pinecone is a popular vector store that can be used to store\ + \ and retrieve embeddings. It is a managed service and can also be queried\ + \ from outside of langchain." + - title: "DocArrayHnswSearch" + type: "object" + properties: + mode: + title: "Mode" + default: "DocArrayHnswSearch" + const: "DocArrayHnswSearch" + enum: + - "DocArrayHnswSearch" + type: "string" + destination_path: + title: "Destination Path" + description: "Path to the directory where hnswlib and meta data files\ + \ will be written. The files will be placed inside that local mount.\ + \ All files in the specified destination directory will be deleted\ + \ on each run." + examples: + - "/local/my_hnswlib_index" + type: "string" + required: + - "destination_path" + description: "DocArrayHnswSearch is a lightweight Document Index implementation\ + \ provided by Docarray that runs fully locally and is best suited for\ + \ small- to medium-sized datasets. It stores vectors on disk in hnswlib,\ + \ and stores all other data in SQLite." + - title: "Chroma (local persistance)" + type: "object" + properties: + mode: + title: "Mode" + default: "chroma_local" + const: "chroma_local" + enum: + - "chroma_local" + type: "string" + destination_path: + title: "Destination Path" + description: "Path to the directory where chroma files will be written.\ + \ The files will be placed inside that local mount." + examples: + - "/local/my_chroma_db" + type: "string" + collection_name: + title: "Collection Name" + description: "Name of the collection to use." + default: "langchain" + type: "string" + required: + - "destination_path" + description: "Chroma is a popular vector store that can be used to store\ + \ and retrieve embeddings. It will build its index in memory and persist\ + \ it to disk by the end of the sync." + destinationType: + title: "langchain" + const: "langchain" + enum: + - "langchain" + order: 0 + type: "string" + required: + - "processing" + - "embedding" + - "indexing" + - "destinationType" + groups: + - id: "processing" + title: "Processing" + - id: "embedding" + title: "Embedding" + - id: "indexing" + title: "Indexing" + destination-langchain-update: + title: "Langchain Destination Config" + type: "object" + properties: + processing: + title: "ProcessingConfigModel" + type: "object" + properties: + chunk_size: + title: "Chunk size" + description: "Size of chunks in tokens to store in vector store (make\ + \ sure it is not too big for the context if your LLM)" + maximum: 8191 + type: "integer" + chunk_overlap: + title: "Chunk overlap" + description: "Size of overlap between chunks in tokens to store in vector\ + \ store to better capture relevant context" + default: 0 + type: "integer" + text_fields: + title: "Text fields to embed" + description: "List of fields in the record that should be used to calculate\ + \ the embedding. All other fields are passed along as meta fields.\ + \ The field list is applied to all streams in the same way and non-existing\ + \ fields are ignored. If none are defined, all fields are considered\ + \ text fields. When specifying text fields, you can access nested\ + \ fields in the record by using dot notation, e.g. `user.name` will\ + \ access the `name` field in the `user` object. It's also possible\ + \ to use wildcards to access all fields in an object, e.g. `users.*.name`\ + \ will access all `names` fields in all entries of the `users` array." + always_show: true + examples: + - "text" + - "user.name" + - "users.*.name" + type: "array" + items: + type: "string" + required: + - "chunk_size" + - "text_fields" + group: "processing" + embedding: + title: "Embedding" + description: "Embedding configuration" + group: "embedding" + type: "object" + oneOf: + - title: "OpenAI" + type: "object" + properties: + mode: + title: "Mode" + default: "openai" + const: "openai" + enum: + - "openai" + type: "string" + openai_key: + title: "OpenAI API key" + airbyte_secret: true + type: "string" + required: + - "openai_key" + description: "Use the OpenAI API to embed text. This option is using the\ + \ text-embedding-ada-002 model with 1536 embedding dimensions." + - title: "Fake" + type: "object" + properties: + mode: + title: "Mode" + default: "fake" + const: "fake" + enum: + - "fake" + type: "string" + description: "Use a fake embedding made out of random vectors with 1536\ + \ embedding dimensions. This is useful for testing the data pipeline\ + \ without incurring any costs." + indexing: + title: "Indexing" + description: "Indexing configuration" + group: "indexing" + type: "object" + oneOf: + - title: "Pinecone" + type: "object" + properties: + mode: + title: "Mode" + default: "pinecone" + const: "pinecone" + enum: + - "pinecone" + type: "string" + pinecone_key: + title: "Pinecone API key" + airbyte_secret: true + type: "string" + pinecone_environment: + title: "Pinecone environment" + description: "Pinecone environment to use" + type: "string" + index: + title: "Index" + description: "Pinecone index to use" + type: "string" + required: + - "pinecone_key" + - "pinecone_environment" + - "index" + description: "Pinecone is a popular vector store that can be used to store\ + \ and retrieve embeddings. It is a managed service and can also be queried\ + \ from outside of langchain." + - title: "DocArrayHnswSearch" + type: "object" + properties: + mode: + title: "Mode" + default: "DocArrayHnswSearch" + const: "DocArrayHnswSearch" + enum: + - "DocArrayHnswSearch" + type: "string" + destination_path: + title: "Destination Path" + description: "Path to the directory where hnswlib and meta data files\ + \ will be written. The files will be placed inside that local mount.\ + \ All files in the specified destination directory will be deleted\ + \ on each run." + examples: + - "/local/my_hnswlib_index" + type: "string" + required: + - "destination_path" + description: "DocArrayHnswSearch is a lightweight Document Index implementation\ + \ provided by Docarray that runs fully locally and is best suited for\ + \ small- to medium-sized datasets. It stores vectors on disk in hnswlib,\ + \ and stores all other data in SQLite." + - title: "Chroma (local persistance)" + type: "object" + properties: + mode: + title: "Mode" + default: "chroma_local" + const: "chroma_local" + enum: + - "chroma_local" + type: "string" + destination_path: + title: "Destination Path" + description: "Path to the directory where chroma files will be written.\ + \ The files will be placed inside that local mount." + examples: + - "/local/my_chroma_db" + type: "string" + collection_name: + title: "Collection Name" + description: "Name of the collection to use." + default: "langchain" + type: "string" + required: + - "destination_path" + description: "Chroma is a popular vector store that can be used to store\ + \ and retrieve embeddings. It will build its index in memory and persist\ + \ it to disk by the end of the sync." + required: + - "processing" + - "embedding" + - "indexing" + groups: + - id: "processing" + title: "Processing" + - id: "embedding" + title: "Embedding" + - id: "indexing" + title: "Indexing" destination-yellowbrick: title: "Yellowbrick Destination Spec" type: "object" @@ -77785,32 +77837,6 @@ components: type: "string" x-speakeasy-entity: Source_Chartmogul x-speakeasy-param-suppress-computed-diff: true - SourceClazarCreateRequest: - required: - - name - - workspaceId - - configuration - type: object - properties: - name: - description: Name of the source e.g. dev-mysql-instance. - type: string - definitionId: - description: The UUID of the connector definition. One of configuration.sourceType or definitionId must be provided. - format: uuid - type: string - workspaceId: - format: uuid - type: string - configuration: - $ref: "#/components/schemas/source-clazar" - secretId: - description: - "Optional secretID obtained through the public API OAuth redirect\ - \ flow." - type: "string" - x-speakeasy-entity: Source_Clazar - x-speakeasy-param-suppress-computed-diff: true SourceClickhouseCreateRequest: required: - name @@ -78071,32 +78097,6 @@ components: type: "string" x-speakeasy-entity: Source_Convex x-speakeasy-param-suppress-computed-diff: true - SourceDatadogCreateRequest: - required: - - name - - workspaceId - - configuration - type: object - properties: - name: - description: Name of the source e.g. dev-mysql-instance. - type: string - definitionId: - description: The UUID of the connector definition. One of configuration.sourceType or definitionId must be provided. - format: uuid - type: string - workspaceId: - format: uuid - type: string - configuration: - $ref: "#/components/schemas/source-datadog" - secretId: - description: - "Optional secretID obtained through the public API OAuth redirect\ - \ flow." - type: "string" - x-speakeasy-entity: Source_Datadog - x-speakeasy-param-suppress-computed-diff: true SourceDatascopeCreateRequest: required: - name @@ -78721,7 +78721,7 @@ components: type: "string" x-speakeasy-entity: Source_Gnews x-speakeasy-param-suppress-computed-diff: true - SourceGoldcastCreateRequest: + SourceGoogleAdsCreateRequest: required: - name - workspaceId @@ -78739,15 +78739,15 @@ components: format: uuid type: string configuration: - $ref: "#/components/schemas/source-goldcast" + $ref: "#/components/schemas/source-google-ads" secretId: description: "Optional secretID obtained through the public API OAuth redirect\ \ flow." type: "string" - x-speakeasy-entity: Source_Goldcast + x-speakeasy-entity: Source_GoogleAds x-speakeasy-param-suppress-computed-diff: true - SourceGoogleAdsCreateRequest: + SourceGoogleAnalyticsDataApiCreateRequest: required: - name - workspaceId @@ -78765,15 +78765,15 @@ components: format: uuid type: string configuration: - $ref: "#/components/schemas/source-google-ads" + $ref: "#/components/schemas/source-google-analytics-data-api" secretId: description: "Optional secretID obtained through the public API OAuth redirect\ \ flow." type: "string" - x-speakeasy-entity: Source_GoogleAds + x-speakeasy-entity: Source_GoogleAnalyticsDataApi x-speakeasy-param-suppress-computed-diff: true - SourceGoogleAnalyticsDataApiCreateRequest: + SourceGoogleAnalyticsV4ServiceAccountOnlyCreateRequest: required: - name - workspaceId @@ -78791,13 +78791,13 @@ components: format: uuid type: string configuration: - $ref: "#/components/schemas/source-google-analytics-data-api" + $ref: "#/components/schemas/source-google-analytics-v4-service-account-only" secretId: description: "Optional secretID obtained through the public API OAuth redirect\ \ flow." type: "string" - x-speakeasy-entity: Source_GoogleAnalyticsDataApi + x-speakeasy-entity: Source_GoogleAnalyticsV4ServiceAccountOnly x-speakeasy-param-suppress-computed-diff: true SourceGoogleDirectoryCreateRequest: required: @@ -80593,6 +80593,32 @@ components: type: "string" x-speakeasy-entity: Source_Prestashop x-speakeasy-param-suppress-computed-diff: true + SourcePunkApiCreateRequest: + required: + - name + - workspaceId + - configuration + type: object + properties: + name: + description: Name of the source e.g. dev-mysql-instance. + type: string + definitionId: + description: The UUID of the connector definition. One of configuration.sourceType or definitionId must be provided. + format: uuid + type: string + workspaceId: + format: uuid + type: string + configuration: + $ref: "#/components/schemas/source-punk-api" + secretId: + description: + "Optional secretID obtained through the public API OAuth redirect\ + \ flow." + type: "string" + x-speakeasy-entity: Source_PunkApi + x-speakeasy-param-suppress-computed-diff: true SourcePypiCreateRequest: required: - name @@ -82624,6 +82650,27 @@ components: $ref: "#/components/schemas/destination-google-sheets" x-speakeasy-entity: Destination_GoogleSheets x-speakeasy-param-suppress-computed-diff: true + DestinationLangchainCreateRequest: + required: + - name + - workspaceId + - configuration + type: object + properties: + name: + description: Name of the destination e.g. dev-mysql-instance. + type: string + definitionId: + description: The UUID of the connector definition. One of configuration.destinationType or definitionId must be provided. + format: uuid + type: string + workspaceId: + format: uuid + type: string + configuration: + $ref: "#/components/schemas/destination-langchain" + x-speakeasy-entity: Destination_Langchain + x-speakeasy-param-suppress-computed-diff: true DestinationMilvusCreateRequest: required: - name @@ -83438,22 +83485,6 @@ components: $ref: "#/components/schemas/source-chartmogul-update" x-speakeasy-entity: Source_Chartmogul x-speakeasy-param-suppress-computed-diff: true - SourceClazarPutRequest: - required: - - "name" - - "workspaceId" - - "configuration" - type: "object" - properties: - name: - type: "string" - workspaceId: - format: "uuid" - type: "string" - configuration: - $ref: "#/components/schemas/source-clazar-update" - x-speakeasy-entity: Source_Clazar - x-speakeasy-param-suppress-computed-diff: true SourceClickhousePutRequest: required: - "name" @@ -83614,22 +83645,6 @@ components: $ref: "#/components/schemas/source-convex-update" x-speakeasy-entity: Source_Convex x-speakeasy-param-suppress-computed-diff: true - SourceDatadogPutRequest: - required: - - "name" - - "workspaceId" - - "configuration" - type: "object" - properties: - name: - type: "string" - workspaceId: - format: "uuid" - type: "string" - configuration: - $ref: "#/components/schemas/source-datadog-update" - x-speakeasy-entity: Source_Datadog - x-speakeasy-param-suppress-computed-diff: true SourceDatascopePutRequest: required: - "name" @@ -84014,7 +84029,7 @@ components: $ref: "#/components/schemas/source-gnews-update" x-speakeasy-entity: Source_Gnews x-speakeasy-param-suppress-computed-diff: true - SourceGoldcastPutRequest: + SourceGoogleAdsPutRequest: required: - "name" - "workspaceId" @@ -84027,10 +84042,10 @@ components: format: "uuid" type: "string" configuration: - $ref: "#/components/schemas/source-goldcast-update" - x-speakeasy-entity: Source_Goldcast + $ref: "#/components/schemas/source-google-ads-update" + x-speakeasy-entity: Source_GoogleAds x-speakeasy-param-suppress-computed-diff: true - SourceGoogleAdsPutRequest: + SourceGoogleAnalyticsDataApiPutRequest: required: - "name" - "workspaceId" @@ -84043,10 +84058,10 @@ components: format: "uuid" type: "string" configuration: - $ref: "#/components/schemas/source-google-ads-update" - x-speakeasy-entity: Source_GoogleAds + $ref: "#/components/schemas/source-google-analytics-data-api-update" + x-speakeasy-entity: Source_GoogleAnalyticsDataApi x-speakeasy-param-suppress-computed-diff: true - SourceGoogleAnalyticsDataApiPutRequest: + SourceGoogleAnalyticsV4ServiceAccountOnlyPutRequest: required: - "name" - "workspaceId" @@ -84059,8 +84074,8 @@ components: format: "uuid" type: "string" configuration: - $ref: "#/components/schemas/source-google-analytics-data-api-update" - x-speakeasy-entity: Source_GoogleAnalyticsDataApi + $ref: "#/components/schemas/source-google-analytics-v4-service-account-only-update" + x-speakeasy-entity: Source_GoogleAnalyticsV4ServiceAccountOnly x-speakeasy-param-suppress-computed-diff: true SourceGoogleDirectoryPutRequest: required: @@ -85166,6 +85181,22 @@ components: $ref: "#/components/schemas/source-prestashop-update" x-speakeasy-entity: Source_Prestashop x-speakeasy-param-suppress-computed-diff: true + SourcePunkApiPutRequest: + required: + - "name" + - "workspaceId" + - "configuration" + type: "object" + properties: + name: + type: "string" + workspaceId: + format: "uuid" + type: "string" + configuration: + $ref: "#/components/schemas/source-punk-api-update" + x-speakeasy-entity: Source_PunkApi + x-speakeasy-param-suppress-computed-diff: true SourcePypiPutRequest: required: - "name" @@ -86462,6 +86493,22 @@ components: $ref: "#/components/schemas/destination-google-sheets-update" x-speakeasy-entity: Destination_GoogleSheets x-speakeasy-param-suppress-computed-diff: true + DestinationLangchainPutRequest: + required: + - "name" + - "workspaceId" + - "configuration" + type: "object" + properties: + name: + type: "string" + workspaceId: + format: "uuid" + type: "string" + configuration: + $ref: "#/components/schemas/destination-langchain-update" + x-speakeasy-entity: Destination_Langchain + x-speakeasy-param-suppress-computed-diff: true DestinationMilvusPutRequest: required: - "name" @@ -86842,7 +86889,7 @@ components: type: oauth2 flows: clientCredentials: - tokenUrl: /applications/token + tokenUrl: /api/v1/applications/token scopes: {} security: - bearerAuth: [] diff --git a/internal/planmodifiers/setplanmodifier/unique_by_key.go b/internal/planmodifiers/setplanmodifier/unique_by_key.go new file mode 100644 index 000000000..376c52abc --- /dev/null +++ b/internal/planmodifiers/setplanmodifier/unique_by_key.go @@ -0,0 +1,101 @@ +package setplanmodifier + +import ( + "context" + "fmt" + + "github.com/airbytehq/terraform-provider-airbyte/internal/planmodifiers/utils" + + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/types" +) + +// UniqueByKey returns plan modifier that identifies each item in a set by a primary key (e.g name) +func UniqueByKey(key string) planmodifier.Set { + return uniqueByKey{ + key: key, + } +} + +// uniqueByKey implements the plan modifier. +type uniqueByKey struct { + key string +} + +// Description returns a human-readable description of the plan modifier. +func (m uniqueByKey) Description(_ context.Context) string { + return "Once set, the value of this attribute in state will not change." +} + +// MarkdownDescription returns a markdown description of the plan modifier. +func (m uniqueByKey) MarkdownDescription(_ context.Context) string { + return "Once set, the value of this attribute in state will not change." +} + +// PlanModifySet implements the plan modification logic. +func (m uniqueByKey) PlanModifySet(ctx context.Context, req planmodifier.SetRequest, resp *planmodifier.SetResponse) { + // Do nothing if there is an unknown configuration value + if req.ConfigValue.IsUnknown() { + return + } + + if utils.IsAllStateUnknown(ctx, req.State) { + return + } + + // Create a map of all of the request plan elements, keyed by `m.key` + elementsByKey := make(map[string]types.Object) + for _, elem := range req.PlanValue.Elements() { + obj, ok := elem.(types.Object) + if !ok { + resp.Diagnostics.AddError( + "Error modifying set", + fmt.Sprintf("Expected object element, got %T", elem), + ) + return + } + + v, ok := obj.Attributes()[m.key] + if ok { + elementsByKey[v.String()] = obj + } + } + + var updatedElements []types.Object + + // Walk all the elements in the response plan and update any fields that have either an unknown or unset value + for _, elem := range resp.PlanValue.Elements() { + obj, ok := elem.(types.Object) + if !ok { + resp.Diagnostics.AddError( + "Error modifying set", + fmt.Sprintf("Expected object element, got %T", elem), + ) + return + } + + elemKey := obj.Attributes()[m.key] + srcObj, ok := elementsByKey[elemKey.String()] + if !ok { + resp.Diagnostics.AddError( + "Error modifying set", + fmt.Sprintf("No object found with %s=%s", m.key, elemKey.String()), + ) + return + } + + for k, v := range srcObj.Attributes() { + obj.Attributes()[k] = v + } + + updatedElements = append(updatedElements, obj) + } + + newPlanValue, diags := types.SetValueFrom(ctx, resp.PlanValue.ElementType(ctx), updatedElements) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + resp.PlanValue = newPlanValue +} diff --git a/internal/provider/connection_data_source.go b/internal/provider/connection_data_source.go index 952c8fe6e..00c65f324 100644 --- a/internal/provider/connection_data_source.go +++ b/internal/provider/connection_data_source.go @@ -58,7 +58,7 @@ func (r *ConnectionDataSource) Schema(ctx context.Context, req datasource.Schema "configurations": schema.SingleNestedAttribute{ Computed: true, Attributes: map[string]schema.Attribute{ - "streams": schema.ListNestedAttribute{ + "streams": schema.SetNestedAttribute{ Computed: true, NestedObject: schema.NestedAttributeObject{ Attributes: map[string]schema.Attribute{ diff --git a/internal/provider/connection_resource.go b/internal/provider/connection_resource.go index a2a62967e..09d5bff77 100644 --- a/internal/provider/connection_resource.go +++ b/internal/provider/connection_resource.go @@ -1,12 +1,14 @@ -// Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT. +// Code originally generated by Speakeasy (https://www.speakeasyapi.dev). package provider import ( "context" "fmt" + speakeasy_listplanmodifier "github.com/airbytehq/terraform-provider-airbyte/internal/planmodifiers/listplanmodifier" speakeasy_objectplanmodifier "github.com/airbytehq/terraform-provider-airbyte/internal/planmodifiers/objectplanmodifier" + speakeasy_setplanmodifier "github.com/airbytehq/terraform-provider-airbyte/internal/planmodifiers/setplanmodifier" speakeasy_stringplanmodifier "github.com/airbytehq/terraform-provider-airbyte/internal/planmodifiers/stringplanmodifier" tfTypes "github.com/airbytehq/terraform-provider-airbyte/internal/provider/types" "github.com/airbytehq/terraform-provider-airbyte/internal/sdk" @@ -69,28 +71,22 @@ func (r *ConnectionResource) Schema(ctx context.Context, req resource.SchemaRequ }, Optional: true, Attributes: map[string]schema.Attribute{ - "streams": schema.ListNestedAttribute{ + "streams": schema.SetNestedAttribute{ Computed: true, - PlanModifiers: []planmodifier.List{ - speakeasy_listplanmodifier.SuppressDiff(speakeasy_listplanmodifier.ExplicitSuppress), - }, Optional: true, + PlanModifiers: []planmodifier.Set{ + speakeasy_setplanmodifier.UniqueByKey("name"), + }, NestedObject: schema.NestedAttributeObject{ Attributes: map[string]schema.Attribute{ "cursor_field": schema.ListAttribute{ - Computed: true, - PlanModifiers: []planmodifier.List{ - speakeasy_listplanmodifier.SuppressDiff(speakeasy_listplanmodifier.ExplicitSuppress), - }, + Computed: true, Optional: true, ElementType: types.StringType, Description: `Path to the field that will be used to determine if a record is new or modified since the last sync. This field is REQUIRED if ` + "`" + `sync_mode` + "`" + ` is ` + "`" + `incremental` + "`" + ` unless there is a default.`, }, "name": schema.StringAttribute{ - Computed: true, - PlanModifiers: []planmodifier.String{ - speakeasy_stringplanmodifier.SuppressDiff(speakeasy_stringplanmodifier.ExplicitSuppress), - }, + Computed: true, Optional: true, Description: `Not Null`, Validators: []validator.String{ @@ -99,9 +95,6 @@ func (r *ConnectionResource) Schema(ctx context.Context, req resource.SchemaRequ }, "primary_key": schema.ListAttribute{ Computed: true, - PlanModifiers: []planmodifier.List{ - speakeasy_listplanmodifier.SuppressDiff(speakeasy_listplanmodifier.ExplicitSuppress), - }, Optional: true, ElementType: types.ListType{ ElemType: types.StringType, @@ -110,9 +103,6 @@ func (r *ConnectionResource) Schema(ctx context.Context, req resource.SchemaRequ }, "selected_fields": schema.ListNestedAttribute{ Computed: true, - PlanModifiers: []planmodifier.List{ - speakeasy_listplanmodifier.SuppressDiff(speakeasy_listplanmodifier.ExplicitSuppress), - }, Optional: true, NestedObject: schema.NestedAttributeObject{ Attributes: map[string]schema.Attribute{ @@ -129,10 +119,7 @@ func (r *ConnectionResource) Schema(ctx context.Context, req resource.SchemaRequ Description: `Paths to the fields that will be included in the configured catalog.`, }, "sync_mode": schema.StringAttribute{ - Computed: true, - PlanModifiers: []planmodifier.String{ - speakeasy_stringplanmodifier.SuppressDiff(speakeasy_stringplanmodifier.ExplicitSuppress), - }, + Computed: true, Optional: true, Description: `must be one of ["full_refresh_overwrite", "full_refresh_append", "incremental_append", "incremental_deduped_history"]`, Validators: []validator.String{