diff --git a/airbyte-integrations/connectors/source-clockify/Dockerfile b/airbyte-integrations/connectors/source-clockify/Dockerfile index e7d1540cddc7..4a69b4505941 100644 --- a/airbyte-integrations/connectors/source-clockify/Dockerfile +++ b/airbyte-integrations/connectors/source-clockify/Dockerfile @@ -34,5 +34,5 @@ COPY source_clockify ./source_clockify ENV AIRBYTE_ENTRYPOINT "python /airbyte/integration_code/main.py" ENTRYPOINT ["python", "/airbyte/integration_code/main.py"] -LABEL io.airbyte.version=0.2.0 +LABEL io.airbyte.version=0.2.1 LABEL io.airbyte.name=airbyte/source-clockify diff --git a/airbyte-integrations/connectors/source-clockify/acceptance-test-config.yml b/airbyte-integrations/connectors/source-clockify/acceptance-test-config.yml index 92354a1e51e4..b1555d69f8e3 100644 --- a/airbyte-integrations/connectors/source-clockify/acceptance-test-config.yml +++ b/airbyte-integrations/connectors/source-clockify/acceptance-test-config.yml @@ -14,6 +14,9 @@ acceptance_tests: discovery: tests: - config_path: "secrets/config.json" + backward_compatibility_tests_config: + previous_connector_version: "0.2.0" + disable_for_version: "0.2.0" basic_read: tests: - config_path: "secrets/config.json" diff --git a/airbyte-integrations/connectors/source-clockify/metadata.yaml b/airbyte-integrations/connectors/source-clockify/metadata.yaml index 7ed282dcccbd..8d53b254c533 100644 --- a/airbyte-integrations/connectors/source-clockify/metadata.yaml +++ b/airbyte-integrations/connectors/source-clockify/metadata.yaml @@ -2,7 +2,7 @@ data: connectorSubtype: api connectorType: source definitionId: e71aae8a-5143-11ed-bdc3-0242ac120002 - dockerImageTag: 0.2.0 + dockerImageTag: 0.2.1 dockerRepository: airbyte/source-clockify githubIssueLabel: source-clockify icon: clockify.svg diff --git a/airbyte-integrations/connectors/source-clockify/setup.py b/airbyte-integrations/connectors/source-clockify/setup.py index 0bb4405be9d9..9ee1d0ae10b4 100644 --- a/airbyte-integrations/connectors/source-clockify/setup.py +++ b/airbyte-integrations/connectors/source-clockify/setup.py @@ -9,7 +9,7 @@ "airbyte-cdk", ] -TEST_REQUIREMENTS = ["pytest~=6.1", "pytest-mock~=3.6.1", "connector-acceptance-test", "responses"] +TEST_REQUIREMENTS = ["pytest~=6.1", "pytest-mock~=3.6.1", "source-acceptance-test", "responses"] setup( name="source_clockify", diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/clients.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/clients.json index 66d7531ce26c..069971965775 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/clients.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/clients.json @@ -1,27 +1,27 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": true, "properties": { "address": { "type": ["null", "string"] }, "archived": { - "type": "boolean" + "type": ["null", "boolean"] }, "id": { - "type": "string" + "type": ["null", "string"] }, "email": { "type": ["null", "string"] }, "name": { - "type": "string" + "type": ["null", "string"] }, "note": { "type": ["null", "string"] }, "workspaceId": { - "type": "string" + "type": ["null", "string"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/projects.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/projects.json index faa01b58a0fd..71a34a58df0b 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/projects.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/projects.json @@ -1,11 +1,12 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, "properties": { "archived": { - "type": "boolean" + "type": ["null", "boolean"] }, "billable": { - "type": "boolean" + "type": ["null", "boolean"] }, "budgetEstimate": { "anyOf": [ @@ -21,27 +22,27 @@ "type": ["null", "string"] }, "type": { - "type": "string" + "type": ["null", "string"] }, "resetOption": { "type": ["null", "string"] }, "active": { - "type": "boolean" + "type": ["null", "boolean"] } }, - "type": "object" + "type": ["null", "object"] } ] }, "clientId": { - "type": "string" + "type": ["null", "string"] }, "clientName": { - "type": "string" + "type": ["null", "string"] }, "color": { - "type": "string" + "type": ["null", "string"] }, "costRate": { "anyOf": [ @@ -60,12 +61,12 @@ "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] } ] }, "duration": { - "type": "string" + "type": ["null", "string"] }, "estimate": { "properties": { @@ -76,27 +77,27 @@ "type": "string" } }, - "type": "object" + "type": ["null", "object"] }, "hourlyRate": { "properties": { "amount": { - "type": "integer" + "type": ["null", "integer"] }, "currency": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] }, "id": { - "type": "string" + "type": ["null", "string"] }, "memberships": { "items": { "properties": { "costRate": { - "type": "null" + "type": ["null"] }, "hourlyRate": { "anyOf": [ @@ -106,67 +107,67 @@ { "properties": { "amount": { - "type": "integer" + "type": ["null", "integer"] }, "currency": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] } ] }, "membershipStatus": { - "type": "string" + "type": ["null", "string"] }, "membershipType": { - "type": "string" + "type": ["null", "string"] }, "targetId": { - "type": "string" + "type": ["null", "string"] }, "userId": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] }, - "type": "array" + "type": ["null", "array"] }, "name": { - "type": "string" + "type": ["null", "string"] }, "note": { - "type": "string" + "type": ["null", "string"] }, "public": { - "type": "boolean" + "type": ["null", "boolean"] }, "template": { - "type": "boolean" + "type": ["null", "boolean"] }, "timeEstimate": { "properties": { "active": { - "type": "boolean" + "type": ["null", "boolean"] }, "estimate": { - "type": "string" + "type": ["null", "string"] }, "includeNonBillable": { - "type": "boolean" + "type": ["null", "boolean"] }, "resetOption": { "type": ["null", "string"] }, "type": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] }, "workspaceId": { - "type": "string" + "type": ["null", "string"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tags.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tags.json index 75b53dd8cfea..cbef1bec6b9a 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tags.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tags.json @@ -1,17 +1,18 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, "properties": { "archived": { - "type": "boolean" + "type": ["null", "boolean"] }, "id": { - "type": "string" + "type": ["null", "string"] }, "name": { - "type": "string" + "type": ["null", "string"] }, "workspaceId": { - "type": "string" + "type": ["null", "string"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tasks.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tasks.json index 441785586cce..df6eef85a5e3 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tasks.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/tasks.json @@ -1,17 +1,18 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, "properties": { "assigneeId": { "type": ["null", "string"] }, "assigneeIds": { "items": { - "type": "string" + "type": ["null", "string"] }, - "type": "array" + "type": ["null", "array"] }, "billable": { - "type": "boolean" + "type": ["null", "boolean"] }, "costRate": { "anyOf": [ @@ -30,7 +31,7 @@ "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] } ] }, @@ -38,7 +39,7 @@ "type": ["null", "string"] }, "estimate": { - "type": "string" + "type": ["null", "string"] }, "hourlyRate": { "anyOf": [ @@ -48,30 +49,30 @@ { "properties": { "amount": { - "type": "integer" + "type": ["null", "integer"] }, "currency": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] } ] }, "id": { - "type": "string" + "type": ["null", "string"] }, "name": { - "type": "string" + "type": ["null", "string"] }, "projectId": { - "type": "string" + "type": ["null", "string"] }, "status": { - "type": "string" + "type": ["null", "string"] }, "userGroupIds": { - "type": "array" + "type": ["null", "array"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/time_entries.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/time_entries.json index 8fb163736583..4dbcabeabad3 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/time_entries.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/time_entries.json @@ -1,20 +1,21 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, "properties": { "billable": { - "type": "boolean" + "type": ["null", "boolean"] }, "customFieldValues": { - "type": "array" + "type": ["null", "array"] }, "description": { - "type": "string" + "type": ["null", "string"] }, "id": { - "type": "string" + "type": ["null", "string"] }, "isLocked": { - "type": "boolean" + "type": ["null", "boolean"] }, "kioskId": { "type": ["null", "string"] @@ -29,9 +30,9 @@ }, { "items": { - "type": "string" + "type": ["null", "string"] }, - "type": "array" + "type": ["null", "array"] } ] }, @@ -41,25 +42,25 @@ "timeInterval": { "properties": { "duration": { - "type": "string" + "type": ["null", "string"] }, "end": { - "type": "string" + "type": ["null", "string"] }, "start": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] }, "type": { - "type": "string" + "type": ["null", "string"] }, "userId": { - "type": "string" + "type": ["null", "string"] }, "workspaceId": { - "type": "string" + "type": ["null", "string"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/user_groups.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/user_groups.json index f7ffaae51e6b..7e51183f8b1e 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/user_groups.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/user_groups.json @@ -1,20 +1,21 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, "properties": { "id": { - "type": "string" + "type": ["null", "string"] }, "name": { - "type": "string" + "type": ["null", "string"] }, "userIds": { "items": { - "type": "string" + "type": ["null", "string"] }, - "type": "array" + "type": ["null", "array"] }, "workspaceId": { - "type": "string" + "type": ["null", "string"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/users.json b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/users.json index 7d3d6d27cbd7..02e2a5d31bcb 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/users.json +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/schemas/users.json @@ -1,132 +1,133 @@ { - "$schema": "http://json-schema.org/schema#", + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": true, "properties": { "activeWorkspace": { - "type": "string" + "type": ["null", "string"] }, "customFields": { - "type": "array" + "type": ["null", "array"] }, "defaultWorkspace": { - "type": "string" + "type": ["null", "string"] }, "email": { - "type": "string" + "type": ["null", "string"] }, "id": { - "type": "string" + "type": ["null", "string"] }, "memberships": { - "type": "array" + "type": ["null", "array"] }, "name": { - "type": "string" + "type": ["null", "string"] }, "profilePicture": { - "type": "string" + "type": ["null", "string"] }, "settings": { "properties": { "alerts": { - "type": "boolean" + "type": ["null", "boolean"] }, "approval": { - "type": "boolean" + "type": ["null", "boolean"] }, "collapseAllProjectLists": { - "type": "boolean" + "type": ["null", "boolean"] }, "dashboardPinToTop": { - "type": "boolean" + "type": ["null", "boolean"] }, "dashboardSelection": { - "type": "string" + "type": ["null", "string"] }, "dashboardViewType": { - "type": "string" + "type": ["null", "string"] }, "dateFormat": { - "type": "string" + "type": ["null", "string"] }, "groupSimilarEntriesDisabled": { - "type": "boolean" + "type": ["null", "boolean"] }, "isCompactViewOn": { - "type": "boolean" + "type": ["null", "boolean"] }, "lang": { - "type": "string" + "type": ["null", "string"] }, "longRunning": { - "type": "boolean" + "type": ["null", "boolean"] }, "multiFactorEnabled": { - "type": "boolean" + "type": ["null", "boolean"] }, "myStartOfDay": { - "type": "string" + "type": ["null", "string"] }, "onboarding": { - "type": "boolean" + "type": ["null", "boolean"] }, "projectListCollapse": { - "type": "integer" + "type": ["null", "integer"] }, "projectPickerTaskFilter": { - "type": "boolean" + "type": ["null", "boolean"] }, "pto": { - "type": "boolean" + "type": ["null", "boolean"] }, "reminders": { - "type": "boolean" + "type": ["null", "boolean"] }, "scheduledReports": { - "type": "boolean" + "type": ["null", "boolean"] }, "scheduling": { - "type": "boolean" + "type": ["null", "boolean"] }, "sendNewsletter": { - "type": "boolean" + "type": ["null", "boolean"] }, "showOnlyWorkingDays": { - "type": "boolean" + "type": ["null", "boolean"] }, "summaryReportSettings": { "properties": { "group": { - "type": "string" + "type": ["null", "string"] }, "subgroup": { - "type": "string" + "type": ["null", "string"] } }, - "type": "object" + "type": ["null", "object"] }, "theme": { - "type": "string" + "type": ["null", "string"] }, "timeFormat": { - "type": "string" + "type": ["null", "string"] }, "timeTrackingManual": { - "type": "boolean" + "type": ["null", "boolean"] }, "timeZone": { - "type": "string" + "type": ["null", "string"] }, "weekStart": { - "type": "string" + "type": ["null", "string"] }, "weeklyUpdates": { - "type": "boolean" + "type": ["null", "boolean"] } }, - "type": "object" + "type": ["null", "object"] }, "status": { - "type": "string" + "type": ["null", "string"] } }, "type": "object" diff --git a/airbyte-integrations/connectors/source-clockify/source_clockify/streams.py b/airbyte-integrations/connectors/source-clockify/source_clockify/streams.py index 30d2d2f8b892..f20462415943 100644 --- a/airbyte-integrations/connectors/source-clockify/source_clockify/streams.py +++ b/airbyte-integrations/connectors/source-clockify/source_clockify/streams.py @@ -31,6 +31,8 @@ def next_page_token(self, response: requests.Response) -> Optional[Mapping[str, self.page = self.page + 1 if next_page: return {"page": self.page} + else: + self.page = 1 def request_params(self, next_page_token: Mapping[str, Any] = None, **kwargs) -> MutableMapping[str, Any]: params = { diff --git a/docs/integrations/sources/clockify.md b/docs/integrations/sources/clockify.md index 67d86b5af062..ec3b68c6ee93 100644 --- a/docs/integrations/sources/clockify.md +++ b/docs/integrations/sources/clockify.md @@ -4,7 +4,8 @@ The Airbyte Source for [Clockify](https://clockify.me) ## Changelog -| Version | Date | Pull Request | Subject | -|:--------|:-----------| :------------------------------------------------------- |:--------------------------------------------------| -| 0.2.0 | 2023-06-24 | [27689](https://github.com/airbytehq/airbyte/pull/27689) | ✨ Source Clockify: Add Optional API Url parameter| -| 0.1.0 | 2022-10-26 | [17767](https://github.com/airbytehq/airbyte/pull/17767) | 🎉 New Connector: Clockify [python cdk] | \ No newline at end of file +| Version | Date | Pull Request | Subject | +| :------ | :--------- | :------------------------------------------------------- | :-------------------------------------------------------- | +| 0.2.1 | 2023-08-01 | [27881](https://github.com/airbytehq/airbyte/pull/27881) | 🐛 Source Clockify: Source Clockify: Fix pagination logic | +| 0.2.0 | 2023-08-01 | [27689](https://github.com/airbytehq/airbyte/pull/27689) | ✨ Source Clockify: Add Optional API Url parameter | +| 0.1.0 | 2022-10-26 | [17767](https://github.com/airbytehq/airbyte/pull/17767) | 🎉 New Connector: Clockify [python cdk] |