airbyte-cdk 0.32.0__py3-none-any.whl → 0.33.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1043,6 +1043,149 @@ definitions:
1043
1043
  additionalProperties: true
1044
1044
  documentation_url:
1045
1045
  type: string
1046
+ advanced_auth:
1047
+ "$ref": "#/definitions/AuthFlow"
1048
+ AuthFlow:
1049
+ title: "Auth flow"
1050
+ type: object
1051
+ description: |-
1052
+ Additional and optional specification object to describe what an 'advanced' Auth flow would need to function.
1053
+ - A connector should be able to fully function with the configuration as described by the ConnectorSpecification in a 'basic' mode.
1054
+ - The 'advanced' mode provides easier UX for the user with UI improvements and automations. However, this requires further setup on the
1055
+ server side by instance or workspace admins beforehand. The trade-off is that the user does not have to provide as many technical
1056
+ inputs anymore and the auth process is faster and easier to complete.
1057
+ properties:
1058
+ auth_flow_type:
1059
+ title: "Auth flow type"
1060
+ description: "The type of auth to use"
1061
+ type: string
1062
+ enum: ["oauth2.0", "oauth1.0"] # Future auth types should be added here
1063
+ predicate_key:
1064
+ title: "Predicate key"
1065
+ description: Json Path to a field in the connectorSpecification that should exist for the advanced auth to be applicable.
1066
+ type: array
1067
+ items:
1068
+ type: string
1069
+ examples:
1070
+ - ["credentials", "auth_type"]
1071
+ predicate_value:
1072
+ title: "Predicate value"
1073
+ description: Value of the predicate_key fields for the advanced auth to be applicable.
1074
+ type: string
1075
+ examples:
1076
+ - "Oauth"
1077
+ oauth_config_specification:
1078
+ "$ref": "#/definitions/OAuthConfigSpecification"
1079
+ OAuthConfigSpecification:
1080
+ type: object
1081
+ additionalProperties: true
1082
+ properties:
1083
+ oauth_user_input_from_connector_config_specification:
1084
+ title: "OAuth user input"
1085
+ description: |-
1086
+ OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.
1087
+ Must be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification
1088
+ using special annotation 'path_in_connector_config'.
1089
+ These are input values the user is entering through the UI to authenticate to the connector, that might also shared
1090
+ as inputs for syncing data via the connector.
1091
+ Examples:
1092
+ if no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]
1093
+ if connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,
1094
+ oauth_user_input_from_connector_config_specification={
1095
+ app_id: {
1096
+ type: string
1097
+ path_in_connector_config: ['app_id']
1098
+ }
1099
+ }
1100
+ if connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,
1101
+ oauth_user_input_from_connector_config_specification={
1102
+ app_id: {
1103
+ type: string
1104
+ path_in_connector_config: ['info', 'app_id']
1105
+ }
1106
+ }
1107
+ type: object
1108
+ examples:
1109
+ - app_id:
1110
+ type: string
1111
+ path_in_connector_config: ["app_id"]
1112
+ - app_id:
1113
+ type: string
1114
+ path_in_connector_config: ["info", "app_id"]
1115
+ complete_oauth_output_specification:
1116
+ title: "OAuth output specification"
1117
+ description: |-
1118
+ OAuth specific blob. This is a Json Schema used to validate Json configurations produced by the OAuth flows as they are
1119
+ returned by the distant OAuth APIs.
1120
+ Must be a valid JSON describing the fields to merge back to `ConnectorSpecification.connectionSpecification`.
1121
+ For each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,
1122
+ Examples:
1123
+ complete_oauth_output_specification={
1124
+ refresh_token: {
1125
+ type: string,
1126
+ path_in_connector_config: ['credentials', 'refresh_token']
1127
+ }
1128
+ }
1129
+ type: object
1130
+ additionalProperties: true
1131
+ examples:
1132
+ - refresh_token:
1133
+ type: string,
1134
+ path_in_connector_config: ["credentials", "refresh_token"]
1135
+ complete_oauth_server_input_specification:
1136
+ title: "OAuth input specification"
1137
+ description: |-
1138
+ OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations.
1139
+ Must be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the
1140
+ server when completing an OAuth flow (typically exchanging an auth code for refresh token).
1141
+ Examples:
1142
+ complete_oauth_server_input_specification={
1143
+ client_id: {
1144
+ type: string
1145
+ },
1146
+ client_secret: {
1147
+ type: string
1148
+ }
1149
+ }
1150
+ type: object
1151
+ additionalProperties: true
1152
+ examples:
1153
+ - client_id:
1154
+ type: string
1155
+ client_secret:
1156
+ type: string
1157
+ complete_oauth_server_output_specification:
1158
+ title: "OAuth server output specification"
1159
+ description: |-
1160
+ OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations that
1161
+ also need to be merged back into the connector configuration at runtime.
1162
+ This is a subset configuration of `complete_oauth_server_input_specification` that filters fields out to retain only the ones that
1163
+ are necessary for the connector to function with OAuth. (some fields could be used during oauth flows but not needed afterwards, therefore
1164
+ they would be listed in the `complete_oauth_server_input_specification` but not `complete_oauth_server_output_specification`)
1165
+ Must be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the
1166
+ connector when using OAuth flow APIs.
1167
+ These fields are to be merged back to `ConnectorSpecification.connectionSpecification`.
1168
+ For each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,
1169
+ Examples:
1170
+ complete_oauth_server_output_specification={
1171
+ client_id: {
1172
+ type: string,
1173
+ path_in_connector_config: ['credentials', 'client_id']
1174
+ },
1175
+ client_secret: {
1176
+ type: string,
1177
+ path_in_connector_config: ['credentials', 'client_secret']
1178
+ }
1179
+ }
1180
+ type: object
1181
+ additionalProperties: true
1182
+ examples:
1183
+ - client_id:
1184
+ type: string,
1185
+ path_in_connector_config: ["credentials", "client_id"]
1186
+ client_secret:
1187
+ type: string,
1188
+ path_in_connector_config: ["credentials", "client_secret"]
1046
1189
  SubstreamPartitionRouter:
