diff --git a/airbyte-integrations/connectors/source-tickettailor/README.md b/airbyte-integrations/connectors/source-tickettailor/README.md new file mode 100644 index 000000000000..a4e020b98801 --- /dev/null +++ b/airbyte-integrations/connectors/source-tickettailor/README.md @@ -0,0 +1,33 @@ +# TicketTailor +This directory contains the manifest-only connector for `source-tickettailor`. + +The Airbyte connector for [TicketTailor](https://tickettailor.com) enables seamless extraction of key event data, including details on events, products, vouchers, discounts, check-ins, issued tickets, orders, and waitlists. This integration allows businesses to analyze ticket sales, attendance, and customer interactions, streamlining event management insights. + +## 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-tickettailor:dev`) that you can use to test the connector locally. +```bash +airbyte-ci connectors --name=source-tickettailor build +``` + +### Test +This will run the acceptance tests for the connector. +```bash +airbyte-ci connectors --name=source-tickettailor test +``` + diff --git a/airbyte-integrations/connectors/source-tickettailor/acceptance-test-config.yml b/airbyte-integrations/connectors/source-tickettailor/acceptance-test-config.yml new file mode 100644 index 000000000000..9131f5950ca5 --- /dev/null +++ b/airbyte-integrations/connectors/source-tickettailor/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-tickettailor: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-tickettailor/icon.svg b/airbyte-integrations/connectors/source-tickettailor/icon.svg new file mode 100644 index 000000000000..fcbbe13696f6 --- /dev/null +++ b/airbyte-integrations/connectors/source-tickettailor/icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/airbyte-integrations/connectors/source-tickettailor/manifest.yaml b/airbyte-integrations/connectors/source-tickettailor/manifest.yaml new file mode 100644 index 000000000000..2c6841469529 --- /dev/null +++ b/airbyte-integrations/connectors/source-tickettailor/manifest.yaml @@ -0,0 +1,1702 @@ +version: 6.1.0 + +type: DeclarativeSource + +description: >- + The Airbyte connector for [TicketTailor](https://tickettailor.com) enables + seamless extraction of key event data, including details on events, products, + vouchers, discounts, check-ins, issued tickets, orders, and waitlists. This + integration allows businesses to analyze ticket sales, attendance, and + customer interactions, streamlining event management insights. + +check: + type: CheckStream + stream_names: + - events_series + +definitions: + streams: + events: + type: DeclarativeStream + name: events + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /event_series/{{ stream_partition.event_series_id }}/events + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + stream: + $ref: "#/definitions/streams/events_series" + parent_key: id + partition_field: event_series_id + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/events" + orders: + type: DeclarativeStream + name: orders + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /orders + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/orders" + products: + type: DeclarativeStream + name: products + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /products + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/products" + vouchers: + type: DeclarativeStream + name: vouchers + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /vouchers + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/vouchers" + check_ins: + type: DeclarativeStream + name: check_ins + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /check_ins + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/check_ins" + discounts: + type: DeclarativeStream + name: discounts + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /discounts + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/discounts" + waitlists: + type: DeclarativeStream + name: waitlists + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: >- + /event_series/{{ stream_partition.event_series_id + }}/waitlist_signups + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + stream: + $ref: "#/definitions/streams/events_series" + parent_key: id + partition_field: event_series_id + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/waitlists" + events_series: + type: DeclarativeStream + name: events_series + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /event_series + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/events_series" + issued_tickets: + type: DeclarativeStream + name: issued_tickets + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /issued_tickets + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/issued_tickets" + vouchers_codes: + type: DeclarativeStream + name: vouchers_codes + retriever: + type: SimpleRetriever + paginator: + type: DefaultPaginator + page_size_option: + type: RequestOption + field_name: limit + inject_into: request_parameter + page_token_option: + type: RequestOption + field_name: starting_after + inject_into: request_parameter + pagination_strategy: + type: CursorPagination + page_size: 100 + cursor_value: "{{ last_record['id'] }}" + stop_condition: "{{ response.links.next is none }}" + requester: + $ref: "#/definitions/base_requester" + path: /vouchers/{{ stream_partition.voucher_id }}/codes + http_method: GET + record_selector: + type: RecordSelector + extractor: + type: DpathExtractor + field_path: + - data + partition_router: + type: SubstreamPartitionRouter + parent_stream_configs: + - type: ParentStreamConfig + stream: + $ref: "#/definitions/streams/vouchers" + parent_key: id + partition_field: voucher_id + primary_key: + - id + schema_loader: + type: InlineSchemaLoader + schema: + $ref: "#/schemas/vouchers_codes" + base_requester: + type: HttpRequester + url_base: https://api.tickettailor.com/v1 + authenticator: + type: BasicHttpAuthenticator + username: "{{ config[\"api_key\"] }}" + +streams: + - $ref: "#/definitions/streams/events_series" + - $ref: "#/definitions/streams/events" + - $ref: "#/definitions/streams/products" + - $ref: "#/definitions/streams/vouchers" + - $ref: "#/definitions/streams/discounts" + - $ref: "#/definitions/streams/check_ins" + - $ref: "#/definitions/streams/issued_tickets" + - $ref: "#/definitions/streams/orders" + - $ref: "#/definitions/streams/waitlists" + - $ref: "#/definitions/streams/vouchers_codes" + +spec: + type: Spec + connection_specification: + type: object + $schema: http://json-schema.org/draft-07/schema# + required: + - api_key + properties: + api_key: + type: string + description: API key to use. Find it at https://www.getdrip.com/user/edit + name: api_key + order: 0 + title: API Key + airbyte_secret: true + additionalProperties: true + +metadata: + assist: + docsUrl: https://developers.tickettailor.com/ + testedStreams: + events: + hasRecords: true + streamHash: 4c7e6383c411206fda1cd6fb8b3f1907af4ac154 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + orders: + hasRecords: true + streamHash: 22469a462b78e7c6bec358fbda0b953ee34c61e2 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + products: + hasRecords: true + streamHash: 5c343c5681138d3959a81f5150fd053edc381c83 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + vouchers: + hasRecords: true + streamHash: 46718e9c71f7dcd6d5b5c9e8de5fcf0a76bd14a9 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + check_ins: + hasRecords: true + streamHash: b77c3fb88b9fb6929fae8929e7cb269e50cf4b5e + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + discounts: + hasRecords: true + streamHash: 00b8b496bee85bb5d2c21f3879830d73b0ce5d01 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + waitlists: + hasRecords: true + streamHash: a6980ff5fc3e0602c1f89e98149d3c066a74e5ac + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + events_series: + hasRecords: true + streamHash: 8edc6149c41ac5f309b997d506e5a331bb215a65 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + issued_tickets: + hasRecords: true + streamHash: 1790e3cd3a801aeabd8fe92cbeefca72505ee4a3 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + vouchers_codes: + hasRecords: true + streamHash: b20f977fbefd70df0ded312917929285c04800b4 + hasResponse: true + primaryKeysAreUnique: true + primaryKeysArePresent: true + responsesAreSuccessful: true + yamlComponents: + global: + - authenticator + autoImportSchema: + events: false + orders: true + products: true + vouchers: true + check_ins: true + discounts: true + waitlists: true + events_series: false + issued_tickets: false + vouchers_codes: true + +schemas: + events: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + chk: + type: + - string + - "null" + end: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + start: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + hidden: + type: + - string + - "null" + object: + type: + - string + - "null" + bundles: + type: + - array + - "null" + revenue: + type: + - number + - "null" + currency: + type: + - string + - "null" + unavailable: + type: + - string + - "null" + ticket_types: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + price: + type: + - number + - "null" + object: + type: + - string + - "null" + status: + type: + - string + - "null" + quantity: + type: + - number + - "null" + sort_order: + type: + - number + - "null" + booking_fee: + type: + - number + - "null" + has_overrides: + type: + - string + - "null" + max_per_order: + type: + - number + - "null" + min_per_order: + type: + - number + - "null" + quantity_held: + type: + - number + - "null" + quantity_total: + type: + - number + - "null" + quantity_issued: + type: + - number + - "null" + ticket_groups: + type: + - array + - "null" + event_series_id: + type: + - string + - "null" + tickets_available: + type: + - string + - "null" + total_issued_tickets: + type: + - number + - "null" + additionalProperties: true + orders: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + tax: + type: + - number + - "null" + total: + type: + - number + - "null" + object: + type: + - string + - "null" + status: + type: + - string + - "null" + txn_id: + type: + - string + - "null" + currency: + type: + - object + - "null" + properties: + code: + type: + - string + - "null" + base_multiplier: + type: + - number + - "null" + subtotal: + type: + - number + - "null" + meta_data: + type: + - array + - "null" + created_at: + type: + - number + - "null" + line_items: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + description: + type: + - string + - "null" + id: + type: + - string + - "null" + total: + type: + - number + - "null" + value: + type: + - number + - "null" + object: + type: + - string + - "null" + item_id: + type: + - string + - "null" + quantity: + type: + - number + - "null" + booking_fee: + type: + - number + - "null" + total_paid: + type: + - number + - "null" + buyer_details: + type: + - object + - "null" + properties: + name: + type: + - string + - "null" + email: + type: + - string + - "null" + phone: + type: + - string + - "null" + address: + type: + - object + - "null" + properties: + address_1: + type: + - string + - "null" + address_2: + type: + - string + - "null" + address_3: + type: + - string + - "null" + postal_code: + type: + - string + - "null" + last_name: + type: + - string + - "null" + first_name: + type: + - string + - "null" + custom_questions: + type: + - array + - "null" + event_summary: + type: + - object + - "null" + properties: + id: + type: + - string + - "null" + name: + type: + - string + - "null" + venue: + type: + - object + - "null" + properties: + postal_code: + type: + - string + - "null" + end_date: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + event_id: + type: + - string + - "null" + start_date: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + event_series_id: + type: + - string + - "null" + refund_amount: + type: + - number + - "null" + tax_treatment: + type: + - string + - "null" + issued_tickets: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + description: + type: + - string + - "null" + id: + type: + - string + - "null" + email: + type: + - string + - "null" + object: + type: + - string + - "null" + source: + type: + - string + - "null" + status: + type: + - string + - "null" + barcode: + type: + - string + - "null" + event_id: + type: + - string + - "null" + order_id: + type: + - string + - "null" + checked_in: + type: + - string + - "null" + created_at: + type: + - number + - "null" + updated_at: + type: + - number + - "null" + barcode_url: + type: + - string + - "null" + qr_code_url: + type: + - string + - "null" + ticket_type_id: + type: + - string + - "null" + event_series_id: + type: + - string + - "null" + custom_questions: + type: + - array + - "null" + payment_method: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + credited_out_amount: + type: + - number + - "null" + additionalProperties: true + products: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + name: + type: + - string + - "null" + price: + type: + - number + - "null" + object: + type: + - string + - "null" + status: + type: + - string + - "null" + currency: + type: + - string + - "null" + created_at: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + updated_at: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + fulfilment_type: + type: + - string + - "null" + linked_to_all_event_series: + type: + - string + - "null" + additionalProperties: true + vouchers: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + type: + type: + - string + - "null" + id: + type: string + name: + type: + - string + - "null" + value: + type: + - number + - "null" + expiry: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + object: + type: + - string + - "null" + currency: + type: + - string + - "null" + total_codes: + type: + - number + - "null" + available_codes: + type: + - number + - "null" + event_series_ids: + type: + - array + - "null" + partial_redemption: + type: + - string + - "null" + usable_on_any_event: + type: + - string + - "null" + additionalProperties: true + check_ins: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + object: + type: + - string + - "null" + event_id: + type: + - string + - "null" + quantity: + type: + - number + - "null" + created_at: + type: + - number + - "null" + check_in_at: + type: + - number + - "null" + event_series_id: + type: + - string + - "null" + issued_ticket_id: + type: + - string + - "null" + additionalProperties: true + discounts: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + type: + type: + - string + - "null" + id: + type: string + code: + type: + - string + - "null" + name: + type: + - string + - "null" + object: + type: + - string + - "null" + products: + type: + - array + - "null" + items: + type: + - string + - "null" + ticket_types: + type: + - array + - "null" + items: + type: + - string + - "null" + face_value_amount: + type: + - number + - "null" + booking_fee_amount: + type: + - number + - "null" + additionalProperties: true + waitlists: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + email: + type: + - string + - "null" + object: + type: + - string + - "null" + event_id: + type: + - string + - "null" + created_at: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + additionalProperties: true + events_series: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + url: + type: + - string + - "null" + name: + type: + - string + - "null" + venue: + type: + - object + - "null" + properties: + postal_code: + type: + - string + - "null" + images: + type: + - object + - "null" + properties: + header: + type: + - string + - "null" + thumbnail: + type: + - string + - "null" + object: + type: + - string + - "null" + status: + type: + - string + - "null" + add_ons: + type: + - array + - "null" + bundles: + type: + - array + - "null" + private: + type: + - string + - "null" + revenue: + type: + - number + - "null" + currency: + type: + - string + - "null" + timezone: + type: + - string + - "null" + created_at: + type: + - number + - "null" + voucher_ids: + type: + - array + - "null" + online_event: + type: + - string + - "null" + call_to_action: + type: + - string + - "null" + payment_methods: + type: + - array + - "null" + total_occurrences: + type: + - number + - "null" + default_ticket_types: + type: + - array + - "null" + items: + type: + - object + - "null" + properties: + type: + type: + - string + - "null" + id: + type: + - string + - "null" + name: + type: + - string + - "null" + price: + type: + - number + - "null" + object: + type: + - string + - "null" + status: + type: + - string + - "null" + quantity: + type: + - number + - "null" + sort_order: + type: + - number + - "null" + booking_fee: + type: + - number + - "null" + has_overrides: + type: + - string + - "null" + max_per_order: + type: + - number + - "null" + min_per_order: + type: + - number + - "null" + quantity_held: + type: + - number + - "null" + quantity_total: + type: + - number + - "null" + quantity_issued: + type: + - number + - "null" + next_occurrence_date: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + total_issued_tickets: + type: + - number + - "null" + upcoming_occurrences: + type: + - number + - "null" + default_ticket_groups: + type: + - array + - "null" + additionalProperties: true + issued_tickets: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + description: + type: + - string + - "null" + id: + type: string + email: + type: + - string + - "null" + object: + type: + - string + - "null" + source: + type: + - string + - "null" + status: + type: + - string + - "null" + barcode: + type: + - string + - "null" + event_id: + type: + - string + - "null" + order_id: + type: + - string + - "null" + full_name: + type: + - string + - "null" + last_name: + type: + - string + - "null" + checked_in: + type: + - string + - "null" + created_at: + type: + - number + - "null" + first_name: + type: + - string + - "null" + updated_at: + type: + - number + - "null" + barcode_url: + type: + - string + - "null" + qr_code_url: + type: + - string + - "null" + ticket_type_id: + type: + - string + - "null" + event_series_id: + type: + - string + - "null" + custom_questions: + type: + - array + - "null" + additionalProperties: true + vouchers_codes: + type: object + $schema: http://json-schema.org/schema# + required: + - id + properties: + id: + type: string + code: + type: + - string + - "null" + value: + type: + - number + - "null" + expiry: + type: + - object + - "null" + properties: + iso: + type: + - string + - "null" + date: + type: + - string + - "null" + time: + type: + - string + - "null" + unix: + type: + - number + - "null" + timezone: + type: + - string + - "null" + formatted: + type: + - string + - "null" + object: + type: + - string + - "null" + voucher_id: + type: + - string + - "null" + additionalProperties: true diff --git a/airbyte-integrations/connectors/source-tickettailor/metadata.yaml b/airbyte-integrations/connectors/source-tickettailor/metadata.yaml new file mode 100644 index 000000000000..3773aa305e92 --- /dev/null +++ b/airbyte-integrations/connectors/source-tickettailor/metadata.yaml @@ -0,0 +1,35 @@ +metadataSpecVersion: "1.0" +data: + allowedHosts: + hosts: + - "api.tickettailor.com" + registryOverrides: + oss: + enabled: true + cloud: + enabled: true + remoteRegistries: + pypi: + enabled: false + packageName: airbyte-source-tickettailor + connectorBuildOptions: + baseImage: docker.io/airbyte/source-declarative-manifest:6.2.1@sha256:641f18edae53820aa91de6c828d1318ec5da22dc2a9f407cc8b6b75cc4e96569 + connectorSubtype: api + connectorType: source + definitionId: e5f3b2f5-5782-46d6-8c6a-980d82686ff6 + dockerImageTag: 0.0.1 + dockerRepository: airbyte/source-tickettailor + githubIssueLabel: source-tickettailor + icon: icon.svg + license: MIT + name: TicketTailor + releaseDate: 2024-11-06 + releaseStage: alpha + supportLevel: community + documentationUrl: https://docs.airbyte.com/integrations/sources/tickettailor + tags: + - language:manifest-only + - cdk:low-code + ab_internal: + ql: 100 + sl: 100 diff --git a/docs/integrations/sources/tickettailor.md b/docs/integrations/sources/tickettailor.md new file mode 100644 index 000000000000..6183d53c25ac --- /dev/null +++ b/docs/integrations/sources/tickettailor.md @@ -0,0 +1,33 @@ +# TicketTailor +The Airbyte connector for [TicketTailor](https://tickettailor.com) enables seamless extraction of key event data, including details on events, products, vouchers, discounts, check-ins, issued tickets, orders, and waitlists. This integration allows businesses to analyze ticket sales, attendance, and customer interactions, streamlining event management insights. + +## Configuration + +| Input | Type | Description | Default Value | +|-------|------|-------------|---------------| +| `api_key` | `string` | API Key. API key to use. Find it at https://www.getdrip.com/user/edit | | + +## Streams +| Stream Name | Primary Key | Pagination | Supports Full Sync | Supports Incremental | +|-------------|-------------|------------|---------------------|----------------------| +| events_series | id | DefaultPaginator | ✅ | ❌ | +| events | id | DefaultPaginator | ✅ | ❌ | +| products | id | DefaultPaginator | ✅ | ❌ | +| vouchers | id | DefaultPaginator | ✅ | ❌ | +| discounts | id | DefaultPaginator | ✅ | ❌ | +| check_ins | id | DefaultPaginator | ✅ | ❌ | +| issued_tickets | id | DefaultPaginator | ✅ | ❌ | +| orders | id | DefaultPaginator | ✅ | ❌ | +| waitlists | id | DefaultPaginator | ✅ | ❌ | +| vouchers_codes | id | DefaultPaginator | ✅ | ❌ | + +## Changelog + +
+ Expand to review + +| Version | Date | Pull Request | Subject | +|------------------|-------------------|--------------|----------------| +| 0.0.1 | 2024-11-06 | | Initial release by [@parthiv11](https://github.com/parthiv11) via Connector Builder | + +