diff --git a/_data/taps/schemas/freshdesk/v2/freshdesk-v2-foreign-keys.yml b/_data/taps/schemas/freshdesk/v2/freshdesk-v2-foreign-keys.yml new file mode 100644 index 000000000..d062a598b --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/freshdesk-v2-foreign-keys.yml @@ -0,0 +1,229 @@ +tap: freshdesk +version: '2' +keys: + agents_agent_id: + - table: agents + keys: + - id + - table: groups + keys: + - agent_ids + - table: satisfaction_ratings + keys: + - agent_id + - table: tickets + keys: + - responder_id + - table: time_entries + keys: + - agent_id + companies_company_id: + - table: companies + keys: + - id + - table: tickets + keys: + - company_id + contacts_contact_id: + - table: contacts + keys: + - id + conversations_conversation_id: + - table: conversations + keys: + - id + groups_group_id: + - table: agents + keys: + - group_ids + - table: groups + keys: + - id + - table: satisfaction_ratings + keys: + - group_id + - table: tickets + keys: + - group_id + roles_role_id: + - table: agents + keys: + - role_ids + - table: roles + keys: + - id + satisfaction_ratings_satisfaction_rating_id: + - table: satisfaction_ratings + keys: + - id + tickets_ticket_id: + - table: conversations + keys: + - ticket_id + - table: tickets + keys: + - id + - table: satisfaction_ratings + keys: + - ticket_id + time_entries_time_entry_id: + - table: time_entries + keys: + - id +tables: +- table-name: agents + join: + - table-name: groups + keys: + - key: id + foreign-key: agent_ids + - key: group_ids + foreign-key: id + - table-name: satisfaction_ratings + keys: + - key: id + foreign-key: agent_id + - key: group_ids + foreign-key: group_id + - table-name: tickets + keys: + - key: id + foreign-key: responder_id + - key: group_ids + foreign-key: group_id + - table-name: time_entries + keys: + - key: id + foreign-key: agent_id + - table-name: roles + keys: + - key: role_ids + foreign-key: id +- table-name: groups + join: + - table-name: agents + keys: + - key: agent_ids + foreign-key: id + - key: id + foreign-key: group_ids + - table-name: satisfaction_ratings + keys: + - key: agent_ids + foreign-key: agent_id + - key: id + foreign-key: group_id + - table-name: tickets + keys: + - key: agent_ids + foreign-key: responder_id + - key: id + foreign-key: group_id + - table-name: time_entries + keys: + - key: agent_ids + foreign-key: agent_id +- table-name: satisfaction_ratings + join: + - table-name: agents + keys: + - key: agent_id + foreign-key: id + - key: group_id + foreign-key: group_ids + - table-name: groups + keys: + - key: agent_id + foreign-key: agent_ids + - key: group_id + foreign-key: id + - table-name: tickets + keys: + - key: agent_id + foreign-key: responder_id + - key: group_id + foreign-key: group_id + - key: ticket_id + foreign-key: id + - table-name: time_entries + keys: + - key: agent_id + foreign-key: agent_id + - table-name: conversations + keys: + - key: ticket_id + foreign-key: ticket_id +- table-name: tickets + join: + - table-name: agents + keys: + - key: responder_id + foreign-key: id + - key: group_id + foreign-key: group_ids + - table-name: groups + keys: + - key: responder_id + foreign-key: agent_ids + - key: group_id + foreign-key: id + - table-name: satisfaction_ratings + keys: + - key: responder_id + foreign-key: agent_id + - key: group_id + foreign-key: group_id + - key: id + foreign-key: ticket_id + - table-name: time_entries + keys: + - key: responder_id + foreign-key: agent_id + - table-name: companies + keys: + - key: company_id + foreign-key: id + - table-name: conversations + keys: + - key: id + foreign-key: ticket_id +- table-name: time_entries + join: + - table-name: agents + keys: + - key: agent_id + foreign-key: id + - table-name: groups + keys: + - key: agent_id + foreign-key: agent_ids + - table-name: satisfaction_ratings + keys: + - key: agent_id + foreign-key: agent_id + - table-name: tickets + keys: + - key: agent_id + foreign-key: responder_id +- table-name: companies + join: + - table-name: tickets + keys: + - key: id + foreign-key: company_id +- table-name: conversations + join: + - table-name: tickets + keys: + - key: ticket_id + foreign-key: id + - table-name: satisfaction_ratings + keys: + - key: ticket_id + foreign-key: ticket_id +- table-name: roles + join: + - table-name: agents + keys: + - key: id + foreign-key: role_ids diff --git a/_data/taps/schemas/freshdesk/v2/freshdesk-v2-tables.yml b/_data/taps/schemas/freshdesk/v2/freshdesk-v2-tables.yml new file mode 100644 index 000000000..2dec9da5b --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/freshdesk-v2-tables.yml @@ -0,0 +1,130 @@ +tap: freshdesk +version: '2' +tables: +- name: agents + description: 'The `{{ table.name }}` table contains info about the agents in your + {{ integration.display_name }} account. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#agents + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/agents.json + api-method: https://developers.freshdesk.com/api/#list_all_agents + table-details: + replication-method: Full Table + primary-key: id +- name: companies + description: 'The `{{ table.name }}` table contains info about the companies your + various customers and contacts belong to. + + #### Custom Fields + + If applicable, Stitch will replicate custom fields related to `{{ table.name }}` + in {{ integration.display_name }}. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#companies + api-method: https://developers.freshdesk.com/api/#list_all_companies + table-details: + replication-method: Key-based Incremental + primary-key: id + replication-key: updated_at +- name: conversations + description: 'The `{{ table.name }}` table contains info about replies and public/private + notes added to the tickets in your {{ integration.display_name }} account. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#conversations + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/conversations.json + api-method: https://developers.freshdesk.com/api/#list_all_ticket_notes + table-details: + replication-method: Key-based Incremental + primary-key: id + replication-key: updated_at +- name: contacts + description: 'The `{{ table.name }}` table contains info about the customers or + potential customers that have filed support tickets in any of the channels in + your {{ integration.display_name }} account. + + #### Custom Fields + + If applicable, Stitch will replicate custom fields related to `{{ table.name }}` + in {{ integration.display_name }}. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#contacts + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/contacts.json + api-method: https://developers.freshdesk.com/api/#list_all_contacts + table-details: + replication-method: Key-based Incremental + primary-key: id + replication-key: updated_at +- name: groups + description: 'The `{{ table.name }}` table contains info about the groups your agents + belong to. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#groups + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/groups.json + api-method: https://developers.freshdesk.com/api/#list_all_groups + table-details: + replication-method: Full Table + primary-key: id +- name: roles + description: 'The `{{ table.name }}` table contains info about the various roles + that can be assigned to team members in your {{ integration.display_name }} account. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#roles + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/roles.json + api-method: https://developers.freshdesk.com/api/#list_all_roles + table-details: + replication-method: Full Table + primary-key: id +- name: satisfaction_ratings + description: 'The `{{ table.name }}` table contains info about customer satisfaction + survey responses, or satisfaction ratings. + + ' + links: + doc-link: https://developers.freshdesk.com/api/#satisfaction-ratings + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/satisfaction_ratings.json + api-method: https://developers.freshdesk.com/api/#view_all_satisfaction_ratings + table-details: + replication-method: Key-based Incremental + primary-key: id + replication-key: updated_at +- name: tickets + description: 'The `tickets` table contains info about the tickets in your {{ integration.display_name + }} account. + + #### Custom Fields + + If applicable, Stitch will replicate custom fields related to `tickets` in {{ + integration.display_name }}. + + ' + links: + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/tickets.json + api-method: https://developers.freshdesk.com/api/#tickets + table-details: + replication-method: Key-based Incremental + primary-key: id + replication-key: updated_at +- name: time_entries + description: 'The `time_entries` table contains info about the time entries entered + by agents working on tickets. + + ' + links: + singer-schema: https://github.com/singer-io/tap-freshdesk/blob/master/tap_freshdesk/schemas/time_entries.json + api-method: https://developers.freshdesk.com/api/#time-entries + table-details: + replication-method: Key-based Incremental + primary-key: id + replication-key: updated_at diff --git a/_data/taps/schemas/freshdesk/v2/json/agents.json b/_data/taps/schemas/freshdesk/v2/json/agents.json new file mode 100644 index 000000000..b218a1491 --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/agents.json @@ -0,0 +1,157 @@ +{ + "type": "object", + "properties": { + "available": { + "type": [ + "null", + "boolean" + ] + }, + "available_since": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "occasional": { + "type": [ + "null", + "boolean" + ] + }, + "signature": { + "type": [ + "null", + "string" + ] + }, + "ticket_scope": { + "type": [ + "null", + "integer" + ] + }, + "group_ids": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "integer" + ] + } + }, + "role_ids": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "integer" + ] + } + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "contact": { + "type": [ + "null", + "object" + ], + "properties": { + "active": { + "type": [ + "null", + "boolean" + ] + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "job_title": { + "type": [ + "null", + "string" + ] + }, + "language": { + "type": [ + "null", + "string" + ] + }, + "last_login_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "mobile": { + "type": [ + "null", + "string" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "time_zone": { + "type": [ + "null", + "string" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/companies.json b/_data/taps/schemas/freshdesk/v2/json/companies.json new file mode 100644 index 000000000..8d1546e4d --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/companies.json @@ -0,0 +1,81 @@ +{ + "type": "object", + "properties": { + "custom_fields": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "object" + ], + "properties": { + "name": { + "type": [ + "null", + "string" + ] + }, + "value": { + "type": [ + "null", + "string" + ] + } + } + } + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "domains": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "string" + ] + } + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "note": { + "type": [ + "null", + "string" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/contacts.json b/_data/taps/schemas/freshdesk/v2/json/contacts.json new file mode 100644 index 000000000..c9f8480a2 --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/contacts.json @@ -0,0 +1,177 @@ +{ + "type": "object", + "properties": { + "custom_fields": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "object" + ], + "properties": { + "name": { + "type": [ + "null", + "string" + ] + }, + "value": { + "type": [ + "null", + "string" + ] + } + } + } + }, + "other_companies": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "view_all_tickets": { + "type": [ + "null", + "boolean" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "other_emails": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "company_id": { + "type": [ + "null", + "number" + ] + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "job_title": { + "type": [ + "null", + "string" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "tags": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "deleted": { + "type": [ + "null", + "boolean" + ] + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "address": { + "type": [ + "null", + "string" + ] + }, + "active": { + "type": [ + "null", + "boolean" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "language": { + "type": [ + "null", + "string" + ] + }, + "mobile": { + "type": [ + "null", + "string" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "twitter_id": { + "type": [ + "null", + "string" + ] + }, + "time_zone": { + "type": [ + "null", + "string" + ] + }, + "avatar": { + "type": [ + "null", + "object" + ] + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/conversations.json b/_data/taps/schemas/freshdesk/v2/json/conversations.json new file mode 100644 index 000000000..cb46d88b4 --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/conversations.json @@ -0,0 +1,120 @@ +{ + "type": "object", + "properties": { + "body_text": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "incoming": { + "type": [ + "null", + "boolean" + ] + }, + "private": { + "type": [ + "null", + "boolean" + ] + }, + "user_id": { + "type": [ + "null", + "integer" + ] + }, + "support_email": { + "type": [ + "null", + "string" + ] + }, + "source": { + "type": [ + "null", + "integer" + ] + }, + "ticket_id": { + "type": [ + "null", + "integer" + ] + }, + "to_emails": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "from_email": { + "type": [ + "null", + "string" + ] + }, + "cc_emails": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "bcc_emails": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "created_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "updated_at": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/groups.json b/_data/taps/schemas/freshdesk/v2/json/groups.json new file mode 100644 index 000000000..a7cf9972f --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/groups.json @@ -0,0 +1,74 @@ +{ + "type": "object", + "properties": { + "agent_ids": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "integer" + ] + } + }, + "auto_ticket_assign": { + "type": [ + "null", + "integer", + "boolean" + ] + }, + "business_hour_id": { + "type": [ + "null", + "integer" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "escalate_to": { + "type": [ + "null", + "integer" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "unassigned_for": { + "type": [ + "null", + "string" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/roles.json b/_data/taps/schemas/freshdesk/v2/json/roles.json new file mode 100644 index 000000000..8fd73dc55 --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/roles.json @@ -0,0 +1,43 @@ +{ + "type": "object", + "properties": { + "description": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "default": { + "type": [ + "null", + "boolean" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/satisfaction_ratings.json b/_data/taps/schemas/freshdesk/v2/json/satisfaction_ratings.json new file mode 100644 index 000000000..4cec4c0f5 --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/satisfaction_ratings.json @@ -0,0 +1,87 @@ +{ + "type": "object", + "properties": { + "survey_id": { + "type": [ + "null", + "integer" + ] + }, + "user_id": { + "type": [ + "null", + "integer" + ] + }, + "feedback": { + "type": [ + "null", + "string" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "agent_id": { + "type": [ + "null", + "integer" + ] + }, + "group_id": { + "type": [ + "null", + "integer" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "ticket_id": { + "type": [ + "null", + "integer" + ] + }, + "ratings": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "object" + ], + "properties": { + "question": { + "type": [ + "null", + "string" + ] + }, + "value": { + "type": [ + "null", + "integer" + ] + } + } + } + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/tickets.json b/_data/taps/schemas/freshdesk/v2/json/tickets.json new file mode 100644 index 000000000..45d94fede --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/tickets.json @@ -0,0 +1,344 @@ +{ + "type": "object", + "properties": { + "custom_fields": { + "type": [ + "null", + "array" + ], + "items": { + "type": [ + "null", + "object" + ], + "properties": { + "name": { + "type": [ + "null", + "string" + ] + }, + "value": { + "type": [ + "null", + "string" + ] + } + } + } + }, + "cc_emails": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "type": { + "type": [ + "null", + "string" + ] + }, + "to_emails": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "fwd_emails": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "source": { + "type": [ + "null", + "number" + ] + }, + "due_by": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "company_id": { + "type": [ + "null", + "integer" + ] + }, + "responder_id": { + "type": [ + "null", + "integer" + ] + }, + "priority": { + "type": [ + "null", + "number" + ] + }, + "deleted": { + "type": [ + "null", + "boolean" + ] + }, + "facebook_id": { + "type": [ + "null", + "string" + ] + }, + "subject": { + "type": [ + "null", + "string" + ] + }, + "fr_due_by": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "email": { + "type": [ + "null", + "string" + ] + }, + "status": { + "type": [ + "null", + "number" + ] + }, + "is_escalated": { + "type": [ + "null", + "boolean" + ] + }, + "reply_cc_emails": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "description": { + "type": [ + "null", + "string" + ] + }, + "tags": { + "items": { + "type": [ + "null", + "string" + ] + }, + "type": [ + "null", + "array" + ] + }, + "email_config_id": { + "type": [ + "null", + "integer" + ] + }, + "phone": { + "type": [ + "null", + "string" + ] + }, + "description_text": { + "type": [ + "null", + "string" + ] + }, + "requester_id": { + "type": [ + "null", + "integer" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "product_id": { + "type": [ + "null", + "integer" + ] + }, + "fr_escalated": { + "type": [ + "null", + "boolean" + ] + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "spam": { + "type": [ + "null", + "boolean" + ] + }, + "twitter_id": { + "type": [ + "null", + "string" + ] + }, + "group_id": { + "type": [ + "null", + "integer" + ] + }, + "company": { + "type": [ + "null", + "object" + ], + "properties": { + "id": { + "type": [ + "null", + "integer" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + } + } + }, + "requester": { + "type": [ + "null", + "object" + ], + "properties": { + "email": { + "type": [ + "null", + "string" + ] + }, + "id": { + "type": [ + "null", + "integer" + ] + }, + "mobile": { + "type": [ + "null", + "string" + ] + }, + "name": { + "type": [ + "null", + "string" + ] + }, + "phone": { + "type": [ + "null", + "string" + ] + } + } + }, + "stats": { + "type": [ + "null", + "object" + ], + "properties": { + "closed_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "first_responded_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "resolved_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + } + } + } + } +} diff --git a/_data/taps/schemas/freshdesk/v2/json/time_entries.json b/_data/taps/schemas/freshdesk/v2/json/time_entries.json new file mode 100644 index 000000000..cf34043d7 --- /dev/null +++ b/_data/taps/schemas/freshdesk/v2/json/time_entries.json @@ -0,0 +1,72 @@ +{ + "type": "object", + "properties": { + "time_spent": { + "type": [ + "null", + "string" + ] + }, + "start_time": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "created_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "executed_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "updated_at": { + "type": [ + "null", + "string" + ], + "format": "date-time" + }, + "timer_running": { + "type": [ + "null", + "boolean" + ] + }, + "note": { + "type": [ + "null", + "string" + ] + }, + "ticket_id": { + "type": [ + "null", + "integer" + ] + }, + "billable": { + "type": [ + "null", + "boolean" + ] + }, + "id": { + "type": "integer" + }, + "agent_id": { + "type": [ + "null", + "integer" + ] + } + } +} diff --git a/_data/taps/versions/freshdesk.yml b/_data/taps/versions/freshdesk.yml index 000cf7a19..4747621c9 100644 --- a/_data/taps/versions/freshdesk.yml +++ b/_data/taps/versions/freshdesk.yml @@ -2,9 +2,13 @@ # FRESHDESK VERSIONS # # -------------------------- # -latest-version: "1" +latest-version: "2" released-versions: + - number: "2" + date-released: "February 12, 2026" + # date-last-connection: + - number: "1" date-released: "March 1, 2017" # date-last-connection: \ No newline at end of file diff --git a/_saas-integrations/freshdesk/freshdesk-latest.md b/_saas-integrations/freshdesk/v1/freshdesk-v1.md old mode 100755 new mode 100644 similarity index 98% rename from _saas-integrations/freshdesk/freshdesk-latest.md rename to _saas-integrations/freshdesk/v1/freshdesk-v1.md index 258e074da..5f66935c1 --- a/_saas-integrations/freshdesk/freshdesk-latest.md +++ b/_saas-integrations/freshdesk/v1/freshdesk-v1.md @@ -1,9 +1,10 @@ --- title: Freshdesk (v1) -permalink: /integrations/saas/freshdesk +permalink: /integrations/saas/freshdesk/v1 keywords: freshdesk, integration, schema, etl freshdesk, freshdesk etl, freshdesk schema summary: "Connection instructions and schema details for Stitch's Freshdesk integration." layout: singer +input: false key: "freshdesk-setup" diff --git a/_saas-integrations/freshdesk/v2/freshdesk-v2.md b/_saas-integrations/freshdesk/v2/freshdesk-v2.md new file mode 100644 index 000000000..bd325bfa3 --- /dev/null +++ b/_saas-integrations/freshdesk/v2/freshdesk-v2.md @@ -0,0 +1,123 @@ +--- +title: Freshdesk (v2) +permalink: /integrations/saas/freshdesk +keywords: freshdesk, integration, schema, etl freshdesk, freshdesk etl, freshdesk schema +summary: "Connection instructions and schema details for Stitch's Freshdesk integration." +layout: singer + +key: "freshdesk-setup" + +# -------------------------- # +# Tap Details # +# -------------------------- # + +name: "freshdesk" +display_name: "Freshdesk" + +singer: true +repo-url: https://github.com/singer-io/tap-freshdesk + +this-version: "2" + +api: | + [{{ integration.display_name }} REST API v2](https://developers.freshdesk.com/api/){:target="new"} + + +# -------------------------- # +# Stitch Details # +# -------------------------- # + +certified: false # Community-supported integration + +historical: "1 year" +frequency: "30 minutes" +tier: "Standard" +status-url: https://status.freshdesk.com/ + +api-type: "platform.freshdesk" + +table-selection: true +column-selection: true + +anchor-scheduling: true +cron-scheduling: true + +extraction-logs: true +loading-reports: true + +# Release date for this version +release-date: "February 12, 2026" + +# -------------------------- # +# Feature Summary # +# -------------------------- # + +feature-summary: | + Stitch's {{ integration.display_name }} integration replicates data using the {{ integration.api | flatify | strip }}. Refer to the [Schema](#schema) section for a list of objects available for replication. + +# -------------------------- # +# What's New in v2 # +# -------------------------- # + +whats-new: | + + **Version 2.0 of the {{ integration.display_name }} integration includes the following updates:** + + - **Discovery support**: You can now select which tables to replicate in Stitch's interface. + - **Improved replication methods**: Some tables now use Full Table replication for more reliable synchronization. + - **API v2 support**: The integration now uses {{ integration.display_name }}'s API v2, providing access to current endpoints and functionality. + - **Enhanced parent-child relationships**: Improved handling of dependent objects (conversations, satisfaction ratings, time entries). + - **Updated dependencies**: Singer Python upgraded to v6.1.0 for improved compatibility and performance. + + +# -------------------------- # +# Setup Instructions # +# -------------------------- # + +requirements-list: + - item: | + **Administrator permissions in Freshdesk.** As Stitch will only be able to replicate data that the authorizing user has access to, we recommend that someone with these permissions complete the setup. For example: if the authorizing user only has access to a handful of tickets, Stitch will only be able to access and replicate the data for those tickets. + + Having a Freshdesk administrator create the integration will ensure that Stitch is able to replicate all the data in your Freshdesk account. + +setup-steps: + - title: "Retrieve your Freshdesk API Key" + anchor: "retrieve-api-credentials" + content: | + 1. Sign into your Freshdesk account. + 2. Click the **user menu (your icon) > Profile Settings**. + 3. Your API Key will display under the **Change Password** section of your profile page. Copy this key. + + Leave this page open for now - you'll need it to wrap things up in Stitch. + + - title: "Add {{ integration.display_name }} as a Stitch data source" + anchor: "add-stitch-data-source" + content: | + {% include integrations/shared-setup/connection-setup.html %} + + - title: "Define the historical replication start date" + anchor: "define-historical-sync" + content: | + {% include integrations/saas/setup/historical-sync.html %} + + - title: "Create a replication schedule" + anchor: "define-rep-frequency" + content: | + {% include integrations/shared-setup/replication-frequency.html %} + + - title: "Set objects to replicate" + anchor: "setting-data-to-replicate" + content: | + {% include integrations/shared-setup/data-selection/object-selection.html %} + + +# -------------------------- # +# Table Schemas # +# -------------------------- # + +# Looking for the table schemas & info? +# Each table has a its own .md file in /_integration-schemas/freshdesk/v2 + +--- +{% assign integration = page %} +{% include misc/data-files.html %}