1047
1190
  description: Partition router that is used to retrieve records that have been partitioned according to records from the specified parent streams
1048
1191
  type: object
@@ -309,10 +309,65 @@ class SessionTokenAuthenticator(BaseModel):
309
309
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
310
310
 
311
311
 
312
- class Spec(BaseModel):
313
- type: Literal["Spec"]
314
- connection_specification: Dict[str, Any]
315
- documentation_url: Optional[str] = None
312
+ class AuthFlowType(Enum):
313
+ oauth2_0 = "oauth2.0"
314
+ oauth1_0 = "oauth1.0"
315
+
316
+
317
+ class OAuthConfigSpecification(BaseModel):
318
+ class Config:
319
+ extra = Extra.allow
320
+
321
+ oauth_user_input_from_connector_config_specification: Optional[Dict[str, Any]] = Field(
322
+ None,
323
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations used as input to OAuth.\nMust be a valid non-nested JSON that refers to properties from ConnectorSpecification.connectionSpecification\nusing special annotation 'path_in_connector_config'.\nThese are input values the user is entering through the UI to authenticate to the connector, that might also shared\nas inputs for syncing data via the connector.\nExamples:\nif no connector values is shared during oauth flow, oauth_user_input_from_connector_config_specification=[]\nif connector values such as 'app_id' inside the top level are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['app_id']\n }\n }\nif connector values such as 'info.app_id' nested inside another object are used to generate the API url for the oauth flow,\n oauth_user_input_from_connector_config_specification={\n app_id: {\n type: string\n path_in_connector_config: ['info', 'app_id']\n }\n }",
324
+ examples=[
325
+ {"app_id": {"type": "string", "path_in_connector_config": ["app_id"]}},
326
+ {
327
+ "app_id": {
328
+ "type": "string",
329
+ "path_in_connector_config": ["info", "app_id"],
330
+ }
331
+ },
332
+ ],
333
+ title="OAuth user input",
334
+ )
335
+ complete_oauth_output_specification: Optional[Dict[str, Any]] = Field(
336
+ None,
337
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations produced by the OAuth flows as they are\nreturned by the distant OAuth APIs.\nMust be a valid JSON describing the fields to merge back to `ConnectorSpecification.connectionSpecification`.\nFor each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,\nExamples:\n complete_oauth_output_specification={\n refresh_token: {\n type: string,\n path_in_connector_config: ['credentials', 'refresh_token']\n }\n }",
338
+ examples=[
339
+ {
340
+ "refresh_token": {
341
+ "type": "string,",
342
+ "path_in_connector_config": ["credentials", "refresh_token"],
343
+ }
344
+ }
345
+ ],
346
+ title="OAuth output specification",
347
+ )
348
+ complete_oauth_server_input_specification: Optional[Dict[str, Any]] = Field(
349
+ None,
350
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations.\nMust be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the\nserver when completing an OAuth flow (typically exchanging an auth code for refresh token).\nExamples:\n complete_oauth_server_input_specification={\n client_id: {\n type: string\n },\n client_secret: {\n type: string\n }\n }",
351
+ examples=[{"client_id": {"type": "string"}, "client_secret": {"type": "string"}}],
352
+ title="OAuth input specification",
353
+ )
354
+ complete_oauth_server_output_specification: Optional[Dict[str, Any]] = Field(
355
+ None,
356
+ description="OAuth specific blob. This is a Json Schema used to validate Json configurations persisted as Airbyte Server configurations that\nalso need to be merged back into the connector configuration at runtime.\nThis is a subset configuration of `complete_oauth_server_input_specification` that filters fields out to retain only the ones that\nare necessary for the connector to function with OAuth. (some fields could be used during oauth flows but not needed afterwards, therefore\nthey would be listed in the `complete_oauth_server_input_specification` but not `complete_oauth_server_output_specification`)\nMust be a valid non-nested JSON describing additional fields configured by the Airbyte Instance or Workspace Admins to be used by the\nconnector when using OAuth flow APIs.\nThese fields are to be merged back to `ConnectorSpecification.connectionSpecification`.\nFor each field, a special annotation `path_in_connector_config` can be specified to determine where to merge it,\nExamples:\n complete_oauth_server_output_specification={\n client_id: {\n type: string,\n path_in_connector_config: ['credentials', 'client_id']\n },\n client_secret: {\n type: string,\n path_in_connector_config: ['credentials', 'client_secret']\n }\n }",
357
+ examples=[
358
+ {
359
+ "client_id": {
360
+ "type": "string,",
361
+ "path_in_connector_config": ["credentials", "client_id"],
362
+ },
363
+ "client_secret": {
364
+ "type": "string,",
365
+ "path_in_connector_config": ["credentials", "client_secret"],
366
+ },
367
+ }
368
+ ],
369
+ title="OAuth server output specification",
370
+ )
316
371
 
