version: 4.6.2 type: DeclarativeSource description: |- Website: https://app.split.io/ API Docs: https://docs.split.io/reference/introduction Authentication docs: https://docs.split.io/reference/authentication check: type: CheckStream stream_names: - changeRequests definitions: streams: changeRequests: type: DeclarativeStream name: changeRequests primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/changeRequests http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - data paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/changeRequests" workspaces: type: DeclarativeStream name: workspaces primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/workspaces http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - objects paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/workspaces" flagSets: type: DeclarativeStream name: flagSets primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v3/flag-sets http_method: GET request_parameters: workspace_id: "{{ stream_partition.workspace_id }}" error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - data paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: workspace_id stream: $ref: "#/definitions/streams/workspaces" incremental_sync: type: DatetimeBasedCursor cursor_field: createdAt cursor_datetime_formats: - "%Y-%m-%dT%H:%M:%S.%fZ" datetime_format: "%Y-%m-%dT%H:%M:%S.%fZ" start_datetime: type: MinMaxDatetime datetime: '{{ config["start_date"] }}' datetime_format: "%Y-%m-%dT%H:%M:%SZ" end_datetime: type: MinMaxDatetime datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" datetime_format: "%Y-%m-%dT%H:%M:%SZ" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/flagSets" users: type: DeclarativeStream name: users primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/users http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - data paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/users" segments: type: DeclarativeStream name: segments primary_key: - name retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/segments/ws/{{ stream_partition.workspaceId }} http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - objects paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: workspaceId stream: $ref: "#/definitions/streams/workspaces" incremental_sync: type: DatetimeBasedCursor cursor_field: creationTime cursor_datetime_formats: - "%ms" datetime_format: "%ms" start_datetime: type: MinMaxDatetime datetime: '{{ config["start_date"] }}' datetime_format: "%Y-%m-%dT%H:%M:%SZ" end_datetime: type: MinMaxDatetime datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" datetime_format: "%Y-%m-%dT%H:%M:%SZ" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/segments" segments_keys: type: DeclarativeStream name: segments_keys primary_key: - uid retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: >- v2/segments/{{ stream_partition.environment_id }}/{{ stream_partition.segment_name }}/keys http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: IGNORE http_codes: - 404 error_message: Segment not defined for the partition record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: [] paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: - type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: environment_id stream: $ref: "#/definitions/streams/environments" - type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: name partition_field: segment_name stream: $ref: "#/definitions/streams/segments" transformations: - type: AddFields fields: - path: - uid value: "{{ now_utc() }}" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/segments_keys" rolloutStatuses: type: DeclarativeStream name: rolloutStatuses primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/rolloutStatuses http_method: GET request_parameters: wsId: "{{ stream_partition.workspaceId }}" error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: [] paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: workspaceId stream: $ref: "#/definitions/streams/workspaces" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/rolloutStatuses" environments: type: DeclarativeStream name: environments primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/environments/ws/{{ stream_partition.wsId }} http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: [] paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: wsId stream: $ref: "#/definitions/streams/workspaces" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/environments" trafficTypes: type: DeclarativeStream name: trafficTypes primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/trafficTypes/ws/{{ stream_partition.wsId }} http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: [] paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: wsId stream: $ref: "#/definitions/streams/workspaces" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/trafficTypes" groups: type: DeclarativeStream name: groups primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/groups http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - objects paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/groups" feature_flags: type: DeclarativeStream name: feature_flags primary_key: - id retriever: type: SimpleRetriever requester: $ref: "#/definitions/base_requester" path: v2/splits/ws/{{ stream_partition.wsId }} http_method: GET error_handler: type: CompositeErrorHandler error_handlers: - type: DefaultErrorHandler max_retries: 3 backoff_strategies: - type: ExponentialBackoffStrategy factor: 2 response_filters: - type: HttpResponseFilter action: RATE_LIMITED http_codes: - 429 error_message: Rate limit hit record_selector: type: RecordSelector extractor: type: DpathExtractor field_path: - objects paginator: type: DefaultPaginator page_token_option: type: RequestOption inject_into: request_parameter field_name: offset page_size_option: type: RequestOption field_name: limit inject_into: request_parameter pagination_strategy: type: OffsetIncrement page_size: 50 inject_on_first_request: true partition_router: type: SubstreamPartitionRouter parent_stream_configs: - type: ParentStreamConfig parent_key: id partition_field: wsId stream: $ref: "#/definitions/streams/workspaces" incremental_sync: type: DatetimeBasedCursor cursor_field: creationTime cursor_datetime_formats: - "%ms" datetime_format: "%ms" start_datetime: type: MinMaxDatetime datetime: '{{ config["start_date"] }}' datetime_format: "%Y-%m-%dT%H:%M:%SZ" end_datetime: type: MinMaxDatetime datetime: "{{ now_utc().strftime('%Y-%m-%dT%H:%M:%SZ') }}" datetime_format: "%Y-%m-%dT%H:%M:%SZ" schema_loader: type: InlineSchemaLoader schema: $ref: "#/schemas/feature_flags" base_requester: type: HttpRequester url_base: https://api.split.io/internal/api/ authenticator: type: BearerAuthenticator api_token: '{{ config["api_key"] }}' streams: - $ref: "#/definitions/streams/changeRequests" - $ref: "#/definitions/streams/workspaces" - $ref: "#/definitions/streams/flagSets" - $ref: "#/definitions/streams/users" - $ref: "#/definitions/streams/segments" - $ref: "#/definitions/streams/segments_keys" - $ref: "#/definitions/streams/rolloutStatuses" - $ref: "#/definitions/streams/environments" - $ref: "#/definitions/streams/trafficTypes" - $ref: "#/definitions/streams/groups" - $ref: "#/definitions/streams/feature_flags" spec: type: Spec connection_specification: type: object $schema: http://json-schema.org/draft-07/schema# required: - api_key - start_date properties: api_key: type: string order: 0 title: API Key airbyte_secret: true start_date: type: string order: 1 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$ additionalProperties: true metadata: autoImportSchema: changeRequests: true workspaces: true flagSets: true users: true segments: true segments_keys: true rolloutStatuses: true environments: true trafficTypes: true groups: true feature_flags: true testedStreams: changeRequests: streamHash: 6efe06fcb1de03b6d474aaeac222cd2f3af1790e hasResponse: true responsesAreSuccessful: true hasRecords: true primaryKeysArePresent: true primaryKeysAreUnique: true workspaces: hasRecords: true streamHash: 5bebdd6779808f7100867efd8eb8ea8399a2cd39 hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true flagSets: hasRecords: true streamHash: 8a148cffc4442c689c0138238db01fbbd6d9298f hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true users: hasRecords: true streamHash: f67e8ed0905def8e7a8dd5057c03320e7129fe60 hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true segments: hasRecords: true streamHash: 043310359a4391878ede12ca3014cf7e185af9d5 hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true segments_keys: hasRecords: true streamHash: ce373f7506d8ceb318827d44dd81610d37ab88f0 hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true rolloutStatuses: hasRecords: true streamHash: de5c4c90cc98dfd9a2eb17612f48829715dd5d5f hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true environments: hasRecords: true streamHash: e60fda6015f2305bd59a3699fb69a3924dbbf0ad hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true trafficTypes: hasRecords: true streamHash: e2634db7b331c5ad0c568a0fcb3d7e1e4cf4756f hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true groups: hasRecords: true streamHash: a0ec71fa4298488fc5f0cd384b7c0870020244be hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true feature_flags: hasRecords: true streamHash: 4dc7fca3410c1227682e17b60fc26ec069b3e00e hasResponse: true primaryKeysAreUnique: true primaryKeysArePresent: true responsesAreSuccessful: true assist: {} schemas: changeRequests: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: approvers: type: - array - "null" items: type: - string - "null" comments: type: - array - "null" items: type: - object - "null" properties: comment: type: - string - "null" role: type: - string - "null" timestamp: type: - number - "null" user: type: - string - "null" id: type: string operationType: type: - string - "null" rolloutStatus: type: - object - "null" properties: type: type: - string - "null" id: type: - string - "null" name: type: - string - "null" segment: type: - object - "null" properties: environment: type: - object - "null" properties: id: type: - string - "null" name: type: - string - "null" keys: type: - array - "null" items: type: - string - "null" name: type: - string - "null" split: type: - object - "null" properties: baselineTreatment: type: - string - "null" defaultRule: type: - array - "null" items: type: - object - "null" properties: size: type: - number - "null" treatment: type: - string - "null" defaultTreatment: type: - string - "null" environment: type: - object - "null" properties: id: type: - string - "null" name: type: - string - "null" id: type: - string - "null" killed: type: - boolean - "null" name: type: - string - "null" openChangeRequestId: type: - string - "null" rules: type: - array - "null" trafficAllocation: type: - number - "null" trafficType: type: - object - "null" properties: id: type: - string - "null" name: type: - string - "null" treatments: type: - array - "null" items: type: - object - "null" properties: description: type: - string - "null" keys: type: - array - "null" items: type: - string - "null" name: type: - string - "null" segments: type: - array - "null" items: type: - string - "null" status: type: - string - "null" title: type: - string - "null" workspace: type: - object - "null" properties: type: type: - string - "null" id: type: - string - "null" required: - id workspaces: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: type: type: - string - "null" id: type: string name: type: - string - "null" requiresTitleAndComments: type: - boolean - "null" required: - id flagSets: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: type: type: - string - "null" description: type: - string - "null" createdAt: type: string id: type: string name: type: - string - "null" workspace: type: - object - "null" properties: type: type: - string - "null" id: type: - string - "null" required: - id - createdAt users: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: type: type: - string - "null" 2fa: type: - boolean - "null" email: type: - string - "null" groups: type: - array - "null" items: type: - object - "null" properties: type: type: - string - "null" id: type: - string - "null" id: type: string name: type: - string - "null" status: type: - string - "null" required: - id segments: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: description: type: - string - "null" creationTime: type: number name: type: string tags: type: - array - "null" items: type: - object - "null" properties: name: type: - string - "null" trafficType: type: - object - "null" properties: id: type: - string - "null" name: type: - string - "null" required: - name - creationTime segments_keys: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: count: type: - number - "null" keys: type: - array - "null" limit: type: - number - "null" offset: type: - number - "null" openChangeRequestId: type: - string - "null" uid: type: string required: - uid rolloutStatuses: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: description: type: - string - "null" id: type: string name: type: - string - "null" required: - id environments: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: type: type: - string - "null" id: type: string name: type: - string - "null" production: type: - boolean - "null" required: - id trafficTypes: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: type: type: - string - "null" displayAttributeId: type: - string - "null" id: type: string name: type: - string - "null" workspace: type: - object - "null" properties: type: type: - string - "null" id: type: - string - "null" name: type: - string - "null" required: - id groups: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: type: type: - string - "null" description: type: - string - "null" id: type: string name: type: - string - "null" required: - id feature_flags: type: object $schema: http://json-schema.org/schema# additionalProperties: true properties: description: type: - string - "null" creationTime: type: number id: type: string name: type: - string - "null" owners: type: - array - "null" items: type: - object - "null" properties: type: type: - string - "null" id: type: - string - "null" rolloutStatus: type: - object - "null" properties: id: type: - string - "null" name: type: - string - "null" rolloutStatusTimestamp: type: - number - "null" tags: type: - array - "null" items: type: - object - "null" properties: name: type: - string - "null" trafficType: type: - object - "null" properties: id: type: - string - "null" name: type: - string - "null" required: - id - creationTime