Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,33 @@
{
"extends": [
"../../../../.eslintrc.base.json"
],
"ignorePatterns": [
"!**/*"
],
"overrides": [
{
"files": [
"*.ts",
"*.tsx",
"*.js",
"*.jsx"
],
"rules": {}
},
{
"files": [
"*.ts",
"*.tsx"
],
"rules": {}
},
{
"files": [
"*.js",
"*.jsx"
],
"rules": {}
}
]
}

View File

@@ -0,0 +1,7 @@
# pieces-harvest
This library was generated with [Nx](https://nx.dev).
## Building
Run `nx build pieces-harvest` to build the library.

View File

@@ -0,0 +1,4 @@
{
"name": "@activepieces/piece-harvest",
"version": "0.0.7"
}

View File

@@ -0,0 +1,65 @@
{
"name": "pieces-harvest",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "packages/pieces/community/harvest/src",
"projectType": "library",
"release": {
"version": {
"currentVersionResolver": "git-tag",
"preserveLocalDependencyProtocols": false,
"manifestRootsToUpdate": [
"dist/{projectRoot}"
]
}
},
"tags": [],
"targets": {
"build": {
"executor": "@nx/js:tsc",
"outputs": [
"{options.outputPath}"
],
"options": {
"outputPath": "dist/packages/pieces/community/harvest",
"tsConfig": "packages/pieces/community/harvest/tsconfig.lib.json",
"packageJson": "packages/pieces/community/harvest/package.json",
"main": "packages/pieces/community/harvest/src/index.ts",
"assets": [
"packages/pieces/community/harvest/*.md",
{
"input": "packages/pieces/community/harvest/src/i18n",
"output": "./src/i18n",
"glob": "**/!(i18n.json)"
}
],
"buildableProjectDepsInPackageJsonType": "dependencies",
"updateBuildableProjectDepsInPackageJson": true
},
"dependsOn": [
"^build",
"prebuild"
]
},
"nx-release-publish": {
"options": {
"packageRoot": "dist/{projectRoot}"
}
},
"lint": {
"executor": "@nx/eslint:lint",
"outputs": [
"{options.outputFile}"
]
},
"prebuild": {
"executor": "nx:run-commands",
"options": {
"cwd": "packages/pieces/community/harvest",
"command": "bun install --no-save --silent"
},
"dependsOn": [
"^build"
]
}
}
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "Zeiterfassungs-Software mit Rechnungsstellung",
"Get Clients": "Kunden erhalten",
"Get Estimates": "Schätzung erhalten",
"Get Expenses": "Ausgaben erhalten",
"Get Invoices": "Rechnungen erhalten",
"Get Projects": "Projekte abrufen",
"Get Roles": "Rollen holen",
"Get Tasks": "Aufgaben abrufen",
"Get Time Entries": "Zeiteinträge abrufen",
"Get Users": "Get Users",
"Uninvoiced Report": "Unberechtigter Bericht",
"Custom API Call": "Eigener API-Aufruf",
"Fetches Clients": "Lädt Clients",
"Fetches Estimates": "Ruft Schätzungen ab",
"Fetches expenses": "Ruft Ausgaben ab",
"Fetches invoices": "Rechnungen abrufen",
"Fetches projects": "Lädt Projekte",
"Fetches Roles": "Rufe Rollen ab",
"Fetches Tasks": "Lädt Aufgaben",
"Fetches Time Entries": "Abruf-Zeiteinträge",
"Fetches Users": "Lädt Benutzer",
"Uninvoiced hours and expenses for all billable projects": "Unberechtigte Stunden und Ausgaben für alle abrechnungsfähigen Projekte",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Is Active": "Ist aktiv",
"Updated since": "Aktualisiert seit",
"Page": "Seite",
"Records per page": "Datensätze pro Seite",
"From": "Von",
"To": "An",
"State": "Bundesland",
"Client Id": "Client-Id",
"User Id": "Benutzer-Id",
"Project Id": "Projekt Id",
"Is Billed": "Ist abgerechnet",
"Task Id": "Task Id",
"External Reference Id": "Externe Referenz-Id",
"Is Running": "Wird ausgeführt",
"Include Fixed Fee": "Feste Gebühr einbeziehen",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Übergeben Sie `true` nur aktive Clients und `false` um inaktive Clients zurückzugeben.",
"Only return clients that have been updated since the given date and time.": "Gibt nur Clients zurück, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"DEPRECATED: The page number to use in pagination.": "DEPRECATED: Die Seitennummer, die in der Seiteneingabe verwendet werden soll.",
"The number of records to return per page. (1-2000)": "Die Anzahl der Datensätze die pro Seite zurückgegeben werden sollen. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Gibt nur Schätzungen mit einem issue_date am oder nach dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Gibt nur Schätzungen mit einem issue_date am oder vor dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Rückgabewerte nur mit einem Zustand, der dem angegebenen Wert entspricht. Optionen: Entwurf, Öffnen, akzeptiert oder abgelehnt.",
"Only return estimates that have been updated since the given date and time.": "Gibt nur Schätzungen zurück, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"Only return estimates belonging to the client with the given ID.": "Rückgabewerte, die dem Client zugeordnet sind, werden nur mit der angegebenen ID zurückgegeben.",
"The page number to use in pagination.": "Die Seitenzahl die in Seiten verwendet werden soll.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Sende nur Ausgaben mit einem spent_date am oder nach dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Sende nur Ausgaben mit einem spent_date am oder vor dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return expenses belonging to the user with the given ID.": "Nur Ausgaben des Benutzers mit der angegebenen ID zurückgeben.",
"Only return expenses belonging to the client with the given ID.": "Nur Ausgaben des Kunden mit der angegebenen ID zurückgeben.",
"Only return expenses belonging to the project with the given ID.": "Nur Ausgaben des Projekts mit der angegebenen ID zurückgeben.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Übergeben Sie `true` nur Kosten, die in Rechnung gestellt wurden, und `false` um Ausgaben zurückzugeben, die nicht in Rechnung gestellt wurden.",
"Only return expenses that have been updated since the given date and time.": "Nur Rückgabewerte, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Rücksendung von Rechnungen mit einem issue_date am oder nach dem angegebenen Datum. (JJJJ-MM-TT)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Sende nur Rechnungen mit einem issue_date am oder vor dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Sende nur Rechnungen mit einem Zustand, der dem angegebenen Wert entspricht. Optionen: Entwurf, offen, bezahlt oder geschlossen.",
"Only return invoices that have been updated since the given date and time.": "Nur Rechnungen, die seit dem angegebenen Datum und der angegebenen Uhrzeit aktualisiert wurden.",
"Only return invoices belonging to the client with the given ID.": "Nur Rechnungen des Kunden mit der angegebenen ID zurückgeben.",
"Only return invoices belonging to the project with the given ID.": "Nur Rechnungen des Projekts mit der angegebenen ID zurückgeben.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Übergeben Sie `true` um nur aktive Projekte zurückzugeben und `false` um inaktive Projekte zurückzugeben.",
"Only return projects that have been updated since the given date and time.": "Gibt nur Projekte zurück, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Übergeben Sie `true` um nur aktive Tasks und `false` zurückzugeben, um inaktive Aufgaben zurückzugeben.",
"Only return tasks that have been updated since the given date and time.": "Gibt nur Aufgaben zurück, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Gibt nur Zeiteinträge mit einem spent_date am oder nach dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Gibt nur Zeiteinträge mit einem spent_date am oder vor dem angegebenen Datum zurück. (JJJJ-MM-TT)",
"Only return time entries belonging to the user with the given ID.": "Gibt nur Zeiteinträge zurück, die dem Benutzer mit der angegebenen ID gehören.",
"Only return time entries belonging to the client with the given ID.": "Gibt nur Zeiteinträge zurück, die dem Client mit der angegebenen ID gehören.",
"Only return time entries belonging to the project with the given ID.": "Liefert nur Zeiteinträge aus dem Projekt mit der angegebenen ID.",
"Only return time entries belonging to the task with the given ID.": "Gibt nur Zeiteinträge zurück, die der Aufgabe mit der angegebenen ID zugeordnet sind.",
"Only return time entries with the given external reference ID.": "Gibt nur Zeiteinträge mit der angegebenen externen Referenz-ID zurück.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Übergeben Sie `true` nur Zeiteinträge, die in Rechnung gestellt wurden, und `false` um nicht in Rechnung gestellte Zeiteinträge zurückzugeben.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Übergeben Sie `true` um nur laufende Zeiteinträge und `false` zurückzugeben, um nicht-laufende Zeiteinträge zurückzugeben.",
"Only return time entries that have been updated since the given date and time.": "Gibt nur Zeiteinträge zurück, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"Pass `true` to only return active users and `false` to return inactive users.": "Übergeben Sie `true` nur aktive Benutzer und `false` um inaktive Benutzer zurückzugeben.",
"Only return users that have been updated since the given date and time.": "Gibt nur Benutzer zurück, die seit dem angegebenen Datum und der angegebenen Zeit aktualisiert wurden.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Melde nur über Zeiteinträge und Ausgaben mit einem spent_date am oder nach dem angegebenen Datum. (JJJJ-MM-TD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Melde nur über Zeiteinträge und Ausgaben mit einem spent_date am oder vor dem angegebenen Datum. (JJJJ-MM-TD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Ob fixe Projekte in die Antwort aufgenommen werden sollen oder nicht. (Standard: true)",
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "Software de seguimiento de tiempo con facturas",
"Get Clients": "Obtener clientes",
"Get Estimates": "Obtener estimaciones",
"Get Expenses": "Obtener gastos",
"Get Invoices": "Obtener facturas",
"Get Projects": "Obtener Proyectos",
"Get Roles": "Obtener roles",
"Get Tasks": "Obtener Tareas",
"Get Time Entries": "Obtener entradas de tiempo",
"Get Users": "Get Users",
"Uninvoiced Report": "Informe no facturado",
"Custom API Call": "Llamada API personalizada",
"Fetches Clients": "Recuperar clientes",
"Fetches Estimates": "Estimados de obtenciones",
"Fetches expenses": "Recuperar gastos",
"Fetches invoices": "Obtener facturas",
"Fetches projects": "Obtener proyectos",
"Fetches Roles": "Obtener Rol",
"Fetches Tasks": "Recuperar tareas",
"Fetches Time Entries": "Obtiene entradas de tiempo",
"Fetches Users": "Obtener usuarios",
"Uninvoiced hours and expenses for all billable projects": "Horas y gastos no facturados para todos los proyectos facturables",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Is Active": "Está activo",
"Updated since": "Actualizado desde",
"Page": "Pgina",
"Records per page": "Registros por página",
"From": "De",
"To": "A",
"State": "Estado",
"Client Id": "Id del cliente",
"User Id": "Id de Usuario",
"Project Id": "Id del proyecto",
"Is Billed": "Es facturado",
"Task Id": "Task Id",
"External Reference Id": "Id de referencia externa",
"Is Running": "Está en ejecución",
"Include Fixed Fee": "Incluye tarifa fija",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Pasa `true` para devolver clientes activos y `false` para devolver clientes inactivos.",
"Only return clients that have been updated since the given date and time.": "Sólo devuelve clientes que han sido actualizados desde la fecha y hora dadas.",
"DEPRECATED: The page number to use in pagination.": "DEPRECADO: El número de página a utilizar en la paginación.",
"The number of records to return per page. (1-2000)": "El número de registros a devolver por página. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Devolver estimaciones con un issue_date en o después de la fecha dada. (AAA-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Devolver estimaciones con un issue_date el o antes de la fecha dada. (AAA-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Devuelve sólo estimaciones con un estado que coincida con el valor proporcionado. Opciones: borrador, abierto, aceptado o declinado.",
"Only return estimates that have been updated since the given date and time.": "Sólo devolver estimaciones que han sido actualizadas desde la fecha y hora dadas.",
"Only return estimates belonging to the client with the given ID.": "Sólo devolver estimaciones pertenecientes al cliente con el ID dado.",
"The page number to use in pagination.": "El número de página a utilizar en la paginación.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Sólo los gastos de devolución con una fecha pasada o posterior a la fecha dada. (AAAA-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Sólo los gastos de devolución con una fecha pasada o antes de la fecha dada. (AAAA-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "Sólo los gastos de devolución pertenecientes al usuario con el ID proporcionado.",
"Only return expenses belonging to the client with the given ID.": "Sólo los gastos de devolución pertenecientes al cliente con el ID proporcionado.",
"Only return expenses belonging to the project with the given ID.": "Sólo devolver los gastos pertenecientes al proyecto con el ID dado.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Pasar `true` para sólo devolver los gastos que han sido facturados y `falso` para devolver los gastos que no han sido facturados.",
"Only return expenses that have been updated since the given date and time.": "Sólo los gastos de devolución que han sido actualizados desde la fecha y hora dadas.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Devolver sólo facturas con un issue_date en o después de la fecha dada. (AAA-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Devolver sólo facturas con un issue_date el o antes de la fecha dada. (AAA-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Devuelve sólo facturas con un estado que coincida con el valor proporcionado. Opciones: borrador, abierto, pagado o cerrado.",
"Only return invoices that have been updated since the given date and time.": "Sólo devuelve facturas que han sido actualizadas desde la fecha y hora dadas.",
"Only return invoices belonging to the client with the given ID.": "Sólo devuelve facturas pertenecientes al cliente con el ID dado.",
"Only return invoices belonging to the project with the given ID.": "Devolver sólo facturas pertenecientes al proyecto con el ID dado.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Pasa `true` para devolver sólo proyectos activos y `false` para devolver proyectos inactivos.",
"Only return projects that have been updated since the given date and time.": "Devuelve únicamente proyectos que han sido actualizados desde la fecha y hora dadas.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Pase `true` para devolver sólo tareas activas y `false` para devolver tareas inactivas.",
"Only return tasks that have been updated since the given date and time.": "Devuelve sólo las tareas que han sido actualizadas desde la fecha y hora dadas.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Sólo entradas de tiempo de retorno con una fecha pasada o posterior a la fecha dada. (AAA-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Sólo las entradas de tiempo de retorno con una fecha pasada o antes de la fecha dada. (AAA-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "Devuelve sólo entradas de tiempo pertenecientes al usuario con el ID dado.",
"Only return time entries belonging to the client with the given ID.": "Sólo las entradas de tiempo de retorno pertenecientes al cliente con el ID dado.",
"Only return time entries belonging to the project with the given ID.": "Devuelve sólo entradas de tiempo pertenecientes al proyecto con el ID dado.",
"Only return time entries belonging to the task with the given ID.": "Devuelve sólo entradas de tiempo pertenecientes a la tarea con el ID dado.",
"Only return time entries with the given external reference ID.": "Sólo las entradas de tiempo de retorno con el ID de referencia externo dado.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Pasa `true` para sólo devolver entradas de tiempo que han sido facturadas y `false` para devolver entradas de tiempo que no han sido facturadas.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Pasa `true` para devolver sólo entradas de tiempo en ejecución y `false` para devolver entradas de tiempo que no funcionan.",
"Only return time entries that have been updated since the given date and time.": "Sólo las entradas de tiempo de retorno que han sido actualizadas desde la fecha y hora dadas.",
"Pass `true` to only return active users and `false` to return inactive users.": "Pase `true` para devolver sólo usuarios activos y `false` para devolver usuarios inactivos.",
"Only return users that have been updated since the given date and time.": "Devuelve sólo los usuarios que han sido actualizados desde la fecha y hora dadas.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Sólo reporte sobre entradas de tiempo y gastos con una fecha pasada o posterior a la fecha dada. (AAA-MM-DD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Solo reporte sobre entradas de tiempo y gastos con una fecha pasada o antes de la fecha dada. (AAAA-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Si incluir o no proyectos de tarifa fija en la respuesta. (por defecto: verdadero)",
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "Logiciel de suivi du temps avec facturation",
"Get Clients": "Obtenir des clients",
"Get Estimates": "Obtenir un devis",
"Get Expenses": "Obtenir les dépenses",
"Get Invoices": "Obtenir les factures",
"Get Projects": "Obtenir des projets",
"Get Roles": "Obtenir des Rôles",
"Get Tasks": "Obtenir des tâches",
"Get Time Entries": "Obtenir des entrées de temps",
"Get Users": "Get Users",
"Uninvoiced Report": "Rapport non facturé",
"Custom API Call": "Appel API personnalisé",
"Fetches Clients": "Récupérer les clients",
"Fetches Estimates": "Récupérer les estimations",
"Fetches expenses": "Récupère les dépenses",
"Fetches invoices": "Récupère les factures",
"Fetches projects": "Récupère les projets",
"Fetches Roles": "Récupérer les rôles",
"Fetches Tasks": "Récupérer les tâches",
"Fetches Time Entries": "Récupère les entrées de temps",
"Fetches Users": "Récupérer les utilisateurs",
"Uninvoiced hours and expenses for all billable projects": "Heures et dépenses non facturées pour tous les projets facturables",
"Make a custom API call to a specific endpoint": "Passez un appel API personnalisé à un point de terminaison spécifique",
"Is Active": "Est actif",
"Updated since": "Mis à jour depuis",
"Page": "Page",
"Records per page": "Enregistrements par page",
"From": "A partir de",
"To": "À",
"State": "État",
"Client Id": "Id du client",
"User Id": "Identifiant de l'utilisateur",
"Project Id": "Id du projet",
"Is Billed": "Facturé",
"Task Id": "Task Id",
"External Reference Id": "Id de référence externe",
"Is Running": "Est en cours d'exécution",
"Include Fixed Fee": "Inclure les frais fixes",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'attente (en secondes)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Passez `true` pour ne retourner que les clients actifs et `false` pour retourner les clients inactifs.",
"Only return clients that have been updated since the given date and time.": "Renvoyer uniquement les clients qui ont été mis à jour depuis la date et l'heure indiquée.",
"DEPRECATED: The page number to use in pagination.": "DÉPRÉCIÉ : Le numéro de page à utiliser dans la pagination.",
"The number of records to return per page. (1-2000)": "Le nombre d'enregistrements à retourner par page. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Renvoie uniquement les estimations avec une date d'émission le ou après la date donnée. (AAAA-MM-JJ)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Renvoie uniquement les estimations avec une date d'émission à ou avant la date donnée. (AAAA-MM-JJ)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Retourne uniquement les estimations avec un état correspondant à la valeur fournie. Options: brouillon, ouvert, accepté ou refusé.",
"Only return estimates that have been updated since the given date and time.": "Retourne uniquement les estimations qui ont été mises à jour depuis la date et l'heure indiquée.",
"Only return estimates belonging to the client with the given ID.": "Renvoie uniquement les devis appartenant au client avec l'identifiant fourni.",
"The page number to use in pagination.": "Le numéro de page à utiliser dans la pagination.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Uniquement les dépenses de retour avec une date passée ou après la date donnée. (AAAA-MM-JJ)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Uniquement les dépenses de retour avec une date passée au plus tard à la date donnée. (AAAA-MM-JJJ)",
"Only return expenses belonging to the user with the given ID.": "Renvoyer uniquement les dépenses appartenant à l'utilisateur avec l'ID donné.",
"Only return expenses belonging to the client with the given ID.": "Uniquement les frais de retour appartenant au client avec l'ID fourni.",
"Only return expenses belonging to the project with the given ID.": "Renvoyer uniquement les dépenses appartenant au projet avec l'ID fourni.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Passez `true` pour ne retourner que les dépenses qui ont été facturées et `false` pour retourner les dépenses qui n'ont pas été facturées.",
"Only return expenses that have been updated since the given date and time.": "Seules les dépenses de retour qui ont été mises à jour depuis la date et l'heure indiquées.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Renvoie uniquement les factures avec une date d'émission le ou après la date donnée. (AAAAA-MM-JJ)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Renvoie uniquement les factures avec une date d'émission au plus tard à la date donnée. (AAAA-MM-JJJ)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Seulement renvoyer les factures avec un état correspondant à la valeur fournie. Options: brouillon, ouvert, payé ou fermé.",
"Only return invoices that have been updated since the given date and time.": "Seulement les factures retournées qui ont été mises à jour depuis la date et l'heure indiquées.",
"Only return invoices belonging to the client with the given ID.": "Renvoyer uniquement les factures appartenant au client avec l'ID donné.",
"Only return invoices belonging to the project with the given ID.": "Renvoie uniquement les factures appartenant au projet avec l'ID fourni.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Passez `true` pour ne retourner que les projets actifs et `false` pour revenir aux projets inactifs.",
"Only return projects that have been updated since the given date and time.": "Ne retourne que les projets qui ont été mis à jour depuis la date et l'heure indiquées.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Passez `true` pour ne retourner que les tâches actives et `false` pour retourner les tâches inactives.",
"Only return tasks that have been updated since the given date and time.": "Renvoyer uniquement les tâches qui ont été mises à jour depuis la date et l'heure indiquée.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Renvoie uniquement les entrées temporelles avec une date spent_à ou après la date donnée. (AAAA-MM-JJ)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Renvoie uniquement les entrées temporelles avec une date spent_à ou avant la date donnée. (AAAAA-MM-JJ)",
"Only return time entries belonging to the user with the given ID.": "Renvoyer uniquement les entrées de temps appartenant à l'utilisateur avec l'ID donné.",
"Only return time entries belonging to the client with the given ID.": "Renvoie uniquement les entrées de temps appartenant au client avec l'ID donné.",
"Only return time entries belonging to the project with the given ID.": "Renvoie uniquement les entrées de temps appartenant au projet avec l'ID donné.",
"Only return time entries belonging to the task with the given ID.": "Renvoie uniquement les entrées de temps appartenant à la tâche avec l'ID donné.",
"Only return time entries with the given external reference ID.": "Renvoie uniquement les entrées de temps avec l'identifiant de référence externe donné.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Passez `true` pour ne retourner que les entrées de temps qui ont été facturées et `false` pour retourner les entrées de temps qui n'ont pas été facturées.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Passez `true` pour ne retourner que des entrées de temps en cours d'exécution et `false` pour retourner des entrées de temps non exécutées.",
"Only return time entries that have been updated since the given date and time.": "Ne retourne que les entrées temporelles qui ont été mises à jour depuis la date et l'heure indiquée.",
"Pass `true` to only return active users and `false` to return inactive users.": "Passez `true` pour ne retourner que les utilisateurs actifs et `false` pour retourner les utilisateurs inactifs.",
"Only return users that have been updated since the given date and time.": "Renvoyer uniquement les utilisateurs qui ont été mis à jour depuis la date et l'heure indiquée.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Ne rapporte que sur les entrées de temps et les dépenses avec une date passée ou après la date donnée. (AAAAA-MM-JJ)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Ne rapporte que sur les entrées de temps et les dépenses avec une date passée ou avant la date donnée. (AAAAA-MM-JJ)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Inclure ou non des projets à frais fixes dans la réponse. (par défaut: true)",
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
"GET": "OBTENIR",
"POST": "POSTER",
"PATCH": "PATCH",
"PUT": "EFFACER",
"DELETE": "SUPPRIMER",
"HEAD": "TÊTE"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "請求書発行時のタイムトラッキングソフトウェア",
"Get Clients": "クライアントを取得する",
"Get Estimates": "見積もりを取得",
"Get Expenses": "経費の取得",
"Get Invoices": "請求書を取得",
"Get Projects": "プロジェクトを取得",
"Get Roles": "ロールの取得",
"Get Tasks": "タスクを取得する",
"Get Time Entries": "タイムエントリーを取得",
"Get Users": "Get Users",
"Uninvoiced Report": "未請求レポート",
"Custom API Call": "カスタムAPI通話",
"Fetches Clients": "クライアントをFetches",
"Fetches Estimates": "Fetches Estimate",
"Fetches expenses": "費用を取得します。",
"Fetches invoices": "請求書の取得",
"Fetches projects": "プロジェクトをフェッチします",
"Fetches Roles": "ロールをフェッチします。",
"Fetches Tasks": "タスクをフェッチします",
"Fetches Time Entries": "時間エントリーをフェッチします。",
"Fetches Users": "ユーザーをfetches",
"Uninvoiced hours and expenses for all billable projects": "請求されていない全てのプロジェクトの時間と費用",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Is Active": "有効です",
"Updated since": "以降に更新",
"Page": "ページ",
"Records per page": "ページごとのレコード",
"From": "差出人:",
"To": "終了日",
"State": "都道府県:",
"Client Id": "クライアント ID",
"User Id": "ユーザー ID",
"Project Id": "プロジェクトID",
"Is Billed": "お支払い済み",
"Task Id": "Task Id",
"External Reference Id": "外部参照ID",
"Is Running": "実行中です",
"Include Fixed Fee": "固定手数料を含める",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "アクティブなクライアントのみに`true`を、非アクティブなクライアントを返すには`false`を渡します。",
"Only return clients that have been updated since the given date and time.": "指定された日時以降に更新されたクライアントのみを返します。",
"DEPRECATED: The page number to use in pagination.": "DEPRECATED: ページネーションで使用するページ番号。",
"The number of records to return per page. (1-2000)": "1ページあたりのレコード数。(1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "指定された日付以降の issue_date のみを返します。(YYYY-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "指定された日付以前の issue_date のみを返します。(YYYY-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "指定された値に一致する状態の見積もりのみを返します。Options: draft, open, accepted, or declined.",
"Only return estimates that have been updated since the given date and time.": "指定された日付と時刻以降に更新された見積もりのみを返します。",
"Only return estimates belonging to the client with the given ID.": "指定されたIDを持つクライアントに属する推定値のみを返します。",
"The page number to use in pagination.": "ページネーションで使用するページ番号。",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "指定された日付以降にspent_date のみを返却します。(YYYY-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "指定された日付以前の spent_date のみを返却します。(YYYY-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "指定されたIDを持つユーザーに属する費用のみを返します。",
"Only return expenses belonging to the client with the given ID.": "指定されたIDを持つクライアントに属する費用のみを返します。",
"Only return expenses belonging to the project with the given ID.": "指定したIDを持つプロジェクトに属する費用のみを返却します。",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "請求されていない費用を返却するには、 `true` と `false` のみに渡します。",
"Only return expenses that have been updated since the given date and time.": "指定された日時以降に更新された返品費用のみ。",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "指定された日付以降に発行日付の請求書のみを返します。(YYYY-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "指定された日付以前のIssue_date の請求書のみを返します。(YYYY-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "指定された値に一致する状態の請求書のみを返します。オプション:ドラフト、開いて、支払い済み、またはクローズ。",
"Only return invoices that have been updated since the given date and time.": "指定された日時以降に更新された請求書のみを返します。",
"Only return invoices belonging to the client with the given ID.": "指定されたIDを持つクライアントに属する請求書のみを返します。",
"Only return invoices belonging to the project with the given ID.": "指定されたIDを持つプロジェクトに属する請求書のみ返却します。",
"Pass `true` to only return active projects and `false` to return inactive projects.": "アクティブなプロジェクトのみに「true」を返し、無効なプロジェクトを返すには「false」を返します。",
"Only return projects that have been updated since the given date and time.": "指定された日時以降に更新されたプロジェクトのみを返します。",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "アクティブなタスクのみに「true」を返し、非アクティブなタスクを返すには「false」を返します。",
"Only return tasks that have been updated since the given date and time.": "指定された日時以降に更新されたタスクのみを返します。",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "指定した日付以降にspent_date を持つタイムエントリのみを返します(YYYY-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "指定された日付以前の spent_date のみを返します。 (YYYY-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "指定したIDを持つユーザーに属するタイムエントリのみを返します。",
"Only return time entries belonging to the client with the given ID.": "指定された ID を持つクライアントに属するタイムエントリのみを返します。",
"Only return time entries belonging to the project with the given ID.": "指定された ID を持つプロジェクトに属するタイムエントリのみを返します。",
"Only return time entries belonging to the task with the given ID.": "指定したIDを持つタスクに属するタイムエントリのみを返します。",
"Only return time entries with the given external reference ID.": "指定された外部参照IDを持つタイムエントリのみを返します。",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "請求済みの時間エントリのみに `true` を渡し、請求されていない時間エントリを返すには `false` を渡します。",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "`true` を実行中のタイムエントリのみに渡し、実行中のタイムエントリを返すには `false` を渡します。",
"Only return time entries that have been updated since the given date and time.": "指定された日時以降に更新されたタイムエントリのみを返します。",
"Pass `true` to only return active users and `false` to return inactive users.": "アクティブなユーザーのみに「true」を、非アクティブなユーザーを返すには「false」を渡します。",
"Only return users that have been updated since the given date and time.": "指定された日時以降に更新されたユーザーのみを返します。",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "指定された日付以降のspent_date付きのタイムエントリと経費に関するレポートのみYYYY-MM-DD",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "指定された日付以前の spent_date のみタイムエントリと経費に関するレポートを作成します (YYYY-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "回答に固定料金のプロジェクトを含めるかどうか。(デフォルト: true)",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "TijdsTracking Software met facturering",
"Get Clients": "Klanten ophalen",
"Get Estimates": "Krijg Offertes",
"Get Expenses": "Kosten ophalen",
"Get Invoices": "Facturen ophalen",
"Get Projects": "Ophalen projecten",
"Get Roles": "Rollen ophalen",
"Get Tasks": "Taken opvragen",
"Get Time Entries": "Tijdsinvoer verkrijgen",
"Get Users": "Get Users",
"Uninvoiced Report": "Niet gefactureerd rapport",
"Custom API Call": "Custom API Call",
"Fetches Clients": "Haalt Clienten",
"Fetches Estimates": "Haalt Offertes",
"Fetches expenses": "Ontvangt uitgaven",
"Fetches invoices": "Facturen ophalen",
"Fetches projects": "Projecten ophalen",
"Fetches Roles": "Rollen ophalen",
"Fetches Tasks": "Taken ophalen",
"Fetches Time Entries": "Ophalen van tijdinvoer",
"Fetches Users": "Haalt gebruikers",
"Uninvoiced hours and expenses for all billable projects": "Ongefactureerde uren en uitgaven voor alle factureerbare projecten",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Is Active": "Is actief",
"Updated since": "Bijgewerkt sinds",
"Page": "Pagina",
"Records per page": "Records per pagina",
"From": "van",
"To": "tot",
"State": "Provincie",
"Client Id": "Klant ID",
"User Id": "Gebruikers ID",
"Project Id": "Project ID",
"Is Billed": "Is gefactureerd",
"Task Id": "Task Id",
"External Reference Id": "Externe referentie Id",
"Is Running": "Wordt uitgevoerd",
"Include Fixed Fee": "Vaste vergoeding meenemen",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Geef `true` door om alleen actieve cliënten en `false` terug te geven om inactieve cliënten te retourneren.",
"Only return clients that have been updated since the given date and time.": "Alleen klanten die zijn bijgewerkt sinds de opgegeven datum en tijd retourneren.",
"DEPRECATED: The page number to use in pagination.": "DEPRECATED: Het te gebruiken paginanummer.",
"The number of records to return per page. (1-2000)": "Het aantal records dat per pagina moet worden geretourneerd (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Alleen ramingen retourneren met een issue_date op of na de aangegeven datum. (YYYY-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Alleen ramingen retourneren met een issue_date op of voor de aangegeven datum. (YYYY-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Retourneer alleen schattingen met een staat die overeenkomt met de opgegeven waarde. Opties: ontwerp, open, geaccepteerd, of afgewezen.",
"Only return estimates that have been updated since the given date and time.": "Reageert alleen schattingen terug die zijn bijgewerkt sinds de opgegeven datum en tijd.",
"Only return estimates belonging to the client with the given ID.": "Geeft alleen schattingen van de client terug met het opgegeven ID.",
"The page number to use in pagination.": "Het paginanummer dat moet worden gebruikt in paginering.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Retourneer alleen uitgaven met een spent_date op of na een bepaalde datum. (YYYY-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Retourneer alleen uitgaven met een spent_date op of voor de aangegeven datum. (YY-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "Retourneer alleen uitgaven van de gebruiker met het opgegeven ID.",
"Only return expenses belonging to the client with the given ID.": "Geef alleen uitgaven terug die bij de client horen met het opgegeven ID.",
"Only return expenses belonging to the project with the given ID.": "Retourneert alleen uitgaven die bij het project horen met het opgegeven ID.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Geef de 'waar' alleen de kosten door die gefactureerd zijn en 'onwaar' om uitgaven terug te geven die nog niet gefactureerd zijn.",
"Only return expenses that have been updated since the given date and time.": "Retourneer alleen de uitgaven die zijn bijgewerkt sinds de gegeven datum en tijd.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Alleen facturen retourneren met een issue_date op of na de aangegeven datum. (YYYY-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Alleen facturen retourneren met een issue_date op of voor de aangegeven datum. (YYYY-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Alleen facturen retourneren met een staat die overeenkomt met de opgegeven waarde. Opties: ontwerp, open, betaald of gesloten.",
"Only return invoices that have been updated since the given date and time.": "Alleen facturen die zijn bijgewerkt sinds de gegeven datum en tijd retourneren.",
"Only return invoices belonging to the client with the given ID.": "Alleen facturen van de client retourneren met het opgegeven ID.",
"Only return invoices belonging to the project with the given ID.": "Alleen facturen die tot het project behoren met het opgegeven ID retourneren.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Geef `true` door om alleen actieve projecten en `false` te retourneren van inactieve projecten.",
"Only return projects that have been updated since the given date and time.": "Alleen projecten die zijn bijgewerkt sinds de opgegeven datum en tijd retourneren.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Geef 'waar' alleen actieve taken en 'onwaar' om inactieve taken terug te geven.",
"Only return tasks that have been updated since the given date and time.": "Alleen geeft taken terug die zijn bijgewerkt sinds de opgegeven datum en tijd.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Geef alleen een tijdsvermelding met een spent_date op of na een bepaalde datum. (YYYY-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Geef alleen een tijdsvermelding weer met een spent_date op of vóór de aangegeven datum. (YYYY-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "Geef alleen tijdregistraties die tot de gebruiker behoren met het opgegeven ID.",
"Only return time entries belonging to the client with the given ID.": "Geef alleen tijdregistraties die bij de client horen met het opgegeven ID.",
"Only return time entries belonging to the project with the given ID.": "Geef alleen de tijdregistraties die bij het project horen met de opgegeven ID.",
"Only return time entries belonging to the task with the given ID.": "Geef alleen tijdregistraties die tot de taak behoren met het opgegeven ID.",
"Only return time entries with the given external reference ID.": "Retourneer alleen tijdregistraties met het gegeven externe referentie-ID.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Geef 'waar' alleen de tijd weer die gefactureerd is en 'onwaar' om tijd items te geven die niet gefactureerd zijn.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Geef 'waar' aan om alleen de lopende tijd items en 'onwaar' terug te geven om niet-actieve tijd items te retourneren.",
"Only return time entries that have been updated since the given date and time.": "Alleen tijdregistraties die zijn bijgewerkt sinds de opgegeven datum en tijd retourneren.",
"Pass `true` to only return active users and `false` to return inactive users.": "Geef 'true' door alleen actieve gebruikers en 'false' terug te geven om inactieve gebruikers te retourneren.",
"Only return users that have been updated since the given date and time.": "Alleen gebruikers die zijn bijgewerkt sinds de opgegeven datum en tijd retourneren.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Rapporteer alleen op tijd en uitgaven met een spent_date op of na de aangegeven datum. (YYYY-MM-DD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Rapporteer alleen op tijd en uitgaven met een spent_date op of voor de aangegeven datum. (YYYY-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Of projecten met vaste kosten wel of niet in de reactie moeten worden opgenomen. (standaard: waar)",
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "Software de rastreamento de tempo com faturamento",
"Get Clients": "Obter Clientes",
"Get Estimates": "Obter Estimativas",
"Get Expenses": "Obter Despesas",
"Get Invoices": "Obter Faturas",
"Get Projects": "Obter projetos",
"Get Roles": "Obter funções",
"Get Tasks": "Obter tarefas",
"Get Time Entries": "Obter Lançamentos de Tempo",
"Get Users": "Get Users",
"Uninvoiced Report": "Relatório Não Faturado",
"Custom API Call": "Chamada de API personalizada",
"Fetches Clients": "Recupera Clientes",
"Fetches Estimates": "Busca Estimativas",
"Fetches expenses": "Recupera despesas",
"Fetches invoices": "Obter faturas",
"Fetches projects": "Busca projetos",
"Fetches Roles": "Recupera Funções",
"Fetches Tasks": "Busca tarefas",
"Fetches Time Entries": "Obtém entradas de tempo",
"Fetches Users": "Busca de Usuários",
"Uninvoiced hours and expenses for all billable projects": "Horas não faturadas e despesas para todos os projetos faturáveis",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Is Active": "Está ativo",
"Updated since": "Atualizado desde",
"Page": "Página",
"Records per page": "Registros por página",
"From": "De",
"To": "Para",
"State": "Estado:",
"Client Id": "Id do Cliente",
"User Id": "Identificação do Usuário",
"Project Id": "Id do Projeto",
"Is Billed": "Está Faturado",
"Task Id": "Task Id",
"External Reference Id": "ID de Referência Externa",
"Is Running": "Está sendo executado",
"Include Fixed Fee": "Incluir taxa fixa",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Passar 'true' para retornar somente clientes ativos e 'false' para retornar clientes inativos.",
"Only return clients that have been updated since the given date and time.": "Somente clientes de retorno que tenham sido atualizados desde a data e hora fornecidas.",
"DEPRECATED: The page number to use in pagination.": "OBSERVADO: O número de página a ser usado na paginação.",
"The number of records to return per page. (1-2000)": "O número de registros a serem retornados por página. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Retornar apenas estimativas com uma issue_date em ou após a data indicada. (AAAA-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Retornar apenas estimativas com uma issue_date dentro ou antes da data especificada. (AAAA-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Somente estimativas de retorno com um estado correspondente ao valor fornecido. Opções: rascunho, aberto, aceito ou recusado.",
"Only return estimates that have been updated since the given date and time.": "Somente estimativas de retorno que foram atualizadas desde a data e hora indicados.",
"Only return estimates belonging to the client with the given ID.": "Retornar somente estimativas pertencentes ao cliente com o ID fornecido.",
"The page number to use in pagination.": "O número da página a usar na paginação.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Despesas de devolução somente com uma data_de gasto na ou após a data especificada. (AAAA-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Despesas de devolução somente com uma data_de gasto na ou antes da data especificada. (AAAA-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "Somente as despesas que pertencem ao usuário com o ID fornecido.",
"Only return expenses belonging to the client with the given ID.": "Somente as despesas pertencentes ao cliente com o ID fornecido.",
"Only return expenses belonging to the project with the given ID.": "Apenas despesas de devolução pertencentes ao projeto com o ID fornecido.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Passa `true` para apenas devolver despesas que foram faturadas e `false` para devolver despesas que não foram faturadas.",
"Only return expenses that have been updated since the given date and time.": "Apenas as despesas de devolução que foram atualizadas desde a data e hora especificadas.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Retornar somente faturas com uma issue_date em ou após a data indicada. (AAAA-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Retornar somente faturas com uma issue_date dentro ou antes da data indicada. (AAAA-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Retornar apenas faturas com um estado correspondente ao valor fornecido. Opções: rascunho, aberto, pago ou fechado.",
"Only return invoices that have been updated since the given date and time.": "Somente retornar faturas que tenham sido atualizadas desde a data e hora indicados.",
"Only return invoices belonging to the client with the given ID.": "Retornar somente faturas pertencentes ao cliente com o ID fornecido.",
"Only return invoices belonging to the project with the given ID.": "Retornar apenas faturas pertencentes ao projeto com o ID fornecido.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Passar `true` apenas retornar projetos ativos e `false` para retornar projetos inativos.",
"Only return projects that have been updated since the given date and time.": "Devolver somente os projetos que foram atualizados desde a data e hora indicadas.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Passa `true` para retornar somente tarefas ativas e `false` para retornar tarefas inativas.",
"Only return tasks that have been updated since the given date and time.": "Somente tarefas de devolução que tenham sido atualizadas desde a data e hora indicados.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Retornar somente as entradas de hora com uma data_de gasto na ou após a data especificada. (AAAAA-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Retornar somente as entradas de hora com uma data_de gasto na ou antes da data especificada. (AAAAA-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "Retornar apenas entradas de tempo pertencentes ao usuário com o ID fornecido.",
"Only return time entries belonging to the client with the given ID.": "Retornar apenas entradas de tempo pertencentes ao cliente com o ID fornecido.",
"Only return time entries belonging to the project with the given ID.": "Somente retornar entradas de tempo pertencentes ao projeto com o ID fornecido.",
"Only return time entries belonging to the task with the given ID.": "Retornar somente entradas de tempo pertencentes à tarefa com a identificação fornecida.",
"Only return time entries with the given external reference ID.": "Somente retornar entradas de tempo com o ID externo de referência fornecido.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Passa `true` para apenas retornar entradas de tempo que foram faturadas e `false` para retornar entradas de tempo que não foram faturadas.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Passe `true` para retornar somente entradas de tempo em execução e `false` para retornar entradas de tempo que não são executadas.",
"Only return time entries that have been updated since the given date and time.": "Somente os lançamentos de hora que foram atualizados desde a data e hora fornecidas.",
"Pass `true` to only return active users and `false` to return inactive users.": "Passar `true` apenas retornar usuários ativos e `false` para retornar usuários inativos.",
"Only return users that have been updated since the given date and time.": "Somente usuários retornados que foram atualizados desde a data e hora fornecidas.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Somente o relatório sobre as entradas de horário e despesas com uma data_de gasto na ou após a data indicada. (AAAA-MM-DD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Apenas o relatório sobre as entradas de horário e despesas com uma data_de gasto dentro ou antes da data especificada. (AAAA-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Se deve ou não incluir projetos de taxa fixa na resposta. (Padrão: verdadeiro)",
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA"
}

View File

@@ -0,0 +1,96 @@
{
"Harvest": "Урожай",
"Time Tracking Software with Invoicing": "Программное обеспечение отслеживания времени с выставлением счетов",
"Get Clients": "Получить клиентов",
"Get Estimates": "Получить оценки",
"Get Expenses": "Получить расходы",
"Get Invoices": "Получать счета",
"Get Projects": "Получить проекты",
"Get Roles": "Получить роли",
"Get Tasks": "Получить задачи",
"Get Time Entries": "Получить Записи Время",
"Get Users": "Get Users",
"Uninvoiced Report": "Отчет по счету",
"Custom API Call": "Пользовательский вызов API",
"Fetches Clients": "Извлекает клиентов",
"Fetches Estimates": "Выбирает оценки",
"Fetches expenses": "Извлекает расходы",
"Fetches invoices": "Извлечение счетов",
"Fetches projects": "Извлекает проекты",
"Fetches Roles": "Выборка ролей",
"Fetches Tasks": "Извлекает задачи",
"Fetches Time Entries": "Извлекает Записи Времени",
"Fetches Users": "Извлекает пользователей",
"Uninvoiced hours and expenses for all billable projects": "Неоплаченные часы и расходы для всех оплачиваемых проектов",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Is Active": "Активно",
"Updated since": "Обновлено с",
"Page": "Страница",
"Records per page": "Записи на странице",
"From": "От",
"To": "Кому",
"State": "Область",
"Client Id": "ID клиента",
"User Id": "ID пользователя",
"Project Id": "Id проекта",
"Is Billed": "Оплачено",
"Task Id": "Task Id",
"External Reference Id": "Идентификатор внешней ссылки",
"Is Running": "Работает",
"Include Fixed Fee": "Включить фиксированную комиссию",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Передайте «true», чтобы вернуть только активных клиентов и «false», чтобы вернуть неактивных клиентов.",
"Only return clients that have been updated since the given date and time.": "Возвращает только клиентов, которые были обновлены с указанной даты и времени.",
"DEPRECATED: The page number to use in pagination.": "ЗАДАЧНО: Номер страницы для использования в пагинации.",
"The number of records to return per page. (1-2000)": "Количество записей для возврата на страницу. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Возврат оценок только с датой выдачи или после указанной даты. (ГГГГ-ММ-ДД)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Возврат оценок только с датой выдачи или до указанной даты. (ГГГГ-ММ-ДД)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Только возвращаемые оценки с состоянием, соответствующим указанному значению. Опции: черновик, открытый, принятый или отклоненный.",
"Only return estimates that have been updated since the given date and time.": "Только возвращаемые оценки, которые были обновлены с указанной даты и времени.",
"Only return estimates belonging to the client with the given ID.": "Только возвратные оценки, принадлежащие клиенту с указанным идентификатором.",
"The page number to use in pagination.": "Номер страницы, используемый в пагинации.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Возврат расходов только с умеренной датой или после указанной даты. (ГГГГ-ММ-ДД)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Возврат расходов только с разовой датой или до указанной даты. (ГГГГ-ММ-ДД)",
"Only return expenses belonging to the user with the given ID.": "Возвращает только расходы пользователя с заданным ID.",
"Only return expenses belonging to the client with the given ID.": "Возвращать расходы только клиенту с указанным идентификатором.",
"Only return expenses belonging to the project with the given ID.": "Возвращает только расходы, принадлежащие проекту с указанным ID.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Передайте «true», чтобы вернуть только расходы, которые были выставлены по счету, и «false», чтобы вернуть расходы, которые не были выставлены.",
"Only return expenses that have been updated since the given date and time.": "Только расходы по возврату, которые были обновлены с указанной даты и времени.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Возврат счетов с датой выдачи или после указанной даты. (ГГГГ-ММ-ДД)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Возврат счетов с датой выдачи или до указанной даты. (ГГГГ-ММ-ДД)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Только возвратные счета со состоянием, соответствующим указанному значению. Опции: черновик, открытый, оплаченный или закрытый.",
"Only return invoices that have been updated since the given date and time.": "Только обратные счета, которые были обновлены с указанной даты и времени.",
"Only return invoices belonging to the client with the given ID.": "Возврат счетов-фактур только клиенту с указанным ID.",
"Only return invoices belonging to the project with the given ID.": "Только возвратные счета, принадлежащие проекту с указанным идентификатором.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Передайте «true» только возвращать активные проекты и «false», чтобы вернуть неактивные проекты.",
"Only return projects that have been updated since the given date and time.": "Возвращаемые проекты, которые были обновлены с указанной даты и времени.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Передайте «true» только вернуться к активным задачам и «false», чтобы вернуть неактивные задачи.",
"Only return tasks that have been updated since the given date and time.": "Только задачи по возврату, которые были обновлены с указанной даты и времени.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Возвращать записи времени только с spent_date на или после указанной даты. (ГГГГ-ММ-ДД)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Возвращать записи времени только с spent_date на или до указанной даты. (ГГГГ-ММ-ДД)",
"Only return time entries belonging to the user with the given ID.": "Возвращает только записи времени, принадлежащие пользователю с заданным ID.",
"Only return time entries belonging to the client with the given ID.": "Возвращать записи времени только клиенту с указанным идентификатором.",
"Only return time entries belonging to the project with the given ID.": "Возвращает только записи времени, принадлежащие проекту с заданным ID.",
"Only return time entries belonging to the task with the given ID.": "Возвращает только записи времени, относящиеся к задаче с заданным ID.",
"Only return time entries with the given external reference ID.": "Только записи возвращают время с данным внешним идентификатором ссылки.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Передайте «true», чтобы вернуть только записи времени, которые были выставлены на счет, и «false», чтобы вернуть записи времени, которые не были выставлены.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Передайте `true` только для работы с записями времени и `false` для возврата неработающих записей.",
"Only return time entries that have been updated since the given date and time.": "Возвращает только записи времени, которые были обновлены с указанной даты и времени.",
"Pass `true` to only return active users and `false` to return inactive users.": "Передайте `true` только для активных пользователей и `false`, чтобы вернуть неактивных пользователей.",
"Only return users that have been updated since the given date and time.": "Возвращает только пользователей, которые были обновлены с указанной даты и времени.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Отчет о проводах и расходах только с разовой датой или после указанной даты. (ГГГ-ММ-ДД)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Отчет только о проводах и расходах с потраченной датой или до указанной даты. (ГГГ-ММ-ДД)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Включать или нет проекты с фиксированной комиссией в ответ. (по умолчанию: true)",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "Time Tracking Software with Invoicing",
"Get Clients": "Get Clients",
"Get Estimates": "Get Estimates",
"Get Expenses": "Get Expenses",
"Get Invoices": "Get Invoices",
"Get Projects": "Get Projects",
"Get Roles": "Get Roles",
"Get Tasks": "Get Tasks",
"Get Time Entries": "Get Time Entries",
"Get Users": "Get Users",
"Uninvoiced Report": "Uninvoiced Report",
"Custom API Call": "Custom API Call",
"Fetches Clients": "Fetches Clients",
"Fetches Estimates": "Fetches Estimates",
"Fetches expenses": "Fetches expenses",
"Fetches invoices": "Fetches invoices",
"Fetches projects": "Fetches projects",
"Fetches Roles": "Fetches Roles",
"Fetches Tasks": "Fetches Tasks",
"Fetches Time Entries": "Fetches Time Entries",
"Fetches Users": "Fetches Users",
"Uninvoiced hours and expenses for all billable projects": "Uninvoiced hours and expenses for all billable projects",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Is Active": "Is Active",
"Updated since": "Updated since",
"Page": "Page",
"Records per page": "Records per page",
"From": "From",
"To": "To",
"State": "State",
"Client Id": "Client Id",
"User Id": "User Id",
"Project Id": "Project Id",
"Is Billed": "Is Billed",
"Task Id": "Task Id",
"External Reference Id": "External Reference Id",
"Is Running": "Is Running",
"Include Fixed Fee": "Include Fixed Fee",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Pass `true` to only return active clients and `false` to return inactive clients.",
"Only return clients that have been updated since the given date and time.": "Only return clients that have been updated since the given date and time.",
"DEPRECATED: The page number to use in pagination.": "DEPRECATED: The page number to use in pagination.",
"The number of records to return per page. (1-2000)": "The number of records to return per page. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.",
"Only return estimates that have been updated since the given date and time.": "Only return estimates that have been updated since the given date and time.",
"Only return estimates belonging to the client with the given ID.": "Only return estimates belonging to the client with the given ID.",
"The page number to use in pagination.": "The page number to use in pagination.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "Only return expenses belonging to the user with the given ID.",
"Only return expenses belonging to the client with the given ID.": "Only return expenses belonging to the client with the given ID.",
"Only return expenses belonging to the project with the given ID.": "Only return expenses belonging to the project with the given ID.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.",
"Only return expenses that have been updated since the given date and time.": "Only return expenses that have been updated since the given date and time.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.",
"Only return invoices that have been updated since the given date and time.": "Only return invoices that have been updated since the given date and time.",
"Only return invoices belonging to the client with the given ID.": "Only return invoices belonging to the client with the given ID.",
"Only return invoices belonging to the project with the given ID.": "Only return invoices belonging to the project with the given ID.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Pass `true` to only return active projects and `false` to return inactive projects.",
"Only return projects that have been updated since the given date and time.": "Only return projects that have been updated since the given date and time.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Pass `true` to only return active tasks and `false` to return inactive tasks.",
"Only return tasks that have been updated since the given date and time.": "Only return tasks that have been updated since the given date and time.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "Only return time entries belonging to the user with the given ID.",
"Only return time entries belonging to the client with the given ID.": "Only return time entries belonging to the client with the given ID.",
"Only return time entries belonging to the project with the given ID.": "Only return time entries belonging to the project with the given ID.",
"Only return time entries belonging to the task with the given ID.": "Only return time entries belonging to the task with the given ID.",
"Only return time entries with the given external reference ID.": "Only return time entries with the given external reference ID.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Pass `true` to only return running time entries and `false` to return non-running time entries.",
"Only return time entries that have been updated since the given date and time.": "Only return time entries that have been updated since the given date and time.",
"Pass `true` to only return active users and `false` to return inactive users.": "Pass `true` to only return active users and `false` to return inactive users.",
"Only return users that have been updated since the given date and time.": "Only return users that have been updated since the given date and time.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Whether or not to include fixed-fee projects in the response. (Default: true)",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,96 @@
{
"Harvest": "Harvest",
"Time Tracking Software with Invoicing": "Time Tracking Software with Invoicing",
"Get Clients": "Get Clients",
"Get Estimates": "Get Estimates",
"Get Expenses": "Get Expenses",
"Get Invoices": "Get Invoices",
"Get Projects": "Get Projects",
"Get Roles": "Get Roles",
"Get Tasks": "Get Tasks",
"Get Time Entries": "Get Time Entries",
"Get Users": "Get Users",
"Uninvoiced Report": "Uninvoiced Report",
"Custom API Call": "Custom API Call",
"Fetches Clients": "Fetches Clients",
"Fetches Estimates": "Fetches Estimates",
"Fetches expenses": "Fetches expenses",
"Fetches invoices": "Fetches invoices",
"Fetches projects": "Fetches projects",
"Fetches Roles": "Fetches Roles",
"Fetches Tasks": "Fetches Tasks",
"Fetches Time Entries": "Fetches Time Entries",
"Fetches Users": "Fetches Users",
"Uninvoiced hours and expenses for all billable projects": "Uninvoiced hours and expenses for all billable projects",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Is Active": "Is Active",
"Updated since": "Updated since",
"Page": "Page",
"Records per page": "Records per page",
"From": "From",
"To": "To",
"State": "State",
"Client Id": "Client Id",
"User Id": "User Id",
"Project Id": "Project Id",
"Is Billed": "Is Billed",
"Task Id": "Task Id",
"External Reference Id": "External Reference Id",
"Is Running": "Is Running",
"Include Fixed Fee": "Include Fixed Fee",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Pass `true` to only return active clients and `false` to return inactive clients.",
"Only return clients that have been updated since the given date and time.": "Only return clients that have been updated since the given date and time.",
"DEPRECATED: The page number to use in pagination.": "DEPRECATED: The page number to use in pagination.",
"The number of records to return per page. (1-2000)": "The number of records to return per page. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.",
"Only return estimates that have been updated since the given date and time.": "Only return estimates that have been updated since the given date and time.",
"Only return estimates belonging to the client with the given ID.": "Only return estimates belonging to the client with the given ID.",
"The page number to use in pagination.": "The page number to use in pagination.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "Only return expenses belonging to the user with the given ID.",
"Only return expenses belonging to the client with the given ID.": "Only return expenses belonging to the client with the given ID.",
"Only return expenses belonging to the project with the given ID.": "Only return expenses belonging to the project with the given ID.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.",
"Only return expenses that have been updated since the given date and time.": "Only return expenses that have been updated since the given date and time.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.",
"Only return invoices that have been updated since the given date and time.": "Only return invoices that have been updated since the given date and time.",
"Only return invoices belonging to the client with the given ID.": "Only return invoices belonging to the client with the given ID.",
"Only return invoices belonging to the project with the given ID.": "Only return invoices belonging to the project with the given ID.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Pass `true` to only return active projects and `false` to return inactive projects.",
"Only return projects that have been updated since the given date and time.": "Only return projects that have been updated since the given date and time.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Pass `true` to only return active tasks and `false` to return inactive tasks.",
"Only return tasks that have been updated since the given date and time.": "Only return tasks that have been updated since the given date and time.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "Only return time entries belonging to the user with the given ID.",
"Only return time entries belonging to the client with the given ID.": "Only return time entries belonging to the client with the given ID.",
"Only return time entries belonging to the project with the given ID.": "Only return time entries belonging to the project with the given ID.",
"Only return time entries belonging to the task with the given ID.": "Only return time entries belonging to the task with the given ID.",
"Only return time entries with the given external reference ID.": "Only return time entries with the given external reference ID.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Pass `true` to only return running time entries and `false` to return non-running time entries.",
"Only return time entries that have been updated since the given date and time.": "Only return time entries that have been updated since the given date and time.",
"Pass `true` to only return active users and `false` to return inactive users.": "Pass `true` to only return active users and `false` to return inactive users.",
"Only return users that have been updated since the given date and time.": "Only return users that have been updated since the given date and time.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Whether or not to include fixed-fee projects in the response. (Default: true)",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD"
}

View File

@@ -0,0 +1,97 @@
{
"Time Tracking Software with Invoicing": "Time Tracking Software with Invoicing",
"Get Clients": "Get Clients",
"Get Estimates": "Get Estimates",
"Get Expenses": "Get Expenses",
"Get Invoices": "Get Invoices",
"Get Projects": "Get Projects",
"Get Roles": "Get Roles",
"Get Tasks": "Get Tasks",
"Get Time Entries": "Get Time Entries",
"Get Users": "Get Users",
"Uninvoiced Report": "Uninvoiced Report",
"Custom API Call": "自定义 API 呼叫",
"Fetches Clients": "Fetches Clients",
"Fetches Estimates": "Fetches Estimates",
"Fetches expenses": "Fetches expenses",
"Fetches invoices": "Fetches invoices",
"Fetches projects": "Fetches projects",
"Fetches Roles": "Fetches Roles",
"Fetches Tasks": "Fetches Tasks",
"Fetches Time Entries": "Fetches Time Entries",
"Fetches Users": "Fetches Users",
"Uninvoiced hours and expenses for all billable projects": "Uninvoiced hours and expenses for all billable projects",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Is Active": "Is Active",
"Updated since": "Updated since",
"Page": "Page",
"Records per page": "Records per page",
"From": "From",
"To": "To",
"State": "State",
"Client Id": "Client Id",
"User Id": "User Id",
"Project Id": "Project Id",
"Is Billed": "Is Billed",
"Task Id": "Task Id",
"External Reference Id": "External Reference Id",
"Is Running": "Is Running",
"Include Fixed Fee": "Include Fixed Fee",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"Pass `true` to only return active clients and `false` to return inactive clients.": "Pass `true` to only return active clients and `false` to return inactive clients.",
"Only return clients that have been updated since the given date and time.": "Only return clients that have been updated since the given date and time.",
"DEPRECATED: The page number to use in pagination.": "DEPRECATED: The page number to use in pagination.",
"The number of records to return per page. (1-2000)": "The number of records to return per page. (1-2000)",
"Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)": "Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)",
"Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)": "Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)",
"Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.": "Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.",
"Only return estimates that have been updated since the given date and time.": "Only return estimates that have been updated since the given date and time.",
"Only return estimates belonging to the client with the given ID.": "Only return estimates belonging to the client with the given ID.",
"The page number to use in pagination.": "The page number to use in pagination.",
"Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)": "Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)",
"Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)": "Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)",
"Only return expenses belonging to the user with the given ID.": "Only return expenses belonging to the user with the given ID.",
"Only return expenses belonging to the client with the given ID.": "Only return expenses belonging to the client with the given ID.",
"Only return expenses belonging to the project with the given ID.": "Only return expenses belonging to the project with the given ID.",
"Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.": "Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.",
"Only return expenses that have been updated since the given date and time.": "Only return expenses that have been updated since the given date and time.",
"Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)": "Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)",
"Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)": "Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)",
"Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.": "Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.",
"Only return invoices that have been updated since the given date and time.": "Only return invoices that have been updated since the given date and time.",
"Only return invoices belonging to the client with the given ID.": "Only return invoices belonging to the client with the given ID.",
"Only return invoices belonging to the project with the given ID.": "Only return invoices belonging to the project with the given ID.",
"Pass `true` to only return active projects and `false` to return inactive projects.": "Pass `true` to only return active projects and `false` to return inactive projects.",
"Only return projects that have been updated since the given date and time.": "Only return projects that have been updated since the given date and time.",
"Pass `true` to only return active tasks and `false` to return inactive tasks.": "Pass `true` to only return active tasks and `false` to return inactive tasks.",
"Only return tasks that have been updated since the given date and time.": "Only return tasks that have been updated since the given date and time.",
"Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)": "Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)",
"Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)": "Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)",
"Only return time entries belonging to the user with the given ID.": "Only return time entries belonging to the user with the given ID.",
"Only return time entries belonging to the client with the given ID.": "Only return time entries belonging to the client with the given ID.",
"Only return time entries belonging to the project with the given ID.": "Only return time entries belonging to the project with the given ID.",
"Only return time entries belonging to the task with the given ID.": "Only return time entries belonging to the task with the given ID.",
"Only return time entries with the given external reference ID.": "Only return time entries with the given external reference ID.",
"Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.": "Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.",
"Pass `true` to only return running time entries and `false` to return non-running time entries.": "Pass `true` to only return running time entries and `false` to return non-running time entries.",
"Only return time entries that have been updated since the given date and time.": "Only return time entries that have been updated since the given date and time.",
"Pass `true` to only return active users and `false` to return inactive users.": "Pass `true` to only return active users and `false` to return inactive users.",
"Only return users that have been updated since the given date and time.": "Only return users that have been updated since the given date and time.",
"Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)": "Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)",
"Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)": "Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)",
"Whether or not to include fixed-fee projects in the response. (Default: true)": "Whether or not to include fixed-fee projects in the response. (Default: true)",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色"
}

View File

@@ -0,0 +1,44 @@
import { createPiece, PieceAuth, OAuth2PropertyValue } from "@activepieces/pieces-framework";
import { OAuth2GrantType, PieceCategory } from '@activepieces/shared';
import { getInvoices } from './lib/actions/get-invoices';
import { getProjects } from './lib/actions/get-projects';
import { getTasks } from './lib/actions/get-tasks';
import { getClients } from './lib/actions/get-clients';
import { getEstimates } from './lib/actions/get-estimates';
import { getExpenses } from './lib/actions/get-expenses';
import { getTime_entries } from './lib/actions/get-time_entries';
import { getRoles } from './lib/actions/get-roles';
import { getUsers } from './lib/actions/get-users';
import { reportsUninvoiced } from './lib/actions/reports-uninvoiced';
import { createCustomApiCallAction } from '@activepieces/pieces-common';
export const harvestAuth = PieceAuth.OAuth2({
required: true,
grantType: OAuth2GrantType.AUTHORIZATION_CODE,
authUrl: 'https://id.getharvest.com/oauth2/authorize',
tokenUrl: `https://id.getharvest.com/api/v2/oauth2/token`,
scope: ['harvest:all'],
});
export const harvest = createPiece({
displayName: "Harvest",
auth: harvestAuth,
minimumSupportedRelease: '0.36.1',
logoUrl: "https://cdn.activepieces.com/pieces/harvest.png",
categories:[PieceCategory.PRODUCTIVITY],
description:'Time Tracking Software with Invoicing',
authors: ["D-Rowe-FS"],
actions: [getClients, getEstimates, getExpenses, getInvoices, getProjects, getRoles, getTasks, getTime_entries, getUsers,
reportsUninvoiced,
createCustomApiCallAction({
baseUrl: () => `https://api.harvestapp.com/v2/`,
auth: harvestAuth,
authMapping: async (auth) => ({
Authorization: `Bearer ${(auth).access_token}`,
}),
}),
],
triggers: [],
});

View File

@@ -0,0 +1,61 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getClients = createAction({
name: 'get_clients',
auth: harvestAuth,
displayName: 'Get Clients',
description: 'Fetches Clients',
props: {
is_active: Property.ShortText({
description: 'Pass `true` to only return active clients and `false` to return inactive clients.',
displayName: 'Is Active',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return clients that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
page: Property.ShortText({
description: 'DEPRECATED: The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`clients`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,78 @@
import { Property, createAction } from "@activepieces/pieces-framework";
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getEstimates = createAction({
name: 'get_estimates', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Estimates',
description: 'Fetches Estimates',
props: {
from: Property.ShortText({
description: 'Only return estimates with an issue_date on or after the given date. (YYYY-MM-DD)',
displayName: 'From',
required: false,
}),
to: Property.ShortText({
description: 'Only return estimates with an issue_date on or before the given date. (YYYY-MM-DD)',
displayName: 'To',
required: false,
}),
state: Property.ShortText({
description: 'Only return estimates with a state matching the value provided. Options: draft, open, accepted, or declined.',
displayName: 'State',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return estimates that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
client_id: Property.ShortText({
description: 'Only return estimates belonging to the client with the given ID.',
displayName: 'Client Id',
required: false,
}),
page: Property.ShortText({
description: 'The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`estimates`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,88 @@
import { Property, createAction } from "@activepieces/pieces-framework";
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getExpenses = createAction({
name: 'get_expenses', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Expenses',
description: 'Fetches expenses',
props: {
from: Property.ShortText({
description: 'Only return expenses with an spent_date on or after the given date. (YYYY-MM-DD)',
displayName: 'From',
required: false,
}),
to: Property.ShortText({
description: 'Only return expenses with an spent_date on or before the given date. (YYYY-MM-DD)',
displayName: 'To',
required: false,
}),
user_id: Property.ShortText({
description: 'Only return expenses belonging to the user with the given ID.',
displayName: 'User Id',
required: false,
}),
client_id: Property.ShortText({
description: 'Only return expenses belonging to the client with the given ID.',
displayName: 'Client Id',
required: false,
}),
project_id: Property.ShortText({
description: 'Only return expenses belonging to the project with the given ID.',
displayName: 'Project Id',
required: false,
}),
is_billed: Property.ShortText({
description: 'Pass `true` to only return expenses that have been invoiced and `false` to return expenses that have not been invoiced.',
displayName: 'Is Billed',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return expenses that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
page: Property.ShortText({
description: 'The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`expenses`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,83 @@
import { Property, createAction } from "@activepieces/pieces-framework";
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getInvoices = createAction({
name: 'get_invoices', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Invoices',
description: 'Fetches invoices',
props: {
from: Property.ShortText({
description: 'Only return invoices with an issue_date on or after the given date. (YYYY-MM-DD)',
displayName: 'From',
required: false,
}),
to: Property.ShortText({
description: 'Only return invoices with an issue_date on or before the given date. (YYYY-MM-DD)',
displayName: 'To',
required: false,
}),
state: Property.ShortText({
description: 'Only return invoices with a state matching the value provided. Options: draft, open, paid, or closed.',
displayName: 'State',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return invoices that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
client_id: Property.ShortText({
description: 'Only return invoices belonging to the client with the given ID.',
displayName: 'Client Id',
required: false,
}),
project_id: Property.ShortText({
description: 'Only return invoices belonging to the project with the given ID.',
displayName: 'Project Id',
required: false,
}),
page: Property.ShortText({
description: 'The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`invoices`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,67 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getProjects = createAction({
name: 'get_projects', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Projects',
description: 'Fetches projects',
props: {
is_active: Property.ShortText({
description: 'Pass `true` to only return active projects and `false` to return inactive projects.',
displayName: 'Is Active',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return projects that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
client_id: Property.ShortText({
description: 'Only return invoices belonging to the client with the given ID.',
displayName: 'Client Id',
required: false,
}),
page: Property.ShortText({
description: 'DEPRECATED: The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`projects`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,52 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getRoles = createAction({
name: 'get_roles', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Roles',
description: 'Fetches Roles',
props: {
page: Property.ShortText({
description: 'DEPRECATED: The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`roles`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,62 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getTasks = createAction({
name: 'get_tasks', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Tasks',
description: 'Fetches Tasks',
props: {
is_active: Property.ShortText({
description: 'Pass `true` to only return active tasks and `false` to return inactive tasks.',
displayName: 'Is Active',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return tasks that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
page: Property.ShortText({
description: 'DEPRECATED: The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`tasks`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,103 @@
import { Property, createAction } from "@activepieces/pieces-framework";
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getTime_entries = createAction({
name: 'get_time_entries', // Must be a unique across the piece, this shouldn't be changed.
auth: harvestAuth,
displayName: 'Get Time Entries',
description: 'Fetches Time Entries',
props: {
from: Property.ShortText({
description: 'Only return time entries with an spent_date on or after the given date. (YYYY-MM-DD)',
displayName: 'From',
required: false,
}),
to: Property.ShortText({
description: 'Only return time entries with an spent_date on or before the given date. (YYYY-MM-DD)',
displayName: 'To',
required: false,
}),
user_id: Property.ShortText({
description: 'Only return time entries belonging to the user with the given ID.',
displayName: 'User Id',
required: false,
}),
client_id: Property.ShortText({
description: 'Only return time entries belonging to the client with the given ID.',
displayName: 'Client Id',
required: false,
}),
project_id: Property.ShortText({
description: 'Only return time entries belonging to the project with the given ID.',
displayName: 'Project Id',
required: false,
}),
task_id: Property.ShortText({
description: 'Only return time entries belonging to the task with the given ID.',
displayName: 'Task Id',
required: false,
}),
external_reference_id: Property.ShortText({
description: 'Only return time entries with the given external reference ID.',
displayName: 'External Reference Id',
required: false,
}),
is_billed: Property.ShortText({
description: 'Pass `true` to only return time entries that have been invoiced and `false` to return time entries that have not been invoiced.',
displayName: 'Is Billed',
required: false,
}),
is_running: Property.ShortText({
description: 'Pass `true` to only return running time entries and `false` to return non-running time entries.',
displayName: 'Is Running',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return time entries that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
page: Property.ShortText({
description: 'The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`time_entries`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,61 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const getUsers = createAction({
name: 'get_users',
auth: harvestAuth,
displayName: 'Get Users',
description: 'Fetches Users',
props: {
is_active: Property.ShortText({
description: 'Pass `true` to only return active users and `false` to return inactive users.',
displayName: 'Is Active',
required: false,
}),
updated_since: Property.ShortText({
description: 'Only return users that have been updated since the given date and time.',
displayName: 'Updated since',
required: false,
}),
page: Property.ShortText({
description: 'DEPRECATED: The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`users`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,66 @@
import { Property, createAction } from "@activepieces/pieces-framework";
import { harvestAuth } from '../..';
import {
getAccessTokenOrThrow,
HttpMethod,
} from '@activepieces/pieces-common';
import { callHarvestApi, filterDynamicFields } from '../common';
import { propsValidation } from '@activepieces/pieces-common';
import { z } from 'zod';
export const reportsUninvoiced = createAction({
name: 'reports-uninvoiced',
auth: harvestAuth,
displayName: 'Uninvoiced Report',
description: 'Uninvoiced hours and expenses for all billable projects',
props: {
from: Property.ShortText({
description: 'Only report on time entries and expenses with a spent_date on or after the given date. (YYYY-MM-DD)',
displayName: 'From',
required: true,
}),
to: Property.ShortText({
description: 'Only report on time entries and expenses with a spent_date on or before the given date. (YYYY-MM-DD)',
displayName: 'To',
required: true,
}),
include_fixed_fee: Property.ShortText({
description: 'Whether or not to include fixed-fee projects in the response. (Default: true)',
displayName: 'Include Fixed Fee',
required: false,
}),
page: Property.ShortText({
description: 'The page number to use in pagination.',
displayName: 'Page',
required: false,
}),
per_page: Property.ShortText({
description: 'The number of records to return per page. (1-2000)',
displayName: 'Records per page',
required: false,
}),
},
async run(context) {
// Validate the input properties using Zod
await propsValidation.validateZod(context.propsValue, {
per_page: z
.string()
.optional()
.transform((val) => (val === undefined || val === '' ? undefined : parseInt(val, 10)))
.refine(
(val) => val === undefined || (Number.isInteger(val) && val >= 1 && val <= 2000),
'Per Page must be a number between 1 and 2000.'
),
});
const params = filterDynamicFields(context.propsValue);
const response = await callHarvestApi(
HttpMethod.GET,
`reports/uninvoiced`,
getAccessTokenOrThrow(context.auth),
params
);
return response.body; },
});

View File

@@ -0,0 +1,48 @@
import { DynamicPropsValue } from '@activepieces/pieces-framework';
import {
HttpMethod,
HttpMessageBody,
HttpResponse,
httpClient,
AuthenticationType,
} from '@activepieces/pieces-common';
export async function callHarvestApi<T extends HttpMessageBody = any>(
method: HttpMethod,
apiUrl: string,
accessToken: string,
queryParams: any | undefined = undefined,
body: any | undefined = undefined,
headers: any | undefined = undefined
): Promise<HttpResponse<T>> {
return await httpClient.sendRequest<T>({
method: method,
url: `https://api.harvestapp.com/v2/${apiUrl}`,
authentication: {
type: AuthenticationType.BEARER_TOKEN,
token: accessToken,
},
headers,
body,
queryParams,
});
}
//Remove null/undefined values and create an array to be used for queryparams
export function filterDynamicFields(dynamicFields: DynamicPropsValue): { [key: string]: string } {
const fields: { [key: string]: string } = {};
const props = Object.entries(dynamicFields);
for (const [propertyKey, propertyValue] of props) {
if (
propertyValue !== null &&
propertyValue !== undefined &&
propertyValue !== '' &&
!(typeof propertyValue === 'string' && propertyValue.trim() === '')
) {
fields[propertyKey] = propertyValue;
}
}
return fields;
}

View File

@@ -0,0 +1,19 @@
{
"extends": "../../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs",
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"noPropertyAccessFromIndexSignature": true
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
}
]
}

View File

@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}