317
372
 
318
373
  class WaitTimeFromHeader(BaseModel):
@@ -419,6 +474,23 @@ class RecordSelector(BaseModel):
419
474
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
420
475
 
421
476
 
477
+ class AuthFlow(BaseModel):
478
+ auth_flow_type: Optional[AuthFlowType] = Field(None, description="The type of auth to use", title="Auth flow type")
479
+ predicate_key: Optional[List[str]] = Field(
480
+ None,
481
+ description="Json Path to a field in the connectorSpecification that should exist for the advanced auth to be applicable.",
482
+ examples=[["credentials", "auth_type"]],
483
+ title="Predicate key",
484
+ )
485
+ predicate_value: Optional[str] = Field(
486
+ None,
487
+ description="Value of the predicate_key fields for the advanced auth to be applicable.",
488
+ examples=["Oauth"],
489
+ title="Predicate value",
490
+ )
491
+ oauth_config_specification: Optional[OAuthConfigSpecification] = None
492
+
493
+
422
494
  class CompositeErrorHandler(BaseModel):
423
495
  type: Literal["CompositeErrorHandler"]
424
496
  error_handlers: List[Union[CompositeErrorHandler, DefaultErrorHandler]]
@@ -469,6 +541,13 @@ class HttpRequester(BaseModel):
469
541
  parameters: Optional[Dict[str, Any]] = Field(None, alias="$parameters")
470
542
 
471
543
 
544
+ class Spec(BaseModel):
545
+ type: Literal["Spec"]
546
+ connection_specification: Dict[str, Any]
547
+ documentation_url: Optional[str] = None
548
+ advanced_auth: Optional[AuthFlow] = None
549
+
550
+
472
551
  class DeclarativeSource(BaseModel):
473
552
  class Config:
474
553
  extra = Extra.forbid
@@ -759,7 +759,12 @@ class ModelToComponentFactory:
759
759
 
760
760
  @staticmethod
761
761
  def create_spec(model: SpecModel, config: Config, **kwargs) -> Spec:
