diff --git a/integrations/adp/.nango/nango.json b/integrations/adp/.nango/nango.json new file mode 100644 index 000000000..cd0631dbe --- /dev/null +++ b/integrations/adp/.nango/nango.json @@ -0,0 +1,40 @@ +[ + { + "providerConfigKey": "adp", + "actions": [], + "syncs": [ + { + "type": "sync", + "description": "Fetches a list of current employees from ADP and maps them to the standard HRIS model", + "auto_start": true, + "endpoints": [ + { + "method": "GET", + "path": "/employees/unified", + "group": "Unified HRIS API" + } + ], + "input": "SyncMetadata_adp_unifiedemployees", + "name": "unified-employees", + "output": [ + "StandardEmployee" + ], + "runs": "every hour", + "scopes": [], + "sync_type": "full", + "track_deletes": false, + "usedModels": [ + "StandardEmployee", + "SyncMetadata_adp_unifiedemployees" + ], + "version": "0.0.1", + "webhookSubscriptions": [] + } + ], + "onEventScripts": { + "post-connection-creation": [], + "pre-connection-deletion": [], + "validate-connection": [] + } + } +] \ No newline at end of file diff --git a/integrations/adp/.nango/schema.json b/integrations/adp/.nango/schema.json new file mode 100644 index 000000000..df9099298 --- /dev/null +++ b/integrations/adp/.nango/schema.json @@ -0,0 +1,259 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "This file was generated by Nango (v0.69.20)", + "definitions": { + "StandardEmployee": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "employeeNumber": { + "type": "string" + }, + "title": { + "type": "string" + }, + "department": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + }, + "employmentType": { + "type": "string", + "enum": [ + "FULL_TIME", + "PART_TIME", + "CONTRACTOR", + "INTERN", + "TEMPORARY", + "OTHER" + ] + }, + "employmentStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "TERMINATED", + "ON_LEAVE", + "SUSPENDED", + "PENDING" + ] + }, + "startDate": { + "type": "string" + }, + "terminationDate": { + "type": "string" + }, + "manager": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "additionalProperties": false + }, + "workLocation": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "OFFICE", + "REMOTE", + "HYBRID" + ] + }, + "primaryAddress": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "required": [ + "name", + "type" + ], + "additionalProperties": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "phones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME", + "MOBILE" + ] + }, + "number": { + "type": "string" + } + }, + "required": [ + "type", + "number" + ], + "additionalProperties": false + } + }, + "emails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "PERSONAL" + ] + }, + "address": { + "type": "string" + } + }, + "required": [ + "type", + "address" + ], + "additionalProperties": false + } + }, + "providerSpecific": { + "type": "object", + "additionalProperties": false + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "firstName", + "lastName", + "email", + "displayName", + "department", + "employmentType", + "employmentStatus", + "startDate", + "workLocation", + "addresses", + "phones", + "emails", + "providerSpecific", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + }, + "SyncMetadata_adp_unifiedemployees": { + "type": "object", + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/integrations/adp/.nango/schema.ts b/integrations/adp/.nango/schema.ts new file mode 100644 index 000000000..8a567f02d --- /dev/null +++ b/integrations/adp/.nango/schema.ts @@ -0,0 +1,43 @@ +export interface SyncMetadata_adp_unifiedemployees { +}; + +export interface StandardEmployee { + id: string; + firstName: string; + lastName: string; + email: string; + displayName: string; + employeeNumber?: string | undefined; + title?: string | undefined; + department: { id: string; + name: string;}; + employmentType: 'FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'INTERN' | 'TEMPORARY' | 'OTHER'; + employmentStatus: 'ACTIVE' | 'TERMINATED' | 'ON_LEAVE' | 'SUSPENDED' | 'PENDING'; + startDate: string; + terminationDate?: string | undefined; + manager?: { id?: string | undefined; + firstName?: string | undefined; + lastName?: string | undefined; + email?: string | undefined;}; + workLocation: { name: string; + type: 'OFFICE' | 'REMOTE' | 'HYBRID'; + primaryAddress?: { street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';};}; + addresses: ({ street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';})[]; + phones: ({ type: 'WORK' | 'HOME' | 'MOBILE'; + number: string;})[]; + emails: ({ type: 'WORK' | 'PERSONAL'; + address: string;})[]; + providerSpecific: {}; + createdAt: string; + updatedAt: string; +}; diff --git a/integrations/namely-pat/.nango/nango.json b/integrations/namely-pat/.nango/nango.json new file mode 100644 index 000000000..1a0c9902d --- /dev/null +++ b/integrations/namely-pat/.nango/nango.json @@ -0,0 +1,40 @@ +[ + { + "providerConfigKey": "namely-pat", + "actions": [], + "syncs": [ + { + "type": "sync", + "description": "Fetches a list of current employees from Namely and maps them to the standard HRIS model", + "auto_start": true, + "endpoints": [ + { + "method": "GET", + "path": "/employees/unified", + "group": "Unified HRIS API" + } + ], + "input": "SyncMetadata_namely_pat_unifiedemployees", + "name": "unified-employees", + "output": [ + "StandardEmployee" + ], + "runs": "every 1h", + "scopes": [], + "sync_type": "incremental", + "track_deletes": false, + "usedModels": [ + "StandardEmployee", + "SyncMetadata_namely_pat_unifiedemployees" + ], + "version": "0.0.1", + "webhookSubscriptions": [] + } + ], + "onEventScripts": { + "post-connection-creation": [], + "pre-connection-deletion": [], + "validate-connection": [] + } + } +] \ No newline at end of file diff --git a/integrations/namely-pat/.nango/schema.json b/integrations/namely-pat/.nango/schema.json new file mode 100644 index 000000000..f5510a1f7 --- /dev/null +++ b/integrations/namely-pat/.nango/schema.json @@ -0,0 +1,259 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "This file was generated by Nango (v0.69.20)", + "definitions": { + "StandardEmployee": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "employeeNumber": { + "type": "string" + }, + "title": { + "type": "string" + }, + "department": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + }, + "employmentType": { + "type": "string", + "enum": [ + "FULL_TIME", + "PART_TIME", + "CONTRACTOR", + "INTERN", + "TEMPORARY", + "OTHER" + ] + }, + "employmentStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "TERMINATED", + "ON_LEAVE", + "SUSPENDED", + "PENDING" + ] + }, + "startDate": { + "type": "string" + }, + "terminationDate": { + "type": "string" + }, + "manager": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "additionalProperties": false + }, + "workLocation": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "OFFICE", + "REMOTE", + "HYBRID" + ] + }, + "primaryAddress": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "required": [ + "name", + "type" + ], + "additionalProperties": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "phones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME", + "MOBILE" + ] + }, + "number": { + "type": "string" + } + }, + "required": [ + "type", + "number" + ], + "additionalProperties": false + } + }, + "emails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "PERSONAL" + ] + }, + "address": { + "type": "string" + } + }, + "required": [ + "type", + "address" + ], + "additionalProperties": false + } + }, + "providerSpecific": { + "type": "object", + "additionalProperties": false + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "firstName", + "lastName", + "email", + "displayName", + "department", + "employmentType", + "employmentStatus", + "startDate", + "workLocation", + "addresses", + "phones", + "emails", + "providerSpecific", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + }, + "SyncMetadata_namely_pat_unifiedemployees": { + "type": "object", + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/integrations/namely-pat/.nango/schema.ts b/integrations/namely-pat/.nango/schema.ts new file mode 100644 index 000000000..2a633804e --- /dev/null +++ b/integrations/namely-pat/.nango/schema.ts @@ -0,0 +1,43 @@ +export interface StandardEmployee { + id: string; + firstName: string; + lastName: string; + email: string; + displayName: string; + employeeNumber?: string | undefined; + title?: string | undefined; + department: { id: string; + name: string;}; + employmentType: 'FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'INTERN' | 'TEMPORARY' | 'OTHER'; + employmentStatus: 'ACTIVE' | 'TERMINATED' | 'ON_LEAVE' | 'SUSPENDED' | 'PENDING'; + startDate: string; + terminationDate?: string | undefined; + manager?: { id?: string | undefined; + firstName?: string | undefined; + lastName?: string | undefined; + email?: string | undefined;}; + workLocation: { name: string; + type: 'OFFICE' | 'REMOTE' | 'HYBRID'; + primaryAddress?: { street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';};}; + addresses: ({ street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';})[]; + phones: ({ type: 'WORK' | 'HOME' | 'MOBILE'; + number: string;})[]; + emails: ({ type: 'WORK' | 'PERSONAL'; + address: string;})[]; + providerSpecific: {}; + createdAt: string; + updatedAt: string; +}; + +export interface SyncMetadata_namely_pat_unifiedemployees { +}; diff --git a/integrations/paycom/.nango/nango.json b/integrations/paycom/.nango/nango.json new file mode 100644 index 000000000..635529bd2 --- /dev/null +++ b/integrations/paycom/.nango/nango.json @@ -0,0 +1,40 @@ +[ + { + "providerConfigKey": "paycom", + "actions": [], + "syncs": [ + { + "type": "sync", + "description": "Fetches a list of current employees from Paycom and maps them to the standard HRIS model", + "auto_start": true, + "endpoints": [ + { + "method": "GET", + "path": "/employees/unified", + "group": "Unified HRIS API" + } + ], + "input": "SyncMetadata_paycom_unifiedemployees", + "name": "unified-employees", + "output": [ + "StandardEmployee" + ], + "runs": "every hour", + "scopes": [], + "sync_type": "full", + "track_deletes": false, + "usedModels": [ + "StandardEmployee", + "SyncMetadata_paycom_unifiedemployees" + ], + "version": "0.0.1", + "webhookSubscriptions": [] + } + ], + "onEventScripts": { + "post-connection-creation": [], + "pre-connection-deletion": [], + "validate-connection": [] + } + } +] \ No newline at end of file diff --git a/integrations/paycom/.nango/schema.json b/integrations/paycom/.nango/schema.json new file mode 100644 index 000000000..2a33686a2 --- /dev/null +++ b/integrations/paycom/.nango/schema.json @@ -0,0 +1,259 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "This file was generated by Nango (v0.69.20)", + "definitions": { + "StandardEmployee": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "employeeNumber": { + "type": "string" + }, + "title": { + "type": "string" + }, + "department": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + }, + "employmentType": { + "type": "string", + "enum": [ + "FULL_TIME", + "PART_TIME", + "CONTRACTOR", + "INTERN", + "TEMPORARY", + "OTHER" + ] + }, + "employmentStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "TERMINATED", + "ON_LEAVE", + "SUSPENDED", + "PENDING" + ] + }, + "startDate": { + "type": "string" + }, + "terminationDate": { + "type": "string" + }, + "manager": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "additionalProperties": false + }, + "workLocation": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "OFFICE", + "REMOTE", + "HYBRID" + ] + }, + "primaryAddress": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "required": [ + "name", + "type" + ], + "additionalProperties": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "phones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME", + "MOBILE" + ] + }, + "number": { + "type": "string" + } + }, + "required": [ + "type", + "number" + ], + "additionalProperties": false + } + }, + "emails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "PERSONAL" + ] + }, + "address": { + "type": "string" + } + }, + "required": [ + "type", + "address" + ], + "additionalProperties": false + } + }, + "providerSpecific": { + "type": "object", + "additionalProperties": false + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "firstName", + "lastName", + "email", + "displayName", + "department", + "employmentType", + "employmentStatus", + "startDate", + "workLocation", + "addresses", + "phones", + "emails", + "providerSpecific", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + }, + "SyncMetadata_paycom_unifiedemployees": { + "type": "object", + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/integrations/paycom/.nango/schema.ts b/integrations/paycom/.nango/schema.ts new file mode 100644 index 000000000..ebb507f17 --- /dev/null +++ b/integrations/paycom/.nango/schema.ts @@ -0,0 +1,43 @@ +export interface StandardEmployee { + id: string; + firstName: string; + lastName: string; + email: string; + displayName: string; + employeeNumber?: string | undefined; + title?: string | undefined; + department: { id: string; + name: string;}; + employmentType: 'FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'INTERN' | 'TEMPORARY' | 'OTHER'; + employmentStatus: 'ACTIVE' | 'TERMINATED' | 'ON_LEAVE' | 'SUSPENDED' | 'PENDING'; + startDate: string; + terminationDate?: string | undefined; + manager?: { id?: string | undefined; + firstName?: string | undefined; + lastName?: string | undefined; + email?: string | undefined;}; + workLocation: { name: string; + type: 'OFFICE' | 'REMOTE' | 'HYBRID'; + primaryAddress?: { street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';};}; + addresses: ({ street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';})[]; + phones: ({ type: 'WORK' | 'HOME' | 'MOBILE'; + number: string;})[]; + emails: ({ type: 'WORK' | 'PERSONAL'; + address: string;})[]; + providerSpecific: {}; + createdAt: string; + updatedAt: string; +}; + +export interface SyncMetadata_paycom_unifiedemployees { +}; diff --git a/integrations/ukg-pro/.nango/nango.json b/integrations/ukg-pro/.nango/nango.json new file mode 100644 index 000000000..9a3ea2c37 --- /dev/null +++ b/integrations/ukg-pro/.nango/nango.json @@ -0,0 +1,40 @@ +[ + { + "providerConfigKey": "ukg-pro", + "actions": [], + "syncs": [ + { + "type": "sync", + "description": "Fetch all employees from UKG Pro and maps them to the standard HRIS model", + "auto_start": true, + "endpoints": [ + { + "method": "GET", + "path": "/employees/unified", + "group": "Unified HRIS API" + } + ], + "input": "SyncMetadata_ukg_pro_unifiedemployees", + "name": "unified-employees", + "output": [ + "StandardEmployee" + ], + "runs": "every hour", + "scopes": [], + "sync_type": "incremental", + "track_deletes": false, + "usedModels": [ + "StandardEmployee", + "SyncMetadata_ukg_pro_unifiedemployees" + ], + "version": "0.0.1", + "webhookSubscriptions": [] + } + ], + "onEventScripts": { + "post-connection-creation": [], + "pre-connection-deletion": [], + "validate-connection": [] + } + } +] \ No newline at end of file diff --git a/integrations/ukg-pro/.nango/schema.json b/integrations/ukg-pro/.nango/schema.json new file mode 100644 index 000000000..679eb22ed --- /dev/null +++ b/integrations/ukg-pro/.nango/schema.json @@ -0,0 +1,259 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "This file was generated by Nango (v0.69.20)", + "definitions": { + "StandardEmployee": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "employeeNumber": { + "type": "string" + }, + "title": { + "type": "string" + }, + "department": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + }, + "employmentType": { + "type": "string", + "enum": [ + "FULL_TIME", + "PART_TIME", + "CONTRACTOR", + "INTERN", + "TEMPORARY", + "OTHER" + ] + }, + "employmentStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "TERMINATED", + "ON_LEAVE", + "SUSPENDED", + "PENDING" + ] + }, + "startDate": { + "type": "string" + }, + "terminationDate": { + "type": "string" + }, + "manager": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "additionalProperties": false + }, + "workLocation": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "OFFICE", + "REMOTE", + "HYBRID" + ] + }, + "primaryAddress": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "required": [ + "name", + "type" + ], + "additionalProperties": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "phones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME", + "MOBILE" + ] + }, + "number": { + "type": "string" + } + }, + "required": [ + "type", + "number" + ], + "additionalProperties": false + } + }, + "emails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "PERSONAL" + ] + }, + "address": { + "type": "string" + } + }, + "required": [ + "type", + "address" + ], + "additionalProperties": false + } + }, + "providerSpecific": { + "type": "object", + "additionalProperties": false + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "firstName", + "lastName", + "email", + "displayName", + "department", + "employmentType", + "employmentStatus", + "startDate", + "workLocation", + "addresses", + "phones", + "emails", + "providerSpecific", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + }, + "SyncMetadata_ukg_pro_unifiedemployees": { + "type": "object", + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/integrations/ukg-pro/.nango/schema.ts b/integrations/ukg-pro/.nango/schema.ts new file mode 100644 index 000000000..2cc13d69a --- /dev/null +++ b/integrations/ukg-pro/.nango/schema.ts @@ -0,0 +1,43 @@ +export interface StandardEmployee { + id: string; + firstName: string; + lastName: string; + email: string; + displayName: string; + employeeNumber?: string | undefined; + title?: string | undefined; + department: { id: string; + name: string;}; + employmentType: 'FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'INTERN' | 'TEMPORARY' | 'OTHER'; + employmentStatus: 'ACTIVE' | 'TERMINATED' | 'ON_LEAVE' | 'SUSPENDED' | 'PENDING'; + startDate: string; + terminationDate?: string | undefined; + manager?: { id?: string | undefined; + firstName?: string | undefined; + lastName?: string | undefined; + email?: string | undefined;}; + workLocation: { name: string; + type: 'OFFICE' | 'REMOTE' | 'HYBRID'; + primaryAddress?: { street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';};}; + addresses: ({ street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';})[]; + phones: ({ type: 'WORK' | 'HOME' | 'MOBILE'; + number: string;})[]; + emails: ({ type: 'WORK' | 'PERSONAL'; + address: string;})[]; + providerSpecific: {}; + createdAt: string; + updatedAt: string; +}; + +export interface SyncMetadata_ukg_pro_unifiedemployees { +}; diff --git a/integrations/ukg-ready/.nango/nango.json b/integrations/ukg-ready/.nango/nango.json new file mode 100644 index 000000000..b2161085d --- /dev/null +++ b/integrations/ukg-ready/.nango/nango.json @@ -0,0 +1,40 @@ +[ + { + "providerConfigKey": "ukg-ready", + "actions": [], + "syncs": [ + { + "type": "sync", + "description": "Fetch all employees from UKG Ready and maps them to the standard HRIS model", + "auto_start": true, + "endpoints": [ + { + "method": "GET", + "path": "/employees/unified", + "group": "Unified HRIS API" + } + ], + "input": "SyncMetadata_ukg_ready_unifiedemployees", + "name": "unified-employees", + "output": [ + "StandardEmployee" + ], + "runs": "every hour", + "scopes": [], + "sync_type": "incremental", + "track_deletes": false, + "usedModels": [ + "StandardEmployee", + "SyncMetadata_ukg_ready_unifiedemployees" + ], + "version": "0.0.1", + "webhookSubscriptions": [] + } + ], + "onEventScripts": { + "post-connection-creation": [], + "pre-connection-deletion": [], + "validate-connection": [] + } + } +] \ No newline at end of file diff --git a/integrations/ukg-ready/.nango/schema.json b/integrations/ukg-ready/.nango/schema.json new file mode 100644 index 000000000..e6acb4749 --- /dev/null +++ b/integrations/ukg-ready/.nango/schema.json @@ -0,0 +1,259 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$comment": "This file was generated by Nango (v0.69.20)", + "definitions": { + "StandardEmployee": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "employeeNumber": { + "type": "string" + }, + "title": { + "type": "string" + }, + "department": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name" + ], + "additionalProperties": false + }, + "employmentType": { + "type": "string", + "enum": [ + "FULL_TIME", + "PART_TIME", + "CONTRACTOR", + "INTERN", + "TEMPORARY", + "OTHER" + ] + }, + "employmentStatus": { + "type": "string", + "enum": [ + "ACTIVE", + "TERMINATED", + "ON_LEAVE", + "SUSPENDED", + "PENDING" + ] + }, + "startDate": { + "type": "string" + }, + "terminationDate": { + "type": "string" + }, + "manager": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "email": { + "type": "string" + } + }, + "additionalProperties": false + }, + "workLocation": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "OFFICE", + "REMOTE", + "HYBRID" + ] + }, + "primaryAddress": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "required": [ + "name", + "type" + ], + "additionalProperties": false + }, + "addresses": { + "type": "array", + "items": { + "type": "object", + "properties": { + "street": { + "type": "string" + }, + "city": { + "type": "string" + }, + "state": { + "type": "string" + }, + "country": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME" + ] + } + }, + "required": [ + "type" + ], + "additionalProperties": false + } + }, + "phones": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "HOME", + "MOBILE" + ] + }, + "number": { + "type": "string" + } + }, + "required": [ + "type", + "number" + ], + "additionalProperties": false + } + }, + "emails": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "WORK", + "PERSONAL" + ] + }, + "address": { + "type": "string" + } + }, + "required": [ + "type", + "address" + ], + "additionalProperties": false + } + }, + "providerSpecific": { + "type": "object", + "additionalProperties": false + }, + "createdAt": { + "type": "string" + }, + "updatedAt": { + "type": "string" + } + }, + "required": [ + "id", + "firstName", + "lastName", + "email", + "displayName", + "department", + "employmentType", + "employmentStatus", + "startDate", + "workLocation", + "addresses", + "phones", + "emails", + "providerSpecific", + "createdAt", + "updatedAt" + ], + "additionalProperties": false + }, + "SyncMetadata_ukg_ready_unifiedemployees": { + "type": "object", + "additionalProperties": false + } + } +} \ No newline at end of file diff --git a/integrations/ukg-ready/.nango/schema.ts b/integrations/ukg-ready/.nango/schema.ts new file mode 100644 index 000000000..4fef554b5 --- /dev/null +++ b/integrations/ukg-ready/.nango/schema.ts @@ -0,0 +1,43 @@ +export interface StandardEmployee { + id: string; + firstName: string; + lastName: string; + email: string; + displayName: string; + employeeNumber?: string | undefined; + title?: string | undefined; + department: { id: string; + name: string;}; + employmentType: 'FULL_TIME' | 'PART_TIME' | 'CONTRACTOR' | 'INTERN' | 'TEMPORARY' | 'OTHER'; + employmentStatus: 'ACTIVE' | 'TERMINATED' | 'ON_LEAVE' | 'SUSPENDED' | 'PENDING'; + startDate: string; + terminationDate?: string | undefined; + manager?: { id?: string | undefined; + firstName?: string | undefined; + lastName?: string | undefined; + email?: string | undefined;}; + workLocation: { name: string; + type: 'OFFICE' | 'REMOTE' | 'HYBRID'; + primaryAddress?: { street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';};}; + addresses: ({ street?: string | undefined; + city?: string | undefined; + state?: string | undefined; + country?: string | undefined; + postalCode?: string | undefined; + type: 'WORK' | 'HOME';})[]; + phones: ({ type: 'WORK' | 'HOME' | 'MOBILE'; + number: string;})[]; + emails: ({ type: 'WORK' | 'PERSONAL'; + address: string;})[]; + providerSpecific: {}; + createdAt: string; + updatedAt: string; +}; + +export interface SyncMetadata_ukg_ready_unifiedemployees { +}; diff --git a/internal/scripts/zero/compileIntegrationsJson.ts b/internal/scripts/zero/compileIntegrationsJson.ts index 9f8e7bead..884788f09 100644 --- a/internal/scripts/zero/compileIntegrationsJson.ts +++ b/internal/scripts/zero/compileIntegrationsJson.ts @@ -173,6 +173,114 @@ async function main(): Promise { const fullSchema = jsonSchema as { $schema?: string; $comment?: string; definitions: Record }; + // Step 2.6: Distribute .nango files to each integration's .nango directory + console.log(); + console.log('Distributing .nango files to integration directories...'); + + // Read schema.ts from main .nango directory + const schemaTsPath = join(integrationsPath, '.nango', 'schema.ts'); + let schemaTs = ''; + try { + schemaTs = await readFile(schemaTsPath, 'utf8'); + } catch (error) { + console.log(` ${chalk.yellow('warn')} Could not read schema.ts: ${errorToString(error)}`); + } + + for (const integration of nangoData) { + const integrationName = integration.providerConfigKey; + const integrationDir = join(integrationsPath, integrationName); + + // Skip if integration directory doesn't exist + if (!existsSync(integrationDir)) { + continue; + } + + // Skip symlinked directories + const stat = await lstat(integrationDir); + if (stat.isSymbolicLink()) { + continue; + } + + const integrationNangoDir = join(integrationDir, '.nango'); + + // Create .nango directory if it doesn't exist + if (!existsSync(integrationNangoDir)) { + await mkdir(integrationNangoDir, { recursive: true }); + } + + // Collect all used models from syncs and actions + const usedModels = new Set(); + for (const sync of integration.syncs || []) { + if (sync.usedModels) { + for (const model of sync.usedModels) { + usedModels.add(model); + } + } + } + for (const action of integration.actions || []) { + if (action.usedModels) { + for (const model of action.usedModels) { + usedModels.add(model); + } + } + } + + // Write nango.json with just this integration's data + const integrationNangoJson = [integration]; + await writeFile(join(integrationNangoDir, 'nango.json'), JSON.stringify(integrationNangoJson, null, 2), 'utf8'); + + // Filter schema.json definitions to only include used models + const filteredDefinitions: Record = {}; + for (const modelName of usedModels) { + if (fullSchema.definitions[modelName]) { + filteredDefinitions[modelName] = fullSchema.definitions[modelName]; + } + } + const filteredSchemaJson = { + $schema: fullSchema.$schema, + $comment: fullSchema.$comment, + definitions: filteredDefinitions + }; + await writeFile(join(integrationNangoDir, 'schema.json'), JSON.stringify(filteredSchemaJson, null, 2), 'utf8'); + + // Filter schema.ts to only include used models + if (schemaTs) { + // Extract type/interface definitions for used models + const filteredSchemaTsLines: string[] = []; + const lines = schemaTs.split('\n'); + let inUsedBlock = false; + let braceCount = 0; + + for (const line of lines) { + // Check if this line starts a type or interface we need + const typeMatch = line.match(/^export\s+(type|interface)\s+(\w+)/); + if (typeMatch) { + const typeName = typeMatch[2]; + if (usedModels.has(typeName)) { + inUsedBlock = true; + braceCount = 0; + } + } + + if (inUsedBlock) { + filteredSchemaTsLines.push(line); + braceCount += (line.match(/{/g) || []).length; + braceCount -= (line.match(/}/g) || []).length; + if (braceCount <= 0 && line.includes('}')) { + inUsedBlock = false; + filteredSchemaTsLines.push(''); + } + } + } + + if (filteredSchemaTsLines.length > 0) { + await writeFile(join(integrationNangoDir, 'schema.ts'), filteredSchemaTsLines.join('\n'), 'utf8'); + } + } + + console.log(` ${chalk.green('✓')} ${integrationName} (.nango files)`); + } + // Step 3: Transform to ZeroFlow format // Each integration in nangoData already has providerConfigKey set // Filter jsonSchema to only include models used by each integration