From 3dfb6d13cde2c2fb4e35844e122be0def0155b80 Mon Sep 17 00:00:00 2001 From: Parthiv Makwana <75653580+parthiv11@users.noreply.github.com> Date: Tue, 12 Nov 2024 02:14:20 +0530 Subject: [PATCH] source-pretix contribution from parthiv11 (#48042) Co-authored-by: Marcos Marx --- .../connectors/source-pretix/README.md | 33 + .../source-pretix/acceptance-test-config.yml | 17 + .../connectors/source-pretix/icon.svg | 94 + .../connectors/source-pretix/manifest.yaml | 3404 +++++++++++++++++ .../connectors/source-pretix/metadata.yaml | 35 + docs/integrations/sources/pretix.md | 46 + 6 files changed, 3629 insertions(+) create mode 100644 airbyte-integrations/connectors/source-pretix/README.md create mode 100644 airbyte-integrations/connectors/source-pretix/acceptance-test-config.yml create mode 100644 airbyte-integrations/connectors/source-pretix/icon.svg create mode 100644 airbyte-integrations/connectors/source-pretix/manifest.yaml create mode 100644 airbyte-integrations/connectors/source-pretix/metadata.yaml create mode 100644 docs/integrations/sources/pretix.md diff --git a/airbyte-integrations/connectors/source-pretix/README.md b/airbyte-integrations/connectors/source-pretix/README.md new file mode 100644 index 000000000000..a52e55b9f3c8 --- /dev/null +++ b/airbyte-integrations/connectors/source-pretix/README.md @@ -0,0 +1,33 @@ +# Pretix +This directory contains the manifest-only connector for `source-pretix`. + +[Pretix](https://pretix.eu/about/en/) connector enables seamless data integration with the Pretix event ticketing platform, allowing users to sync ticket sales, attendee information, event data, and other metrics directly into their data warehouse or analytics tools. This connector supports automated data extraction for efficient, reporting and data-driven insights across events managed in Pretix. + +## Usage +There are multiple ways to use this connector: +- You can use this connector as any other connector in Airbyte Marketplace. +- You can load this connector in `pyairbyte` using `get_source`! +- You can open this connector in Connector Builder, edit it, and publish to your workspaces. + +Please refer to the manifest-only connector documentation for more details. + +## Local Development +We recommend you use the Connector Builder to edit this connector. + +But, if you want to develop this connector locally, you can use the following steps. + +### Environment Setup +You will need `airbyte-ci` installed. You can find the documentation [here](airbyte-ci). + +### Build +This will create a dev image (`source-pretix:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-pretix build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-pretix test +``` + diff --git a/airbyte-integrations/connectors/source-pretix/acceptance-test-config.yml b/airbyte-integrations/connectors/source-pretix/acceptance-test-config.yml new file mode 100644 index 000000000000..3b6e0b39c056 --- /dev/null +++ b/airbyte-integrations/connectors/source-pretix/acceptance-test-config.yml @@ -0,0 +1,17 @@ +# See [Connector Acceptance Tests](https://docs.airbyte.com/connector-development/testing-connectors/connector-acceptance-tests-reference) +# for more information about how to configure these tests +connector_image: airbyte/source-pretix:dev +acceptance_tests: + spec: + tests: + - spec_path: "manifest.yaml" + connection: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + discovery: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + basic_read: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + incremental: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" + full_refresh: + bypass_reason: "This is a builder contribution, and we do not have secrets at this time" diff --git a/airbyte-integrations/connectors/source-pretix/icon.svg b/airbyte-integrations/connectors/source-pretix/icon.svg new file mode 100644 index 000000000000..5f9242e1aa2b --- /dev/null +++ b/airbyte-integrations/connectors/source-pretix/icon.svg @@ -0,0 +1,94 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/airbyte-integrations/connectors/source-pretix/manifest.yaml b/airbyte-integrations/connectors/source-pretix/manifest.yaml new file mode 100644 index 000000000000..ac145dfce0a8 --- /dev/null +++ b/airbyte-integrations/connectors/source-pretix/manifest.yaml @@ -0,0 +1,3404 @@ +version: 6.4.0 + +type: DeclarativeSource + +description: >- + [Pretix](https://pretix.eu/about/en/) connector enables seamless data + integration with the Pretix event ticketing platform, allowing users to sync + ticket sales, attendee information, event data, and other metrics directly + into their data warehouse or analytics tools. This connector supports + automated data extraction for efficient, reporting and data-driven insights + across events managed in Pretix. + +check: + type: CheckStream + stream_names: + - orgainzers + +definitions: + streams: + orgainzers: + type: DeclarativeStream + name: orgainzers + primary_key: + - slug + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/orgainzers" + events: + type: DeclarativeStream + name: events + primary_key: + - slug + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/events + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/events" + tax_rules: + type: DeclarativeStream + name: tax_rules + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/taxrules + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/tax_rules" + categories: + type: DeclarativeStream + name: categories + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/categories + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/categories" + items: + type: DeclarativeStream + name: items + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/items + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/items" + orders: + type: DeclarativeStream + name: orders + primary_key: + - code + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/orders + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 48 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/orders" + vouchers: + type: DeclarativeStream + name: vouchers + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/vouchers + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/vouchers" + discounts: + type: DeclarativeStream + name: discounts + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/discounts + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/discounts" + checkin_lists: + type: DeclarativeStream + name: checkin_lists + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/checkinlists + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/checkin_lists" + waiting_list_entries: + type: DeclarativeStream + name: waiting_list_entries + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/waitinglistentries + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/waiting_list_entries" + customers: + type: DeclarativeStream + name: customers + primary_key: + - identifier + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/customers + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/customers" + sales_channels: + type: DeclarativeStream + name: sales_channels + primary_key: + - identifier + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/saleschannels + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/sales_channels" + membership_types: + type: DeclarativeStream + name: membership_types + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/membershiptypes + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/membership_types" + memberships: + type: DeclarativeStream + name: memberships + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/memberships + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/memberships" + giftcards: + type: DeclarativeStream + name: giftcards + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/giftcards + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/giftcards" + reusable_media: + type: DeclarativeStream + name: reusable_media + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/reusablemedia + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/reusable_media" + teams: + type: DeclarativeStream + name: teams + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/teams + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/teams" + devices: + type: DeclarativeStream + name: devices + primary_key: + - device_id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/devices + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/devices" + webhooks: + type: DeclarativeStream + name: webhooks + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/webhooks + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/webhooks" + seating_plans: + type: DeclarativeStream + name: seating_plans + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: /organizers/{{ stream_partition.organizer }}/seatingplans + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + page_size: 50 + start_from_page: 1 + inject_on_first_request: true + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/seating_plans" + auto_checkin_rules: + type: DeclarativeStream + name: auto_checkin_rules + primary_key: + - id + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/auto_checkin_rules + http_method: GET + error_handler: + type: CompositeErrorHandler + error_handlers: + - type: DefaultErrorHandler + response_filters: + - type: HttpResponseFilter + action: IGNORE + http_codes: + - 400 + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + paginator: + type: DefaultPaginator + page_token_option: + type: RequestOption + inject_into: request_parameter + field_name: page + page_size_option: + type: RequestOption + field_name: page_size + inject_into: request_parameter + pagination_strategy: + type: PageIncrement + start_from_page: 1 + page_size: 50 + inject_on_first_request: true + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/auto_checkin_rules" + shredders: + type: DeclarativeStream + name: shredders + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/shredders + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/shredders" + exporters: + type: DeclarativeStream + name: exporters + retriever: + type: SimpleRetriever + requester: + $ref: "#/definitions/base_requester" + path: >- + /organizers/{{ stream_partition.organizer }}/events/{{ + stream_partition.event }}/exporters + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - results + partition_router: + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: organizer + stream: + $ref: "#/definitions/streams/orgainzers" + - type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + parent_key: slug + partition_field: event + stream: + $ref: "#/definitions/streams/events" + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/exporters" + base_requester: + type: HttpRequester + url_base: https://pretix.eu/api/v1 + authenticator: + type: ApiKeyAuthenticator + api_token: Token {{ config["api_token"] }} + inject_into: + type: RequestOption + field_name: Authorization + inject_into: header + +streams: + - $ref: "#/definitions/streams/orgainzers" + - $ref: "#/definitions/streams/events" + - $ref: "#/definitions/streams/tax_rules" + - $ref: "#/definitions/streams/categories" + - $ref: "#/definitions/streams/items" + - $ref: "#/definitions/streams/orders" + - $ref: "#/definitions/streams/vouchers" + - $ref: "#/definitions/streams/discounts" + - $ref: "#/definitions/streams/checkin_lists" + - $ref: "#/definitions/streams/waiting_list_entries" + - $ref: "#/definitions/streams/customers" + - $ref: "#/definitions/streams/sales_channels" + - $ref: "#/definitions/streams/membership_types" + - $ref: "#/definitions/streams/memberships" + - $ref: "#/definitions/streams/giftcards" + - $ref: "#/definitions/streams/reusable_media" + - $ref: "#/definitions/streams/teams" + - $ref: "#/definitions/streams/devices" + - $ref: "#/definitions/streams/webhooks" + - $ref: "#/definitions/streams/seating_plans" + - $ref: "#/definitions/streams/auto_checkin_rules" + - $ref: "#/definitions/streams/shredders" + - $ref: "#/definitions/streams/exporters" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_token + properties: + api_token: + type: string + description: >- + API token to use. Obtain it from the pretix web interface by creating + a new token under your team settings. + name: api_token + order: 0 + title: API Token + airbyte_secret: true + additionalProperties: true + +metadata: + autoImportSchema: + orgainzers: true + events: true + tax_rules: false + categories: false + items: true + orders: true + vouchers: true + discounts: true + checkin_lists: false + waiting_list_entries: true + customers: true + sales_channels: true + membership_types: true + memberships: true + giftcards: true + reusable_media: true + teams: true + devices: true + webhooks: true + seating_plans: true + auto_checkin_rules: true + shredders: true + exporters: true + yamlComponents: + global: + - authenticator + testedStreams: + orgainzers: + hasRecords: true + streamHash: 71df86303da56c37087c8dc7c3fe193aee0d370e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + events: + hasRecords: true + streamHash: a35a5b6abafdd3f3f21c3e901ae66ea6cf4c05d1 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + tax_rules: + hasRecords: true + streamHash: e5b835ae0164ff344746429de633b582b8a258c0 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + categories: + hasRecords: true + streamHash: 1732d6956f60faca41006d4d22138a1582bf6f96 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + items: + hasRecords: true + streamHash: 02785ca498916592f4d8ae47c8172ca7fa7a18f8 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + orders: + hasRecords: true + streamHash: dd32655a3bea0224845c7ecff7a60b86d592efb3 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + vouchers: + hasRecords: true + streamHash: 96fb0f599e05c754ffeb82d16eeae3d4dd1fe89a + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + discounts: + hasRecords: true + streamHash: 25af16d94a1bbf482b41df14fafa2de4c519a9ae + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + checkin_lists: + hasRecords: true + streamHash: 8214bcb4cad80c750d19125470c90386922df19c + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + waiting_list_entries: + hasRecords: true + streamHash: 6a8d1ccb27e908020e1c57ebae64083b296da398 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + customers: + hasRecords: true + streamHash: 99629857c7369843288e16a042d86724e6502c78 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + sales_channels: + hasRecords: true + streamHash: e2cc6678b341091399e5cc1c355c5a31e5980d50 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + membership_types: + hasRecords: true + streamHash: 39280de26f977943caff109fcaf969410004b1dc + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + memberships: + hasRecords: true + streamHash: 3c93fa3a7658c70702a566c1c2e6078020d79e65 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + giftcards: + hasRecords: true + streamHash: 18c34c70c7e23211d25d0ccecb1669f11e22ceb5 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + reusable_media: + hasRecords: true + streamHash: fafbecc6573f6bd7d49b95a78b4b45cd1a8089a6 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + teams: + hasRecords: true + streamHash: 1dbd52e2e92c7852ddf900650887a049292e41f4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + devices: + hasRecords: true + streamHash: a3acf3b16a430f0dda0e96c8299d05b732255445 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + webhooks: + hasRecords: true + streamHash: 23e05fa9f8440a2770727fb43190d3e3a4ddf2c8 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + seating_plans: + hasRecords: true + streamHash: 15f050c79c35db58b7aa978f5458b2206ec112cf + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + auto_checkin_rules: + streamHash: 1bfb584f3aa6df391f80eb6c7fceb80417512e8c + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + shredders: + streamHash: 5c204b52d0a4628bd9c1555f0e9ea01e991f39f6 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + exporters: + streamHash: eedd896748b5db5330d7c7f07475e53eba9f6dc2 + hasResponse: true + responsesAreSuccessful: true + hasRecords: true + primaryKeysArePresent: true + primaryKeysAreUnique: true + assist: + docsUrl: https://docs.pretix.eu/en/latest/api/fundamentals.html + +schemas: + orgainzers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + name: + type: + - string + - "null" + public_url: + type: + - string + - "null" + slug: + type: string + required: + - slug + events: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + all_sales_channels: + type: + - boolean + - "null" + currency: + type: + - string + - "null" + date_from: + type: + - string + - "null" + date_to: + type: + - string + - "null" + has_subevents: + type: + - boolean + - "null" + is_public: + type: + - boolean + - "null" + item_meta_properties: + type: + - object + - "null" + limit_sales_channels: + type: + - array + - "null" + live: + type: + - boolean + - "null" + location: + type: + - object + - "null" + meta_data: + type: + - object + - "null" + name: + type: + - object + - "null" + properties: + en: + type: + - string + - "null" + plugins: + type: + - array + - "null" + items: + type: + - string + - "null" + public_url: + type: + - string + - "null" + sales_channels: + type: + - array + - "null" + items: + type: + - string + - "null" + seat_category_mapping: + type: + - object + - "null" + slug: + type: string + testmode: + type: + - boolean + - "null" + timezone: + type: + - string + - "null" + required: + - slug + tax_rules: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + custom_rules: + type: + - array + - "null" + eu_reverse_charge: + type: + - boolean + - "null" + home_country: + type: + - string + - "null" + id: + type: number + internal_name: + type: + - string + - "null" + keep_gross_if_rate_changes: + type: + - boolean + - "null" + name: + type: + - object + - "null" + properties: + en: + type: + - string + - "null" + price_includes_tax: + type: + - boolean + - "null" + rate: + type: + - string + - "null" + required: + - id + categories: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - object + - "null" + properties: + en: + type: + - string + - "null" + cross_selling_match_products: + type: + - array + - "null" + id: + type: number + is_addon: + type: + - boolean + - "null" + name: + type: + - object + - "null" + properties: + ar: + type: + - string + - "null" + ca: + type: + - string + - "null" + cs: + type: + - string + - "null" + da: + type: + - string + - "null" + de: + type: + - string + - "null" + de-informal: + type: + - string + - "null" + el: + type: + - string + - "null" + en: + type: + - string + - "null" + es: + type: + - string + - "null" + eu: + type: + - string + - "null" + fr: + type: + - string + - "null" + id: + type: + - string + - "null" + it: + type: + - string + - "null" + lv: + type: + - string + - "null" + nb-no: + type: + - string + - "null" + nl: + type: + - string + - "null" + nl-informal: + type: + - string + - "null" + pl: + type: + - string + - "null" + pt-pt: + type: + - string + - "null" + ro: + type: + - string + - "null" + ru: + type: + - string + - "null" + sk: + type: + - string + - "null" + sv: + type: + - string + - "null" + tr: + type: + - string + - "null" + uk: + type: + - string + - "null" + zh-hans: + type: + - string + - "null" + zh-hant: + type: + - string + - "null" + position: + type: + - number + - "null" + required: + - id + items: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + description: + type: + - object + - "null" + active: + type: + - boolean + - "null" + addons: + type: + - array + - "null" + admission: + type: + - boolean + - "null" + all_sales_channels: + type: + - boolean + - "null" + allow_cancel: + type: + - boolean + - "null" + allow_waitinglist: + type: + - boolean + - "null" + available_from_mode: + type: + - string + - "null" + available_until_mode: + type: + - string + - "null" + bundles: + type: + - array + - "null" + category: + type: + - number + - "null" + checkin_attention: + type: + - boolean + - "null" + checkin_text: + type: + - string + - "null" + default_price: + type: + - string + - "null" + free_price: + type: + - boolean + - "null" + grant_membership_duration_days: + type: + - number + - "null" + grant_membership_duration_like_event: + type: + - boolean + - "null" + grant_membership_duration_months: + type: + - number + - "null" + has_variations: + type: + - boolean + - "null" + hide_without_voucher: + type: + - boolean + - "null" + id: + type: number + issue_giftcard: + type: + - boolean + - "null" + limit_sales_channels: + type: + - array + - "null" + meta_data: + type: + - object + - "null" + name: + type: + - object + - "null" + properties: + en: + type: + - string + - "null" + personalized: + type: + - boolean + - "null" + position: + type: + - number + - "null" + require_approval: + type: + - boolean + - "null" + require_bundling: + type: + - boolean + - "null" + require_membership: + type: + - boolean + - "null" + require_membership_hidden: + type: + - boolean + - "null" + require_membership_types: + type: + - array + - "null" + require_voucher: + type: + - boolean + - "null" + sales_channels: + type: + - array + - "null" + items: + type: + - string + - "null" + tax_rate: + type: + - string + - "null" + validity_dynamic_start_choice: + type: + - boolean + - "null" + variations: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: + type: + - object + - "null" + active: + type: + - boolean + - "null" + all_sales_channels: + type: + - boolean + - "null" + available_from_mode: + type: + - string + - "null" + available_until_mode: + type: + - string + - "null" + checkin_attention: + type: + - boolean + - "null" + checkin_text: + type: + - string + - "null" + hide_without_voucher: + type: + - boolean + - "null" + id: + type: + - number + - "null" + limit_sales_channels: + type: + - array + - "null" + meta_data: + type: + - object + - "null" + position: + type: + - number + - "null" + price: + type: + - string + - "null" + require_approval: + type: + - boolean + - "null" + require_membership: + type: + - boolean + - "null" + require_membership_hidden: + type: + - boolean + - "null" + require_membership_types: + type: + - array + - "null" + sales_channels: + type: + - array + - "null" + items: + type: + - string + - "null" + value: + type: + - object + - "null" + properties: + en: + type: + - string + - "null" + required: + - id + orders: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + api_meta: + type: + - object + - "null" + checkin_attention: + type: + - boolean + - "null" + checkin_text: + type: + - string + - "null" + code: + type: string + comment: + type: + - string + - "null" + datetime: + type: + - string + - "null" + downloads: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + output: + type: + - string + - "null" + url: + type: + - string + - "null" + email: + type: + - string + - "null" + event: + type: + - string + - "null" + expires: + type: + - string + - "null" + fees: + type: + - array + - "null" + invoice_address: + type: + - object + - "null" + properties: + city: + type: + - string + - "null" + company: + type: + - string + - "null" + country: + type: + - string + - "null" + internal_reference: + type: + - string + - "null" + is_business: + type: + - boolean + - "null" + last_modified: + type: + - string + - "null" + name: + type: + - string + - "null" + name_parts: + type: + - object + - "null" + properties: + _scheme: + type: + - string + - "null" + family_name: + type: + - string + - "null" + given_name: + type: + - string + - "null" + state: + type: + - string + - "null" + street: + type: + - string + - "null" + vat_id: + type: + - string + - "null" + vat_id_validated: + type: + - boolean + - "null" + zipcode: + type: + - string + - "null" + last_modified: + type: + - string + - "null" + locale: + type: + - string + - "null" + payment_date: + type: + - string + - "null" + payment_provider: + type: + - string + - "null" + payments: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + amount: + type: + - string + - "null" + created: + type: + - string + - "null" + details: + type: + - object + - "null" + local_id: + type: + - number + - "null" + payment_date: + type: + - string + - "null" + provider: + type: + - string + - "null" + state: + type: + - string + - "null" + positions: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + answers: + type: + - array + - "null" + attendee_name: + type: + - string + - "null" + attendee_name_parts: + type: + - object + - "null" + properties: + _scheme: + type: + - string + - "null" + family_name: + type: + - string + - "null" + given_name: + type: + - string + - "null" + canceled: + type: + - boolean + - "null" + checkins: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + auto_checked_in: + type: + - boolean + - "null" + datetime: + type: + - string + - "null" + id: + type: + - number + - "null" + list: + type: + - number + - "null" + downloads: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + output: + type: + - string + - "null" + url: + type: + - string + - "null" + id: + type: + - number + - "null" + item: + type: + - number + - "null" + order: + type: + - string + - "null" + positionid: + type: + - number + - "null" + price: + type: + - string + - "null" + print_logs: + type: + - array + - "null" + pseudonymization_id: + type: + - string + - "null" + secret: + type: + - string + - "null" + tax_rate: + type: + - string + - "null" + tax_value: + type: + - string + - "null" + refunds: + type: + - array + - "null" + require_approval: + type: + - boolean + - "null" + sales_channel: + type: + - string + - "null" + secret: + type: + - string + - "null" + status: + type: + - string + - "null" + testmode: + type: + - boolean + - "null" + total: + type: + - string + - "null" + url: + type: + - string + - "null" + valid_if_pending: + type: + - boolean + - "null" + required: + - code + vouchers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + all_addons_included: + type: + - boolean + - "null" + all_bundles_included: + type: + - boolean + - "null" + allow_ignore_quota: + type: + - boolean + - "null" + block_quota: + type: + - boolean + - "null" + code: + type: + - string + - "null" + comment: + type: + - string + - "null" + id: + type: number + max_usages: + type: + - number + - "null" + min_usages: + type: + - number + - "null" + price_mode: + type: + - string + - "null" + redeemed: + type: + - number + - "null" + show_hidden_items: + type: + - boolean + - "null" + tag: + type: + - string + - "null" + valid_until: + type: + - string + - "null" + value: + type: + - string + - "null" + required: + - id + discounts: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + active: + type: + - boolean + - "null" + all_sales_channels: + type: + - boolean + - "null" + benefit_apply_to_addons: + type: + - boolean + - "null" + benefit_discount_matching_percent: + type: + - string + - "null" + benefit_ignore_voucher_discounted: + type: + - boolean + - "null" + benefit_limit_products: + type: + - array + - "null" + benefit_same_products: + type: + - boolean + - "null" + condition_all_products: + type: + - boolean + - "null" + condition_apply_to_addons: + type: + - boolean + - "null" + condition_ignore_voucher_discounted: + type: + - boolean + - "null" + condition_limit_products: + type: + - array + - "null" + condition_min_count: + type: + - number + - "null" + condition_min_value: + type: + - string + - "null" + id: + type: number + internal_name: + type: + - string + - "null" + limit_sales_channels: + type: + - array + - "null" + position: + type: + - number + - "null" + sales_channels: + type: + - array + - "null" + items: + type: + - string + - "null" + subevent_mode: + type: + - string + - "null" + required: + - id + checkin_lists: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + addon_match: + type: + - boolean + - "null" + all_products: + type: + - boolean + - "null" + allow_entry_after_exit: + type: + - boolean + - "null" + allow_multiple_entries: + type: + - boolean + - "null" + checkin_count: + type: + - number + - "null" + consider_tickets_used: + type: + - boolean + - "null" + id: + type: number + ignore_in_statistics: + type: + - boolean + - "null" + include_pending: + type: + - boolean + - "null" + limit_products: + type: + - array + - "null" + name: + type: + - string + - "null" + position_count: + type: + - number + - "null" + rules: + type: + - object + - "null" + required: + - id + waiting_list_entries: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + created: + type: + - string + - "null" + email: + type: + - string + - "null" + id: + type: number + item: + type: + - number + - "null" + locale: + type: + - string + - "null" + name_parts: + type: + - object + - "null" + priority: + type: + - number + - "null" + required: + - id + customers: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + date_joined: + type: + - string + - "null" + email: + type: + - string + - "null" + identifier: + type: string + is_active: + type: + - boolean + - "null" + is_verified: + type: + - boolean + - "null" + last_modified: + type: + - string + - "null" + locale: + type: + - string + - "null" + name: + type: + - string + - "null" + name_parts: + type: + - object + - "null" + phone: + type: + - string + - "null" + required: + - identifier + sales_channels: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + identifier: + type: string + label: + type: + - object + - "null" + properties: + ar: + type: + - string + - "null" + ca: + type: + - string + - "null" + cs: + type: + - string + - "null" + da: + type: + - string + - "null" + de: + type: + - string + - "null" + de-informal: + type: + - string + - "null" + el: + type: + - string + - "null" + en: + type: + - string + - "null" + es: + type: + - string + - "null" + eu: + type: + - string + - "null" + fr: + type: + - string + - "null" + id: + type: + - string + - "null" + it: + type: + - string + - "null" + lv: + type: + - string + - "null" + nb-no: + type: + - string + - "null" + nl: + type: + - string + - "null" + nl-informal: + type: + - string + - "null" + pl: + type: + - string + - "null" + pt-pt: + type: + - string + - "null" + ro: + type: + - string + - "null" + ru: + type: + - string + - "null" + sk: + type: + - string + - "null" + sv: + type: + - string + - "null" + tr: + type: + - string + - "null" + uk: + type: + - string + - "null" + zh-hans: + type: + - string + - "null" + zh-hant: + type: + - string + - "null" + position: + type: + - number + - "null" + required: + - identifier + membership_types: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + allow_parallel_usage: + type: + - boolean + - "null" + id: + type: + - number + - "null" + max_usages: + type: + - number + - "null" + name: + type: + - object + - "null" + properties: + de: + type: + - string + - "null" + en: + type: + - string + - "null" + transferable: + type: + - boolean + - "null" + memberships: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + attendee_name_parts: + type: + - object + - "null" + properties: + _scheme: + type: + - string + - "null" + family_name: + type: + - string + - "null" + given_name: + type: + - string + - "null" + title: + type: + - string + - "null" + customer: + type: + - string + - "null" + date_end: + type: + - string + - "null" + date_start: + type: + - string + - "null" + id: + type: + - number + - "null" + membership_type: + type: + - number + - "null" + testmode: + type: + - boolean + - "null" + giftcards: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + conditions: + type: + - string + - "null" + currency: + type: + - string + - "null" + expires: + type: + - string + - "null" + id: + type: number + issuance: + type: + - string + - "null" + issuer: + type: + - string + - "null" + secret: + type: + - string + - "null" + testmode: + type: + - boolean + - "null" + value: + type: + - string + - "null" + required: + - id + reusable_media: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + type: + type: + - string + - "null" + active: + type: + - boolean + - "null" + created: + type: + - string + - "null" + id: + type: number + identifier: + type: + - string + - "null" + info: + type: + - object + - "null" + organizer: + type: + - string + - "null" + updated: + type: + - string + - "null" + required: + - id + teams: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + all_events: + type: + - boolean + - "null" + can_change_event_settings: + type: + - boolean + - "null" + can_change_items: + type: + - boolean + - "null" + can_change_orders: + type: + - boolean + - "null" + can_change_organizer_settings: + type: + - boolean + - "null" + can_change_teams: + type: + - boolean + - "null" + can_change_vouchers: + type: + - boolean + - "null" + can_checkin_orders: + type: + - boolean + - "null" + can_create_events: + type: + - boolean + - "null" + can_manage_customers: + type: + - boolean + - "null" + can_manage_gift_cards: + type: + - boolean + - "null" + can_manage_reusable_media: + type: + - boolean + - "null" + can_view_orders: + type: + - boolean + - "null" + can_view_vouchers: + type: + - boolean + - "null" + id: + type: number + limit_events: + type: + - array + - "null" + name: + type: + - string + - "null" + require_2fa: + type: + - boolean + - "null" + required: + - id + devices: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + all_events: + type: + - boolean + - "null" + created: + type: + - string + - "null" + device_id: + type: number + initialization_token: + type: + - string + - "null" + limit_events: + type: + - array + - "null" + items: + type: + - string + - "null" + name: + type: + - string + - "null" + revoked: + type: + - boolean + - "null" + security_profile: + type: + - string + - "null" + unique_serial: + type: + - string + - "null" + required: + - device_id + webhooks: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + action_types: + type: + - array + - "null" + items: + type: + - string + - "null" + all_events: + type: + - boolean + - "null" + enabled: + type: + - boolean + - "null" + id: + type: number + limit_events: + type: + - array + - "null" + target_url: + type: + - string + - "null" + required: + - id + seating_plans: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + id: + type: number + layout: + type: + - object + - "null" + properties: + categories: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + color: + type: + - string + - "null" + name: + type: + - string + - "null" + name: + type: + - string + - "null" + size: + type: + - object + - "null" + properties: + height: + type: + - number + - "null" + width: + type: + - number + - "null" + zones: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + areas: + type: + - array + - "null" + name: + type: + - string + - "null" + position: + type: + - object + - "null" + properties: + x: + type: + - number + - "null" + "y": + type: + - number + - "null" + rows: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + position: + type: + - object + - "null" + properties: + x: + type: + - number + - "null" + "y": + type: + - number + - "null" + row_number: + type: + - string + - "null" + row_number_position: + type: + - string + - "null" + seats: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + category: + type: + - string + - "null" + position: + type: + - object + - "null" + properties: + x: + type: + - number + - "null" + "y": + type: + - number + - "null" + seat_guid: + type: + - string + - "null" + seat_number: + type: + - string + - "null" + uuid: + type: + - string + - "null" + uuid: + type: + - string + - "null" + uuid: + type: + - string + - "null" + zone_id: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + - id + auto_checkin_rules: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + all_payment_methods: + type: + - boolean + - "null" + all_products: + type: + - boolean + - "null" + all_sales_channels: + type: + - boolean + - "null" + id: + type: number + limit_payment_methods: + type: + - array + - "null" + limit_products: + type: + - array + - "null" + items: + type: + - number + - "null" + limit_sales_channels: + type: + - array + - "null" + items: + type: + - string + - "null" + limit_variations: + type: + - array + - "null" + mode: + type: + - string + - "null" + required: + - id + shredders: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + identifier: + type: + - string + - "null" + verbose_name: + type: + - string + - "null" + exporters: + type: object + $schema: http://json-schema.org/schema# + additionalProperties: true + properties: + identifier: + type: + - string + - "null" + input_parameters: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + choices: + type: + - array + - "null" + items: + type: + - string + - "null" + name: + type: + - string + - "null" + required: + type: + - boolean + - "null" + verbose_name: + type: + - string + - "null" diff --git a/airbyte-integrations/connectors/source-pretix/metadata.yaml b/airbyte-integrations/connectors/source-pretix/metadata.yaml new file mode 100644 index 000000000000..2e01f65f484e --- /dev/null +++ b/airbyte-integrations/connectors/source-pretix/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "pretix.eu" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-pretix + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:6.5.2@sha256:3c89340fc033aab28e7ba7402a4a7c98cd9ca8eefa1503d23d3ea336c9a6e92b + connectorSubtype: api + connectorType: source + definitionId: c32e6012-96cf-45f7-8c09-ac9a32484d96 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-pretix + githubIssueLabel: source-pretix + icon: icon.svg + license: MIT + name: Pretix + releaseDate: 2024-11-09 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/pretix + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/pretix.md b/docs/integrations/sources/pretix.md new file mode 100644 index 000000000000..c326a33c516c --- /dev/null +++ b/docs/integrations/sources/pretix.md @@ -0,0 +1,46 @@ +# Pretix +[Pretix](https://pretix.eu/about/en/) connector enables seamless data integration with the Pretix event ticketing platform, allowing users to sync ticket sales, attendee information, event data, and other metrics directly into their data warehouse or analytics tools. This connector supports automated data extraction for efficient, reporting and data-driven insights across events managed in Pretix. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_token` | `string` | API Token. API token to use. Obtain it from the pretix web interface by creating a new token under your team settings. | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| orgainzers | slug | DefaultPaginator | ✅ | ❌ | +| events | slug | DefaultPaginator | ✅ | ❌ | +| tax_rules | id | DefaultPaginator | ✅ | ❌ | +| categories | id | DefaultPaginator | ✅ | ❌ | +| items | id | DefaultPaginator | ✅ | ❌ | +| orders | code | DefaultPaginator | ✅ | ❌ | +| vouchers | id | DefaultPaginator | ✅ | ❌ | +| discounts | id | DefaultPaginator | ✅ | ❌ | +| checkin_lists | id | DefaultPaginator | ✅ | ❌ | +| waiting_list_entries | id | DefaultPaginator | ✅ | ❌ | +| customers | identifier | DefaultPaginator | ✅ | ❌ | +| sales_channels | identifier | DefaultPaginator | ✅ | ❌ | +| membership_types | | DefaultPaginator | ✅ | ❌ | +| memberships | | DefaultPaginator | ✅ | ❌ | +| giftcards | id | DefaultPaginator | ✅ | ❌ | +| reusable_media | id | DefaultPaginator | ✅ | ❌ | +| teams | id | DefaultPaginator | ✅ | ❌ | +| devices | device_id | DefaultPaginator | ✅ | ❌ | +| webhooks | id | DefaultPaginator | ✅ | ❌ | +| seating_plans | id | DefaultPaginator | ✅ | ❌ | +| auto_checkin_rules | id | DefaultPaginator | ✅ | ❌ | +| shredders | | No pagination | ✅ | ❌ | +| exporters | | No pagination | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-11-09 | | Initial release by [@parthiv11](https://github.com/parthiv11) via Connector Builder | + +