762
- return Spec(connection_specification=model.connection_specification, documentation_url=model.documentation_url, parameters={})
762
+ return Spec(
763
+ connection_specification=model.connection_specification,
764
+ documentation_url=model.documentation_url,
765
+ advanced_auth=model.advanced_auth,
766
+ parameters={},
767
+ )
763
768
 
764
769
  def create_substream_partition_router(self, model: SubstreamPartitionRouterModel, config: Config, **kwargs) -> SubstreamPartitionRouter:
765
770
  parent_stream_configs = []
@@ -6,6 +6,7 @@ from dataclasses import InitVar, dataclass
6
6
  from typing import Any, Mapping, Optional
7
7
 
8
8
  from airbyte_cdk.models.airbyte_protocol import ConnectorSpecification
9
+ from airbyte_cdk.sources.declarative.models.declarative_component_schema import AuthFlow
9
10
 
10
11
 
11
12
  @dataclass
@@ -21,6 +22,7 @@ class Spec:
21
22
  connection_specification: Mapping[str, Any]
22
23
  parameters: InitVar[Mapping[str, Any]]
23
24
  documentation_url: Optional[str] = None
25
+ advanced_auth: Optional[AuthFlow] = None
24
26
 
25
27
  def generate_spec(self) -> ConnectorSpecification:
26
28
  """
@@ -31,6 +33,9 @@ class Spec:
31
33
 
32
34
  if self.documentation_url:
33
35
  obj["documentationUrl"] = self.documentation_url
36
+ if self.advanced_auth:
37
+ obj["advanced_auth"] = self.advanced_auth
38
+ obj["advanced_auth"].auth_flow_type = obj["advanced_auth"].auth_flow_type.value # Get enum value
34
39
 
35
40
  # We remap these keys to camel case because that's the existing format expected by the rest of the platform
36
41
  return ConnectorSpecification.parse_obj(obj)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: airbyte-cdk
3
- Version: 0.32.0
3
+ Version: 0.33.0
4
4
  Summary: A framework for writing Airbyte Connectors.
5
5
  Home-page: https://github.com/airbytehq/airbyte
6
6
  Author: Airbyte
@@ -22,7 +22,7 @@ airbyte_cdk/sources/connector_state_manager.py,sha256=_R-2QnMGimKL0t5aV4f6P1dgd-
22
22
  airbyte_cdk/sources/source.py,sha256=N3vHZzdUsBETFsql-YpO-LcgjolT_jcnAuHBhGD6Hqk,4278
23
23
  airbyte_cdk/sources/declarative/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
24
24
  airbyte_cdk/sources/declarative/create_partial.py,sha256=sUJOwD8hBzW4pxw2XhYlSTMgl-WMc5WpP5Oq_jo3fHw,3371
25
- airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=0_xsLmuonZhw7xyk-GILNqS2i15ZD2AVJ8snomMh1Bc,31820
25
+ airbyte_cdk/sources/declarative/declarative_component_schema.yaml,sha256=qwub3Ca1De3cf1a7FrOP5B1DEBmmrVQIEz2lr25zbY8,38971
26
26
  airbyte_cdk/sources/declarative/declarative_source.py,sha256=U2As9PDKmcWDgbsWUo-RetJ9fxQOBlwntWZ0NOgs5Ac,1453
27
27
  airbyte_cdk/sources/declarative/declarative_stream.py,sha256=x2b5gbrHQnbppbuj57LwDeHVTFrlwz1pN2EJ1qvVcFk,5698
28
28
  airbyte_cdk/sources/declarative/exceptions.py,sha256=kTPUA4I2NV4J6HDz-mKPGMrfuc592akJnOyYx38l_QM,176
@@ -59,14 +59,14 @@ airbyte_cdk/sources/declarative/interpolation/interpolation.py,sha256=dyIM-bzh54
59
59
  airbyte_cdk/sources/declarative/interpolation/jinja.py,sha256=5VugZw2Adjo_NcPBFdhl2qW_JIi6QBZpUwtuFmCrBH8,2640
60
60
  airbyte_cdk/sources/declarative/interpolation/macros.py,sha256=9H1hMTUlWNdKLjp5JyQnl98KjLAfRvmkChTm3dsVqXY,2930
61
61
  airbyte_cdk/sources/declarative/models/__init__.py,sha256=EiYnzwCHZV7EYqMJqcy6xKSeHvTKZBsQndjbEwmiTW4,93
62
- airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=XDaSjPtEMimHlFjYfoo7qpts9xH0q19_euCY-ye2c78,17876
62
+ airbyte_cdk/sources/declarative/models/declarative_component_schema.py,sha256=op8eznLZCnxnpwLxUnWdA_l7WhoAPwr5wky_UgxWlnY,24006
63
63
  airbyte_cdk/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
64
64
  airbyte_cdk/sources/declarative/parsers/class_types_registry.py,sha256=eC-5PDRaKNtcZpQF9PY_l0kDF21-iCEolqWd0AwJ_hM,5884
65
65
  airbyte_cdk/sources/declarative/parsers/custom_exceptions.py,sha256=y7_G5mM07zxT5YG975kdC2PAja-Uc83pYp8WrV3GNdo,522
66
66
  airbyte_cdk/sources/declarative/parsers/default_implementation_registry.py,sha256=W8BcK4KOg4ifNXgsdeIoV4oneHjXBKcPHEZHIC4r-hM,3801
67
67
  airbyte_cdk/sources/declarative/parsers/manifest_component_transformer.py,sha256=H23H3nURCxsvjq66Gn9naffp0HJ1fU03wLFu-5F0AhQ,7701
68
68
  airbyte_cdk/sources/declarative/parsers/manifest_reference_resolver.py,sha256=6ukHx0bBrCJm9rek1l_MEfS3U_gdJcM4pJRyifJEOp0,6412
69
- airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=G1jsr_Mgn1cYcEwsAF9UWh7pb-eK300hbgUl9je3fQU,44599
69
+ airbyte_cdk/sources/declarative/parsers/model_to_component_factory.py,sha256=eM3gWERULEiBaQ1j8z3sNQJqjVABBNdZxBhPM7U5Qxo,44693
70
70
  airbyte_cdk/sources/declarative/partition_routers/__init__.py,sha256=27sOWhw2LBQs62HchURakHQ2M_mtnOatNgU6q8RUtpU,476
71
71
  airbyte_cdk/sources/declarative/partition_routers/list_partition_router.py,sha256=fa6VtTwSoIkDI3SBoRtVx79opVtJX80_gU9bt31lspc,4785
72
72
  airbyte_cdk/sources/declarative/partition_routers/single_partition_router.py,sha256=Fi3ocNZZoYkr0uvRgwoVSqne6enxRvi8DOHrASVK2PQ,1851
@@ -112,7 +112,7 @@ airbyte_cdk/sources/declarative/schema/inline_schema_loader.py,sha256=bVETE10hRs
112
112
  airbyte_cdk/sources/declarative/schema/json_file_schema_loader.py,sha256=2yFT62eftefYJV__eD5ikKIkp455Wioprw9EnvWkwFY,4068
113
113
  airbyte_cdk/sources/declarative/schema/schema_loader.py,sha256=kjt8v0N5wWKA5zyLnrDLxf1PJKdUqvQq2RVnAOAzNSY,379
114
114
  airbyte_cdk/sources/declarative/spec/__init__.py,sha256=H0UwoRhgucbKBIzg85AXrifybVmfpwWpPdy22vZKVuo,141
115
- airbyte_cdk/sources/declarative/spec/spec.py,sha256=DwflS1qlY2Gu9luZaPCZd6HWN4eAvBTkfWQvKJfoTGY,1268
115
+ airbyte_cdk/sources/declarative/spec/spec.py,sha256=gwC61YJLdr5IBhKswSBvffe5XlVLf5BmWI16RC2Wh2Y,1597
116
116
  airbyte_cdk/sources/declarative/stream_slicers/__init__.py,sha256=DfUHQRpYx_gPFz8Ir5PjJYLb6fOjRuJWM2KE3X2gqbQ,328
117
117
  airbyte_cdk/sources/declarative/stream_slicers/cartesian_product_stream_slicer.py,sha256=7yQCprAW6QuSk1VbFPjL9REjRpdKtvO9gJBCCTfF5kg,4289
118
118
  airbyte_cdk/sources/declarative/stream_slicers/stream_slicer.py,sha256=kDCt1kd18xj4QYWtHFHMda5mfXm5MErJH14yJ7hHUY8,1529
@@ -203,7 +203,7 @@ unit_tests/sources/declarative/interpolation/test_macros.py,sha256=EzNhdF1FVxb1d
203
203
  unit_tests/sources/declarative/parsers/__init__.py,sha256=ZnqYNxHsKCgO38IwB34RQyRMXTs4GTvlRi3ImKnIioo,61
204
204
  unit_tests/sources/declarative/parsers/test_manifest_component_transformer.py,sha256=5lHUFv2n32b6h5IRh65S7EfqPkP5-IrGE3VUxDoPflI,12483
205
205
  unit_tests/sources/declarative/parsers/test_manifest_reference_resolver.py,sha256=K3q9eyx-sJFQ8nGYjAgS7fxau4sX_FlNreEAjiCYOeE,5306
206
- unit_tests/sources/declarative/parsers/test_model_to_component_factory.py,sha256=Ynpc3HbirmlXg4RVlBp6SpH1ZoOyzAzdc5RbUorQMzU,55695
206
+ unit_tests/sources/declarative/parsers/test_model_to_component_factory.py,sha256=AEdXEnSuw9-Jk-TdCx8C5m9F5FpMUf8sRCaUgVk7XhM,55842
207
207
  unit_tests/sources/declarative/parsers/testing_components.py,sha256=_yUijmYRM-yYHPGDB2JsfEiOuVrgexGW9QwHf1xxNW8,1326
208
208
  unit_tests/sources/declarative/partition_routers/__init__.py,sha256=O8MZg4Bv_DghdRy9BoJCPIqdV75VtiUrhEkExQgb2nE,61
209
209
  unit_tests/sources/declarative/partition_routers/test_list_partition_router.py,sha256=gyivHDJ7iA6dslrI886GQnT_if0BfGmLPfiviVGiSqo,5118
@@ -257,8 +257,8 @@ unit_tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
257
257
  unit_tests/utils/test_schema_inferrer.py,sha256=ckl17GlNOZInqgxni7Z2A0bg_p6JDy0GVFAG8ph67pw,3288
258
258
  unit_tests/utils/test_secret_utils.py,sha256=XKe0f1RHYii8iwE6ATmBr5JGDI1pzzrnZUGdUSMJQP4,4886
259
259
  unit_tests/utils/test_traced_exception.py,sha256=bDFP5zMBizFenz6V2WvEZTRCKGB5ijh3DBezjbfoYIs,4198
260
- airbyte_cdk-0.32.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
261
- airbyte_cdk-0.32.0.dist-info/METADATA,sha256=qSn-QH6VCzY6qd1MjE0AEqjOSZXe8vcqLhZFWqo_XW8,8902
262
- airbyte_cdk-0.32.0.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
263
- airbyte_cdk-0.32.0.dist-info/top_level.txt,sha256=edvsDKTnE6sD2wfCUaeTfKf5gQIL6CPVMwVL2sWZzqo,51
264
- airbyte_cdk-0.32.0.dist-info/RECORD,,
260
+ airbyte_cdk-0.33.0.dist-info/LICENSE.txt,sha256=Wfe61S4BaGPj404v8lrAbvhjYR68SHlkzeYrg3_bbuM,1051
261
+ airbyte_cdk-0.33.0.dist-info/METADATA,sha256=S7kC7qN80baINEZMrjAtQgSFGV8M4fwyY4chCibccUc,8902
262
+ airbyte_cdk-0.33.0.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
263
+ airbyte_cdk-0.33.0.dist-info/top_level.txt,sha256=edvsDKTnE6sD2wfCUaeTfKf5gQIL6CPVMwVL2sWZzqo,51
264
+ airbyte_cdk-0.33.0.dist-info/RECORD,,
@@ -172,6 +172,8 @@ spec:
172
172
  title: API Key
173
173
  description: Test API Key
174
174
  order: 0
175
+ advanced_auth:
176
+ auth_flow_type: "oauth2.0"
175
177
  """
176
178
  parsed_manifest = YamlDeclarativeSource._parse(content)
177
179
  resolved_manifest = resolver.preprocess_manifest(parsed_manifest)
@@ -257,6 +259,8 @@ spec:
257
259
  "description": "Test API Key",
258
260
  "order": 0,
259
261
  }
262
+ advanced_auth = spec.advanced_auth
263
+ assert advanced_auth.auth_flow_type.value == "oauth2.0"
260
264
 
261
265
 
262
266
  def test_interpolate_config():