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:
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"extends": [
|
||||
"../../../../.eslintrc.base.json"
|
||||
],
|
||||
"ignorePatterns": [
|
||||
"!**/*"
|
||||
],
|
||||
"overrides": [
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx",
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.ts",
|
||||
"*.tsx"
|
||||
],
|
||||
"rules": {}
|
||||
},
|
||||
{
|
||||
"files": [
|
||||
"*.js",
|
||||
"*.jsx"
|
||||
],
|
||||
"rules": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
# MyCase Piece
|
||||
|
||||
This piece provides integration with MyCase API using OAuth 2.0 authentication.
|
||||
|
||||
## Features
|
||||
|
||||
### Authentication
|
||||
- **OAuth 2.0**: Uses Authorization Code grant flow with refresh tokens
|
||||
- **Automatic Token Management**: Handles access token and refresh token lifecycle
|
||||
- **Secure**: Follows MyCase's recommended authentication practices
|
||||
|
||||
### Actions
|
||||
- **Get Firm Information**: Retrieve information about the authenticated firm
|
||||
- **List Contacts**: Retrieve and search contacts with pagination support
|
||||
|
||||
## Authentication Setup
|
||||
|
||||
### Prerequisites
|
||||
1. **MyCase Account**: You need an active MyCase account
|
||||
2. **Client Credentials**: Contact MyCase support to obtain:
|
||||
- Client ID
|
||||
- Client Secret
|
||||
- Redirect URI (must be pre-registered with MyCase)
|
||||
|
||||
### OAuth 2.0 Flow
|
||||
1. **Authorization**: Users are redirected to MyCase authorization server
|
||||
2. **Code Exchange**: Authorization code is exchanged for access token
|
||||
3. **API Access**: Access token is used for authenticated API requests
|
||||
4. **Token Refresh**: Refresh tokens are used to obtain new access tokens
|
||||
|
||||
### Configuration
|
||||
- **Authorization URL**: `https://auth.mycase.com/login_sessions/new`
|
||||
- **Token URL**: `https://auth.mycase.com/tokens`
|
||||
- **Token Lifetime**: 24 hours (access token), 2 weeks (refresh token)
|
||||
- **Rate Limits**: 25 requests per second per client
|
||||
|
||||
## API Integration
|
||||
|
||||
### Base URL
|
||||
All API requests are made to: `https://api.mycase.com/v1`
|
||||
|
||||
### Authentication Header
|
||||
```
|
||||
Authorization: Bearer <access_token>
|
||||
```
|
||||
|
||||
### Error Handling
|
||||
- **401 Unauthorized**: Access token expired (automatic refresh handled)
|
||||
- **Rate Limiting**: 25 requests per second limit enforced
|
||||
- **Scope Validation**: Ensures required permissions for API endpoints
|
||||
|
||||
## Building
|
||||
|
||||
Run `nx build pieces-mycase-piece` to build the library.
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"name": "@activepieces/piece-mycase-piece",
|
||||
"version": "0.0.2",
|
||||
"type": "commonjs",
|
||||
"main": "./src/index.js",
|
||||
"types": "./src/index.d.ts",
|
||||
"dependencies": {
|
||||
"tslib": "^2.3.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"name": "pieces-mycase-piece",
|
||||
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
|
||||
"sourceRoot": "packages/pieces/community/mycase-piece/src",
|
||||
"projectType": "library",
|
||||
"release": {
|
||||
"version": {
|
||||
"manifestRootsToUpdate": [
|
||||
"dist/{projectRoot}"
|
||||
],
|
||||
"currentVersionResolver": "git-tag",
|
||||
"fallbackCurrentVersionResolver": "disk"
|
||||
}
|
||||
},
|
||||
"tags": [],
|
||||
"targets": {
|
||||
"build": {
|
||||
"executor": "@nx/js:tsc",
|
||||
"outputs": [
|
||||
"{options.outputPath}"
|
||||
],
|
||||
"options": {
|
||||
"outputPath": "dist/packages/pieces/community/mycase-piece",
|
||||
"tsConfig": "packages/pieces/community/mycase-piece/tsconfig.lib.json",
|
||||
"packageJson": "packages/pieces/community/mycase-piece/package.json",
|
||||
"main": "packages/pieces/community/mycase-piece/src/index.ts",
|
||||
"assets": [
|
||||
"packages/pieces/community/mycase-piece/*.md",
|
||||
{
|
||||
"input": "packages/pieces/community/mycase-piece/src/i18n",
|
||||
"output": "./src/i18n",
|
||||
"glob": "**/!(i18n.json)"
|
||||
}
|
||||
],
|
||||
"buildableProjectDepsInPackageJsonType": "dependencies",
|
||||
"updateBuildableProjectDepsInPackageJson": true
|
||||
}
|
||||
},
|
||||
"nx-release-publish": {
|
||||
"options": {
|
||||
"packageRoot": "dist/{projectRoot}"
|
||||
}
|
||||
},
|
||||
"lint": {
|
||||
"executor": "@nx/eslint:lint",
|
||||
"outputs": [
|
||||
"{options.outputFile}"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automatisieren Sie Rechtsfallmanagementworkflows mit MyCase. Erstellen und verwalten Sie Fälle, Kunden, Firmen, Events, Aufgaben, Zeiteinträge, Dokumente und vieles mehr. Erhalten Sie Benachrichtigungen, wenn Ereignisse, Personen, Unternehmen oder Leads hinzugefügt oder aktualisiert werden.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Client-Zugangsdaten\n. Kontaktieren Sie MyCase Support unter [https://www.mycase.com/support/](https://www.mycase. om/support/), um OAuth 2.0 Client-Zugangsdaten\n2. Geben Sie Ihre Anwendungsdaten an und fordern Sie eine Client-ID und Client-Geheimnis\n3 an. MyCase unterstützt Sie mit:\n - **Client ID**: Ihre OAuth Client ID\n - **Client Secret**: Ihr OAuth Client Secret\n - **Umleitungs-URI**: Eine vorkonfigurierte Umleitungs-URI für Ihre Anwendung\n\n### Benötigte Berechtigungen\nDer autorisierende Benutzer muss die **\"Einstellungen Ihres Unternehmens verwalten, Rechnungs- und Zahlungsoptionen** Berechtigung auf **Ja** in MyCase.\n\n### Autorisierungsfluss\nMyCase verwendet OAuth 2.0 Autorisierungscode Grant Flow mit folgenden Endpunkten:\n\n**Autorisierungs-URL**: `https://auth. ycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase. om/tokens`\n\n### Bewertungslimit\n- 25 Anfragen pro Sekunde pro Client\n- Zugangs-Token sind gültig für 24 Stunden\n- Aktualisiere Tokens für 2 Wochen\n\nfür detaillierte API-Dokumentation, besuchen: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi. toplight.io/docs/mycase-api-documentation/k5xpc4yhkom7-getting-started) \n",
|
||||
"Create Case": "Fall erstellen",
|
||||
"Create Case Stage": "Fallstufe erstellen",
|
||||
"Create Company": "Firma erstellen",
|
||||
"Create Custom Field": "Benutzerdefiniertes Feld erstellen",
|
||||
"Create Document": "Dokument erstellen",
|
||||
"Create Event": "Ereignis erstellen",
|
||||
"Create Expense": "Ausgaben erstellen",
|
||||
"Create Lead": "Lead erstellen",
|
||||
"Create Location": "Standort erstellen",
|
||||
"Create Note": "Notiz erstellen",
|
||||
"Create Person (Client)": "Person erstellen (lient)",
|
||||
"Create Practice Area": "Übungsbereich erstellen",
|
||||
"Create Referral Source": "Empfehlungsquelle erstellen",
|
||||
"Create Task": "Aufgabe erstellen",
|
||||
"Create Time Entry": "Erstelle Zeiteintrag",
|
||||
"Create Call": "Anruf erstellen",
|
||||
"Update Case": "Fall aktualisieren",
|
||||
"Update Company": "Firma aktualisieren",
|
||||
"Update Person (Client)": "Person aktualisieren (lient)",
|
||||
"API Request": "API-Anfrage",
|
||||
"Find Case": "Fall finden",
|
||||
"Find Call": "Anruf finden",
|
||||
"Find Case Stage": "Fall-Phase finden",
|
||||
"Find Company": "Firma finden",
|
||||
"Find Location": "Standort finden",
|
||||
"Find People Group": "Personengruppe finden",
|
||||
"Find Person (Client)": "Person finden (lient)",
|
||||
"Find Practice Area": "Praxisbereich finden",
|
||||
"Find Referral Source": "Empfehlungsquelle finden",
|
||||
"Find Staff": "Mitarbeiter finden",
|
||||
"Find or Create Case": "Fall suchen oder erstellen",
|
||||
"Find or Create Case Stage": "Case Stage suchen oder erstellen",
|
||||
"Find or Create Company": "Firma finden oder erstellen",
|
||||
"Find or Create Location": "Standort suchen oder erstellen",
|
||||
"Find or Create Person (Client)": "Person finden oder erstellen (lient)",
|
||||
"Find or Create Practice Area": "Übungsbereich suchen oder erstellen",
|
||||
"Find or Create Referral Source": "Finde oder erstelle Empfehlungsquelle",
|
||||
"Creates a new case in MyCase": "Erstellt einen neuen Fall in MyCase",
|
||||
"Creates a new case stage in MyCase": "Erstellt eine neue Fallstufe in MyCase",
|
||||
"Creates a new company in MyCase": "Erstellt eine neue Firma in MyCase",
|
||||
"Creates a new custom field in MyCase": "Erstellt ein neues benutzerdefiniertes Feld in MyCase",
|
||||
"Creates a new document in MyCase": "Erstellt ein neues Dokument in MyCase",
|
||||
"Creates a new event in MyCase": "Erstellt ein neues Ereignis in MyCase",
|
||||
"Creates a new expense in MyCase": "Erstellt eine neue Ausgabe in MyCase",
|
||||
"Creates a new lead in MyCase": "Erstellt einen neuen Lead in MyCase",
|
||||
"Creates a new location in MyCase": "Erstellt einen neuen Standort in MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Erstellt eine neue Notiz für einen Fall, einen Kunden oder eine Firma in MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Erstellt einen neuen Kunden (Person) in MyCase",
|
||||
"Creates a new practice area in MyCase": "Erstellt einen neuen Übungsbereich in MyCase",
|
||||
"Creates a new referral source in MyCase": "Erstellt eine neue Empfehlungsquelle in MyCase",
|
||||
"Creates a new task in MyCase": "Erstellt eine neue Aufgabe in MyCase",
|
||||
"Creates a new time entry in MyCase": "Erstellt einen neuen Zeiteintrag in MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Erstellt einen neuen Anruf im Anrufliste in MyCase",
|
||||
"Updates an existing case in MyCase": "Aktualisiert einen existierenden Fall in MyCase",
|
||||
"Updates an existing company in MyCase": "Aktualisiert ein bestehendes Unternehmen in MyCase",
|
||||
"Updates an existing individual client (person) in MyCase": "Aktualisiert einen bestehenden individuellen Client (Person) in MyCase",
|
||||
"Makes a raw HTTP request to the MyCase API": "Macht eine rohe HTTP-Anfrage an die MyCase API",
|
||||
"Searches for cases with optional filters": "Suche nach Fällen mit optionalen Filtern",
|
||||
"Searches for calls with optional filters": "Sucht nach Anrufen mit optionalen Filtern",
|
||||
"Searches for case stages with optional filters": "Sucht nach Fallstufen mit optionalen Filtern",
|
||||
"Searches for companies with optional filters": "Suche nach Firmen mit optionalen Filtern",
|
||||
"Searches for locations with optional filters": "Suche nach Orten mit optionalen Filtern",
|
||||
"Searches for people groups with optional filters": "Suche nach Personengruppen mit optionalen Filtern",
|
||||
"Searches for clients (people) with optional filters": "Suche nach Kunden (Personen) mit optionalen Filtern",
|
||||
"Searches for practice areas with optional filters": "Sucht nach Übungsbereichen mit optionalen Filtern",
|
||||
"Searches for referral sources with optional filters": "Sucht nach Empfehlungsquellen mit optionalen Filtern",
|
||||
"Searches for staff members with optional filters": "Sucht nach Personalmitgliedern mit optionalen Filtern",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Findet einen Fall nach Namen oder erstellt einen neuen, falls er nicht existiert",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Findet eine Fallstufe nach Namen oder erstellt eine neue falls sie nicht existiert",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Findet ein Unternehmen nach Namen oder erstellt ein neues wenn es nicht existiert",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Findet einen Ort nach Namen oder erstellt einen neuen wenn er nicht existiert",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Findet eine Person nach Vor- und Nachnamen oder erstellt einen neuen wenn nicht gefunden",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Findet ein Übungsgebiet nach Namen oder erstellt ein neues, falls es nicht existiert",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Findet eine Empfehlungsquelle nach Name oder erstellt eine neue wenn sie nicht existiert",
|
||||
"Case Name": "Fall Name",
|
||||
"Case Number": "Fallnummer",
|
||||
"Opened Date": "Eröffnungsdatum",
|
||||
"Case Stage": "Fallstufe",
|
||||
"Practice Area": "Übungsbereich",
|
||||
"Description": "Beschreibung",
|
||||
"Statute of Limitations Date": "Begrenzungsdatum",
|
||||
"Status": "Status",
|
||||
"Outstanding Balance": "Ausstehender Saldo",
|
||||
"Billing Contact ID": "Rechnungskontakt-ID",
|
||||
"Client IDs": "Client-IDs",
|
||||
"Company IDs": "Firmen-IDs",
|
||||
"Staff ID": "Mitarbeiter-ID",
|
||||
"Lead Lawyer": "Lead Lawyer",
|
||||
"Originating Lawyer": "Ursprünglicher Anwalt",
|
||||
"Case Stage Name": "Fallstufenname",
|
||||
"Company Name": "Firmenname",
|
||||
"Email": "E-Mail",
|
||||
"Website": "Webseite",
|
||||
"Main Phone Number": "Haupttelefonnummer",
|
||||
"Fax Phone Number": "Faxnummer",
|
||||
"Address Line 1": "Adresszeile 1",
|
||||
"Address Line 2": "Adresszeile 2",
|
||||
"City": "Stadt",
|
||||
"State": "Bundesland",
|
||||
"ZIP Code": "Postleitzahl",
|
||||
"Country": "Land",
|
||||
"Notes": "Notizen",
|
||||
"Cases": "Fälle",
|
||||
"Clients": "Kunden",
|
||||
"Field Name": "Feldname",
|
||||
"Parent Type": "Elterntyp",
|
||||
"Field Type": "Feldtyp",
|
||||
"List Options": "Listenoptionen",
|
||||
"Document Type": "Dokumententyp",
|
||||
"Case": "Fall",
|
||||
"Document Path": "Dokumentenpfad",
|
||||
"Filename": "Dateiname",
|
||||
"Assigned Date": "Zugewiesenes Datum",
|
||||
"Staff": "Mitarbeiter",
|
||||
"Event Name": "Ereignisname",
|
||||
"Start Date/Time": "Startdatum/-zeit",
|
||||
"End Date/Time": "Enddatum/-zeit",
|
||||
"Required Staff": "Benötigtes Personal",
|
||||
"All Day Event": "Ganztägige Veranstaltung",
|
||||
"Private Event": "Privater Termin",
|
||||
"Location": "Standort",
|
||||
"Activity Name": "Aktivitätsname",
|
||||
"Entry Date": "Eintragungsdatum",
|
||||
"Cost": "Kosten",
|
||||
"Units": "Einheiten",
|
||||
"Billable": "Abrechenbar",
|
||||
"First Name": "Vorname",
|
||||
"Last Name": "Nachname",
|
||||
"Middle Initial": "Mittlerer Anfang",
|
||||
"Cell Phone Number": "Handynummer",
|
||||
"Work Phone Number": "Arbeits-Telefon",
|
||||
"Home Phone Number": "Hausnummer",
|
||||
"Birthdate": "Geburtsdatum",
|
||||
"Drivers License Number": "Führerscheinnummer",
|
||||
"Drivers License State": "Führerscheinstatus",
|
||||
"Lead Details": "Lead Details",
|
||||
"Referral Source": "Empfehlungsquelle",
|
||||
"Referred By": "Verwiesen von",
|
||||
"Location Name": "Standortname",
|
||||
"Entity Type": "Entitätstyp",
|
||||
"Entity": "Entität",
|
||||
"Subject": "Betreff",
|
||||
"Note": "Notiz",
|
||||
"Date": "Datum",
|
||||
"Middle Name": "Mittlerer Name",
|
||||
"People Group": "Personengruppe",
|
||||
"Practice Area Name": "Name des Übungsbereichs",
|
||||
"Referral Source Name": "Verweisquellname",
|
||||
"Task Name": "Aufgabenname",
|
||||
"Priority": "Priorität",
|
||||
"Due Date": "Fälligkeitsdatum",
|
||||
"Completed": "Abgeschlossen",
|
||||
"Rate": "Rate",
|
||||
"Hours": "Stunden",
|
||||
"Flat Fee": "Pauschalgebühr",
|
||||
"Called At": "Angerufen am",
|
||||
"Caller Phone Number": "Rufnummer des Anrufers",
|
||||
"Call For": "Anrufen für",
|
||||
"Message": "Nachricht",
|
||||
"Caller Type": "Anrufer-Typ",
|
||||
"Caller Name": "Anrufername",
|
||||
"Client": "Kunde",
|
||||
"Lead": "Lead",
|
||||
"Call Type": "Anruftyp",
|
||||
"Resolved": "Gelöst",
|
||||
"Billing Contact": "Rechnungskontakt",
|
||||
"Companies": "Firmen",
|
||||
"Company": "Firma",
|
||||
"Method": "Methode",
|
||||
"Path": "Pfad",
|
||||
"Query Parameters": "Abfrageparameter",
|
||||
"Request Body": "Body anfordern",
|
||||
"Additional Headers": "Zusätzliche Header",
|
||||
"Updated After": "Aktualisiert nach",
|
||||
"Page Size": "Einträge pro Seite",
|
||||
"Client Fields": "Kundenfelder",
|
||||
"Custom Field Fields": "Benutzerdefinierte Felder",
|
||||
"Name": "Name",
|
||||
"The name of the case (must be unique)": "Der Name des Falls (muss eindeutig sein)",
|
||||
"An identifier for this case (recommended to be unique)": "Ein Bezeichner für diesen Fall (empfohlen als einzigartig)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "Das Datum, an dem der Fall erstellt/geöffnet wurde (ISO-8601 Format: JJJJ-MM-TT)",
|
||||
"The stage the case is currently in (must match MyCase system)": "Die Phase, in der der Fall derzeit ist (muss mit dem MyCase System übereinstimmen)",
|
||||
"The practice area for this case (must match MyCase system)": "Der Praxisbereich für diesen Fall (muss zum MyCase-System passen)",
|
||||
"A description for the case": "Eine Beschreibung für den Fall",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "Das Begrenzungsdatum (ISO-8601 Datumsformat: JJJ-MM-TT)",
|
||||
"The status of the case": "Der Status des Falles",
|
||||
"The outstanding balance of this case": "Die ausstehende Bilanz dieses Falles",
|
||||
"The ID of the client or company to assign as the billing contact": "Die ID des Kunden oder der Firma, die als Rechnungskontakt zugewiesen werden soll",
|
||||
"Comma-separated list of client IDs to associate with the case": "Kommaseparierte Liste von Client-IDs, die dem Fall zugeordnet werden sollen",
|
||||
"Comma-separated list of company IDs to associate with the case": "Kommaseparierte Liste von Firmen-IDs, die dem Fall zugeordnet werden sollen",
|
||||
"ID of staff member to associate with the case": "ID des Personal-Mitglieds, das mit dem Fall assoziiert werden soll",
|
||||
"Is the staff member the lead lawyer for this case?": "Ist der Mitarbeiter der leitende Rechtsanwalt für diesen Fall?",
|
||||
"Is the staff member the originating lawyer for this case?": "Ist der Mitarbeiter der ursprüngliche Anwalt für diesen Fall?",
|
||||
"The name of the case stage": "Der Name der Fallphase",
|
||||
"The name of the company": "Der Name der Firma",
|
||||
"Company email address": "Firmen-E-Mail-Adresse",
|
||||
"Company website URL": "Firmen-Website-URL",
|
||||
"Main phone number for the company": "Haupttelefonnummer für das Unternehmen",
|
||||
"Fax phone number for the company": "Fax-Telefon der Firma",
|
||||
"Street address line 1": "Straßenadresse Linie 1",
|
||||
"Street address line 2": "Straßenadresse Linie 2",
|
||||
"ZIP/Postal code": "Postleitzahl",
|
||||
"Additional information about the company (visible to firm members only)": "Zusätzliche Informationen über das Unternehmen (nur für Firmenmitglieder sichtbar)",
|
||||
"Cases to associate with the company": "Fälle, die der Firma zugeordnet werden sollen",
|
||||
"Clients to associate with the company": "Kunden, die der Firma zugeordnet werden sollen",
|
||||
"The name of the custom field": "Der Name des benutzerdefinierten Feldes",
|
||||
"The parent resource type of the custom field": "Der übergeordnete Ressourcentyp des benutzerdefinierten Feldes",
|
||||
"The field type of the custom field": "Der Feldtyp des benutzerdefinierten Feldes",
|
||||
"List of options for the custom field (required if field type is \"list\")": "Liste der Optionen für das benutzerdefinierte Feld (erforderlich, wenn Feldtyp \"Liste\" ist\")",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Wählen Sie, ob ein Firmendokument erstellt oder mit einem bestimmten Fall verknüpft werden soll",
|
||||
"Select the case to associate this document with": "Wählen Sie den Fall, mit dem dieses Dokument verknüpft werden soll",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "Der relative Pfad inklusive Dokumentnamen (z. B. Ordner1/Ordner2/document_name). Ordner werden automatisch erstellt.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "Der Dateiname der physischen Datei inklusive Endung (z.B. file.pdf)",
|
||||
"The description of this document": "Die Beschreibung dieses Dokuments",
|
||||
"The assigned date of this document": "Das zugewiesene Datum dieses Dokuments",
|
||||
"Staff members to share this document with (only for firm documents)": "Mitarbeiter für die Freigabe dieses Dokuments (nur für feste Dokumente)",
|
||||
"The name of this event": "Der Name dieses Ereignisses",
|
||||
"The start date and time of this event": "Das Startdatum und die Uhrzeit dieses Ereignisses",
|
||||
"The end date and time of this event": "Das Enddatum und die Uhrzeit dieses Ereignisses",
|
||||
"Staff members to associate with this event": "Personalmitglieder, die mit diesem Event assoziiert werden sollen",
|
||||
"Staff members who are required to attend (all others are optional)": "Personalmitglieder, die anwesend sein müssen (alle anderen sind optional)",
|
||||
"Event description": "Ereignisbeschreibung",
|
||||
"Is this an all day event?": "Ist dies ein ganztägiges Event?",
|
||||
"Is this a private event?": "Ist dies ein privates Ereignisse?",
|
||||
"The location associated with this event": "Der diesem Ereignis zugeordnete Ort",
|
||||
"The case associated with this event": "Der diesem Ereignis zugeordnete Fall",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "Der Name der Aktivität für diese Ausgabe (wird erstellt wenn sie nicht existiert)",
|
||||
"The case to associate with this expense": "Der Fall, der mit dieser Ausgabe assoziiert werden soll",
|
||||
"The entry date of this expense": "Das Eintragsdatum dieser Ausgabe",
|
||||
"Cost of the expense": "Kosten der Ausgaben",
|
||||
"Number of units": "Anzahl der Einheiten",
|
||||
"Is this expense billable?": "Ist diese Kostenrechnung gültig?",
|
||||
"Description of the expense": "Beschreibung der Ausgaben",
|
||||
"The staff member associated with this expense": "Der diesem Aufwand zugeordnete Mitarbeiter",
|
||||
"The first name of the lead": "Der Vorname der Lead",
|
||||
"The last name of the lead": "Der Nachname der Lead",
|
||||
"The email of the lead": "Die E-Mail des Leads",
|
||||
"The middle name or initial of the lead": "Der mittlere oder Anfangsname des Leads",
|
||||
"Cell phone number": "Handynummer",
|
||||
"Work phone number": "Telefonnummer des Arbeitsplatzes",
|
||||
"Home phone number": "Hausnummer",
|
||||
"Date of birth": "Geburtsdatum",
|
||||
"Drivers license number": "Führerscheinnummer",
|
||||
"Drivers license state": "Führerscheinstatus",
|
||||
"Additional information (visible to firm members only)": "Zusätzliche Informationen (nur für Firmenmitglieder sichtbar)",
|
||||
"The referral source to associate with this lead": "Die Empfehlungsquelle, die diesem Lead zugeordnet werden soll",
|
||||
"Existing client or company who referred this lead": "Bestehende Kunde oder Firma, die dieses Lead verwiesen haben",
|
||||
"The name of the location": "Der Name des Ortes",
|
||||
"Choose the type of entity to create the note for": "Wählen Sie die Art der Entität zum Erstellen der Notiz für",
|
||||
"Select the entity to create the note for": "Wählen Sie die Entität zum Erstellen der Notiz für",
|
||||
"Subject of the note": "Betreff der Notiz",
|
||||
"The body text of the note": "Der Text der Notiz",
|
||||
"The date and time of the note": "Datum und Uhrzeit der Notiz",
|
||||
"The first name of the client": "Der Vorname des Clients",
|
||||
"The last name of the client": "Der Nachname des Clients",
|
||||
"The email of the client": "Die E-Mail des Clients",
|
||||
"The middle name of the client": "Der mittlere Name des Clients",
|
||||
"Fax phone number": "Faxnummer",
|
||||
"The people group to associate with this client": "Die Personengruppe, die diesem Client zugeordnet werden soll",
|
||||
"Cases to associate with this client": "Fälle, die diesem Client zugeordnet werden sollen",
|
||||
"The name of the practice area": "Der Name des Praxisbereichs",
|
||||
"The name of the referral source": "Der Name der Empfehlungsquelle",
|
||||
"The name of this task": "Der Name dieser Aufgabe",
|
||||
"The priority of this task": "Die Priorität dieser Aufgabe",
|
||||
"The due date of this task": "Enddatum dieser Aufgabe",
|
||||
"Staff members to assign this task to": "Mitarbeiter für die Zuweisung dieser Aufgabe an",
|
||||
"Task description": "Aufgabenbeschreibung",
|
||||
"Is this task completed?": "Ist diese Aufgabe erledigt?",
|
||||
"The case to associate with this task": "Der Fall, der mit dieser Aufgabe verknüpft werden soll",
|
||||
"The activity name for this time entry": "Der Aktivitätsname für diesen Zeiteintrag",
|
||||
"The case to associate with this time entry": "Der Fall, der mit diesem Zeiteintrag verknüpft werden soll",
|
||||
"The staff member associated with this time entry": "Der diesem Zeiteintrag zugeordnete Mitarbeiter",
|
||||
"The entry date of this time entry": "Das Eintragsdatum dieses Zeiteintrags",
|
||||
"The rate in dollars": "Der Kurs in Dollar",
|
||||
"The duration in hours": "Die Dauer in Stunden",
|
||||
"Description of the time entry": "Beschreibung des Zeiteintrags",
|
||||
"Is this time entry billable?": "Ist dieser Zeiteintrag billable?",
|
||||
"Is this time entry a flat fee?": "Ist dieser Zeiteintrag eine pauschale Gebühr?",
|
||||
"When the call happened": "Wenn der Anruf passiert ist",
|
||||
"The caller's phone number": "Telefonnummer des Anrufers",
|
||||
"The staff member this call is associated with": "Das Personalmitglied, mit dem dieser Anruf verbunden ist",
|
||||
"A description of the call": "Eine Beschreibung des Anrufs",
|
||||
"Choose how to identify the caller": "Wählen Sie, wie der Anrufer identifiziert werden soll",
|
||||
"The caller's name": "Name des Anrufers",
|
||||
"The existing client": "Der bestehende Client",
|
||||
"The existing lead": "Der bestehende Lead",
|
||||
"Type of call": "Art des Anrufs",
|
||||
"Should this call show as resolved?": "Soll dieser Aufruf als gelöst angezeigt werden?",
|
||||
"Select the case to update": "Wählen Sie den zu aktualisierenden Fall",
|
||||
"An identifier for this case": "Ein Bezeichner für diesen Fall",
|
||||
"The date the case was created/opened": "Das Datum, an dem der Fall erstellt/geöffnet wurde",
|
||||
"The stage the case is currently in": "Die Phase, in der sich der Fall derzeit befindet",
|
||||
"The practice area for this case": "Der Praxisbereich für diesen Fall",
|
||||
"The statute of limitations date": "Verjährungsdatum",
|
||||
"The client or company to assign as the billing contact": "Der Kunde oder die Firma, die als Rechnungskontakt zugewiesen werden soll",
|
||||
"Clients to associate with the case": "Kunden, die mit dem Fall assoziiert werden",
|
||||
"Companies to associate with the case": "Mit dem Fall assoziierte Unternehmen",
|
||||
"Staff members to associate with the case": "Personalmitglieder, die mit dem Fall assoziiert werden sollen",
|
||||
"Select the lead lawyer for this case": "Wählen Sie den Leadanwalt für diesen Fall",
|
||||
"Select the originating lawyer for this case": "Wählen Sie den ursprünglichen Rechtsanwalt für diesen Fall aus",
|
||||
"Select the company to update": "Wählen Sie die zu aktualisierende Firma",
|
||||
"Select the client to update": "Klient zum Aktualisieren auswählen",
|
||||
"HTTP method to use": "Zu verwendende HTTP-Methode",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "API Endpunkt Pfad (z.B. /cases oder /clients/123)",
|
||||
"Query parameters as JSON object": "Abfrageparameter als JSON-Objekt abfragen",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Body als JSON anfordern (für POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "Zusätzliche Header als JSON-Objekt",
|
||||
"Filter by case status": "Filtern nach Fall Status",
|
||||
"Filter cases updated after this date and time": "Filterfälle nach diesem Datum und der Uhrzeit aktualisiert",
|
||||
"Number of results per page (1-1000)": "Anzahl der Ergebnisse pro Seite (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Kommaseparierte Liste der zu schließenden Client-Felder (z.B. id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Kommaseparierte Liste von benutzerdefinierten Feldern zum Einbinden (z.B. id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filteranrufe nach diesem Datum und der Uhrzeit aktualisiert",
|
||||
"Filter case stages updated after this date and time": "Fallstufen nach diesem Datum und der Uhrzeit aktualisiert",
|
||||
"Filter by company name": "Nach Firmennamen filtern",
|
||||
"Filter by email address": "Nach E-Mail-Adresse filtern",
|
||||
"Filter by main phone number": "Nach Haupttelefonnummer filtern",
|
||||
"Filter by fax phone number": "Nach Faxnummer filtern",
|
||||
"Filter companies updated after this date and time": "Unternehmen filtern, die nach diesem Datum und der Uhrzeit aktualisiert werden",
|
||||
"Filter locations updated after this date and time": "Filter-Standorte, die nach diesem Datum und der Zeit aktualisiert werden",
|
||||
"Filter people groups updated after this date and time": "Personengruppen filtern, die nach diesem Datum und der Zeit aktualisiert werden",
|
||||
"Filter by first name": "Nach Vornamen filtern",
|
||||
"Filter by last name": "Nach Nachnamen filtern",
|
||||
"Filter by cell phone number": "Nach Handynummer filtern",
|
||||
"Filter by work phone number": "Nach Arbeitsnummer filtern",
|
||||
"Filter by home phone number": "Nach Hausnummer filtern",
|
||||
"Filter clients updated after this date and time": "Filter Clients nach diesem Datum und der Uhrzeit aktualisiert",
|
||||
"Filter practice areas updated after this date and time": "Nach diesem Datum und der Uhrzeit aktualisierte Praxisbereiche",
|
||||
"Filter referral sources updated after this date and time": "Empfehlungsquellen filtern, die nach diesem Datum und der Zeit aktualisiert werden",
|
||||
"Filter by staff status": "Nach Personalstatus filtern",
|
||||
"Filter staff updated after this date and time": "Mitarbeiter filtern nach diesem Datum und der Uhrzeit aktualisiert",
|
||||
"The name of the case to find or create": "Der Name des zu findenden oder erstellenden Falls",
|
||||
"An identifier for this case (used only when creating)": "Ein Bezeichner für diesen Fall (wird nur beim Erstellen verwendet)",
|
||||
"The date the case was created/opened (used only when creating)": "Das Datum, an dem der Fall erstellt/geöffnet wurde (nur bei der Erstellung verwendet)",
|
||||
"The stage the case is currently in (used only when creating)": "Die Phase, in der der Fall derzeit ist (wird nur beim Erstellen verwendet)",
|
||||
"The practice area for this case (used only when creating)": "Der Praxisbereich für diesen Fall (wird nur bei der Erstellung verwendet)",
|
||||
"A description for the case (used only when creating)": "Eine Beschreibung für den Fall (wird nur beim Erstellen verwendet)",
|
||||
"The statute of limitations date (used only when creating)": "Das Begrenzungsdatum (nur bei der Erstellung verwendet)",
|
||||
"The status of the case (used only when creating)": "Der Status des Gehäuses (wird nur beim Erstellen verwendet)",
|
||||
"The outstanding balance of this case (used only when creating)": "Das ausstehende Gleichgewicht dieses Falls (nur bei der Erstellung verwendet)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "Der Kunde oder die Firma, die als Rechnungskontakt zugewiesen wird (nur bei der Erstellung verwendet)",
|
||||
"Clients to associate with the case (used only when creating)": "Clients die mit dem Fall assoziiert werden (nur beim Erstellen verwendet)",
|
||||
"Companies to associate with the case (used only when creating)": "Unternehmen, die mit dem Gehäuse assoziiert werden (nur bei der Erstellung verwendet)",
|
||||
"Staff members to associate with the case (used only when creating)": "Personalmitglieder, die dem Fall zugeordnet werden sollen (nur bei der Erstellung verwendet)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Wählen Sie den Leadanwalt für diesen Fall aus (nur bei der Erstellung verwendet)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Wählen Sie den ursprünglichen Rechtsanwalt für diesen Fall aus (nur bei der Erstellung verwendet)",
|
||||
"The name of the case stage to find or create": "Name des zu findenden oder erstellenden Fallstadiums",
|
||||
"The name of the company to find or create": "Der Name des zu findenden oder erstellenden Unternehmens",
|
||||
"Company email address (used only when creating)": "E-Mail-Adresse der Firma (nur bei der Erstellung verwendet)",
|
||||
"Company website URL (used only when creating)": "URL der Firmenwebseite (nur beim Erstellen verwendet)",
|
||||
"Main phone number for the company (used only when creating)": "Haupt-Telefonnummer für die Firma (nur bei der Erstellung verwendet)",
|
||||
"Fax phone number for the company (used only when creating)": "Fax-Telefonnummer für die Firma (nur bei der Erstellung verwendet)",
|
||||
"Street address line 1 (used only when creating)": "Straßenadresse Linie 1 (nur beim Erstellen verwendet)",
|
||||
"Street address line 2 (used only when creating)": "Straße Adresszeile 2 (nur beim Erstellen verwendet)",
|
||||
"City (used only when creating)": "Stadt (nur beim Erstellen verwendet)",
|
||||
"State (used only when creating)": "Status (wird nur bei der Erstellung verwendet)",
|
||||
"ZIP/Postal code (used only when creating)": "Postleitzahl (nur beim Erstellen verwendet)",
|
||||
"Country (used only when creating)": "Land (nur bei der Erstellung verwendet)",
|
||||
"Additional information about the company (used only when creating)": "Zusätzliche Informationen über das Unternehmen (nur bei der Erstellung verwendet)",
|
||||
"Cases to associate with the company (used only when creating)": "Fälle, die der Firma zugeordnet werden sollen (nur bei der Erstellung verwendet)",
|
||||
"Clients to associate with the company (used only when creating)": "Kunden, die mit der Firma assoziiert werden (nur bei der Erstellung verwendet)",
|
||||
"The name of the location to find or create": "Der Name des zu findenden oder erstellenden Ortes",
|
||||
"The email of the client (used only when creating)": "Die E-Mail des Clients (wird nur beim Erstellen verwendet)",
|
||||
"The middle name of the client (used only when creating)": "Der mittlere Name des Clients (wird nur beim Erstellen verwendet)",
|
||||
"Cell phone number (used only when creating)": "Handynummer (nur bei der Erstellung verwendet)",
|
||||
"Work phone number (used only when creating)": "Arbeits-Telefonnummer (nur bei der Erstellung verwendet)",
|
||||
"Home phone number (used only when creating)": "Heimtelefonnummer (nur bei der Erstellung verwendet)",
|
||||
"Fax phone number (used only when creating)": "Fax-Telefonnummer (nur bei der Erstellung verwendet)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Geburtsdatum im ISO-8601 Format: JJJJ-MM-TT (Wird nur bei der Erstellung verwendet)",
|
||||
"Additional information (used only when creating)": "Zusätzliche Informationen (nur bei der Erstellung verwendet)",
|
||||
"The people group to associate (used only when creating)": "Zu verknüpfende Personengruppe (wird nur bei der Erstellung verwendet)",
|
||||
"Cases to associate with the client (used only when creating)": "Fälle, die dem Client zugeordnet werden sollen (wird nur beim Erstellen verwendet)",
|
||||
"The name of the practice area to find or create": "Der Name des zu findenden oder erstellenden Übungsbereichs",
|
||||
"The name of the referral source to find or create": "Der Name der Empfehlungsquelle, die gefunden oder erstellt werden soll",
|
||||
"Open": "Öffnen",
|
||||
"Closed": "Geschlossen",
|
||||
"Expense": "Kosten",
|
||||
"Time": "Zeit",
|
||||
"Time and Expense": "Zeit und Kosten",
|
||||
"Short Text": "Kurzer Text",
|
||||
"Long Text": "Lange Text",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "Liste",
|
||||
"Currency": "Währung",
|
||||
"Firm Document": "Firmendokument",
|
||||
"Case Document": "Falldokument",
|
||||
"Low": "Niedrig",
|
||||
"Medium": "Mittel",
|
||||
"High": "Hoch",
|
||||
"Unknown (provide name)": "Unbekannt (Vorname)",
|
||||
"Existing Client": "Vorhandener Kunde",
|
||||
"Existing Lead": "Vorhandener Lead",
|
||||
"Incoming": "Eingehend",
|
||||
"Outgoing": "Ausgehend",
|
||||
"GET": "ERHALTEN",
|
||||
"POST": "POST",
|
||||
"PUT": "PUT",
|
||||
"PATCH": "PATCH",
|
||||
"DELETE": "LÖSCHEN",
|
||||
"Active": "Aktiv",
|
||||
"Inactive": "Inaktiv",
|
||||
"Case Added or Updated": "Fall hinzugefügt oder aktualisiert",
|
||||
"Event Added or Updated": "Ereignis hinzugefügt oder aktualisiert",
|
||||
"Person Added or Updated": "Person hinzugefügt oder aktualisiert",
|
||||
"Company Added or Updated": "Firma hinzugefügt oder aktualisiert",
|
||||
"Lead Added or Updated": "Lead hinzugefügt oder aktualisiert",
|
||||
"Triggers when a case has been added or updated": "Löst aus, wenn ein Fall hinzugefügt oder aktualisiert wurde",
|
||||
"Triggers when an event has been added or updated": "Wird ausgelöst, wenn ein Ereignis hinzugefügt oder aktualisiert wurde",
|
||||
"Triggers when a person has been added or updated": "Löst aus, wenn eine Person hinzugefügt oder aktualisiert wurde",
|
||||
"Triggers when a company has been added or updated": "Löst aus, wenn ein Unternehmen hinzugefügt oder aktualisiert wurde",
|
||||
"Triggers when a lead has been added or updated": "Auslöser wenn ein Lead hinzugefügt oder aktualisiert wurde"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automatiza los flujos de trabajo de administración de casos legales con MyCase. Crea y gestiona casos, clientes, empresas, eventos, tareas, entradas de tiempo, documentos y más. Recibe notificaciones cuando se añadan o actualizan casos, eventos, personas, empresas o clientes potenciales.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## Configuración de MyCase OAuth 2.0\n\n### Obtener credenciales de cliente\n. Póngase en contacto con soporte de MyCase en [https://www.mycase.com/support/](https://www.mycase. om/support/) para solicitar credenciales de cliente de OAuth 2.0\n2. Proporcione los datos de su aplicación y solicite un ID de cliente y un secreto de cliente\n3. El soporte de MyCase te proporcionará con:\n - **ID de cliente**: Tu ID de cliente OAuth\n - **Código del cliente**: tu secreto de cliente OAuth\n - **URI**: Una URI de redirección preconfigurada para tu aplicación\n\n### Permisos requeridos\nEl usuario autorizador debe tener el **\"Administrar las preferencias de tu empresa, permiso de facturación y opciones de pago\"** establecido a **Sí** en MyCase.\n\n### Flujo de Autorización\nMyCase utiliza el flujo de concesión de código de autorización OAuth 2.0 con los siguientes puntos finales:\n\n**URL de Autorización**: `https://auth. ycase.com/login_sessions/new` \n**URL de ficha**: `https://auth.mycase. om/tokens`\n\n### Límites de frecuencia\n- 25 solicitudes por segundo por cliente\n- Los tokens de acceso son válidos por 24 horas\n- Los tokens de actualización son válidos por 2 semanas\n\nPara documentación detallada de la API, visita: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi. toplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started) \n",
|
||||
"Create Case": "Crear Caso",
|
||||
"Create Case Stage": "Crear Fase de Caso",
|
||||
"Create Company": "Crear empresa",
|
||||
"Create Custom Field": "Crear campo personalizado",
|
||||
"Create Document": "Crear Documento",
|
||||
"Create Event": "Crear Evento",
|
||||
"Create Expense": "Crear gastos",
|
||||
"Create Lead": "Crear plomo",
|
||||
"Create Location": "Crear ubicación",
|
||||
"Create Note": "Crear nota",
|
||||
"Create Person (Client)": "Crear Persona (Cliente)",
|
||||
"Create Practice Area": "Crear área de prácticas",
|
||||
"Create Referral Source": "Crear fuente de referencia",
|
||||
"Create Task": "Crear tarea",
|
||||
"Create Time Entry": "Crear entrada de tiempo",
|
||||
"Create Call": "Crear llamada",
|
||||
"Update Case": "Actualizar Caso",
|
||||
"Update Company": "Actualizar Compañía",
|
||||
"Update Person (Client)": "Actualizar Persona (Cliente)",
|
||||
"API Request": "Solicitud de API",
|
||||
"Find Case": "Buscar Caso",
|
||||
"Find Call": "Encontrar llamada",
|
||||
"Find Case Stage": "Buscar Fase de Caso",
|
||||
"Find Company": "Buscar empresa",
|
||||
"Find Location": "Buscar ubicación",
|
||||
"Find People Group": "Buscar Grupo de Personas",
|
||||
"Find Person (Client)": "Buscar Persona (Cliente)",
|
||||
"Find Practice Area": "Encontrar área de prácticas",
|
||||
"Find Referral Source": "Encontrar fuente de referencia",
|
||||
"Find Staff": "Encontrar personal",
|
||||
"Find or Create Case": "Buscar o Crear Caso",
|
||||
"Find or Create Case Stage": "Buscar o Crear Fase de Caso",
|
||||
"Find or Create Company": "Buscar o crear empresa",
|
||||
"Find or Create Location": "Buscar o crear ubicación",
|
||||
"Find or Create Person (Client)": "Buscar o Crear Persona (Cliente)",
|
||||
"Find or Create Practice Area": "Buscar o crear área de prácticas",
|
||||
"Find or Create Referral Source": "Buscar o Crear Fuente de Referido",
|
||||
"Creates a new case in MyCase": "Crea un caso nuevo en MyCase",
|
||||
"Creates a new case stage in MyCase": "Crea una nueva etapa de caso en MyCase",
|
||||
"Creates a new company in MyCase": "Crea una nueva empresa en MyCase",
|
||||
"Creates a new custom field in MyCase": "Crea un nuevo campo personalizado en MyCase",
|
||||
"Creates a new document in MyCase": "Crea un nuevo documento en MyCaso",
|
||||
"Creates a new event in MyCase": "Crea un nuevo evento en MyCase",
|
||||
"Creates a new expense in MyCase": "Crea un nuevo gasto en MyCase",
|
||||
"Creates a new lead in MyCase": "Crea un nuevo cliente potencial en MyCase",
|
||||
"Creates a new location in MyCase": "Crea una nueva ubicación en MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Crea una nueva nota para un caso, cliente o empresa en MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Crea un nuevo cliente individual (persona) en MyCase",
|
||||
"Creates a new practice area in MyCase": "Crea un nuevo área de práctica en MyCase",
|
||||
"Creates a new referral source in MyCase": "Crea una nueva fuente de referencia en MyCase",
|
||||
"Creates a new task in MyCase": "Crea una nueva tarea en MyCase",
|
||||
"Creates a new time entry in MyCase": "Crea una nueva entrada de tiempo en MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Crea una nueva llamada en el registro de llamadas en MyCase",
|
||||
"Updates an existing case in MyCase": "Actualiza un caso existente en MyCaso",
|
||||
"Updates an existing company in MyCase": "Actualiza una empresa existente en MyCaso",
|
||||
"Updates an existing individual client (person) in MyCase": "Actualiza un cliente individual existente (persona) en MyCaso",
|
||||
"Makes a raw HTTP request to the MyCase API": "Hace una petición HTTP sin procesar a la API MyCase",
|
||||
"Searches for cases with optional filters": "Busca casos con filtros opcionales",
|
||||
"Searches for calls with optional filters": "Busca llamadas con filtros opcionales",
|
||||
"Searches for case stages with optional filters": "Busca etapas de caso con filtros opcionales",
|
||||
"Searches for companies with optional filters": "Búsqueda de empresas con filtros opcionales",
|
||||
"Searches for locations with optional filters": "Busca ubicaciones con filtros opcionales",
|
||||
"Searches for people groups with optional filters": "Busca grupos de personas con filtros opcionales",
|
||||
"Searches for clients (people) with optional filters": "Busca clientes (personas) con filtros opcionales",
|
||||
"Searches for practice areas with optional filters": "Busca áreas de práctica con filtros opcionales",
|
||||
"Searches for referral sources with optional filters": "Busca fuentes de referencia con filtros opcionales",
|
||||
"Searches for staff members with optional filters": "Busca miembros del personal con filtros opcionales",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Encuentra un caso por nombre o crea uno nuevo si no existe",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Encuentra una etapa de caso por nombre o crea una nueva si no existe",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Encuentra una empresa por nombre o crea una nueva si no existe",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Encuentra una ubicación por nombre o crea una nueva si no existe",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Encuentra a una persona por nombre y apellido o crea una nueva si no se encuentra",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Encuentra un área de práctica por nombre o crea una nueva si no existe",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Encuentra una fuente de referencia por nombre o crea una nueva si no existe",
|
||||
"Case Name": "Nombre del Caso",
|
||||
"Case Number": "Número de Caso",
|
||||
"Opened Date": "Fecha de apertura",
|
||||
"Case Stage": "Etapa de Caso",
|
||||
"Practice Area": "Área de práctica",
|
||||
"Description": "Descripción",
|
||||
"Statute of Limitations Date": "Fecha límite",
|
||||
"Status": "Estado",
|
||||
"Outstanding Balance": "Saldo pendiente",
|
||||
"Billing Contact ID": "ID de contacto de facturación",
|
||||
"Client IDs": "ID de cliente",
|
||||
"Company IDs": "ID de empresa",
|
||||
"Staff ID": "ID del personal",
|
||||
"Lead Lawyer": "Lead Lead",
|
||||
"Originating Lawyer": "Viajero Originario",
|
||||
"Case Stage Name": "Nombre de Etapa de Caso",
|
||||
"Company Name": "Nombre De La Empresa",
|
||||
"Email": "E-mail",
|
||||
"Website": "Sitio web",
|
||||
"Main Phone Number": "Número de teléfono principal",
|
||||
"Fax Phone Number": "Número de teléfono fax",
|
||||
"Address Line 1": "Dirección línea 1",
|
||||
"Address Line 2": "Dirección línea 2",
|
||||
"City": "Ciudad",
|
||||
"State": "Estado",
|
||||
"ZIP Code": "Código postal",
|
||||
"Country": "País",
|
||||
"Notes": "Notas",
|
||||
"Cases": "Casos",
|
||||
"Clients": "Clientes",
|
||||
"Field Name": "Nombre del campo",
|
||||
"Parent Type": "Tipo de padre",
|
||||
"Field Type": "Tipo de campo",
|
||||
"List Options": "Opciones de lista",
|
||||
"Document Type": "Tipo de documento",
|
||||
"Case": "Caso",
|
||||
"Document Path": "Ruta del documento",
|
||||
"Filename": "Nombre de archivo",
|
||||
"Assigned Date": "Fecha Asignada",
|
||||
"Staff": "Personal",
|
||||
"Event Name": "Nombre del evento",
|
||||
"Start Date/Time": "Fecha/hora de inicio",
|
||||
"End Date/Time": "Fecha/hora de fin",
|
||||
"Required Staff": "Personal requerido",
|
||||
"All Day Event": "Evento de todo el día",
|
||||
"Private Event": "Evento privado",
|
||||
"Location": "Ubicación",
|
||||
"Activity Name": "Nombre de la actividad",
|
||||
"Entry Date": "Fecha de entrada",
|
||||
"Cost": "Costo",
|
||||
"Units": "Unidades",
|
||||
"Billable": "Facturable",
|
||||
"First Name": "Nombre",
|
||||
"Last Name": "Apellido",
|
||||
"Middle Initial": "Medio Inicial",
|
||||
"Cell Phone Number": "Número de teléfono móvil",
|
||||
"Work Phone Number": "Número de teléfono del trabajo",
|
||||
"Home Phone Number": "Número de teléfono de inicio",
|
||||
"Birthdate": "Cumpleaños",
|
||||
"Drivers License Number": "Número de licencia de conducir",
|
||||
"Drivers License State": "Estado de la licencia de conducir",
|
||||
"Lead Details": "Detalles del plomo",
|
||||
"Referral Source": "Fuente de referencia",
|
||||
"Referred By": "Recomendado por",
|
||||
"Location Name": "Nombre de ubicación",
|
||||
"Entity Type": "Tipo de entidad",
|
||||
"Entity": "Entidad",
|
||||
"Subject": "Asunto",
|
||||
"Note": "Nota",
|
||||
"Date": "Fecha",
|
||||
"Middle Name": "Segundo nombre",
|
||||
"People Group": "Grupo de Contactos",
|
||||
"Practice Area Name": "Nombre de área de práctica",
|
||||
"Referral Source Name": "Nombre de origen de referencia",
|
||||
"Task Name": "Nombre de tarea",
|
||||
"Priority": "Prioridad",
|
||||
"Due Date": "Fecha de fin",
|
||||
"Completed": "Completado",
|
||||
"Rate": "Tasa",
|
||||
"Hours": "Horas",
|
||||
"Flat Fee": "Tarifa plana",
|
||||
"Called At": "Llamado en",
|
||||
"Caller Phone Number": "Número de teléfono de llamada",
|
||||
"Call For": "Llamar para",
|
||||
"Message": "Mensaje",
|
||||
"Caller Type": "Tipo de llamador",
|
||||
"Caller Name": "Nombre del llamador",
|
||||
"Client": "Cliente",
|
||||
"Lead": "Plomo",
|
||||
"Call Type": "Tipo de llamada",
|
||||
"Resolved": "Resuelto",
|
||||
"Billing Contact": "Contacto de facturación",
|
||||
"Companies": "Empresas",
|
||||
"Company": "Empresa",
|
||||
"Method": "Método",
|
||||
"Path": "Ruta",
|
||||
"Query Parameters": "Parámetros de consulta",
|
||||
"Request Body": "Cuerpo de solicitud",
|
||||
"Additional Headers": "Cabeceras adicionales",
|
||||
"Updated After": "Actualizado después de",
|
||||
"Page Size": "Tamaño de página",
|
||||
"Client Fields": "Campos del cliente",
|
||||
"Custom Field Fields": "Campos de campo personalizados",
|
||||
"Name": "Nombre",
|
||||
"The name of the case (must be unique)": "El nombre del caso (debe ser único)",
|
||||
"An identifier for this case (recommended to be unique)": "Un identificador para este caso (recomendado para ser único)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "La fecha en que el caso fue creado/abierto (formato ISO-8601: AAA-MM-DD)",
|
||||
"The stage the case is currently in (must match MyCase system)": "La etapa en la que se encuentra actualmente el caso (debe coincidir con el sistema MyCase)",
|
||||
"The practice area for this case (must match MyCase system)": "El área de práctica para este caso (debe coincidir con el sistema MyCase)",
|
||||
"A description for the case": "Una descripción para el caso",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "El estatuto de la fecha de las limitaciones (formato de fecha ISO-8601: AAA-MM-DD)",
|
||||
"The status of the case": "El estado del caso",
|
||||
"The outstanding balance of this case": "El saldo pendiente de este caso",
|
||||
"The ID of the client or company to assign as the billing contact": "El ID del cliente o empresa a asignar como contacto de facturación",
|
||||
"Comma-separated list of client IDs to associate with the case": "Lista separada por comas de IDs de cliente a asociar con el caso",
|
||||
"Comma-separated list of company IDs to associate with the case": "Lista separada por comas de los IDs de la empresa a asociar con el caso",
|
||||
"ID of staff member to associate with the case": "ID del miembro del personal a asociar con el caso",
|
||||
"Is the staff member the lead lawyer for this case?": "¿Es el miembro del personal el principal abogado de este caso?",
|
||||
"Is the staff member the originating lawyer for this case?": "¿Es el miembro del personal el abogado originario de este caso?",
|
||||
"The name of the case stage": "El nombre de la etapa de caso",
|
||||
"The name of the company": "El nombre de la empresa",
|
||||
"Company email address": "Dirección de correo de la empresa",
|
||||
"Company website URL": "URL del sitio web de la empresa",
|
||||
"Main phone number for the company": "Número de teléfono principal de la empresa",
|
||||
"Fax phone number for the company": "Número de teléfono fax para la empresa",
|
||||
"Street address line 1": "Línea 1 de dirección de calle",
|
||||
"Street address line 2": "Calle línea 2",
|
||||
"ZIP/Postal code": "Código postal",
|
||||
"Additional information about the company (visible to firm members only)": "Información adicional sobre la empresa (sólo visible para los miembros de la empresa)",
|
||||
"Cases to associate with the company": "Casos para asociar con la empresa",
|
||||
"Clients to associate with the company": "Clientes a asociar con la empresa",
|
||||
"The name of the custom field": "El nombre del campo personalizado",
|
||||
"The parent resource type of the custom field": "El tipo de recurso padre del campo personalizado",
|
||||
"The field type of the custom field": "El tipo de campo del campo personalizado",
|
||||
"List of options for the custom field (required if field type is \"list\")": "Lista de opciones para el campo personalizado (obligatorio si el tipo de campo es \"lista\")",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Elija si desea crear un documento en firme o asociarlo con un caso específico",
|
||||
"Select the case to associate this document with": "Seleccione el caso con el que asociar este documento",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "La ruta relativa que incluye el nombre del documento (por ejemplo, carpeta1/carpeta2/nombredocumento). Las carpetas se crearán automáticamente.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "El nombre del archivo físico incluyendo la extensión (ej., file.pdf)",
|
||||
"The description of this document": "La descripción de este documento",
|
||||
"The assigned date of this document": "La fecha asignada de este documento",
|
||||
"Staff members to share this document with (only for firm documents)": "Miembros del personal con el que compartir este documento (sólo para documentos firmes)",
|
||||
"The name of this event": "El nombre de este evento",
|
||||
"The start date and time of this event": "La fecha y hora de inicio de este evento",
|
||||
"The end date and time of this event": "La fecha y hora de fin de este evento",
|
||||
"Staff members to associate with this event": "Miembros del personal para asociar con este evento",
|
||||
"Staff members who are required to attend (all others are optional)": "Miembros del personal que deben asistir (todos los demás son opcionales)",
|
||||
"Event description": "Descripción del evento",
|
||||
"Is this an all day event?": "¿Es este un evento de todo el día?",
|
||||
"Is this a private event?": "¿Es esto un evento privado?",
|
||||
"The location associated with this event": "La ubicación asociada con este evento",
|
||||
"The case associated with this event": "El caso asociado con este evento",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "El nombre de la actividad para este gasto (se creará si no existe)",
|
||||
"The case to associate with this expense": "El caso a asociar con este gasto",
|
||||
"The entry date of this expense": "La fecha de entrada de este gasto",
|
||||
"Cost of the expense": "Costo del gasto",
|
||||
"Number of units": "Número de unidades",
|
||||
"Is this expense billable?": "¿Es esta cartilla de gastos?",
|
||||
"Description of the expense": "Descripción del gasto",
|
||||
"The staff member associated with this expense": "El miembro del personal asociado con este gasto",
|
||||
"The first name of the lead": "El nombre del cliente principal",
|
||||
"The last name of the lead": "El apellido del cliente principal",
|
||||
"The email of the lead": "El correo electrónico del cliente principal",
|
||||
"The middle name or initial of the lead": "El nombre medio o inicial del plomo",
|
||||
"Cell phone number": "Número de teléfono móvil",
|
||||
"Work phone number": "Número de teléfono de trabajo",
|
||||
"Home phone number": "Número de teléfono de inicio",
|
||||
"Date of birth": "Fecha de nacimiento",
|
||||
"Drivers license number": "Número de licencia de conducir",
|
||||
"Drivers license state": "Estado de la licencia de conducir",
|
||||
"Additional information (visible to firm members only)": "Información adicional (sólo visible para los miembros de la firma)",
|
||||
"The referral source to associate with this lead": "La fuente de referencia para asociar con esta iniciativa",
|
||||
"Existing client or company who referred this lead": "Cliente existente o empresa que se refirió a esta iniciativa",
|
||||
"The name of the location": "El nombre de la ubicación",
|
||||
"Choose the type of entity to create the note for": "Elija el tipo de entidad para crear la nota para",
|
||||
"Select the entity to create the note for": "Seleccione la entidad para crear la nota para",
|
||||
"Subject of the note": "Asunto de la nota",
|
||||
"The body text of the note": "El texto del cuerpo de la nota",
|
||||
"The date and time of the note": "La fecha y hora de la nota",
|
||||
"The first name of the client": "El nombre del cliente",
|
||||
"The last name of the client": "El apellido del cliente",
|
||||
"The email of the client": "El email del cliente",
|
||||
"The middle name of the client": "El nombre central del cliente",
|
||||
"Fax phone number": "Número de teléfono fax",
|
||||
"The people group to associate with this client": "El grupo de personas para asociar con este cliente",
|
||||
"Cases to associate with this client": "Casos para asociar con este cliente",
|
||||
"The name of the practice area": "El nombre del área de práctica",
|
||||
"The name of the referral source": "El nombre de la fuente de referencia",
|
||||
"The name of this task": "El nombre de esta tarea",
|
||||
"The priority of this task": "La prioridad de esta tarea",
|
||||
"The due date of this task": "La fecha límite de esta tarea",
|
||||
"Staff members to assign this task to": "Miembros del personal a los que asignar esta tarea",
|
||||
"Task description": "Descripción de la tarea",
|
||||
"Is this task completed?": "¿Está completada esta tarea?",
|
||||
"The case to associate with this task": "El caso a asociar con esta tarea",
|
||||
"The activity name for this time entry": "El nombre de la actividad para esta entrada de hora",
|
||||
"The case to associate with this time entry": "El caso a asociar con esta entrada de tiempo",
|
||||
"The staff member associated with this time entry": "El miembro del personal asociado con esta entrada de tiempo",
|
||||
"The entry date of this time entry": "La fecha de entrada de esta entrada de hora",
|
||||
"The rate in dollars": "El tipo de cambio en dólares",
|
||||
"The duration in hours": "La duración en horas",
|
||||
"Description of the time entry": "Descripción de la entrada de tiempo",
|
||||
"Is this time entry billable?": "¿Es la etiqueta de entrada de este tiempo?",
|
||||
"Is this time entry a flat fee?": "¿Es la entrada de esta hora una tarifa plana?",
|
||||
"When the call happened": "Cuando ocurrió la llamada",
|
||||
"The caller's phone number": "El número de teléfono de la llamada",
|
||||
"The staff member this call is associated with": "El miembro del personal con el que esta llamada está asociada",
|
||||
"A description of the call": "Una descripción de la llamada",
|
||||
"Choose how to identify the caller": "Elegir cómo identificar al llamante",
|
||||
"The caller's name": "El nombre de la llamada",
|
||||
"The existing client": "El cliente existente",
|
||||
"The existing lead": "El plomo existente",
|
||||
"Type of call": "Tipo de llamada",
|
||||
"Should this call show as resolved?": "¿Debe mostrar esta llamada como resuelta?",
|
||||
"Select the case to update": "Seleccione el caso a actualizar",
|
||||
"An identifier for this case": "Un identificador para este caso",
|
||||
"The date the case was created/opened": "La fecha en que el caso fue creado/abierto",
|
||||
"The stage the case is currently in": "La etapa en la que el caso está actualmente",
|
||||
"The practice area for this case": "El área de práctica para este caso",
|
||||
"The statute of limitations date": "El estatuto de la fecha de las limitaciones",
|
||||
"The client or company to assign as the billing contact": "El cliente o empresa a asignar como contacto de facturación",
|
||||
"Clients to associate with the case": "Clientes a asociar con el caso",
|
||||
"Companies to associate with the case": "Empresas a asociar con el caso",
|
||||
"Staff members to associate with the case": "Miembros del personal a asociar con el caso",
|
||||
"Select the lead lawyer for this case": "Seleccione el abogado principal para este caso",
|
||||
"Select the originating lawyer for this case": "Seleccione el abogado originario para este caso",
|
||||
"Select the company to update": "Seleccione la empresa a actualizar",
|
||||
"Select the client to update": "Seleccione el cliente a actualizar",
|
||||
"HTTP method to use": "Método HTTP a usar",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "Ruta de endpoints API (por ejemplo, /cases o /clients/123)",
|
||||
"Query parameters as JSON object": "Parámetros de consulta como objeto JSON",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Solicitar cuerpo como JSON (para POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "Encabezados adicionales como objeto JSON",
|
||||
"Filter by case status": "Filtrar por estado de caso",
|
||||
"Filter cases updated after this date and time": "Filtrar casos actualizados después de esta fecha y hora",
|
||||
"Number of results per page (1-1000)": "Número de resultados por página (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Lista separada por comas de los campos del cliente a incluir (por ejemplo, id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Lista separada por comas de campos personalizados a incluir (por ejemplo, id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filtrar llamadas actualizadas después de esta fecha y hora",
|
||||
"Filter case stages updated after this date and time": "Filtrar etapas de caso actualizadas después de esta fecha y hora",
|
||||
"Filter by company name": "Filtrar por nombre de empresa",
|
||||
"Filter by email address": "Filtrar por dirección de email",
|
||||
"Filter by main phone number": "Filtrar por número de teléfono principal",
|
||||
"Filter by fax phone number": "Filtrar por número de teléfono de fax",
|
||||
"Filter companies updated after this date and time": "Filtrar empresas actualizadas después de esta fecha y hora",
|
||||
"Filter locations updated after this date and time": "Filtrar ubicaciones actualizadas después de esta fecha y hora",
|
||||
"Filter people groups updated after this date and time": "Filtrar grupos de personas actualizados después de esta fecha y hora",
|
||||
"Filter by first name": "Filtrar por nombre",
|
||||
"Filter by last name": "Filtrar por apellido",
|
||||
"Filter by cell phone number": "Filtrar por número de teléfono móvil",
|
||||
"Filter by work phone number": "Filtrar por número de teléfono de trabajo",
|
||||
"Filter by home phone number": "Filtrar por número de teléfono de inicio",
|
||||
"Filter clients updated after this date and time": "Filtrar clientes actualizados después de esta fecha y hora",
|
||||
"Filter practice areas updated after this date and time": "Filtrar áreas de práctica actualizadas después de esta fecha y hora",
|
||||
"Filter referral sources updated after this date and time": "Filtrar fuentes de referencia actualizadas después de esta fecha y hora",
|
||||
"Filter by staff status": "Filtrar por estado del personal",
|
||||
"Filter staff updated after this date and time": "Filtrar personal actualizado después de esta fecha y hora",
|
||||
"The name of the case to find or create": "El nombre del caso para encontrar o crear",
|
||||
"An identifier for this case (used only when creating)": "Un identificador para este caso (usado sólo al crear)",
|
||||
"The date the case was created/opened (used only when creating)": "La fecha en la que el caso fue creado/abierto (usado sólo al crear)",
|
||||
"The stage the case is currently in (used only when creating)": "La etapa en la que se encuentra actualmente el caso (usado sólo al crear)",
|
||||
"The practice area for this case (used only when creating)": "El área de práctica para este caso (usado sólo al crear)",
|
||||
"A description for the case (used only when creating)": "Una descripción para el caso (usado sólo al crear)",
|
||||
"The statute of limitations date (used only when creating)": "El estatuto de la fecha de las limitaciones (usado sólo al crear)",
|
||||
"The status of the case (used only when creating)": "El estado del caso (usado sólo al crear)",
|
||||
"The outstanding balance of this case (used only when creating)": "El saldo pendiente de este caso (usado sólo al crear)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "El cliente o empresa a asignar como contacto de facturación (usado sólo al crear)",
|
||||
"Clients to associate with the case (used only when creating)": "Clientes a asociar con el caso (usado sólo al crear)",
|
||||
"Companies to associate with the case (used only when creating)": "Empresas a asociar con el caso (usado sólo al crear)",
|
||||
"Staff members to associate with the case (used only when creating)": "Miembros del personal a asociar con el caso (usado sólo al crear)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Seleccione el abogado principal para este caso (usado sólo al crear)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Seleccione el abogado de origen para este caso (usado sólo cuando se crea)",
|
||||
"The name of the case stage to find or create": "El nombre de la etapa de caso para encontrar o crear",
|
||||
"The name of the company to find or create": "El nombre de la empresa para encontrar o crear",
|
||||
"Company email address (used only when creating)": "Dirección de correo electrónico de la empresa (usado sólo al crear)",
|
||||
"Company website URL (used only when creating)": "URL del sitio web de la empresa (usado sólo al crear)",
|
||||
"Main phone number for the company (used only when creating)": "Número de teléfono principal de la empresa (usado sólo al crear)",
|
||||
"Fax phone number for the company (used only when creating)": "Número de teléfono de fax para la empresa (usado sólo al crear)",
|
||||
"Street address line 1 (used only when creating)": "Línea 1 de dirección de calle (usado sólo al crear)",
|
||||
"Street address line 2 (used only when creating)": "Línea 2 de dirección de calle (usado sólo al crear)",
|
||||
"City (used only when creating)": "Ciudad (usada sólo al crear)",
|
||||
"State (used only when creating)": "Estado (usado sólo al crear)",
|
||||
"ZIP/Postal code (used only when creating)": "Código postal (usado sólo al crear)",
|
||||
"Country (used only when creating)": "País (usado sólo al crear)",
|
||||
"Additional information about the company (used only when creating)": "Información adicional sobre la empresa (utilizada sólo al crear)",
|
||||
"Cases to associate with the company (used only when creating)": "Casos para asociar con la empresa (utilizados sólo al crear)",
|
||||
"Clients to associate with the company (used only when creating)": "Clientes a asociar con la empresa (usado sólo al crear)",
|
||||
"The name of the location to find or create": "El nombre de la ubicación para encontrar o crear",
|
||||
"The email of the client (used only when creating)": "El correo electrónico del cliente (usado sólo al crear)",
|
||||
"The middle name of the client (used only when creating)": "El nombre central del cliente (usado sólo al crear)",
|
||||
"Cell phone number (used only when creating)": "Número de teléfono móvil (usado sólo al crear)",
|
||||
"Work phone number (used only when creating)": "Número de teléfono de trabajo (usado sólo al crear)",
|
||||
"Home phone number (used only when creating)": "Número de teléfono de inicio (usado sólo al crear)",
|
||||
"Fax phone number (used only when creating)": "Número de teléfono de fax (usado sólo al crear)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Fecha de nacimiento en formato ISO-8601: AAA-MM-DD (usado sólo al crear)",
|
||||
"Additional information (used only when creating)": "Información adicional (usada sólo al crear)",
|
||||
"The people group to associate (used only when creating)": "El grupo de personas a asociar (usado sólo al crear)",
|
||||
"Cases to associate with the client (used only when creating)": "Casos a asociar con el cliente (usado sólo al crear)",
|
||||
"The name of the practice area to find or create": "El nombre del área de práctica para encontrar o crear",
|
||||
"The name of the referral source to find or create": "El nombre de la fuente de referencia para encontrar o crear",
|
||||
"Open": "Abrir",
|
||||
"Closed": "Cerrado",
|
||||
"Expense": "Gastos",
|
||||
"Time": "Hora",
|
||||
"Time and Expense": "Tiempo y gasto",
|
||||
"Short Text": "Texto corto",
|
||||
"Long Text": "Texto largo",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "Lista",
|
||||
"Currency": "Moneda",
|
||||
"Firm Document": "Firma Documento",
|
||||
"Case Document": "Documento de Caso",
|
||||
"Low": "Baja",
|
||||
"Medium": "Medio",
|
||||
"High": "Alta",
|
||||
"Unknown (provide name)": "Desconocido (nombre proporcionado)",
|
||||
"Existing Client": "Cliente existente",
|
||||
"Existing Lead": "Prospectos existentes",
|
||||
"Incoming": "Entrante",
|
||||
"Outgoing": "Saliente",
|
||||
"GET": "RECOGER",
|
||||
"POST": "POST",
|
||||
"PUT": "PUT",
|
||||
"PATCH": "PATCH",
|
||||
"DELETE": "BORRAR",
|
||||
"Active": "Activo",
|
||||
"Inactive": "Inactivo",
|
||||
"Case Added or Updated": "Caso añadido o actualizado",
|
||||
"Event Added or Updated": "Evento añadido o actualizado",
|
||||
"Person Added or Updated": "Persona añadida o actualizada",
|
||||
"Company Added or Updated": "Compañía añadida o actualizada",
|
||||
"Lead Added or Updated": "Prospectos añadidos o actualizados",
|
||||
"Triggers when a case has been added or updated": "Dispara cuando un caso ha sido añadido o actualizado",
|
||||
"Triggers when an event has been added or updated": "Dispara cuando un evento ha sido añadido o actualizado",
|
||||
"Triggers when a person has been added or updated": "Dispara cuando una persona ha sido añadida o actualizada",
|
||||
"Triggers when a company has been added or updated": "Dispara cuando una compañía ha sido añadida o actualizada",
|
||||
"Triggers when a lead has been added or updated": "Dispara cuando un cliente potencial ha sido añadido o actualizado"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automatisez les flux de travail de gestion de cas légaux avec MyCase. Créez et gérez des cas, des clients, des entreprises, des événements, des tâches, des entrées de temps, des documents, et plus encore. Soyez averti lorsque des cas, des événements, des personnes, des entreprises ou des prospects sont ajoutés ou mis à jour.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe authorizing user must have the **\"Manage your firm's preferences, billing, and payment options\"** permission set to **Yes** in MyCase.\n\n### Authorization Flow\nMyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:\n\n**Authorization URL**: `https://auth.mycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase.com/tokens`\n\n### Rate Limits\n- 25 requests per second per client\n- Access tokens are valid for 24 hours\n- Refresh tokens are valid for 2 weeks\n\nFor detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)\n",
|
||||
"Create Case": "Créer un Cas",
|
||||
"Create Case Stage": "Créer une phase de Cas",
|
||||
"Create Company": "Créer une entreprise",
|
||||
"Create Custom Field": "Créer un champ personnalisé",
|
||||
"Create Document": "Créer un document",
|
||||
"Create Event": "Créer un événement",
|
||||
"Create Expense": "Créer une dépense",
|
||||
"Create Lead": "Créer Prospect",
|
||||
"Create Location": "Créer un emplacement",
|
||||
"Create Note": "Créer une note",
|
||||
"Create Person (Client)": "Créer une personne (Client)",
|
||||
"Create Practice Area": "Créer un domaine d'entraînement",
|
||||
"Create Referral Source": "Créer une source de parrainage",
|
||||
"Create Task": "Créer une tâche",
|
||||
"Create Time Entry": "Créer une entrée de temps",
|
||||
"Create Call": "Créer un appel",
|
||||
"Update Case": "Mettre à jour le cas",
|
||||
"Update Company": "Mettre à jour la société",
|
||||
"Update Person (Client)": "Mise à jour de la personne (Client)",
|
||||
"API Request": "Requête API",
|
||||
"Find Case": "Trouver un Cas",
|
||||
"Find Call": "Trouver un appel",
|
||||
"Find Case Stage": "Étape de recherche de cas",
|
||||
"Find Company": "Trouver une entreprise",
|
||||
"Find Location": "Trouver un emplacement",
|
||||
"Find People Group": "Trouver un groupe de personnes",
|
||||
"Find Person (Client)": "Trouver une personne (Client)",
|
||||
"Find Practice Area": "Trouver le domaine d'entraînement",
|
||||
"Find Referral Source": "Trouver la source de parrainage",
|
||||
"Find Staff": "Trouver le personnel",
|
||||
"Find or Create Case": "Trouver ou créer un Cas",
|
||||
"Find or Create Case Stage": "Trouver ou créer une étape de cas",
|
||||
"Find or Create Company": "Trouver ou créer une entreprise",
|
||||
"Find or Create Location": "Trouver ou créer un emplacement",
|
||||
"Find or Create Person (Client)": "Trouver ou créer une personne (Client)",
|
||||
"Find or Create Practice Area": "Trouver ou créer un domaine d'entraînement",
|
||||
"Find or Create Referral Source": "Trouver ou créer une source de parrainage",
|
||||
"Creates a new case in MyCase": "Crée un nouveau cas dans MyCase",
|
||||
"Creates a new case stage in MyCase": "Crée une nouvelle étape de cas dans MyCase",
|
||||
"Creates a new company in MyCase": "Crée une nouvelle entreprise dans MyCase",
|
||||
"Creates a new custom field in MyCase": "Crée un nouveau champ personnalisé dans MyCase",
|
||||
"Creates a new document in MyCase": "Crée un nouveau document dans MyCase",
|
||||
"Creates a new event in MyCase": "Crée un nouvel événement dans MyCase",
|
||||
"Creates a new expense in MyCase": "Crée une nouvelle dépense dans MyCase",
|
||||
"Creates a new lead in MyCase": "Crée un nouveau prospect dans MyCase",
|
||||
"Creates a new location in MyCase": "Crée un nouvel emplacement dans MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Crée une nouvelle note pour un cas, un client ou une entreprise dans MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Crée un nouveau client individuel (personne) dans MyCase",
|
||||
"Creates a new practice area in MyCase": "Crée un nouveau domaine de pratique dans MyCase",
|
||||
"Creates a new referral source in MyCase": "Crée une nouvelle source de parrainage dans MyCase",
|
||||
"Creates a new task in MyCase": "Crée une nouvelle tâche dans MyCase",
|
||||
"Creates a new time entry in MyCase": "Crée une nouvelle entrée de temps dans MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Crée un nouvel appel dans le journal d'appel de MyCase",
|
||||
"Updates an existing case in MyCase": "Met à jour un cas existant dans MyCase",
|
||||
"Updates an existing company in MyCase": "Met à jour une entreprise existante dans MyCase",
|
||||
"Updates an existing individual client (person) in MyCase": "Met à jour un client individuel (personne) existant dans MyCase",
|
||||
"Makes a raw HTTP request to the MyCase API": "Fait une requête HTTP brute à l'API MyCase",
|
||||
"Searches for cases with optional filters": "Recherche des cas avec des filtres optionnels",
|
||||
"Searches for calls with optional filters": "Recherche des appels avec des filtres optionnels",
|
||||
"Searches for case stages with optional filters": "Recherche des étapes de cas avec des filtres facultatifs",
|
||||
"Searches for companies with optional filters": "Recherche d'entreprises avec des filtres facultatifs",
|
||||
"Searches for locations with optional filters": "Recherche des emplacements avec des filtres facultatifs",
|
||||
"Searches for people groups with optional filters": "Recherche de groupes de personnes avec des filtres facultatifs",
|
||||
"Searches for clients (people) with optional filters": "Recherche de clients (personnes) avec des filtres facultatifs",
|
||||
"Searches for practice areas with optional filters": "Recherche des zones de pratique avec des filtres facultatifs",
|
||||
"Searches for referral sources with optional filters": "Recherche des sources de référence avec des filtres facultatifs",
|
||||
"Searches for staff members with optional filters": "Recherche des membres du personnel avec des filtres facultatifs",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Trouve un cas par nom ou en crée un nouveau s'il n'existe pas",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Trouve une étape de cas par nom ou en crée une nouvelle si elle n'existe pas",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Trouve une entreprise par nom ou en crée une nouvelle si elle n'existe pas",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Trouve un emplacement par nom ou en crée un nouveau s'il n'existe pas",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Trouve une personne par prénom et nom de famille ou crée une nouvelle personne si elle n'est pas trouvée",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Trouve une zone de pratique par nom ou en crée une nouvelle si elle n'existe pas",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Trouve une source de parrainage par nom ou en crée une nouvelle si elle n'existe pas",
|
||||
"Case Name": "Nom du cas",
|
||||
"Case Number": "Numéro de cas",
|
||||
"Opened Date": "Date d'ouverture",
|
||||
"Case Stage": "Étape de la caisse",
|
||||
"Practice Area": "Zone d'entraînement",
|
||||
"Description": "Libellé",
|
||||
"Statute of Limitations Date": "Date des limitations de statut",
|
||||
"Status": "Statut",
|
||||
"Outstanding Balance": "Solde en cours",
|
||||
"Billing Contact ID": "ID du contact de facturation",
|
||||
"Client IDs": "ID du client",
|
||||
"Company IDs": "ID de la société",
|
||||
"Staff ID": "ID du personnel",
|
||||
"Lead Lawyer": "Avocat principal",
|
||||
"Originating Lawyer": "Avocat originaire",
|
||||
"Case Stage Name": "Nom de l'étape du cas",
|
||||
"Company Name": "Nom de l’entreprise",
|
||||
"Email": "Courriel",
|
||||
"Website": "Site Web",
|
||||
"Main Phone Number": "Numéro de téléphone principal",
|
||||
"Fax Phone Number": "Numéro de Téléphone Fax",
|
||||
"Address Line 1": "Adresse ligne 1",
|
||||
"Address Line 2": "Adresse ligne 2",
|
||||
"City": "Ville",
|
||||
"State": "État",
|
||||
"ZIP Code": "Code postal",
|
||||
"Country": "Pays",
|
||||
"Notes": "Notes",
|
||||
"Cases": "Cas",
|
||||
"Clients": "Clients",
|
||||
"Field Name": "Nom du champ",
|
||||
"Parent Type": "Type parent",
|
||||
"Field Type": "Type de champ",
|
||||
"List Options": "Options de la liste",
|
||||
"Document Type": "Type de document",
|
||||
"Case": "Cas",
|
||||
"Document Path": "Chemin du document",
|
||||
"Filename": "Nom du fichier",
|
||||
"Assigned Date": "Date d'attribution",
|
||||
"Staff": "Employé",
|
||||
"Event Name": "Nom de l'événement",
|
||||
"Start Date/Time": "Date/Heure de début",
|
||||
"End Date/Time": "Date/Heure de fin",
|
||||
"Required Staff": "Personnel requis",
|
||||
"All Day Event": "Evénement de toute la journée",
|
||||
"Private Event": "Événement privé",
|
||||
"Location": "Localisation",
|
||||
"Activity Name": "Nom de l'activité",
|
||||
"Entry Date": "Date d'entrée",
|
||||
"Cost": "Coûts",
|
||||
"Units": "Unités",
|
||||
"Billable": "Facturable",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Middle Initial": "Initiale Moyenne",
|
||||
"Cell Phone Number": "Numéro de téléphone cellulaire",
|
||||
"Work Phone Number": "Numéro de téléphone professionnel",
|
||||
"Home Phone Number": "Numéro de téléphone de la maison",
|
||||
"Birthdate": "Date de naissance",
|
||||
"Drivers License Number": "Numéro de permis de conduire",
|
||||
"Drivers License State": "État du permis de conduire",
|
||||
"Lead Details": "Détails du prospect",
|
||||
"Referral Source": "Source de parrainage",
|
||||
"Referred By": "Référé par",
|
||||
"Location Name": "Nom de l’emplacement",
|
||||
"Entity Type": "Type d'entité",
|
||||
"Entity": "Entité",
|
||||
"Subject": "Sujet",
|
||||
"Note": "Note",
|
||||
"Date": "Date",
|
||||
"Middle Name": "Deuxième prénom",
|
||||
"People Group": "Groupe de personnes",
|
||||
"Practice Area Name": "Nom de la zone d'entraînement",
|
||||
"Referral Source Name": "Nom de la source de parrainage",
|
||||
"Task Name": "Nom de la tâche",
|
||||
"Priority": "Priorité",
|
||||
"Due Date": "Date de fin",
|
||||
"Completed": "Terminé",
|
||||
"Rate": "Évaluer",
|
||||
"Hours": "Heures",
|
||||
"Flat Fee": "Frais forfaitaires",
|
||||
"Called At": "Appelé le",
|
||||
"Caller Phone Number": "Numéro de téléphone de l'appelant",
|
||||
"Call For": "Appel pour",
|
||||
"Message": "Message",
|
||||
"Caller Type": "Type de l'appelant",
|
||||
"Caller Name": "Nom de l'appelant",
|
||||
"Client": "Client",
|
||||
"Lead": "Prospect",
|
||||
"Call Type": "Type d'appel",
|
||||
"Resolved": "Résolu",
|
||||
"Billing Contact": "Contact de facturation",
|
||||
"Companies": "Entreprises",
|
||||
"Company": "Entreprise",
|
||||
"Method": "Méthode",
|
||||
"Path": "Chemin d'accès",
|
||||
"Query Parameters": "Paramètres de requête",
|
||||
"Request Body": "Corps de la requête",
|
||||
"Additional Headers": "En-têtes supplémentaires",
|
||||
"Updated After": "Mis à jour après",
|
||||
"Page Size": "Nombre d'élément",
|
||||
"Client Fields": "Champs du client",
|
||||
"Custom Field Fields": "Champs personnalisés",
|
||||
"Name": "Nom",
|
||||
"The name of the case (must be unique)": "Le nom du cas (doit être unique)",
|
||||
"An identifier for this case (recommended to be unique)": "Un identifiant pour ce cas (recommandé pour être unique)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "La date à laquelle le cas a été créé/ouvert (format ISO-8601 : AAAA-MM-JJ)",
|
||||
"The stage the case is currently in (must match MyCase system)": "L'étape dans laquelle se trouve actuellement le cas (doit correspondre au système de MyCasse)",
|
||||
"The practice area for this case (must match MyCase system)": "La zone d'entraînement pour ce cas (doit correspondre au système de MyCasse)",
|
||||
"A description for the case": "Une description pour le cas",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "La date limite (format de date ISO-8601) : AAAA-MM-JJ)",
|
||||
"The status of the case": "Le statut du cas",
|
||||
"The outstanding balance of this case": "Le solde impayé de ce cas",
|
||||
"The ID of the client or company to assign as the billing contact": "L'ID du client ou de la société à assigner comme contact de facturation",
|
||||
"Comma-separated list of client IDs to associate with the case": "Liste séparée par des virgules des identifiants de client à associer avec le cas",
|
||||
"Comma-separated list of company IDs to associate with the case": "Liste séparée par des virgules des identifiants de la société à associer avec le cas",
|
||||
"ID of staff member to associate with the case": "ID du membre du personnel à associer au cas",
|
||||
"Is the staff member the lead lawyer for this case?": "Le membre du personnel est-il l'avocat principal pour cette affaire?",
|
||||
"Is the staff member the originating lawyer for this case?": "Le membre du personnel est-il l'avocat originaire de cette affaire?",
|
||||
"The name of the case stage": "Le nom de l'étape de cas",
|
||||
"The name of the company": "Le nom de la société",
|
||||
"Company email address": "Adresse e-mail de la société",
|
||||
"Company website URL": "URL du site web de l'entreprise",
|
||||
"Main phone number for the company": "Numéro de téléphone principal de la société",
|
||||
"Fax phone number for the company": "Fax numéro de téléphone pour l'entreprise",
|
||||
"Street address line 1": "Adresse de la ligne 1",
|
||||
"Street address line 2": "Rue ligne 2",
|
||||
"ZIP/Postal code": "Code postal",
|
||||
"Additional information about the company (visible to firm members only)": "Informations complémentaires sur la société (visible uniquement par les membres de la société)",
|
||||
"Cases to associate with the company": "Cas à associer à la société",
|
||||
"Clients to associate with the company": "Clients à associer à la société",
|
||||
"The name of the custom field": "Le nom du champ personnalisé",
|
||||
"The parent resource type of the custom field": "Le type de ressource parent du champ personnalisé",
|
||||
"The field type of the custom field": "Le type de champ du champ personnalisé",
|
||||
"List of options for the custom field (required if field type is \"list\")": "Liste des options pour le champ personnalisé (requis si le type de champ est \"liste\")",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Choisissez si vous souhaitez créer un document d'entreprise ou l'associer à un cas spécifique",
|
||||
"Select the case to associate this document with": "Sélectionnez le cas avec lequel associer ce document",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "Le chemin relatif incluant le nom du document (par exemple, dossier/dossier/document_name). Les dossiers seront créés automatiquement.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "Le nom du fichier physique incluant l'extension (par exemple, file.pdf)",
|
||||
"The description of this document": "La description de ce document",
|
||||
"The assigned date of this document": "La date assignée à ce document",
|
||||
"Staff members to share this document with (only for firm documents)": "Membres du personnel avec lesquels partager ce document (uniquement pour les documents de la société)",
|
||||
"The name of this event": "Le nom de cet événement",
|
||||
"The start date and time of this event": "La date et l'heure de début de cet événement",
|
||||
"The end date and time of this event": "La date et l'heure de fin de cet événement",
|
||||
"Staff members to associate with this event": "Membres du personnel à associer à cet événement",
|
||||
"Staff members who are required to attend (all others are optional)": "Membres du personnel qui sont tenus de participer (tous les autres sont facultatifs)",
|
||||
"Event description": "Description de l'événement",
|
||||
"Is this an all day event?": "Est-ce un événement de toute la journée?",
|
||||
"Is this a private event?": "Est-ce un événement privé?",
|
||||
"The location associated with this event": "L'emplacement associé à cet événement",
|
||||
"The case associated with this event": "Le cas associé à cet événement",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "Le nom de l'activité pour cette dépense (sera créé si elle n'existe pas)",
|
||||
"The case to associate with this expense": "Le cas à associer à cette dépense",
|
||||
"The entry date of this expense": "La date d'entrée de cette dépense",
|
||||
"Cost of the expense": "Coût de la dépense",
|
||||
"Number of units": "Nombre d'unités",
|
||||
"Is this expense billable?": "Cette dépense est-elle facturable?",
|
||||
"Description of the expense": "Description de la dépense",
|
||||
"The staff member associated with this expense": "Le membre du personnel s'est associé à cette dépense",
|
||||
"The first name of the lead": "Le prénom de la piste",
|
||||
"The last name of the lead": "Le nom de famille du prospect",
|
||||
"The email of the lead": "L'e-mail du prospect",
|
||||
"The middle name or initial of the lead": "Le prénom ou le début de la piste",
|
||||
"Cell phone number": "Numéro de téléphone cellulaire",
|
||||
"Work phone number": "Numéro de téléphone professionnel",
|
||||
"Home phone number": "Numéro de téléphone domicile",
|
||||
"Date of birth": "Date de naissance",
|
||||
"Drivers license number": "Numéro de permis de conduire",
|
||||
"Drivers license state": "État du permis de conduire",
|
||||
"Additional information (visible to firm members only)": "Informations complémentaires (visibles uniquement pour les membres de la société)",
|
||||
"The referral source to associate with this lead": "La source de référence à associer à cette piste",
|
||||
"Existing client or company who referred this lead": "Client ou entreprise existante qui a référé ce prospect",
|
||||
"The name of the location": "Le nom de l'emplacement",
|
||||
"Choose the type of entity to create the note for": "Choisir le type d'entité pour créer la note pour",
|
||||
"Select the entity to create the note for": "Sélectionnez l'entité pour laquelle créer la note",
|
||||
"Subject of the note": "Sujet de la note",
|
||||
"The body text of the note": "Le corps du texte de la note",
|
||||
"The date and time of the note": "La date et l'heure de la note",
|
||||
"The first name of the client": "Le prénom du client",
|
||||
"The last name of the client": "Le nom de famille du client",
|
||||
"The email of the client": "L'e-mail du client",
|
||||
"The middle name of the client": "Le deuxième prénom du client",
|
||||
"Fax phone number": "Numéro de téléphone fax",
|
||||
"The people group to associate with this client": "Le groupe de personnes à associer à ce client",
|
||||
"Cases to associate with this client": "Cas à associer avec ce client",
|
||||
"The name of the practice area": "Le nom de la zone d'entraînement",
|
||||
"The name of the referral source": "Le nom de la source de référence",
|
||||
"The name of this task": "Le nom de cette tâche",
|
||||
"The priority of this task": "La priorité de cette tâche",
|
||||
"The due date of this task": "La date d'échéance de cette tâche",
|
||||
"Staff members to assign this task to": "Membres du personnel à assigner à cette tâche",
|
||||
"Task description": "Description de la tâche",
|
||||
"Is this task completed?": "Cette tâche est-elle terminée?",
|
||||
"The case to associate with this task": "Le cas à associer à cette tâche",
|
||||
"The activity name for this time entry": "Le nom de l'activité pour cette entrée de temps",
|
||||
"The case to associate with this time entry": "Le cas à associer avec cette entrée de temps",
|
||||
"The staff member associated with this time entry": "Le membre du staff s'est associé à cette entrée de temps",
|
||||
"The entry date of this time entry": "La date d'entrée de cette entrée horaire",
|
||||
"The rate in dollars": "Le taux en dollars",
|
||||
"The duration in hours": "La durée en heures",
|
||||
"Description of the time entry": "Description de la saisie de l'heure",
|
||||
"Is this time entry billable?": "Ce temps est-il facturable ?",
|
||||
"Is this time entry a flat fee?": "Est-ce que ce temps d'entrée est une taxe forfaitaire ?",
|
||||
"When the call happened": "Quand l'appel a eu lieu",
|
||||
"The caller's phone number": "Le numéro de téléphone de l'appelant",
|
||||
"The staff member this call is associated with": "Le membre du staff auquel cet appel est associé",
|
||||
"A description of the call": "Une description de l'appel",
|
||||
"Choose how to identify the caller": "Choisir comment identifier l'appelant",
|
||||
"The caller's name": "Le nom de l'appelant",
|
||||
"The existing client": "Le client existant",
|
||||
"The existing lead": "La piste existante",
|
||||
"Type of call": "Type d'appel",
|
||||
"Should this call show as resolved?": "Cet appel doit-il être résolu ?",
|
||||
"Select the case to update": "Sélectionnez le cas à mettre à jour",
|
||||
"An identifier for this case": "Un identifiant pour ce cas",
|
||||
"The date the case was created/opened": "La date de création/ouverture du cas",
|
||||
"The stage the case is currently in": "L'étape dans laquelle le cas est actuellement en",
|
||||
"The practice area for this case": "La zone de pratique pour ce cas",
|
||||
"The statute of limitations date": "La date limite de la loi",
|
||||
"The client or company to assign as the billing contact": "Le client ou la société à assigner comme contact de facturation",
|
||||
"Clients to associate with the case": "Clients à associer avec le cas",
|
||||
"Companies to associate with the case": "Entreprises à associer au cas",
|
||||
"Staff members to associate with the case": "Membres du personnel à associer au cas",
|
||||
"Select the lead lawyer for this case": "Sélectionnez l'avocat principal pour ce cas",
|
||||
"Select the originating lawyer for this case": "Sélectionnez l'avocat d'origine pour ce cas",
|
||||
"Select the company to update": "Sélectionnez la société à mettre à jour",
|
||||
"Select the client to update": "Sélectionnez le client à mettre à jour",
|
||||
"HTTP method to use": "Méthode HTTP à utiliser",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "Chemin du point de terminaison de l'API (par exemple, /case ou /clients/123)",
|
||||
"Query parameters as JSON object": "Paramètres de requête en tant qu'objet JSON",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Requête de corps en JSON (pour POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "En-têtes supplémentaires en tant qu'objet JSON",
|
||||
"Filter by case status": "Filtrer par statut de cas",
|
||||
"Filter cases updated after this date and time": "Filtrer les cas mis à jour après cette date et heure",
|
||||
"Number of results per page (1-1000)": "Nombre de résultats par page (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Liste séparée par des virgules des champs clients à inclure (par exemple, id,first_name,nom_du_famille)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Liste de champs personnalisés séparés par des virgules à inclure (par exemple, id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filtrer les appels mis à jour après cette date et heure",
|
||||
"Filter case stages updated after this date and time": "Filtrer les étapes de cas mises à jour après cette date et heure",
|
||||
"Filter by company name": "Filtrer par nom de société",
|
||||
"Filter by email address": "Filtrer par adresse e-mail",
|
||||
"Filter by main phone number": "Filtrer par numéro de téléphone principal",
|
||||
"Filter by fax phone number": "Filtrer par numéro de téléphone de fax",
|
||||
"Filter companies updated after this date and time": "Filtrer les entreprises mises à jour après cette date et heure",
|
||||
"Filter locations updated after this date and time": "Filtrer les emplacements mis à jour après cette date et heure",
|
||||
"Filter people groups updated after this date and time": "Filtrer les groupes de personnes mis à jour après cette date et heure",
|
||||
"Filter by first name": "Filtrer par prénom",
|
||||
"Filter by last name": "Filtrer par nom de famille",
|
||||
"Filter by cell phone number": "Filtrer par numéro de téléphone portable",
|
||||
"Filter by work phone number": "Filtrer par numéro de téléphone professionnel",
|
||||
"Filter by home phone number": "Filtrer par numéro de téléphone personnel",
|
||||
"Filter clients updated after this date and time": "Filtrer les clients mis à jour après cette date et heure",
|
||||
"Filter practice areas updated after this date and time": "Filtrer les zones d'entraînement mises à jour après cette date et heure",
|
||||
"Filter referral sources updated after this date and time": "Filtrer les sources de parrainage mises à jour après cette date et heure",
|
||||
"Filter by staff status": "Filtrer par statut du personnel",
|
||||
"Filter staff updated after this date and time": "Filtrer le personnel mis à jour après cette date et heure",
|
||||
"The name of the case to find or create": "Le nom du cas à trouver ou à créer",
|
||||
"An identifier for this case (used only when creating)": "Un identifiant pour ce cas (utilisé uniquement lors de la création)",
|
||||
"The date the case was created/opened (used only when creating)": "La date à laquelle le cas a été créé/ouvert (utilisé uniquement lors de la création)",
|
||||
"The stage the case is currently in (used only when creating)": "L'étape dans laquelle le cas est actuellement en (utilisé uniquement lors de la création)",
|
||||
"The practice area for this case (used only when creating)": "La zone de pratique pour ce cas (utilisée uniquement lors de la création)",
|
||||
"A description for the case (used only when creating)": "Une description pour le cas (utilisée uniquement lors de la création)",
|
||||
"The statute of limitations date (used only when creating)": "La date de la date des limitations (utilisée uniquement lors de la création)",
|
||||
"The status of the case (used only when creating)": "Le statut du cas (utilisé uniquement lors de la création)",
|
||||
"The outstanding balance of this case (used only when creating)": "Le solde impayé de ce cas (utilisé uniquement lors de la création)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "Le client ou la société à assigner comme contact de facturation (utilisé uniquement lors de la création)",
|
||||
"Clients to associate with the case (used only when creating)": "Clients à associer avec le cas (utilisé uniquement lors de la création)",
|
||||
"Companies to associate with the case (used only when creating)": "Entreprises à associer avec le cas (utilisé uniquement lors de la création)",
|
||||
"Staff members to associate with the case (used only when creating)": "Membres du personnel à associer avec le cas (utilisé uniquement lors de la création)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Sélectionnez l'avocat principal pour ce cas (utilisé uniquement lors de la création)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Sélectionner l'avocat d'origine pour ce cas (utilisé uniquement lors de la création)",
|
||||
"The name of the case stage to find or create": "Le nom de l'étape de cas à trouver ou à créer",
|
||||
"The name of the company to find or create": "Le nom de la société à trouver ou à créer",
|
||||
"Company email address (used only when creating)": "Adresse e-mail de la société (utilisée uniquement lors de la création)",
|
||||
"Company website URL (used only when creating)": "URL du site web de l'entreprise (utilisée uniquement lors de la création)",
|
||||
"Main phone number for the company (used only when creating)": "Numéro de téléphone principal de l'entreprise (utilisé uniquement lors de la création)",
|
||||
"Fax phone number for the company (used only when creating)": "Numéro de téléphone fax pour l'entreprise (utilisé uniquement lors de la création)",
|
||||
"Street address line 1 (used only when creating)": "Rue ligne 1 (utilisée uniquement lors de la création)",
|
||||
"Street address line 2 (used only when creating)": "Rue ligne 2 (utilisée uniquement lors de la création)",
|
||||
"City (used only when creating)": "Ville (utilisée uniquement lors de la création)",
|
||||
"State (used only when creating)": "État (utilisé uniquement lors de la création)",
|
||||
"ZIP/Postal code (used only when creating)": "Code postal (utilisé uniquement lors de la création)",
|
||||
"Country (used only when creating)": "Pays (utilisé uniquement lors de la création)",
|
||||
"Additional information about the company (used only when creating)": "Informations supplémentaires sur l'entreprise (utilisée uniquement lors de la création)",
|
||||
"Cases to associate with the company (used only when creating)": "Cas à associer à la société (utilisé uniquement lors de la création)",
|
||||
"Clients to associate with the company (used only when creating)": "Clients à associer à l'entreprise (utilisé uniquement lors de la création)",
|
||||
"The name of the location to find or create": "Le nom de l'emplacement à trouver ou à créer",
|
||||
"The email of the client (used only when creating)": "L'e-mail du client (utilisé uniquement lors de la création)",
|
||||
"The middle name of the client (used only when creating)": "Le deuxième prénom du client (utilisé uniquement lors de la création)",
|
||||
"Cell phone number (used only when creating)": "Numéro de téléphone cellulaire (utilisé uniquement lors de la création)",
|
||||
"Work phone number (used only when creating)": "Numéro de téléphone professionnel (utilisé uniquement lors de la création)",
|
||||
"Home phone number (used only when creating)": "Numéro de téléphone personnel (utilisé uniquement lors de la création)",
|
||||
"Fax phone number (used only when creating)": "Fax numéro de téléphone (utilisé uniquement lors de la création)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Date de naissance au format ISO-8601 : AAAA-MM-JJ (utilisé uniquement lors de la création)",
|
||||
"Additional information (used only when creating)": "Informations supplémentaires (utilisées uniquement lors de la création)",
|
||||
"The people group to associate (used only when creating)": "Le groupe de personnes à associer (utilisé uniquement lors de la création)",
|
||||
"Cases to associate with the client (used only when creating)": "Cas à associer avec le client (utilisé uniquement lors de la création)",
|
||||
"The name of the practice area to find or create": "Le nom de la zone de pratique à trouver ou à créer",
|
||||
"The name of the referral source to find or create": "Le nom de la source de parrainage à trouver ou à créer",
|
||||
"Open": "Ouvert",
|
||||
"Closed": "Fermé",
|
||||
"Expense": "Dépenses",
|
||||
"Time": "Date et heure",
|
||||
"Time and Expense": "Temps et dépenses",
|
||||
"Short Text": "Texte court",
|
||||
"Long Text": "Texte long",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "Liste",
|
||||
"Currency": "Devise",
|
||||
"Firm Document": "Document de l'entreprise",
|
||||
"Case Document": "Document de cas",
|
||||
"Low": "Bas",
|
||||
"Medium": "Moyenne",
|
||||
"High": "Élevé",
|
||||
"Unknown (provide name)": "Inconnu (fournir le nom)",
|
||||
"Existing Client": "Client existant",
|
||||
"Existing Lead": "Prospect existant",
|
||||
"Incoming": "Entrants",
|
||||
"Outgoing": "Sortant",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PUT": "PUT",
|
||||
"PATCH": "PATCH",
|
||||
"DELETE": "DELETE",
|
||||
"Active": "Actif",
|
||||
"Inactive": "Inactif",
|
||||
"Case Added or Updated": "Cas ajouté ou mis à jour",
|
||||
"Event Added or Updated": "Événement ajouté ou mis à jour",
|
||||
"Person Added or Updated": "Personne ajoutée ou mise à jour",
|
||||
"Company Added or Updated": "Société ajoutée ou mise à jour",
|
||||
"Lead Added or Updated": "Piste commerciale ajoutée ou mise à jour",
|
||||
"Triggers when a case has been added or updated": "Déclenche lorsqu'un cas a été ajouté ou mis à jour",
|
||||
"Triggers when an event has been added or updated": "Déclenche lorsqu'un événement a été ajouté ou mis à jour",
|
||||
"Triggers when a person has been added or updated": "Déclenche quand une personne a été ajoutée ou mise à jour",
|
||||
"Triggers when a company has been added or updated": "Déclenche quand une entreprise a été ajoutée ou mise à jour",
|
||||
"Triggers when a lead has been added or updated": "Déclenche lorsqu'un prospect a été ajouté ou mis à jour"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "MyCaseを使用して、ケース管理ワークフローを自動化します。ケース、クライアント、企業、イベント、タスク、タイムエントリ、ドキュメントなどを作成および管理します。 案件、イベント、人、企業、またはリードが追加または更新されたときに通知を受け取ります。",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe authorizing user must have the **\"Manage your firm's preferences, billing, and payment options\"** permission set to **Yes** in MyCase.\n\n### Authorization Flow\nMyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:\n\n**Authorization URL**: `https://auth.mycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase.com/tokens`\n\n### Rate Limits\n- 25 requests per second per client\n- Access tokens are valid for 24 hours\n- Refresh tokens are valid for 2 weeks\n\nFor detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)\n",
|
||||
"Create Case": "案件を作成",
|
||||
"Create Case Stage": "症例ステージを作成",
|
||||
"Create Company": "所属を作成",
|
||||
"Create Custom Field": "カスタムフィールドを作成",
|
||||
"Create Document": "ドキュメントを作成",
|
||||
"Create Event": "イベントを作成",
|
||||
"Create Expense": "支出を作成",
|
||||
"Create Lead": "リードを作成",
|
||||
"Create Location": "場所を作成",
|
||||
"Create Note": "ノートを作成",
|
||||
"Create Person (Client)": "人を作成 (クライアント)",
|
||||
"Create Practice Area": "練習エリアを作成",
|
||||
"Create Referral Source": "紹介元を作成",
|
||||
"Create Task": "タスクを作成",
|
||||
"Create Time Entry": "タイムエントリを作成",
|
||||
"Create Call": "通話を作成",
|
||||
"Update Case": "ケースを更新",
|
||||
"Update Company": "所属を更新",
|
||||
"Update Person (Client)": "担当者の更新 (クライアント)",
|
||||
"API Request": "APIリクエスト",
|
||||
"Find Case": "ケースを探す",
|
||||
"Find Call": "電話を検索",
|
||||
"Find Case Stage": "ケース・ステージを見つける",
|
||||
"Find Company": "会社を検索",
|
||||
"Find Location": "場所を検索",
|
||||
"Find People Group": "ユーザーグループを検索",
|
||||
"Find Person (Client)": "ユーザーを検索 (クライアント)",
|
||||
"Find Practice Area": "練習エリアを探す",
|
||||
"Find Referral Source": "紹介元を探す",
|
||||
"Find Staff": "スタッフを探す",
|
||||
"Find or Create Case": "検索またはケースの作成",
|
||||
"Find or Create Case Stage": "症例ステージを検索または作成",
|
||||
"Find or Create Company": "会社を検索または作成",
|
||||
"Find or Create Location": "場所の検索または作成",
|
||||
"Find or Create Person (Client)": "ユーザーを検索または作成 (Client)",
|
||||
"Find or Create Practice Area": "練習エリアを見つけるか作成する",
|
||||
"Find or Create Referral Source": "参照元を検索または作成",
|
||||
"Creates a new case in MyCase": "MyCase に新規案件を作成",
|
||||
"Creates a new case stage in MyCase": "MyCase に新規案件ステージを作成",
|
||||
"Creates a new company in MyCase": "MyCase に新しい会社を作成",
|
||||
"Creates a new custom field in MyCase": "MyCase に新しいカスタムフィールドを作成します",
|
||||
"Creates a new document in MyCase": "MyCase に新しいドキュメントを作成します",
|
||||
"Creates a new event in MyCase": "MyCase に新しいイベントを作成します",
|
||||
"Creates a new expense in MyCase": "MyCase に新しい経費を作成します",
|
||||
"Creates a new lead in MyCase": "MyCase に新しいリードを作成",
|
||||
"Creates a new location in MyCase": "MyCase に新しい場所を作成します",
|
||||
"Creates a new note for a case, client, or company in MyCase": "MyCase 、クライアント、または会社のための新しいメモを作成します",
|
||||
"Creates a new individual client (person) in MyCase": "MyCase に新しい個々のクライアント(人)を作成します",
|
||||
"Creates a new practice area in MyCase": "MyCase に新しい練習エリアを作成します",
|
||||
"Creates a new referral source in MyCase": "MyCase に新しい紹介元を作成します",
|
||||
"Creates a new task in MyCase": "MyCase に新しいタスクを作成します",
|
||||
"Creates a new time entry in MyCase": "MyCase に新しい時刻エントリを作成します",
|
||||
"Creates a new call in the call log in MyCase": "MyCase のコールログに新しいコールを作成します",
|
||||
"Updates an existing case in MyCase": "MyCase の既存の症例を更新します",
|
||||
"Updates an existing company in MyCase": "MyCase の既存の会社を更新します",
|
||||
"Updates an existing individual client (person) in MyCase": "MyCase の既存の個々のクライアント (人) を更新します",
|
||||
"Makes a raw HTTP request to the MyCase API": "MyCase APIへの生のHTTPリクエストを作成",
|
||||
"Searches for cases with optional filters": "任意のフィルタを持つ症例を検索",
|
||||
"Searches for calls with optional filters": "任意のフィルター付きの通話を検索",
|
||||
"Searches for case stages with optional filters": "症例ステージをオプションのフィルターで検索",
|
||||
"Searches for companies with optional filters": "オプショナルフィルターを持つ会社を検索",
|
||||
"Searches for locations with optional filters": "任意のフィルターでロケーションを検索",
|
||||
"Searches for people groups with optional filters": "任意のフィルタを持つ人々のグループを検索",
|
||||
"Searches for clients (people) with optional filters": "オプションフィルター付きのクライアント (人) を検索",
|
||||
"Searches for practice areas with optional filters": "オプショナルフィルター付きの練習エリアを検索",
|
||||
"Searches for referral sources with optional filters": "オプションのフィルターを持つ参照元を検索",
|
||||
"Searches for staff members with optional filters": "任意のフィルターを持つスタッフメンバーを検索",
|
||||
"Finds a case by name or creates a new one if it does not exist": "存在しない場合、ケースを名前で検索するか、新しいケースを作成します。",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "ケースステージを名前で検索するか、存在しない場合は新しいステージを作成します。",
|
||||
"Finds a company by name or creates a new one if it does not exist": "名前で会社を検索するか、存在しない場合は新しい会社を作成します。",
|
||||
"Finds a location by name or creates a new one if it does not exist": "名前でロケーションを検索するか、存在しない場合は新しいものを作成します。",
|
||||
"Finds a person by first and last name or creates a new one if not found": "姓と名で人を検索するか、見つからない場合は新しい人を作成します。",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "名前で練習エリアを検索するか、存在しない場合は新しいものを作成します",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "名前で参照元を検索するか、存在しない場合は新しいものを作成します",
|
||||
"Case Name": "案件名",
|
||||
"Case Number": "ケース番号",
|
||||
"Opened Date": "オープン日",
|
||||
"Case Stage": "症例ステージ",
|
||||
"Practice Area": "練習場",
|
||||
"Description": "Description",
|
||||
"Statute of Limitations Date": "期限日",
|
||||
"Status": "Status",
|
||||
"Outstanding Balance": "優れた残高",
|
||||
"Billing Contact ID": "請求先連絡先ID",
|
||||
"Client IDs": "クライアントID",
|
||||
"Company IDs": "会社ID",
|
||||
"Staff ID": "スタッフID",
|
||||
"Lead Lawyer": "リード弁護士",
|
||||
"Originating Lawyer": "起源の弁護士",
|
||||
"Case Stage Name": "症例ステージ名",
|
||||
"Company Name": "会社名",
|
||||
"Email": "Eメールアドレス",
|
||||
"Website": "ウェブサイト",
|
||||
"Main Phone Number": "メイン電話番号",
|
||||
"Fax Phone Number": "Fax電話番号",
|
||||
"Address Line 1": "住所1",
|
||||
"Address Line 2": "住所2",
|
||||
"City": "市区町村名",
|
||||
"State": "都道府県:",
|
||||
"ZIP Code": "郵便番号",
|
||||
"Country": "国",
|
||||
"Notes": "メモ",
|
||||
"Cases": "案件",
|
||||
"Clients": "クライアント",
|
||||
"Field Name": "フィールド名",
|
||||
"Parent Type": "親タイプ",
|
||||
"Field Type": "フィールドタイプ",
|
||||
"List Options": "リストオプション",
|
||||
"Document Type": "ドキュメントタイプ",
|
||||
"Case": "ケース",
|
||||
"Document Path": "ドキュメントパス",
|
||||
"Filename": "ファイル名",
|
||||
"Assigned Date": "アサインされた日付",
|
||||
"Staff": "スタッフ",
|
||||
"Event Name": "イベント名",
|
||||
"Start Date/Time": "開始日時",
|
||||
"End Date/Time": "終了日時",
|
||||
"Required Staff": "必要なスタッフ",
|
||||
"All Day Event": "終日イベント",
|
||||
"Private Event": "プライベートイベント",
|
||||
"Location": "場所",
|
||||
"Activity Name": "アクティビティ名",
|
||||
"Entry Date": "入力日",
|
||||
"Cost": "コスト",
|
||||
"Units": "単位",
|
||||
"Billable": "請求可能",
|
||||
"First Name": "名",
|
||||
"Last Name": "Last Name",
|
||||
"Middle Initial": "Middle Initial",
|
||||
"Cell Phone Number": "電話番号",
|
||||
"Work Phone Number": "勤務先電話番号",
|
||||
"Home Phone Number": "自宅電話番号",
|
||||
"Birthdate": "誕生日",
|
||||
"Drivers License Number": "ドライバーライセンス番号",
|
||||
"Drivers License State": "ドライバのライセンス状態",
|
||||
"Lead Details": "リードの詳細",
|
||||
"Referral Source": "参照ソース",
|
||||
"Referred By": "参照元",
|
||||
"Location Name": "ロケーション名",
|
||||
"Entity Type": "エンティティタイプ",
|
||||
"Entity": "エンティティ",
|
||||
"Subject": "件名",
|
||||
"Note": "メモ",
|
||||
"Date": "日付",
|
||||
"Middle Name": "ミドルネーム",
|
||||
"People Group": "人物グループ",
|
||||
"Practice Area Name": "練習場名",
|
||||
"Referral Source Name": "参照元名",
|
||||
"Task Name": "タスク名",
|
||||
"Priority": "優先度",
|
||||
"Due Date": "締切日",
|
||||
"Completed": "完了",
|
||||
"Rate": "利率",
|
||||
"Hours": "時間",
|
||||
"Flat Fee": "定額料金",
|
||||
"Called At": "呼び出し日時",
|
||||
"Caller Phone Number": "発信者の電話番号",
|
||||
"Call For": "通話先",
|
||||
"Message": "メッセージ",
|
||||
"Caller Type": "発信者の種類",
|
||||
"Caller Name": "発信者名",
|
||||
"Client": "クライアント",
|
||||
"Lead": "リード",
|
||||
"Call Type": "通話タイプ",
|
||||
"Resolved": "解決済み",
|
||||
"Billing Contact": "請求先連絡先",
|
||||
"Companies": "会社名",
|
||||
"Company": "会社名",
|
||||
"Method": "方法",
|
||||
"Path": "パス",
|
||||
"Query Parameters": "クエリパラメータ",
|
||||
"Request Body": "リクエスト本文",
|
||||
"Additional Headers": "追加ヘッダー",
|
||||
"Updated After": "更新日時",
|
||||
"Page Size": "ページサイズ",
|
||||
"Client Fields": "クライアントフィールド",
|
||||
"Custom Field Fields": "カスタムフィールドフィールド",
|
||||
"Name": "Name",
|
||||
"The name of the case (must be unique)": "案件の名前 (一意である必要があります)",
|
||||
"An identifier for this case (recommended to be unique)": "この案件の識別子 (一意であることを推奨)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "案件が作成または開かれた日時 (ISO-8601 形式: YYYY-MM-DD)",
|
||||
"The stage the case is currently in (must match MyCase system)": "案件が現在いるステージ (MyCaseシステムと一致する必要があります)",
|
||||
"The practice area for this case (must match MyCase system)": "このケースの練習場所(MyCaseシステムと一致する必要があります)",
|
||||
"A description for the case": "事案の説明",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "時効日付 (ISO-8601日付フォーマット: YYYY-MM-DD)",
|
||||
"The status of the case": "案件のステータス",
|
||||
"The outstanding balance of this case": "このケースの未払い残高",
|
||||
"The ID of the client or company to assign as the billing contact": "請求先として割り当てるクライアントまたは会社の ID",
|
||||
"Comma-separated list of client IDs to associate with the case": "案件に関連付けるクライアントIDのカンマ区切りリスト",
|
||||
"Comma-separated list of company IDs to associate with the case": "案件に関連付ける会社IDのカンマ区切りリスト",
|
||||
"ID of staff member to associate with the case": "案件に関連付けるスタッフのID",
|
||||
"Is the staff member the lead lawyer for this case?": "この場合、スタッフはリード弁護士ですか。",
|
||||
"Is the staff member the originating lawyer for this case?": "この場合、スタッフは元弁護士ですか。",
|
||||
"The name of the case stage": "案件ステージの名前",
|
||||
"The name of the company": "会社名",
|
||||
"Company email address": "勤務先メールアドレス",
|
||||
"Company website URL": "会社ウェブサイトURL",
|
||||
"Main phone number for the company": "会社のメイン電話番号",
|
||||
"Fax phone number for the company": "会社のFax電話番号",
|
||||
"Street address line 1": "住所1",
|
||||
"Street address line 2": "住所2",
|
||||
"ZIP/Postal code": "郵便番号/郵便番号",
|
||||
"Additional information about the company (visible to firm members only)": "会社に関する追加情報(会社メンバーにのみ表示)",
|
||||
"Cases to associate with the company": "会社に関連付けるケース",
|
||||
"Clients to associate with the company": "会社に関連付けるクライアント",
|
||||
"The name of the custom field": "カスタムフィールドの名前",
|
||||
"The parent resource type of the custom field": "カスタムフィールドの親リソースタイプ",
|
||||
"The field type of the custom field": "カスタムフィールドのフィールドタイプ",
|
||||
"List of options for the custom field (required if field type is \"list\")": "カスタムフィールドのオプションリスト (フィールドタイプが \"list\" の場合は必須)",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "会社のドキュメントを作成するか、特定のケースに関連付けるかどうかを選択します",
|
||||
"Select the case to associate this document with": "このドキュメントを関連付けるケースを選択してください",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "ドキュメント名を含む相対パス (例: folder1/folder2/document_name) フォルダは自動的に作成されます。",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "拡張子を含む物理ファイルのファイル名 (例: file.pdf)",
|
||||
"The description of this document": "この文書の説明",
|
||||
"The assigned date of this document": "このドキュメントの割り当てられた日付",
|
||||
"Staff members to share this document with (only for firm documents)": "スタッフメンバーがこのドキュメントを共有します (確固としたドキュメントのみ)",
|
||||
"The name of this event": "このイベントの名前",
|
||||
"The start date and time of this event": "このイベントの開始日時",
|
||||
"The end date and time of this event": "このイベントの終了日時",
|
||||
"Staff members to associate with this event": "このイベントに関連付けるスタッフメンバー",
|
||||
"Staff members who are required to attend (all others are optional)": "出席が義務付けられているスタッフ(他のスタッフはすべて任意)",
|
||||
"Event description": "イベントの説明",
|
||||
"Is this an all day event?": "これは一日中の出来事ですか?",
|
||||
"Is this a private event?": "これはプライベートなイベントですか?",
|
||||
"The location associated with this event": "このイベントに関連付けられている場所",
|
||||
"The case associated with this event": "このイベントに関連付けられたケース",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "この費用のアクティビティ名(存在しない場合に作成されます)",
|
||||
"The case to associate with this expense": "この費用に関連付けるケース",
|
||||
"The entry date of this expense": "この費用のエントリ日付",
|
||||
"Cost of the expense": "費用のコスト",
|
||||
"Number of units": "ユニット数",
|
||||
"Is this expense billable?": "この費用は請求できますか。",
|
||||
"Description of the expense": "費用の説明",
|
||||
"The staff member associated with this expense": "この費用に関連するスタッフメンバー",
|
||||
"The first name of the lead": "リードの名",
|
||||
"The last name of the lead": "リードの姓",
|
||||
"The email of the lead": "リードのメールアドレス",
|
||||
"The middle name or initial of the lead": "リードのミドルネームまたはイニシャル",
|
||||
"Cell phone number": "携帯電話番号",
|
||||
"Work phone number": "勤務先電話番号",
|
||||
"Home phone number": "自宅電話番号",
|
||||
"Date of birth": "誕生日",
|
||||
"Drivers license number": "ドライバーのライセンス番号",
|
||||
"Drivers license state": "ドライバのライセンス状態",
|
||||
"Additional information (visible to firm members only)": "追加情報(会社のメンバーにのみ表示)",
|
||||
"The referral source to associate with this lead": "このリードに関連付ける紹介元",
|
||||
"Existing client or company who referred this lead": "このリードを参照した既存のクライアントまたは企業",
|
||||
"The name of the location": "場所の名前",
|
||||
"Choose the type of entity to create the note for": "ノートを作成するエンティティの種類を選択してください",
|
||||
"Select the entity to create the note for": "ノートを作成するエンティティを選択してください",
|
||||
"Subject of the note": "ノートの件名",
|
||||
"The body text of the note": "メモの本文テキスト",
|
||||
"The date and time of the note": "ノートの日付と時刻",
|
||||
"The first name of the client": "クライアントの名",
|
||||
"The last name of the client": "クライアントの姓",
|
||||
"The email of the client": "クライアントのメールアドレス",
|
||||
"The middle name of the client": "クライアントのミドルネーム",
|
||||
"Fax phone number": "Fax電話番号",
|
||||
"The people group to associate with this client": "このクライアントに関連付ける人々グループ",
|
||||
"Cases to associate with this client": "このクライアントに関連付ける案件",
|
||||
"The name of the practice area": "練習場の名前",
|
||||
"The name of the referral source": "紹介元の名前",
|
||||
"The name of this task": "このタスクの名前",
|
||||
"The priority of this task": "このタスクの優先順位",
|
||||
"The due date of this task": "このタスクの期限",
|
||||
"Staff members to assign this task to": "このタスクに割り当てるスタッフメンバー",
|
||||
"Task description": "タスクの説明",
|
||||
"Is this task completed?": "このタスクは完了しましたか?",
|
||||
"The case to associate with this task": "このタスクに関連付けるケース",
|
||||
"The activity name for this time entry": "この時間帯のアクティビティ名",
|
||||
"The case to associate with this time entry": "このタイムエントリに関連付けるケース",
|
||||
"The staff member associated with this time entry": "このタイムエントリに関連付けられているスタッフメンバー",
|
||||
"The entry date of this time entry": "このタイムエントリのエントリ日付",
|
||||
"The rate in dollars": "為替レート(ドル)",
|
||||
"The duration in hours": "期間(時間)",
|
||||
"Description of the time entry": "タイムエントリの説明",
|
||||
"Is this time entry billable?": "この時間帯は請求できますか?",
|
||||
"Is this time entry a flat fee?": "この時間のエントリは定額料金ですか?",
|
||||
"When the call happened": "通話が発生したとき",
|
||||
"The caller's phone number": "発信者の電話番号",
|
||||
"The staff member this call is associated with": "この通話に関連付けられているスタッフメンバー",
|
||||
"A description of the call": "通話の説明",
|
||||
"Choose how to identify the caller": "発信者を識別する方法を選択してください",
|
||||
"The caller's name": "発信者の名前",
|
||||
"The existing client": "既存のクライアント",
|
||||
"The existing lead": "既存のリード",
|
||||
"Type of call": "通話の種類",
|
||||
"Should this call show as resolved?": "この通話を解決済みにする必要がありますか?",
|
||||
"Select the case to update": "更新する案件を選択してください",
|
||||
"An identifier for this case": "この案件の識別子",
|
||||
"The date the case was created/opened": "案件が作成/開かれた日時",
|
||||
"The stage the case is currently in": "案件が現在のステージ",
|
||||
"The practice area for this case": "この場合の練習場",
|
||||
"The statute of limitations date": "時効日",
|
||||
"The client or company to assign as the billing contact": "請求先として割り当てるクライアントまたは企業",
|
||||
"Clients to associate with the case": "案件に関連付けるクライアント",
|
||||
"Companies to associate with the case": "ケースに関連付ける企業",
|
||||
"Staff members to associate with the case": "案件に関連付けるスタッフメンバー",
|
||||
"Select the lead lawyer for this case": "この案件のリード弁護士を選択してください",
|
||||
"Select the originating lawyer for this case": "この案件の元の弁護士を選択してください",
|
||||
"Select the company to update": "更新する会社を選択してください",
|
||||
"Select the client to update": "更新するクライアントを選択してください",
|
||||
"HTTP method to use": "使用する HTTP メソッド",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "API エンドポイント パス (例: /cases または /clients/123)",
|
||||
"Query parameters as JSON object": "パラメータを JSON オブジェクトとしてクエリする",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "JSON形式で本文をリクエスト(POST、PUT、PATCHの場合)",
|
||||
"Additional headers as JSON object": "JSON オブジェクトとして追加のヘッダー",
|
||||
"Filter by case status": "案件状況でフィルター",
|
||||
"Filter cases updated after this date and time": "この日付と時刻の後に更新された案件をフィルター",
|
||||
"Number of results per page (1-1000)": "Number of results per page (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "カンマ区切りで含めるクライアントフィールドのリスト(例:id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "カンマ区切りで含めるカスタムフィールドのリスト(例:id,field_type)",
|
||||
"Filter calls updated after this date and time": "この日付と時刻の後に更新された通話をフィルター",
|
||||
"Filter case stages updated after this date and time": "この日付と時刻の後に更新されたケースのステージをフィルター",
|
||||
"Filter by company name": "会社名でフィルター",
|
||||
"Filter by email address": "メールアドレスでフィルター",
|
||||
"Filter by main phone number": "メインの電話番号でフィルター",
|
||||
"Filter by fax phone number": "ファックス番号でフィルター",
|
||||
"Filter companies updated after this date and time": "この日付と時刻の後に更新された会社をフィルター",
|
||||
"Filter locations updated after this date and time": "この日付と時刻の後に更新された場所をフィルター",
|
||||
"Filter people groups updated after this date and time": "この日付と時刻の後に更新された人々のグループをフィルター",
|
||||
"Filter by first name": "名でフィルター",
|
||||
"Filter by last name": "姓でフィルター",
|
||||
"Filter by cell phone number": "携帯電話番号でフィルター",
|
||||
"Filter by work phone number": "勤務先の電話番号でフィルター",
|
||||
"Filter by home phone number": "自宅の電話番号でフィルター",
|
||||
"Filter clients updated after this date and time": "この日付と時刻の後に更新されたクライアントをフィルター",
|
||||
"Filter practice areas updated after this date and time": "この日付と時刻の後に更新された練習エリアをフィルター",
|
||||
"Filter referral sources updated after this date and time": "この日付と時刻の後に更新された紹介ソースをフィルターする",
|
||||
"Filter by staff status": "スタッフの状態でフィルター",
|
||||
"Filter staff updated after this date and time": "この日付と時刻の後にスタッフを絞り込みます",
|
||||
"The name of the case to find or create": "検索または作成する案件の名前",
|
||||
"An identifier for this case (used only when creating)": "この案件の識別子 (作成時にのみ使用)",
|
||||
"The date the case was created/opened (used only when creating)": "案件が作成/開かれた日時 (作成時のみ使用)",
|
||||
"The stage the case is currently in (used only when creating)": "ケースが現在あるステージ (作成時にのみ使用)",
|
||||
"The practice area for this case (used only when creating)": "このケースの練習場所(作成時のみ使用)",
|
||||
"A description for the case (used only when creating)": "案件の説明 (作成時にのみ使用)",
|
||||
"The statute of limitations date (used only when creating)": "時効日 (作成時のみ使用)",
|
||||
"The status of the case (used only when creating)": "案件のステータス (作成時にのみ使用)",
|
||||
"The outstanding balance of this case (used only when creating)": "このケースの未処理残高 (作成時にのみ使用)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "請求先として割り当てるクライアントまたは会社 (作成時のみ使用)",
|
||||
"Clients to associate with the case (used only when creating)": "案件に関連付けるクライアント (作成時のみ使用)",
|
||||
"Companies to associate with the case (used only when creating)": "ケースに関連付ける企業 (作成時のみ使用)",
|
||||
"Staff members to associate with the case (used only when creating)": "案件に関連付けるスタッフメンバー(作成時のみ使用)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "この案件のリード弁護士を選択してください(作成時のみ使用されます)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "この案件の元の弁護士を選択してください(作成時のみ使用されます)",
|
||||
"The name of the case stage to find or create": "検索または作成する案件ステージの名前",
|
||||
"The name of the company to find or create": "検索または作成する会社名",
|
||||
"Company email address (used only when creating)": "会社のメールアドレス (作成時のみ使用)",
|
||||
"Company website URL (used only when creating)": "会社のウェブサイトのURL (作成時のみ使用)",
|
||||
"Main phone number for the company (used only when creating)": "会社のメイン電話番号 (作成時のみ使用)",
|
||||
"Fax phone number for the company (used only when creating)": "会社の Fax 電話番号 (作成時のみ使用)",
|
||||
"Street address line 1 (used only when creating)": "住所1行目(作成時のみ使用)",
|
||||
"Street address line 2 (used only when creating)": "住所2行目(作成時のみ使用)",
|
||||
"City (used only when creating)": "市区町村(作成時のみ使用)",
|
||||
"State (used only when creating)": "状態 (作成時のみ使用)",
|
||||
"ZIP/Postal code (used only when creating)": "郵便番号(作成時にのみ使用)",
|
||||
"Country (used only when creating)": "国(作成時のみ使用)",
|
||||
"Additional information about the company (used only when creating)": "会社に関する追加情報 (作成時のみ使用)",
|
||||
"Cases to associate with the company (used only when creating)": "会社に関連付けるケース (作成時にのみ使用)",
|
||||
"Clients to associate with the company (used only when creating)": "会社に関連付けるクライアント (作成時にのみ使用)",
|
||||
"The name of the location to find or create": "検索または作成する場所の名前",
|
||||
"The email of the client (used only when creating)": "クライアントのメール (作成時にのみ使用)",
|
||||
"The middle name of the client (used only when creating)": "クライアントのミドルネーム (作成時のみ使用)",
|
||||
"Cell phone number (used only when creating)": "携帯電話番号(作成時のみ使用)",
|
||||
"Work phone number (used only when creating)": "勤務先の電話番号(作成時のみ使用)",
|
||||
"Home phone number (used only when creating)": "自宅の電話番号(作成時のみ使用)",
|
||||
"Fax phone number (used only when creating)": "FAX番号(作成時のみ使用)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "ISO-8601 形式での生年月日: YYYY-MM-DD (作成時のみ使用)",
|
||||
"Additional information (used only when creating)": "追加情報 (作成時のみ使用)",
|
||||
"The people group to associate (used only when creating)": "関連付ける人々グループ (作成時にのみ使用)",
|
||||
"Cases to associate with the client (used only when creating)": "クライアントに関連付けるケース (作成時にのみ使用)",
|
||||
"The name of the practice area to find or create": "検索または作成する練習エリアの名前",
|
||||
"The name of the referral source to find or create": "検索または作成する紹介元の名前",
|
||||
"Open": "開く",
|
||||
"Closed": "クローズ済み",
|
||||
"Expense": "費用",
|
||||
"Time": "時刻",
|
||||
"Time and Expense": "時間と費用",
|
||||
"Short Text": "短いテキスト",
|
||||
"Long Text": "長いテキスト",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "リスト",
|
||||
"Currency": "通貨",
|
||||
"Firm Document": "会社のドキュメント",
|
||||
"Case Document": "案件文書",
|
||||
"Low": "低い",
|
||||
"Medium": "ミディアム",
|
||||
"High": "高い",
|
||||
"Unknown (provide name)": "不明な(名前を提供する)",
|
||||
"Existing Client": "既存のクライアント",
|
||||
"Existing Lead": "既存のリード",
|
||||
"Incoming": "Incoming",
|
||||
"Outgoing": "発信",
|
||||
"GET": "取得",
|
||||
"POST": "POST",
|
||||
"PUT": "PUT",
|
||||
"PATCH": "PATCH",
|
||||
"DELETE": "削除",
|
||||
"Active": "有効",
|
||||
"Inactive": "非アクティブ",
|
||||
"Case Added or Updated": "症例が追加または更新されました",
|
||||
"Event Added or Updated": "イベントが追加または更新されました",
|
||||
"Person Added or Updated": "追加または更新された人",
|
||||
"Company Added or Updated": "会社が追加または更新されました",
|
||||
"Lead Added or Updated": "追加または更新された見込み客。",
|
||||
"Triggers when a case has been added or updated": "案件が追加または更新されたときに発生する",
|
||||
"Triggers when an event has been added or updated": "イベントが追加または更新されたときにトリガーします",
|
||||
"Triggers when a person has been added or updated": "人が追加または更新されたときにトリガーします",
|
||||
"Triggers when a company has been added or updated": "会社が追加または更新されたときにトリガーします",
|
||||
"Triggers when a lead has been added or updated": "リードが追加または更新されたときにトリガーします"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automatiseren van juridische case management workflows met MyCase. Maak en beheer cases, klanten, bedrijven, gebeurtenissen, taken, tijd ingangen en documenten en meer. Krijg een melding wanneer cases, personen, bedrijven of leads worden toegevoegd of bijgewerkt.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Client Credentials\n. Neem contact op met MyCase ondersteuning bij [https://www.mycase.com/support/](https://www.mycase. om/support/) om OAuth 2.0 clientreferenties\n2. Geef uw applicatiegegevens en vraag een client-ID en clientgeheim\n3. MyCase ondersteuning biedt u aan:\n - **Client-ID**: Uw OAuth Client-ID\n - **Clientgeheim**: Your OAuth Client secret\n - **Redirect URI**: Een vooraf geconfigureerde omleidings-URI voor uw applicatie\n\n### Vereiste rechten\nDe gebruiker moet de **\"Beheer de voorkeuren van uw bedrijf, facturering en betalingsopties\"** permissie ingesteld op **Ja** in MyCase.\n\n### Authorization Flow\nMyCase maakt gebruik van OAuth 2.0 Authorization Code Grant flow met de volgende eindpunten:\n\n**Authorization URL**: `https://auth. ycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase. om/tokens`\n\n### Rate Limites\n- 25 aanvragen per seconde per client\n- Toegangstokens zijn 24 uur geldig\n- Vernieuwen tokens zijn 2 weken geldig\n\nVoor gedetailleerde API documentatie, bezoek: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi. toplight.io/docs/mycase-api-documentatie/k5xpc4jyhkom7-getting-started) \n",
|
||||
"Create Case": "Maak Geval",
|
||||
"Create Case Stage": "Maak Geval Fase",
|
||||
"Create Company": "Bedrijf aanmaken",
|
||||
"Create Custom Field": "Aangepast veld maken",
|
||||
"Create Document": "Document aanmaken",
|
||||
"Create Event": "Gebeurtenis aanmaken",
|
||||
"Create Expense": "Kosten aanmaken",
|
||||
"Create Lead": "Maak Lead",
|
||||
"Create Location": "Locatie aanmaken",
|
||||
"Create Note": "Notitie aanmaken",
|
||||
"Create Person (Client)": "Persoon aanmaken (Client)",
|
||||
"Create Practice Area": "Praktijkgebied aanmaken",
|
||||
"Create Referral Source": "Aanmaken verwijzingsbron",
|
||||
"Create Task": "Taak maken",
|
||||
"Create Time Entry": "Tijdsinvoer aanmaken",
|
||||
"Create Call": "Oproep aanmaken",
|
||||
"Update Case": "Update verzoek",
|
||||
"Update Company": "Bedrijf bijwerken",
|
||||
"Update Person (Client)": "Persoon bijwerken (Client)",
|
||||
"API Request": "API verzoek",
|
||||
"Find Case": "Zoek Geval",
|
||||
"Find Call": "Oproep zoeken",
|
||||
"Find Case Stage": "Vind Geval Fase",
|
||||
"Find Company": "Bedrijf zoeken",
|
||||
"Find Location": "Locatie zoeken",
|
||||
"Find People Group": "Vind Mensen Groep",
|
||||
"Find Person (Client)": "Persoon zoeken (Client)",
|
||||
"Find Practice Area": "Oefengebied zoeken",
|
||||
"Find Referral Source": "Zoek Referral Bron",
|
||||
"Find Staff": "Medewerkers zoeken",
|
||||
"Find or Create Case": "Zoek of maak Geval",
|
||||
"Find or Create Case Stage": "Zoek of maak Geval Fase",
|
||||
"Find or Create Company": "Zoek of creëer bedrijf",
|
||||
"Find or Create Location": "Zoek of maak een locatie",
|
||||
"Find or Create Person (Client)": "Zoek of creëer een persoon (Client)",
|
||||
"Find or Create Practice Area": "Zoek of maak praktijkgebied",
|
||||
"Find or Create Referral Source": "Zoek of maak verwijzingsbron",
|
||||
"Creates a new case in MyCase": "Maakt een nieuwe zaak aan in MyCase",
|
||||
"Creates a new case stage in MyCase": "Maakt een nieuwe case fase in MyCase",
|
||||
"Creates a new company in MyCase": "Maakt een nieuw bedrijf in MyCase",
|
||||
"Creates a new custom field in MyCase": "Maakt een nieuw aangepast veld in MyCase",
|
||||
"Creates a new document in MyCase": "Maakt een nieuw document in MyCase",
|
||||
"Creates a new event in MyCase": "Maakt een nieuwe gebeurtenis aan in MyCase",
|
||||
"Creates a new expense in MyCase": "Maakt een nieuwe uitgave aan MyCase",
|
||||
"Creates a new lead in MyCase": "Maakt een nieuwe lead in MyCase",
|
||||
"Creates a new location in MyCase": "Maakt een nieuwe locatie in MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Maakt een nieuwe notitie voor een zaak, klant of bedrijf in MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Maakt een nieuwe individuele client (persoon) in MyCase",
|
||||
"Creates a new practice area in MyCase": "Maakt een nieuw werkgebied in MyCase",
|
||||
"Creates a new referral source in MyCase": "Maakt een nieuwe referral bron in MyCase",
|
||||
"Creates a new task in MyCase": "Maakt een nieuwe taak aan in MyCase",
|
||||
"Creates a new time entry in MyCase": "Maakt een nieuwe tijd in MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Maakt een nieuwe oproep in het bellogboek in MyCase",
|
||||
"Updates an existing case in MyCase": "Werkt een bestaande zaak in MyCase bij",
|
||||
"Updates an existing company in MyCase": "Werkt een bestaand bedrijf in MyCase bij",
|
||||
"Updates an existing individual client (person) in MyCase": "Een bestaande individuele client (persoon) bijwerken in MyCase",
|
||||
"Makes a raw HTTP request to the MyCase API": "Maakt een rauw HTTP-verzoek naar de MyCase API",
|
||||
"Searches for cases with optional filters": "Zoekt in gevallen met optionele filters",
|
||||
"Searches for calls with optional filters": "Zoekt naar oproepen met optionele filters",
|
||||
"Searches for case stages with optional filters": "Zoekt naar etappes met optionele filters",
|
||||
"Searches for companies with optional filters": "Zoekt naar bedrijven met optionele filters",
|
||||
"Searches for locations with optional filters": "Zoekt naar locaties met optionele filters",
|
||||
"Searches for people groups with optional filters": "Zoekt voor personen groepen met optionele filters",
|
||||
"Searches for clients (people) with optional filters": "Zoekt naar klanten (personen) met optionele filters",
|
||||
"Searches for practice areas with optional filters": "Zoekt naar praktijkgebieden met optionele filters",
|
||||
"Searches for referral sources with optional filters": "Zoekt naar referral bronnen met optionele filters",
|
||||
"Searches for staff members with optional filters": "Zoekt naar medewerkers met optionele filters",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Vindt een geval op naam of creëert een nieuwe als deze niet bestaat",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Vindt een case stap op naam of creëert een nieuwe als deze niet bestaat",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Vindt een bedrijf op naam of maakt een nieuwe aan als deze niet bestaat",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Vindt een locatie op naam of maakt een nieuwe aan als deze niet bestaat",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Vindt een persoon op voor- en achternaam of maakt een nieuwe aan als deze niet gevonden is",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Vindt een oefengebied op naam of creëert een nieuwe als deze niet bestaat",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Vindt een verwijzingsbron op naam of maakt een nieuwe aan als deze niet bestaat",
|
||||
"Case Name": "Naam zaak",
|
||||
"Case Number": "Verzoek nummer",
|
||||
"Opened Date": "Geopende datum",
|
||||
"Case Stage": "Zaak stadium",
|
||||
"Practice Area": "Oefening gebied",
|
||||
"Description": "Beschrijving",
|
||||
"Statute of Limitations Date": "Statuut van de datum van beperking",
|
||||
"Status": "status",
|
||||
"Outstanding Balance": "Openstaand saldo",
|
||||
"Billing Contact ID": "Contactnummer facturering",
|
||||
"Client IDs": "Klant ID's",
|
||||
"Company IDs": "Bedrijf IDs",
|
||||
"Staff ID": "Medewerker ID",
|
||||
"Lead Lawyer": "Lead advocaat",
|
||||
"Originating Lawyer": "Oorspronkelijke advocaat",
|
||||
"Case Stage Name": "Zaak Fase Naam",
|
||||
"Company Name": "Bedrijfsnaam",
|
||||
"Email": "E-mail",
|
||||
"Website": "website",
|
||||
"Main Phone Number": "Hoofd telefoonnummer",
|
||||
"Fax Phone Number": "Fax telefoonnummer",
|
||||
"Address Line 1": "Adresregel 1",
|
||||
"Address Line 2": "Adresregel 2",
|
||||
"City": "Woonplaats",
|
||||
"State": "Provincie",
|
||||
"ZIP Code": "Postcode code",
|
||||
"Country": "Land:",
|
||||
"Notes": "Opmerkingen",
|
||||
"Cases": "Zaken",
|
||||
"Clients": "Klanten",
|
||||
"Field Name": "Veld naam",
|
||||
"Parent Type": "Bovenliggend type",
|
||||
"Field Type": "Veld type",
|
||||
"List Options": "Lijst opties",
|
||||
"Document Type": "Document type",
|
||||
"Case": "Zaak",
|
||||
"Document Path": "Document pad",
|
||||
"Filename": "Bestandsnaam",
|
||||
"Assigned Date": "Toegewezen datum",
|
||||
"Staff": "Medewerkers",
|
||||
"Event Name": "Naam van gebeurtenis",
|
||||
"Start Date/Time": "Start Datum/Tijd",
|
||||
"End Date/Time": "Eind datum/tijd",
|
||||
"Required Staff": "Vereiste Personeel",
|
||||
"All Day Event": "Hele Dag Evenement",
|
||||
"Private Event": "Privé Evenement",
|
||||
"Location": "Locatie",
|
||||
"Activity Name": "Activiteit Naam",
|
||||
"Entry Date": "Invoer datum",
|
||||
"Cost": "Kosten",
|
||||
"Units": "Eenheden",
|
||||
"Billable": "Factureerbaar",
|
||||
"First Name": "Voornaam",
|
||||
"Last Name": "Achternaam",
|
||||
"Middle Initial": "Midden initiaal",
|
||||
"Cell Phone Number": "Mobiel telefoonnummer",
|
||||
"Work Phone Number": "Telefoonnummer werk",
|
||||
"Home Phone Number": "Telefoonnummer thuis",
|
||||
"Birthdate": "Geboortedatum",
|
||||
"Drivers License Number": "Nummer vergunning chauffeur",
|
||||
"Drivers License State": "Chauffeurs licentiestatus",
|
||||
"Lead Details": "Lead informatie",
|
||||
"Referral Source": "Verwijzing bron",
|
||||
"Referred By": "Aanbevolen door",
|
||||
"Location Name": "Naam locatie",
|
||||
"Entity Type": "Entiteit type",
|
||||
"Entity": "Entiteit",
|
||||
"Subject": "Onderwerp",
|
||||
"Note": "Notitie",
|
||||
"Date": "Datum:",
|
||||
"Middle Name": "Tweede naam",
|
||||
"People Group": "Mensen groep",
|
||||
"Practice Area Name": "Naam praktijkgebied",
|
||||
"Referral Source Name": "Bron naam referral",
|
||||
"Task Name": "Taak naam",
|
||||
"Priority": "Prioriteit",
|
||||
"Due Date": "Inleverdatum",
|
||||
"Completed": "Voltooid",
|
||||
"Rate": "Beoordelen",
|
||||
"Hours": "Uren",
|
||||
"Flat Fee": "Platte kosten",
|
||||
"Called At": "Belde op",
|
||||
"Caller Phone Number": "Telefoonnummer beller",
|
||||
"Call For": "Oproep voor",
|
||||
"Message": "bericht",
|
||||
"Caller Type": "Beller type",
|
||||
"Caller Name": "Beller naam",
|
||||
"Client": "Klant",
|
||||
"Lead": "Lood",
|
||||
"Call Type": "Soort gesprek",
|
||||
"Resolved": "Opgelost",
|
||||
"Billing Contact": "Contactpersoon voor facturering",
|
||||
"Companies": "Bedrijven",
|
||||
"Company": "Bedrijfsnaam",
|
||||
"Method": "Methode",
|
||||
"Path": "Pad",
|
||||
"Query Parameters": "Query parameters",
|
||||
"Request Body": "Aanvraag body",
|
||||
"Additional Headers": "Extra headers",
|
||||
"Updated After": "Bijgewerkt na",
|
||||
"Page Size": "Paginagrootte",
|
||||
"Client Fields": "Klant velden",
|
||||
"Custom Field Fields": "Aangepaste velden",
|
||||
"Name": "Naam",
|
||||
"The name of the case (must be unique)": "De naam van het geval (moet uniek zijn)",
|
||||
"An identifier for this case (recommended to be unique)": "Een id voor dit geval (aanbevolen om uniek te zijn)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "De datum waarop de case is aangemaakt/geopend (ISO-8601 formaat: JJJJJ-MM-DD)",
|
||||
"The stage the case is currently in (must match MyCase system)": "De fase waarin de zaak zich momenteel bevindt (moet overeenkomen met het MyCase systeem)",
|
||||
"The practice area for this case (must match MyCase system)": "Het werkgebied voor dit geval (moet overeenkomen met het MyCase systeem)",
|
||||
"A description for the case": "Een beschrijving voor het geval",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "Het limitatiedatum (ISO-8601 datumformaat: YYYY-MM-DD)",
|
||||
"The status of the case": "De status van de zaak",
|
||||
"The outstanding balance of this case": "De uitstaande balans in dit geval",
|
||||
"The ID of the client or company to assign as the billing contact": "Het ID van de klant of bedrijf om toe te wijzen als het contact met de factuur",
|
||||
"Comma-separated list of client IDs to associate with the case": "Kommagescheiden lijst van client IDs die aan de case moeten worden gekoppeld",
|
||||
"Comma-separated list of company IDs to associate with the case": "Kommagescheiden lijst van bedrijfs-IDs te koppelen aan de zaak",
|
||||
"ID of staff member to associate with the case": "ID van personeelslid om te associëren met de zaak",
|
||||
"Is the staff member the lead lawyer for this case?": "Is het personeel de hoofdadvocaat van deze zaak?",
|
||||
"Is the staff member the originating lawyer for this case?": "Is het personeelslid de oorspronkelijke advocaat voor deze zaak?",
|
||||
"The name of the case stage": "De naam van de zaak",
|
||||
"The name of the company": "De naam van het bedrijf",
|
||||
"Company email address": "E-mailadres van bedrijf",
|
||||
"Company website URL": "URL bedrijfswebsite",
|
||||
"Main phone number for the company": "Hoofd telefoonnummer voor het bedrijf",
|
||||
"Fax phone number for the company": "Fax telefoonnummer voor het bedrijf",
|
||||
"Street address line 1": "Adresregel 1 straat",
|
||||
"Street address line 2": "Adresregel 2 straat",
|
||||
"ZIP/Postal code": "Postcode",
|
||||
"Additional information about the company (visible to firm members only)": "Aanvullende informatie over het bedrijf (alleen zichtbaar voor bedrijfsleden",
|
||||
"Cases to associate with the company": "Gevallen om te associëren met het bedrijf",
|
||||
"Clients to associate with the company": "Klanten te associëren met het bedrijf",
|
||||
"The name of the custom field": "De naam van het extra veld",
|
||||
"The parent resource type of the custom field": "Het bovenliggende resource type van het aangepaste veld",
|
||||
"The field type of the custom field": "Het veldtype van het extra veld",
|
||||
"List of options for the custom field (required if field type is \"list\")": "Lijst met opties voor het extra veld (verplicht als veldtype \"lijst\") is",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Kies of een bedrijfsdocument moet worden aangemaakt of aan een specifieke zaak moet worden gekoppeld",
|
||||
"Select the case to associate this document with": "Selecteer de zaak om dit document te koppelen",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "Het relatieve pad met de naam van het document (bijv. map1/map2/document_name). Mappen worden automatisch aangemaakt.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "De bestandsnaam van het fysieke bestand inclusief extensie (bijv. file.pdf)",
|
||||
"The description of this document": "De beschrijving van dit document",
|
||||
"The assigned date of this document": "De toegewezen datum van dit document",
|
||||
"Staff members to share this document with (only for firm documents)": "Personeelsleden om dit document mee te delen (alleen voor stevige documenten)",
|
||||
"The name of this event": "De naam van dit evenement",
|
||||
"The start date and time of this event": "De startdatum en -tijd van dit evenement",
|
||||
"The end date and time of this event": "De einddatum en tijd van deze gebeurtenis",
|
||||
"Staff members to associate with this event": "Medewerkers die geassocieerd worden met deze gebeurtenis",
|
||||
"Staff members who are required to attend (all others are optional)": "Personeelsleden die verplicht zijn om bij te wonen (alle anderen zijn optioneel)",
|
||||
"Event description": "Beschrijving gebeurtenis",
|
||||
"Is this an all day event?": "Is dit de hele dag?",
|
||||
"Is this a private event?": "Is dit een privégebeurtenis?",
|
||||
"The location associated with this event": "De locatie die is gekoppeld aan deze gebeurtenis",
|
||||
"The case associated with this event": "De zaak die geassocieerd is met deze gebeurtenis",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "De activiteitsnaam voor deze kostenpost (wordt aangemaakt als deze niet bestaat)",
|
||||
"The case to associate with this expense": "De zaak die gekoppeld moet worden aan deze kosten",
|
||||
"The entry date of this expense": "De invoerdatum van deze kostenpost",
|
||||
"Cost of the expense": "Kosten van de uitgave",
|
||||
"Number of units": "Aantal eenheden",
|
||||
"Is this expense billable?": "Is deze uitgave factureerbaar?",
|
||||
"Description of the expense": "Beschrijving van de uitgave",
|
||||
"The staff member associated with this expense": "Het personeelslid geassocieerd met deze uitgave",
|
||||
"The first name of the lead": "De voornaam van de lead",
|
||||
"The last name of the lead": "De achternaam van de lead",
|
||||
"The email of the lead": "De e-mail van de lead",
|
||||
"The middle name or initial of the lead": "De tweede naam of de eerste van de lead",
|
||||
"Cell phone number": "Mobiel nummer",
|
||||
"Work phone number": "Telefoonnummer werk",
|
||||
"Home phone number": "Telefoonnummer thuis",
|
||||
"Date of birth": "Geboorte datum",
|
||||
"Drivers license number": "Nummer vergunning chauffeur",
|
||||
"Drivers license state": "Chauffeurs licentie status",
|
||||
"Additional information (visible to firm members only)": "Aanvullende informatie (alleen zichtbaar voor bedrijfsdeelnemers)",
|
||||
"The referral source to associate with this lead": "De verwijzingsbron die u wilt associëren met deze lead",
|
||||
"Existing client or company who referred this lead": "Bestaande klant of bedrijf die deze lead heeft verwezen",
|
||||
"The name of the location": "De naam van de locatie",
|
||||
"Choose the type of entity to create the note for": "Kies het type entiteit om de notitie aan te maken voor",
|
||||
"Select the entity to create the note for": "Selecteer het entiteit om de notitie aan te maken voor",
|
||||
"Subject of the note": "Onderwerp van de notitie",
|
||||
"The body text of the note": "De hoofdtekst van de notitie",
|
||||
"The date and time of the note": "De datum en tijd van de notitie",
|
||||
"The first name of the client": "De voornaam van de cliënt",
|
||||
"The last name of the client": "De achternaam van de client",
|
||||
"The email of the client": "De e-mail van de client",
|
||||
"The middle name of the client": "De tweede naam van de klant",
|
||||
"Fax phone number": "Fax telefoonnummer",
|
||||
"The people group to associate with this client": "De groep mensen die verbonden is met deze cliënt",
|
||||
"Cases to associate with this client": "Gevallen om te koppelen aan deze client",
|
||||
"The name of the practice area": "De naam van het oefengebied",
|
||||
"The name of the referral source": "De naam van de verwijzingsbron",
|
||||
"The name of this task": "De naam van deze taak",
|
||||
"The priority of this task": "De prioriteit van deze taak",
|
||||
"The due date of this task": "De vervaldatum van deze taak",
|
||||
"Staff members to assign this task to": "Medewerkers om deze taak toe te wijzen",
|
||||
"Task description": "Omschrijving taak",
|
||||
"Is this task completed?": "Is deze taak voltooid?",
|
||||
"The case to associate with this task": "Het geval te koppelen aan deze taak",
|
||||
"The activity name for this time entry": "De activiteitsnaam voor dit tijdsitem",
|
||||
"The case to associate with this time entry": "Het geval te associëren met deze tijdsinvoer",
|
||||
"The staff member associated with this time entry": "Het medewerker dat is gekoppeld aan deze tijdsinvoer",
|
||||
"The entry date of this time entry": "De invoerdatum van deze invoer",
|
||||
"The rate in dollars": "De koers in dollars",
|
||||
"The duration in hours": "De duur in uren",
|
||||
"Description of the time entry": "Beschrijving van de tijdsinvoer",
|
||||
"Is this time entry billable?": "Is deze invoer factureerbaar?",
|
||||
"Is this time entry a flat fee?": "Is het invoeren van deze tijd een vaste vergoeding?",
|
||||
"When the call happened": "Wanneer het gesprek heeft plaatsgevonden",
|
||||
"The caller's phone number": "Telefoonnummer van de beller",
|
||||
"The staff member this call is associated with": "Het medewerker waarmee dit gesprek is verbonden",
|
||||
"A description of the call": "Een beschrijving van het gesprek",
|
||||
"Choose how to identify the caller": "Kies hoe u de beller kunt identificeren",
|
||||
"The caller's name": "Naam van de beller",
|
||||
"The existing client": "De bestaande client",
|
||||
"The existing lead": "De bestaande lead",
|
||||
"Type of call": "Soort gesprek",
|
||||
"Should this call show as resolved?": "Moet deze oproep zoals opgelost worden weergegeven?",
|
||||
"Select the case to update": "Selecteer het te updaten geval",
|
||||
"An identifier for this case": "Een id voor dit geval",
|
||||
"The date the case was created/opened": "De datum waarop de zaak is aangemaakt/geopend",
|
||||
"The stage the case is currently in": "De fase waarin de zaak zich momenteel bevindt",
|
||||
"The practice area for this case": "Het praktijkgebied voor deze zaak",
|
||||
"The statute of limitations date": "Het statuut van de grensdatum",
|
||||
"The client or company to assign as the billing contact": "De klant of bedrijf om toe te wijzen als contactpersoon voor facturering",
|
||||
"Clients to associate with the case": "Klanten om te koppelen aan de case",
|
||||
"Companies to associate with the case": "Bedrijven die deze zaak associëren",
|
||||
"Staff members to associate with the case": "Personeelsleden die met de case geassocieerd worden",
|
||||
"Select the lead lawyer for this case": "Selecteer de hoofdadvocaat voor dit geval",
|
||||
"Select the originating lawyer for this case": "Selecteer de oorspronkelijke advocaat voor dit geval",
|
||||
"Select the company to update": "Selecteer het bedrijf om te updaten",
|
||||
"Select the client to update": "Selecteer de klant om bij te werken",
|
||||
"HTTP method to use": "HTTP methode om te gebruiken",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "API eindpunt pad (bijv. /cases of /clients/123)",
|
||||
"Query parameters as JSON object": "Query parameters als JSON object",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Verzoek inhoud als JSON (voor POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "Extra headers als JSON object",
|
||||
"Filter by case status": "Filter op case status",
|
||||
"Filter cases updated after this date and time": "Filter op geüpdatete gevallen na deze datum en tijd",
|
||||
"Number of results per page (1-1000)": "Aantal resultaten per pagina (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Komma-gescheiden lijst van klantvelden om op te nemen (bijv. id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Door komma's gescheiden lijst van extra velden in extra veld (bijv. id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filter oproepen bijgewerkt na deze datum en tijd",
|
||||
"Filter case stages updated after this date and time": "Gevangenfases filteren bijgewerkt na deze datum en tijd",
|
||||
"Filter by company name": "Filter op bedrijfsnaam",
|
||||
"Filter by email address": "Filter op e-mailadres",
|
||||
"Filter by main phone number": "Filter op hoofdtelefoonnummer",
|
||||
"Filter by fax phone number": "Filter op fax telefoonnummer",
|
||||
"Filter companies updated after this date and time": "Filter bedrijven bijgewerkt na deze datum en tijd",
|
||||
"Filter locations updated after this date and time": "Filter locaties bijgewerkt na deze datum en tijd",
|
||||
"Filter people groups updated after this date and time": "Filter mensen groepen bijgewerkt na deze datum en tijd",
|
||||
"Filter by first name": "Filter op voornaam",
|
||||
"Filter by last name": "Filter op achternaam",
|
||||
"Filter by cell phone number": "Filteren op telefoonnummer",
|
||||
"Filter by work phone number": "Filter op werk-telefoonnummer",
|
||||
"Filter by home phone number": "Filter op startnummer",
|
||||
"Filter clients updated after this date and time": "Filter cliënten bijgewerkt na deze datum en tijd",
|
||||
"Filter practice areas updated after this date and time": "Filteringsgebieden bijgewerkt na deze datum en tijd",
|
||||
"Filter referral sources updated after this date and time": "Filterverwijzing bronnen bijgewerkt na deze datum en tijd",
|
||||
"Filter by staff status": "Filteren op medewerkerstatus",
|
||||
"Filter staff updated after this date and time": "Filtermedewerker bijgewerkt na deze datum en tijd",
|
||||
"The name of the case to find or create": "De naam van de case om te vinden of aanmaken",
|
||||
"An identifier for this case (used only when creating)": "Een id voor deze zaak (wordt alleen gebruikt bij het creëren)",
|
||||
"The date the case was created/opened (used only when creating)": "De datum waarop de zaak is aangemaakt/geopend (wordt alleen gebruikt bij het maken)",
|
||||
"The stage the case is currently in (used only when creating)": "Het stadium waarin de zaak zich momenteel bevindt (wordt alleen gebruikt bij het creëren)",
|
||||
"The practice area for this case (used only when creating)": "Het oefengebied voor deze zaak (wordt alleen gebruikt bij het creëren)",
|
||||
"A description for the case (used only when creating)": "Een beschrijving voor het geval (alleen gebruikt tijdens het maken)",
|
||||
"The statute of limitations date (used only when creating)": "Het statuut van de grensdatum (wordt alleen gebruikt bij het creëren)",
|
||||
"The status of the case (used only when creating)": "De status van de zaak (wordt alleen gebruikt tijdens aanmaken)",
|
||||
"The outstanding balance of this case (used only when creating)": "Het uitstaande saldo van deze zaak (wordt alleen gebruikt tijdens het creëren)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "De klant of bedrijf om toe te wijzen als het factureringscontact (wordt alleen tijdens het aanmaken gebruikt)",
|
||||
"Clients to associate with the case (used only when creating)": "Klanten om te koppelen aan de case (worden alleen gebruikt bij het creëren)",
|
||||
"Companies to associate with the case (used only when creating)": "Bedrijven die geassocieerd worden met de zaak (worden alleen gebruikt tijdens het creëren)",
|
||||
"Staff members to associate with the case (used only when creating)": "Personeelsleden die met de case geassocieerd worden (alleen gebruikt bij het creëren)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Selecteer de hoofdadvocaat voor dit geval (wordt alleen gebruikt bij het creëren)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Selecteer de oorspronkelijke advocaat voor dit geval (wordt alleen gebruikt bij het creëren)",
|
||||
"The name of the case stage to find or create": "De naam van de case fase om te vinden of maken",
|
||||
"The name of the company to find or create": "De naam van het bedrijf om te vinden of aanmaken",
|
||||
"Company email address (used only when creating)": "E-mailadres van bedrijf (wordt alleen gebruikt bij het aanmaken)",
|
||||
"Company website URL (used only when creating)": "URL van de bedrijfswebsite (alleen gebruikt bij het aanmaken)",
|
||||
"Main phone number for the company (used only when creating)": "Hoofd telefoonnummer van het bedrijf (wordt alleen tijdens het aanmaken gebruikt)",
|
||||
"Fax phone number for the company (used only when creating)": "Telefoonnummer Fax voor het bedrijf (wordt alleen gebruikt tijdens het maken)",
|
||||
"Street address line 1 (used only when creating)": "Adresregel 1 (alleen gebruikt bij het creëren)",
|
||||
"Street address line 2 (used only when creating)": "Adresregel 2 (alleen gebruikt bij het creëren)",
|
||||
"City (used only when creating)": "Stad (wordt alleen gebruikt bij het creëren)",
|
||||
"State (used only when creating)": "Staat (alleen gebruikt bij het creëren)",
|
||||
"ZIP/Postal code (used only when creating)": "ZIP/postcode (alleen gebruikt bij het creëren)",
|
||||
"Country (used only when creating)": "Land (alleen gebruikt bij het maken)",
|
||||
"Additional information about the company (used only when creating)": "Aanvullende informatie over het bedrijf (alleen gebruikt bij het creëren)",
|
||||
"Cases to associate with the company (used only when creating)": "Gevallen om te associëren met het bedrijf (alleen gebruikt bij het creëren)",
|
||||
"Clients to associate with the company (used only when creating)": "Klanten die verbonden zijn met het bedrijf (alleen gebruikt bij het creëren)",
|
||||
"The name of the location to find or create": "De naam van de locatie om te vinden of aanmaken",
|
||||
"The email of the client (used only when creating)": "E-mail van de client (wordt alleen gebruikt tijdens het aanmaken)",
|
||||
"The middle name of the client (used only when creating)": "De tweede naam van de client (wordt alleen gebruikt bij het maken)",
|
||||
"Cell phone number (used only when creating)": "Mobiel nummer (alleen gebruikt bij het creëren)",
|
||||
"Work phone number (used only when creating)": "Telefoonnummer werk (alleen gebruikt bij het maken)",
|
||||
"Home phone number (used only when creating)": "Telefoonnummer thuis (alleen gebruikt bij het maken)",
|
||||
"Fax phone number (used only when creating)": "Fax telefoonnummer (wordt alleen gebruikt bij aanmaak)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Geboortedatum in ISO-8601 formaat: JJJJ-MM-DD (alleen bij schepping)",
|
||||
"Additional information (used only when creating)": "Aanvullende informatie (alleen gebruikt bij het aanmaken)",
|
||||
"The people group to associate (used only when creating)": "De mensen groep te associëren (wordt alleen gebruikt tijdens het maken)",
|
||||
"Cases to associate with the client (used only when creating)": "Gevallen om te associëren met de client (alleen gebruikt bij het maken)",
|
||||
"The name of the practice area to find or create": "De naam van het oefengebied om te vinden of creëren",
|
||||
"The name of the referral source to find or create": "De naam van de referral bron om te vinden of maken",
|
||||
"Open": "Open",
|
||||
"Closed": "gesloten",
|
||||
"Expense": "Kosten",
|
||||
"Time": "Tijd",
|
||||
"Time and Expense": "Tijd en Uitgaven",
|
||||
"Short Text": "Korte tekst",
|
||||
"Long Text": "Lange tekst",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "Klantenlijst",
|
||||
"Currency": "valuta",
|
||||
"Firm Document": "Firm Document",
|
||||
"Case Document": "Verzoek document",
|
||||
"Low": "laag",
|
||||
"Medium": "Middelgroot",
|
||||
"High": "hoog",
|
||||
"Unknown (provide name)": "Onbekend (naam opgegeven)",
|
||||
"Existing Client": "Bestaande client",
|
||||
"Existing Lead": "Bestaande Lead",
|
||||
"Incoming": "Binnenkomend",
|
||||
"Outgoing": "Uitgaande",
|
||||
"GET": "KRIJG",
|
||||
"POST": "POSTE",
|
||||
"PUT": "PUT",
|
||||
"PATCH": "BEKIJK",
|
||||
"DELETE": "VERWIJDEREN",
|
||||
"Active": "Actief",
|
||||
"Inactive": "Inactief",
|
||||
"Case Added or Updated": "Case toegevoegd of bijgewerkt",
|
||||
"Event Added or Updated": "Event toegevoegd of bijgewerkt",
|
||||
"Person Added or Updated": "Persoon toegevoegd of bijgewerkt",
|
||||
"Company Added or Updated": "Bedrijf toegevoegd of bijgewerkt",
|
||||
"Lead Added or Updated": "Lead toegevoegd of bijgewerkt",
|
||||
"Triggers when a case has been added or updated": "Triggert wanneer een case is toegevoegd of bijgewerkt",
|
||||
"Triggers when an event has been added or updated": "Triggert wanneer een gebeurtenis is toegevoegd of bijgewerkt",
|
||||
"Triggers when a person has been added or updated": "Triggert wanneer een persoon is toegevoegd of bijgewerkt",
|
||||
"Triggers when a company has been added or updated": "Triggers wanneer een bedrijf is toegevoegd of bijgewerkt",
|
||||
"Triggers when a lead has been added or updated": "Triggert wanneer een lead is toegevoegd of bijgewerkt"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automatize os fluxos de trabalho de gerenciamento de casos legais com MyCase. Criar e gerenciar casos, clientes, empresas, eventos, tarefas, entradas de tempo, documentos e muito mais. Seja notificado quando casos, eventos, pessoas, empresas, ou leads forem adicionados ou atualizados.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## Configuração do MyCase OAuth 2.0\n\n### Obtendo Credenciais do Cliente\n. Contate o suporte a MyCase em [https://www.mycase.com/support/](https://www.mycase. om/support/) para solicitar credenciais de cliente OAuth 2.0\n2. Forneça os detalhes do seu aplicativo e solicite um ID de cliente e cliente secreto\n3. O suporte a MeuCase fornecerá para você:\n - **ID do cliente**: Seu ID de Cliente OAuth\n - **Segredo do cliente**: Seu segredo de Cliente OAuth\n - **URI de redirecionamento pré-configurado para a sua aplicação\n\n### Permissões necessárias\nO usuário autorizador deve ter as **\"Gerenciar as preferências da sua empresa, faturamento, e opções de pagamento\"** permissão definida para **Sim** no MyCase.\n\n### Authorization Flow\nMyCase usa o fluxo de concessão de autorização OAuth 2.0 com os seguintes endpoints:\n\n**URL de autorização**: `https://auth. ycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase. om/tokens`\n\n### Limites de taxa\n- 25 pedidos por segundo por cliente\n- Tokens de acesso são válidos por 24 horas\n- tokens de atualização são válidos por 2 semanas\n\nPara documentação detalhada da API, visita: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi. toplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started) \n",
|
||||
"Create Case": "Criar Ocorrência",
|
||||
"Create Case Stage": "Criar Estágio de Caso",
|
||||
"Create Company": "Criar Empresa",
|
||||
"Create Custom Field": "Criar campo personalizado",
|
||||
"Create Document": "Criar documento",
|
||||
"Create Event": "Criar evento",
|
||||
"Create Expense": "Criar Despesa",
|
||||
"Create Lead": "Criar Potencial",
|
||||
"Create Location": "Criar Localização",
|
||||
"Create Note": "Criar Nota",
|
||||
"Create Person (Client)": "Criar Pessoa (Cliente)",
|
||||
"Create Practice Area": "Criar área de prática",
|
||||
"Create Referral Source": "Criar fonte de Referência",
|
||||
"Create Task": "Criar tarefa",
|
||||
"Create Time Entry": "Criar Registro de Tempo",
|
||||
"Create Call": "Criar Ligação",
|
||||
"Update Case": "Atualizar Caso",
|
||||
"Update Company": "Atualizar Empresa",
|
||||
"Update Person (Client)": "Atualizar pessoa (cliente)",
|
||||
"API Request": "Solicitação de API",
|
||||
"Find Case": "Encontrar o Caso",
|
||||
"Find Call": "Encontrar chamada",
|
||||
"Find Case Stage": "Encontrar Estágio de Caso",
|
||||
"Find Company": "Encontrar empresa",
|
||||
"Find Location": "Encontrar Localização",
|
||||
"Find People Group": "Encontrar Grupo de Pessoas",
|
||||
"Find Person (Client)": "Encontrar pessoa (cliente)",
|
||||
"Find Practice Area": "Encontre a área de prática",
|
||||
"Find Referral Source": "Encontrar fonte de Referência",
|
||||
"Find Staff": "Encontrar equipe",
|
||||
"Find or Create Case": "Encontrar ou Criar Ocorrência",
|
||||
"Find or Create Case Stage": "Encontrar ou Criar Estágio de Caso",
|
||||
"Find or Create Company": "Encontrar ou criar empresa",
|
||||
"Find or Create Location": "Localizar ou criar localização",
|
||||
"Find or Create Person (Client)": "Localizar ou Criar Pessoa (Cliente)",
|
||||
"Find or Create Practice Area": "Encontre ou crie uma área de prática",
|
||||
"Find or Create Referral Source": "Encontrar ou criar fonte de referência",
|
||||
"Creates a new case in MyCase": "Cria um novo caso em MyCase",
|
||||
"Creates a new case stage in MyCase": "Cria um estágio de novo caso no MyCase",
|
||||
"Creates a new company in MyCase": "Cria uma nova empresa no MyCase",
|
||||
"Creates a new custom field in MyCase": "Cria um novo campo personalizado no MyCase",
|
||||
"Creates a new document in MyCase": "Cria um novo documento no MyCase",
|
||||
"Creates a new event in MyCase": "Cria um novo evento no MyCase",
|
||||
"Creates a new expense in MyCase": "Cria um novo gasto no MyCase",
|
||||
"Creates a new lead in MyCase": "Cria um novo lead em MyCase",
|
||||
"Creates a new location in MyCase": "Cria um novo local no MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Cria uma nova nota para um caso, cliente ou empresa no MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Cria um novo cliente individual (pessoa) no MyCase",
|
||||
"Creates a new practice area in MyCase": "Cria uma nova área de prática em MyCase",
|
||||
"Creates a new referral source in MyCase": "Cria uma nova fonte de referência no MyCase",
|
||||
"Creates a new task in MyCase": "Cria uma nova tarefa no MyCase",
|
||||
"Creates a new time entry in MyCase": "Cria uma nova entrada de tempo no MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Cria uma nova chamada no log de chamadas em MyCase",
|
||||
"Updates an existing case in MyCase": "Atualiza um caso existente no MyCase",
|
||||
"Updates an existing company in MyCase": "Atualiza uma empresa existente no MyCase",
|
||||
"Updates an existing individual client (person) in MyCase": "Atualiza um cliente individual existente (pessoa) no MyCase",
|
||||
"Makes a raw HTTP request to the MyCase API": "Faz um pedido HTTP em bruto para a API do MyCase",
|
||||
"Searches for cases with optional filters": "Procurar casos com filtros opcionais",
|
||||
"Searches for calls with optional filters": "Pesquisa por chamadas com filtros opcionais",
|
||||
"Searches for case stages with optional filters": "Pesquisa por estágios de caso com filtros opcionais",
|
||||
"Searches for companies with optional filters": "Pesquisa por empresas com filtros opcionais",
|
||||
"Searches for locations with optional filters": "Procurar locais com filtros opcionais",
|
||||
"Searches for people groups with optional filters": "Procurar grupos de pessoas com filtros opcionais",
|
||||
"Searches for clients (people) with optional filters": "Pesquisa por clientes (pessoas) com filtros opcionais",
|
||||
"Searches for practice areas with optional filters": "Pesquisa por áreas de prática com filtros opcionais",
|
||||
"Searches for referral sources with optional filters": "Pesquisa por fontes de referência com filtros opcionais",
|
||||
"Searches for staff members with optional filters": "Procura por membros da staff com filtros opcionais",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Encontra um caso por nome ou cria um novo caso não exista",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Encontra um estágio de caso por nome ou cria um novo caso ele não exista",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Encontra uma empresa por nome ou cria uma nova se ela não existe",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Encontra um local por nome ou cria um novo se não existe",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Encontra uma pessoa por primeiro e último nome ou cria uma nova se não encontrada",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Encontra uma área de prática por nome ou cria uma nova, se ela não existir",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Encontra uma fonte de referência por nome ou cria uma nova se ela não existir",
|
||||
"Case Name": "Nome do caso",
|
||||
"Case Number": "Número da Ocorrência",
|
||||
"Opened Date": "Data de Abertura",
|
||||
"Case Stage": "Estágio do Caso",
|
||||
"Practice Area": "Área de Prática",
|
||||
"Description": "Descrição",
|
||||
"Statute of Limitations Date": "Data do Estatuto das Limitações",
|
||||
"Status": "Estado",
|
||||
"Outstanding Balance": "Saldo Pendente",
|
||||
"Billing Contact ID": "Contato para faturamento",
|
||||
"Client IDs": "IDs de Clientes",
|
||||
"Company IDs": "IDs da empresa",
|
||||
"Staff ID": "ID do pessoal",
|
||||
"Lead Lawyer": "Líder Advogado",
|
||||
"Originating Lawyer": "Advogado de origem",
|
||||
"Case Stage Name": "Caso Nome Estágio",
|
||||
"Company Name": "Nome da Empresa",
|
||||
"Email": "e-mail",
|
||||
"Website": "site",
|
||||
"Main Phone Number": "Número de telefone principal",
|
||||
"Fax Phone Number": "Número de Telefone Fax",
|
||||
"Address Line 1": "Linha de Endereço 1",
|
||||
"Address Line 2": "Linha de Endereço 2",
|
||||
"City": "cidade",
|
||||
"State": "Estado:",
|
||||
"ZIP Code": "Código Postal",
|
||||
"Country": "País/região",
|
||||
"Notes": "Observações",
|
||||
"Cases": "Casos",
|
||||
"Clients": "Clientes",
|
||||
"Field Name": "Nome do campo",
|
||||
"Parent Type": "Tipo de Origem",
|
||||
"Field Type": "Tipo do Campo",
|
||||
"List Options": "Opções de Lista",
|
||||
"Document Type": "Tipo de documento",
|
||||
"Case": "Chamado",
|
||||
"Document Path": "Caminho do documento",
|
||||
"Filename": "Nome",
|
||||
"Assigned Date": "Data atribuída",
|
||||
"Staff": "Funcionários",
|
||||
"Event Name": "Nome do Evento",
|
||||
"Start Date/Time": "Data/Hora Inicial",
|
||||
"End Date/Time": "Data/Hora Final",
|
||||
"Required Staff": "Funcionário necessário",
|
||||
"All Day Event": "Evento de dia inteiro",
|
||||
"Private Event": "Evento privado",
|
||||
"Location": "Local:",
|
||||
"Activity Name": "Nome da atividade",
|
||||
"Entry Date": "Data de Entrada",
|
||||
"Cost": "Custo",
|
||||
"Units": "Unidades",
|
||||
"Billable": "Faturável",
|
||||
"First Name": "Nome",
|
||||
"Last Name": "Sobrenome",
|
||||
"Middle Initial": "Início do Meio",
|
||||
"Cell Phone Number": "Número de Telefone Celular",
|
||||
"Work Phone Number": "Número de telefone comercial",
|
||||
"Home Phone Number": "Número de telefone residencial",
|
||||
"Birthdate": "Aniversário",
|
||||
"Drivers License Number": "Número de licença de motoristas",
|
||||
"Drivers License State": "Estado da carta de motorista",
|
||||
"Lead Details": "Detalhes do lead",
|
||||
"Referral Source": "Fonte de Referência",
|
||||
"Referred By": "Indicado por",
|
||||
"Location Name": "Nome da localização",
|
||||
"Entity Type": "Tipo de entidade",
|
||||
"Entity": "Entidade",
|
||||
"Subject": "Cargo",
|
||||
"Note": "Observação",
|
||||
"Date": "Encontro",
|
||||
"Middle Name": "Nome do Meio",
|
||||
"People Group": "Grupo de pessoas",
|
||||
"Practice Area Name": "Nome da área de prática",
|
||||
"Referral Source Name": "Nome da fonte de referência",
|
||||
"Task Name": "Nome da tarefa",
|
||||
"Priority": "Prioridade",
|
||||
"Due Date": "Data de vencimento",
|
||||
"Completed": "Concluído",
|
||||
"Rate": "Avaliar",
|
||||
"Hours": "horas",
|
||||
"Flat Fee": "Tarifa fixa",
|
||||
"Called At": "Chamado a",
|
||||
"Caller Phone Number": "Número de Telefone",
|
||||
"Call For": "Ligar para",
|
||||
"Message": "mensagem",
|
||||
"Caller Type": "Tipo de Chamada",
|
||||
"Caller Name": "Nome do Chamador",
|
||||
"Client": "Cliente",
|
||||
"Lead": "Conduzir",
|
||||
"Call Type": "Tipo de chamada",
|
||||
"Resolved": "Resolvido",
|
||||
"Billing Contact": "Contato de Cobrança",
|
||||
"Companies": "Empresas",
|
||||
"Company": "Empresas",
|
||||
"Method": "Método",
|
||||
"Path": "Caminho",
|
||||
"Query Parameters": "Parâmetros da consulta",
|
||||
"Request Body": "Corpo da solicitação",
|
||||
"Additional Headers": "Cabeçalhos Adicionais",
|
||||
"Updated After": "Atualizado Depois",
|
||||
"Page Size": "Tamanho da página",
|
||||
"Client Fields": "Campos de Cliente",
|
||||
"Custom Field Fields": "Campos de campo personalizado",
|
||||
"Name": "Nome",
|
||||
"The name of the case (must be unique)": "O nome da instância de processo (deve ser único)",
|
||||
"An identifier for this case (recommended to be unique)": "Um identificador para este caso (recomendado para ser único)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "A data do caso foi criado/aberto (formato ISO-8601: YYYY-MM-DD)",
|
||||
"The stage the case is currently in (must match MyCase system)": "A etapa em que a instância de processo está atualmente (deve corresponder ao sistema MeuCaso)",
|
||||
"The practice area for this case (must match MyCase system)": "A área de prática para este caso (deve corresponder ao sistema MeuCaso)",
|
||||
"A description for the case": "Uma descrição para o caso",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "O estatuto das limitações (formato de data ISO-8601: YYYY-MM-DD)",
|
||||
"The status of the case": "O status da instância de processo",
|
||||
"The outstanding balance of this case": "O saldo pendente deste caso",
|
||||
"The ID of the client or company to assign as the billing contact": "A ID do cliente ou empresa para atribuir como o contato de faturamento",
|
||||
"Comma-separated list of client IDs to associate with the case": "Lista de IDs de clientes separados por vírgula para associar com o caso",
|
||||
"Comma-separated list of company IDs to associate with the case": "Lista de IDs da empresa separados por vírgula para associar com o caso",
|
||||
"ID of staff member to associate with the case": "ID do membro da equipe para associar com o caso",
|
||||
"Is the staff member the lead lawyer for this case?": "O membro da equipe é o advogado principal para este caso?",
|
||||
"Is the staff member the originating lawyer for this case?": "O membro da equipe é o advogado de origem para este caso?",
|
||||
"The name of the case stage": "O nome da etapa da instância de processo",
|
||||
"The name of the company": "O nome da empresa",
|
||||
"Company email address": "Endereço de e-mail da empresa",
|
||||
"Company website URL": "URL da empresa",
|
||||
"Main phone number for the company": "Número de telefone principal para a empresa",
|
||||
"Fax phone number for the company": "Número de telefone Fax para a empresa",
|
||||
"Street address line 1": "Linha de endereço 1",
|
||||
"Street address line 2": "Linha de endereço 2",
|
||||
"ZIP/Postal code": "CEP/Código postal",
|
||||
"Additional information about the company (visible to firm members only)": "Informações adicionais sobre a empresa (visível apenas para membros da empresa)",
|
||||
"Cases to associate with the company": "Casos para associar com a empresa",
|
||||
"Clients to associate with the company": "Clientes para associar com a empresa",
|
||||
"The name of the custom field": "O nome do campo personalizado",
|
||||
"The parent resource type of the custom field": "O tipo de recurso pai do campo personalizado",
|
||||
"The field type of the custom field": "O tipo de campo do campo personalizado",
|
||||
"List of options for the custom field (required if field type is \"list\")": "Lista de opções para o campo personalizado (obrigatório se o tipo de campo é \"lista\")",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Escolha se deseja criar um documento de firma ou associá-lo a um caso específico",
|
||||
"Select the case to associate this document with": "Selecione o caso para associar este documento a",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "O caminho relativo incluindo o nome do documento (por exemplo, pasta1/pasta2/document_nome). Pastas serão criadas automaticamente.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "O nome do arquivo do arquivo físico, incluindo a extensão (por exemplo, arquivo.pdf)",
|
||||
"The description of this document": "A descrição deste documento",
|
||||
"The assigned date of this document": "A data atribuída para este documento",
|
||||
"Staff members to share this document with (only for firm documents)": "Membros da equipe para compartilhar este documento (somente para documentos de firma)",
|
||||
"The name of this event": "O nome deste evento",
|
||||
"The start date and time of this event": "A data de início e hora deste evento",
|
||||
"The end date and time of this event": "A data de término e hora deste evento",
|
||||
"Staff members to associate with this event": "Membros da equipe para associar com este evento",
|
||||
"Staff members who are required to attend (all others are optional)": "Membros da equipe que precisam para frequentar (todos os outros são opcionais)",
|
||||
"Event description": "Descrição do evento",
|
||||
"Is this an all day event?": "Este é um evento do dia inteiro?",
|
||||
"Is this a private event?": "Este é um evento privado?",
|
||||
"The location associated with this event": "A localização associada a este evento",
|
||||
"The case associated with this event": "O caso associado a este evento",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "O nome da atividade para esta despesa (será criado se ela não existir)",
|
||||
"The case to associate with this expense": "O caso de associar com esta despesa",
|
||||
"The entry date of this expense": "A data da entrada deste custo",
|
||||
"Cost of the expense": "Custo do custo",
|
||||
"Number of units": "Número de unidades",
|
||||
"Is this expense billable?": "Isto é um custo facturável?",
|
||||
"Description of the expense": "Descrição da despesa",
|
||||
"The staff member associated with this expense": "O membro da equipe associado a esta despesa",
|
||||
"The first name of the lead": "O primeiro nome do lead",
|
||||
"The last name of the lead": "O sobrenome do Lead",
|
||||
"The email of the lead": "O e-mail do lead",
|
||||
"The middle name or initial of the lead": "O nome do meio ou inicial do lead",
|
||||
"Cell phone number": "Número de telefone celular",
|
||||
"Work phone number": "Número de telefone comercial",
|
||||
"Home phone number": "Número do telefone residencial",
|
||||
"Date of birth": "Data Nascimento",
|
||||
"Drivers license number": "Número de licença de motoristas",
|
||||
"Drivers license state": "Estado da licença dos motoristas",
|
||||
"Additional information (visible to firm members only)": "Informações adicionais (visível apenas para membros da firma)",
|
||||
"The referral source to associate with this lead": "A fonte de referência para associar com este lead",
|
||||
"Existing client or company who referred this lead": "Cliente ou empresa existente que apontou este lead",
|
||||
"The name of the location": "O nome do local",
|
||||
"Choose the type of entity to create the note for": "Escolha o tipo de entidade para criar a nota para",
|
||||
"Select the entity to create the note for": "Selecione a entidade para criar a nota para",
|
||||
"Subject of the note": "Assunto da nota",
|
||||
"The body text of the note": "O corpo do texto da nota",
|
||||
"The date and time of the note": "A data e hora da nota",
|
||||
"The first name of the client": "O primeiro nome do cliente",
|
||||
"The last name of the client": "O sobrenome do cliente",
|
||||
"The email of the client": "O e-mail do cliente",
|
||||
"The middle name of the client": "O nome do meio do cliente",
|
||||
"Fax phone number": "Número de telefone Fax",
|
||||
"The people group to associate with this client": "O grupo de pessoas para associar com este cliente",
|
||||
"Cases to associate with this client": "Casos para associar com este cliente",
|
||||
"The name of the practice area": "O nome da área de prática",
|
||||
"The name of the referral source": "O nome da fonte de referência",
|
||||
"The name of this task": "O nome desta tarefa",
|
||||
"The priority of this task": "A prioridade desta tarefa",
|
||||
"The due date of this task": "Data de vencimento desta tarefa",
|
||||
"Staff members to assign this task to": "Membros da equipe para atribuir esta tarefa a",
|
||||
"Task description": "Descrição da tarefa",
|
||||
"Is this task completed?": "Esta tarefa está completa?",
|
||||
"The case to associate with this task": "O caso para associar com esta tarefa",
|
||||
"The activity name for this time entry": "O nome da atividade para esta entrada de tempo",
|
||||
"The case to associate with this time entry": "O caso de se associar a esta entrada de tempo",
|
||||
"The staff member associated with this time entry": "O membro da equipe associada a esta entrada de tempo",
|
||||
"The entry date of this time entry": "A data de entrada desta entrada de hora",
|
||||
"The rate in dollars": "A taxa em Dólares",
|
||||
"The duration in hours": "A duração em horas",
|
||||
"Description of the time entry": "Descrição da entrada de tempo",
|
||||
"Is this time entry billable?": "Esse tempo é faturável?",
|
||||
"Is this time entry a flat fee?": "Este momento faz parte da taxa fixa?",
|
||||
"When the call happened": "Quando a chamada aconteceu",
|
||||
"The caller's phone number": "Número de telefone do telefone",
|
||||
"The staff member this call is associated with": "O membro da equipe que esta chamada está associada a",
|
||||
"A description of the call": "Uma descrição da chamada",
|
||||
"Choose how to identify the caller": "Escolha como identificar o chamador",
|
||||
"The caller's name": "O nome do chamador",
|
||||
"The existing client": "O cliente existente",
|
||||
"The existing lead": "O Lead existente",
|
||||
"Type of call": "Tipo de chamada",
|
||||
"Should this call show as resolved?": "Esta chamada deve ser realizada como resolvida?",
|
||||
"Select the case to update": "Selecione a instância de processo para atualização",
|
||||
"An identifier for this case": "Um identificador para esta instância de processo",
|
||||
"The date the case was created/opened": "A data do processo foi criado/aberto",
|
||||
"The stage the case is currently in": "A fase em que a instância de processo está atualmente",
|
||||
"The practice area for this case": "A área de prática para este caso",
|
||||
"The statute of limitations date": "Data do Estatuto de Limites",
|
||||
"The client or company to assign as the billing contact": "O cliente ou empresa para atribuir como o contato de faturamento",
|
||||
"Clients to associate with the case": "Clientes para associar com esta instância de processo",
|
||||
"Companies to associate with the case": "Empresas para associar com este caso",
|
||||
"Staff members to associate with the case": "Funcionários membros da equipe para associar com a ocorrência",
|
||||
"Select the lead lawyer for this case": "Selecione o advogado principal para este caso",
|
||||
"Select the originating lawyer for this case": "Selecione o advogado original para este caso",
|
||||
"Select the company to update": "Selecione a empresa para atualizar",
|
||||
"Select the client to update": "Selecione o cliente para atualizar",
|
||||
"HTTP method to use": "Método HTTP para uso",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "Caminho do ponto de extremidade da API (por exemplo, /casos ou /clients/123)",
|
||||
"Query parameters as JSON object": "Consultar parâmetros como objeto JSON",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Solicitar corpo como JSON (para POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "Cabeçalhos adicionais como objeto JSON",
|
||||
"Filter by case status": "Filtrar por status de caso",
|
||||
"Filter cases updated after this date and time": "Filtrar casos atualizados após esta data e hora",
|
||||
"Number of results per page (1-1000)": "Número de resultados por página (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Lista separada por vírgulas de campos de clientes a incluir (por exemplo, id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Lista de campos personalizados separados por vírgula a incluir (por exemplo, id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filtrar chamadas atualizadas após esta data e hora",
|
||||
"Filter case stages updated after this date and time": "Filtrar estágios de caso atualizados após esta data e hora",
|
||||
"Filter by company name": "Filtrar por nome da empresa",
|
||||
"Filter by email address": "Filtrar por endereço de e-mail",
|
||||
"Filter by main phone number": "Filtrar por número de telefone principal",
|
||||
"Filter by fax phone number": "Filtrar por número de telefone fax",
|
||||
"Filter companies updated after this date and time": "Filtrar empresas atualizadas após esta data e hora",
|
||||
"Filter locations updated after this date and time": "Filtrar locais atualizados após esta data e hora",
|
||||
"Filter people groups updated after this date and time": "Filtrar grupos de pessoas atualizados após esta data e hora",
|
||||
"Filter by first name": "Filtrar por primeiro nome",
|
||||
"Filter by last name": "Filtrar por último nome",
|
||||
"Filter by cell phone number": "Filtrar por número de telefone celular",
|
||||
"Filter by work phone number": "Filtrar por número de telefone de trabalho",
|
||||
"Filter by home phone number": "Filtrar por telefone residencial",
|
||||
"Filter clients updated after this date and time": "Clientes de filtros atualizados após esta data e hora",
|
||||
"Filter practice areas updated after this date and time": "Filtrar áreas práticas atualizadas após esta data e hora",
|
||||
"Filter referral sources updated after this date and time": "Filtrar fontes de referência atualizadas após esta data e hora",
|
||||
"Filter by staff status": "Filtrar por status da equipe",
|
||||
"Filter staff updated after this date and time": "Filtrar a equipe atualizada após esta data e hora",
|
||||
"The name of the case to find or create": "O nome da instância de processo para localizar ou criar",
|
||||
"An identifier for this case (used only when creating)": "Um identificador para este caso (usado apenas ao criar)",
|
||||
"The date the case was created/opened (used only when creating)": "A data do caso foi criado/aberto (usado apenas ao criar)",
|
||||
"The stage the case is currently in (used only when creating)": "A etapa em que o caso está atualmente (usado apenas ao criar)",
|
||||
"The practice area for this case (used only when creating)": "A área de prática para este caso (usado apenas ao criar)",
|
||||
"A description for the case (used only when creating)": "Uma descrição para o caso (usado apenas ao criar)",
|
||||
"The statute of limitations date (used only when creating)": "Data do Estatuto de Limitações (usada apenas ao criar)",
|
||||
"The status of the case (used only when creating)": "O status da instância de processo (usado apenas ao criar)",
|
||||
"The outstanding balance of this case (used only when creating)": "O saldo pendente deste caso (usado apenas ao criar)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "O cliente ou empresa para atribuir como contato de faturamento (usado apenas ao criar)",
|
||||
"Clients to associate with the case (used only when creating)": "Clientes para associar com o caso (usado apenas ao criar)",
|
||||
"Companies to associate with the case (used only when creating)": "Empresas que associam com o caso (usadas apenas ao criar)",
|
||||
"Staff members to associate with the case (used only when creating)": "Membros da equipe para associar com o caso (usado apenas ao criar)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Selecione o advogado principal para este caso (usado apenas ao criar)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Selecione o advogado original para este caso (usado apenas ao criar)",
|
||||
"The name of the case stage to find or create": "O nome da etapa da instância de processo para localizar ou criar",
|
||||
"The name of the company to find or create": "O nome da empresa a encontrar ou criar",
|
||||
"Company email address (used only when creating)": "Endereço de e-mail da empresa (usado apenas ao criar)",
|
||||
"Company website URL (used only when creating)": "URL do site da empresa (usado apenas ao criar)",
|
||||
"Main phone number for the company (used only when creating)": "Número de telefone principal para a empresa (usado apenas ao criar)",
|
||||
"Fax phone number for the company (used only when creating)": "Número de telefone Fax para a empresa (usado apenas ao criar)",
|
||||
"Street address line 1 (used only when creating)": "Linha de endereço 1 (usado apenas ao criar)",
|
||||
"Street address line 2 (used only when creating)": "Linha de endereço 2 (usado apenas ao criar)",
|
||||
"City (used only when creating)": "Cidade (usada apenas ao criar)",
|
||||
"State (used only when creating)": "Estado (usado apenas ao criar)",
|
||||
"ZIP/Postal code (used only when creating)": "CEP/Código Postal (usado apenas ao criar)",
|
||||
"Country (used only when creating)": "País (usado apenas ao criar)",
|
||||
"Additional information about the company (used only when creating)": "Informações adicionais sobre a empresa (usado apenas ao criar)",
|
||||
"Cases to associate with the company (used only when creating)": "Casos para associar com a empresa (usado apenas ao criar)",
|
||||
"Clients to associate with the company (used only when creating)": "Clientes para associar com a empresa (usado apenas ao criar)",
|
||||
"The name of the location to find or create": "O nome da localização para localizar ou criar",
|
||||
"The email of the client (used only when creating)": "O e-mail do cliente (usado apenas ao criar)",
|
||||
"The middle name of the client (used only when creating)": "O nome do meio do cliente (usado apenas ao criar)",
|
||||
"Cell phone number (used only when creating)": "Número de telefone celular (usado apenas ao criar)",
|
||||
"Work phone number (used only when creating)": "Número do telefone de trabalho (usado apenas quando criado)",
|
||||
"Home phone number (used only when creating)": "Número de telefone principal (usado apenas quando criado)",
|
||||
"Fax phone number (used only when creating)": "Número de telefone Fax (usado apenas ao criar)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Data de nascimento no formato ISO-8601: YYYY-MM-DD (usado somente ao criar)",
|
||||
"Additional information (used only when creating)": "Informação adicional (usado apenas ao criar)",
|
||||
"The people group to associate (used only when creating)": "O grupo de pessoas para associar (usado apenas ao criar)",
|
||||
"Cases to associate with the client (used only when creating)": "Casos para associar com o cliente (usado apenas ao criar)",
|
||||
"The name of the practice area to find or create": "O nome da área de prática para localizar ou criar",
|
||||
"The name of the referral source to find or create": "O nome da fonte de referência para encontrar ou criar",
|
||||
"Open": "Abertas",
|
||||
"Closed": "Fechado",
|
||||
"Expense": "Despesa",
|
||||
"Time": "Horário",
|
||||
"Time and Expense": "Tempo e Despesa",
|
||||
"Short Text": "Texto Curto",
|
||||
"Long Text": "Texto longo",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "Lista",
|
||||
"Currency": "moeda",
|
||||
"Firm Document": "Documento de firma",
|
||||
"Case Document": "Caso documento",
|
||||
"Low": "baixa",
|
||||
"Medium": "Média",
|
||||
"High": "alta",
|
||||
"Unknown (provide name)": "Desconhecido (fornecer o nome)",
|
||||
"Existing Client": "Cliente Existente",
|
||||
"Existing Lead": "Lead existente",
|
||||
"Incoming": "Recebida",
|
||||
"Outgoing": "Saída",
|
||||
"GET": "OBTER",
|
||||
"POST": "POSTAR",
|
||||
"PUT": "COLOCAR",
|
||||
"PATCH": "COMPRAR",
|
||||
"DELETE": "EXCLUIR",
|
||||
"Active": "Ativo",
|
||||
"Inactive": "Inativo",
|
||||
"Case Added or Updated": "Caso adicionado ou atualizado",
|
||||
"Event Added or Updated": "Evento adicionado ou atualizado",
|
||||
"Person Added or Updated": "Pessoa adicionada ou atualizada",
|
||||
"Company Added or Updated": "Empresa adicionada ou atualizada",
|
||||
"Lead Added or Updated": "Lead adicionado ou atualizado",
|
||||
"Triggers when a case has been added or updated": "Dispara quando um caso for adicionado ou atualizado",
|
||||
"Triggers when an event has been added or updated": "Dispara quando um evento for adicionado ou atualizado",
|
||||
"Triggers when a person has been added or updated": "Dispara quando uma pessoa for adicionada ou atualizada",
|
||||
"Triggers when a company has been added or updated": "Dispara quando uma empresa for adicionada ou atualizada",
|
||||
"Triggers when a lead has been added or updated": "Dispara quando um lead for adicionado ou atualizado"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe authorizing user must have the **\"Manage your firm's preferences, billing, and payment options\"** permission set to **Yes** in MyCase.\n\n### Authorization Flow\nMyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:\n\n**Authorization URL**: `https://auth.mycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase.com/tokens`\n\n### Rate Limits\n- 25 requests per second per client\n- Access tokens are valid for 24 hours\n- Refresh tokens are valid for 2 weeks\n\nFor detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)\n",
|
||||
"Create Case": "Create Case",
|
||||
"Create Case Stage": "Create Case Stage",
|
||||
"Create Company": "Create Company",
|
||||
"Create Custom Field": "Create Custom Field",
|
||||
"Create Document": "Create Document",
|
||||
"Create Event": "Create Event",
|
||||
"Create Expense": "Create Expense",
|
||||
"Create Lead": "Create Lead",
|
||||
"Create Location": "Create Location",
|
||||
"Create Note": "Create Note",
|
||||
"Create Person (Client)": "Create Person (Client)",
|
||||
"Create Practice Area": "Create Practice Area",
|
||||
"Create Referral Source": "Create Referral Source",
|
||||
"Create Task": "Create Task",
|
||||
"Create Time Entry": "Create Time Entry",
|
||||
"Create Call": "Create Call",
|
||||
"Update Case": "Update Case",
|
||||
"Update Company": "Update Company",
|
||||
"Update Person (Client)": "Update Person (Client)",
|
||||
"API Request": "API Request",
|
||||
"Find Case": "Find Case",
|
||||
"Find Call": "Find Call",
|
||||
"Find Case Stage": "Find Case Stage",
|
||||
"Find Company": "Find Company",
|
||||
"Find Location": "Find Location",
|
||||
"Find People Group": "Find People Group",
|
||||
"Find Person (Client)": "Find Person (Client)",
|
||||
"Find Practice Area": "Find Practice Area",
|
||||
"Find Referral Source": "Find Referral Source",
|
||||
"Find Staff": "Find Staff",
|
||||
"Find or Create Case": "Find or Create Case",
|
||||
"Find or Create Case Stage": "Find or Create Case Stage",
|
||||
"Find or Create Company": "Find or Create Company",
|
||||
"Find or Create Location": "Find or Create Location",
|
||||
"Find or Create Person (Client)": "Find or Create Person (Client)",
|
||||
"Find or Create Practice Area": "Find or Create Practice Area",
|
||||
"Find or Create Referral Source": "Find or Create Referral Source",
|
||||
"Creates a new case in MyCase": "Creates a new case in MyCase",
|
||||
"Creates a new case stage in MyCase": "Creates a new case stage in MyCase",
|
||||
"Creates a new company in MyCase": "Creates a new company in MyCase",
|
||||
"Creates a new custom field in MyCase": "Creates a new custom field in MyCase",
|
||||
"Creates a new document in MyCase": "Creates a new document in MyCase",
|
||||
"Creates a new event in MyCase": "Creates a new event in MyCase",
|
||||
"Creates a new expense in MyCase": "Creates a new expense in MyCase",
|
||||
"Creates a new lead in MyCase": "Creates a new lead in MyCase",
|
||||
"Creates a new location in MyCase": "Creates a new location in MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Creates a new note for a case, client, or company in MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Creates a new individual client (person) in MyCase",
|
||||
"Creates a new practice area in MyCase": "Creates a new practice area in MyCase",
|
||||
"Creates a new referral source in MyCase": "Creates a new referral source in MyCase",
|
||||
"Creates a new task in MyCase": "Creates a new task in MyCase",
|
||||
"Creates a new time entry in MyCase": "Creates a new time entry in MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Creates a new call in the call log in MyCase",
|
||||
"Updates an existing case in MyCase": "Updates an existing case in MyCase",
|
||||
"Updates an existing company in MyCase": "Updates an existing company in MyCase",
|
||||
"Updates an existing individual client (person) in MyCase": "Updates an existing individual client (person) in MyCase",
|
||||
"Makes a raw HTTP request to the MyCase API": "Makes a raw HTTP request to the MyCase API",
|
||||
"Searches for cases with optional filters": "Searches for cases with optional filters",
|
||||
"Searches for calls with optional filters": "Searches for calls with optional filters",
|
||||
"Searches for case stages with optional filters": "Searches for case stages with optional filters",
|
||||
"Searches for companies with optional filters": "Searches for companies with optional filters",
|
||||
"Searches for locations with optional filters": "Searches for locations with optional filters",
|
||||
"Searches for people groups with optional filters": "Searches for people groups with optional filters",
|
||||
"Searches for clients (people) with optional filters": "Searches for clients (people) with optional filters",
|
||||
"Searches for practice areas with optional filters": "Searches for practice areas with optional filters",
|
||||
"Searches for referral sources with optional filters": "Searches for referral sources with optional filters",
|
||||
"Searches for staff members with optional filters": "Searches for staff members with optional filters",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Finds a case by name or creates a new one if it does not exist",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Finds a case stage by name or creates a new one if it does not exist",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Finds a company by name or creates a new one if it does not exist",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Finds a location by name or creates a new one if it does not exist",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Finds a person by first and last name or creates a new one if not found",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Finds a practice area by name or creates a new one if it does not exist",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Finds a referral source by name or creates a new one if it does not exist",
|
||||
"Case Name": "Case Name",
|
||||
"Case Number": "Case Number",
|
||||
"Opened Date": "Opened Date",
|
||||
"Case Stage": "Case Stage",
|
||||
"Practice Area": "Practice Area",
|
||||
"Description": "Description",
|
||||
"Statute of Limitations Date": "Statute of Limitations Date",
|
||||
"Status": "Status",
|
||||
"Outstanding Balance": "Outstanding Balance",
|
||||
"Billing Contact ID": "Billing Contact ID",
|
||||
"Client IDs": "Client IDs",
|
||||
"Company IDs": "Company IDs",
|
||||
"Staff ID": "Staff ID",
|
||||
"Lead Lawyer": "Lead Lawyer",
|
||||
"Originating Lawyer": "Originating Lawyer",
|
||||
"Case Stage Name": "Case Stage Name",
|
||||
"Company Name": "Company Name",
|
||||
"Email": "Email",
|
||||
"Website": "Website",
|
||||
"Main Phone Number": "Main Phone Number",
|
||||
"Fax Phone Number": "Fax Phone Number",
|
||||
"Address Line 1": "Address Line 1",
|
||||
"Address Line 2": "Address Line 2",
|
||||
"City": "City",
|
||||
"State": "State",
|
||||
"ZIP Code": "ZIP Code",
|
||||
"Country": "Country",
|
||||
"Notes": "Notes",
|
||||
"Cases": "Cases",
|
||||
"Clients": "Clients",
|
||||
"Field Name": "Field Name",
|
||||
"Parent Type": "Parent Type",
|
||||
"Field Type": "Field Type",
|
||||
"List Options": "List Options",
|
||||
"Document Type": "Document Type",
|
||||
"Case": "Case",
|
||||
"Document Path": "Document Path",
|
||||
"Filename": "Filename",
|
||||
"Assigned Date": "Assigned Date",
|
||||
"Staff": "Staff",
|
||||
"Event Name": "Event Name",
|
||||
"Start Date/Time": "Start Date/Time",
|
||||
"End Date/Time": "End Date/Time",
|
||||
"Required Staff": "Required Staff",
|
||||
"All Day Event": "All Day Event",
|
||||
"Private Event": "Private Event",
|
||||
"Location": "Location",
|
||||
"Activity Name": "Activity Name",
|
||||
"Entry Date": "Entry Date",
|
||||
"Cost": "Cost",
|
||||
"Units": "Units",
|
||||
"Billable": "Billable",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "Last Name",
|
||||
"Middle Initial": "Middle Initial",
|
||||
"Cell Phone Number": "Cell Phone Number",
|
||||
"Work Phone Number": "Work Phone Number",
|
||||
"Home Phone Number": "Home Phone Number",
|
||||
"Birthdate": "Birthdate",
|
||||
"Drivers License Number": "Drivers License Number",
|
||||
"Drivers License State": "Drivers License State",
|
||||
"Lead Details": "Lead Details",
|
||||
"Referral Source": "Referral Source",
|
||||
"Referred By": "Referred By",
|
||||
"Location Name": "Location Name",
|
||||
"Entity Type": "Entity Type",
|
||||
"Entity": "Entity",
|
||||
"Subject": "Subject",
|
||||
"Note": "Note",
|
||||
"Date": "Date",
|
||||
"Middle Name": "Middle Name",
|
||||
"People Group": "People Group",
|
||||
"Practice Area Name": "Practice Area Name",
|
||||
"Referral Source Name": "Referral Source Name",
|
||||
"Task Name": "Task Name",
|
||||
"Priority": "Priority",
|
||||
"Due Date": "Due Date",
|
||||
"Completed": "Completed",
|
||||
"Rate": "Rate",
|
||||
"Hours": "Hours",
|
||||
"Flat Fee": "Flat Fee",
|
||||
"Called At": "Called At",
|
||||
"Caller Phone Number": "Caller Phone Number",
|
||||
"Call For": "Call For",
|
||||
"Message": "Message",
|
||||
"Caller Type": "Caller Type",
|
||||
"Caller Name": "Caller Name",
|
||||
"Client": "Client",
|
||||
"Lead": "Lead",
|
||||
"Call Type": "Call Type",
|
||||
"Resolved": "Resolved",
|
||||
"Billing Contact": "Billing Contact",
|
||||
"Companies": "Companies",
|
||||
"Company": "Company",
|
||||
"Method": "Method",
|
||||
"Path": "Path",
|
||||
"Query Parameters": "Query Parameters",
|
||||
"Request Body": "Request Body",
|
||||
"Additional Headers": "Additional Headers",
|
||||
"Updated After": "Updated After",
|
||||
"Page Size": "Page Size",
|
||||
"Client Fields": "Client Fields",
|
||||
"Custom Field Fields": "Custom Field Fields",
|
||||
"Name": "Name",
|
||||
"The name of the case (must be unique)": "The name of the case (must be unique)",
|
||||
"An identifier for this case (recommended to be unique)": "An identifier for this case (recommended to be unique)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)",
|
||||
"The stage the case is currently in (must match MyCase system)": "The stage the case is currently in (must match MyCase system)",
|
||||
"The practice area for this case (must match MyCase system)": "The practice area for this case (must match MyCase system)",
|
||||
"A description for the case": "A description for the case",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)",
|
||||
"The status of the case": "The status of the case",
|
||||
"The outstanding balance of this case": "The outstanding balance of this case",
|
||||
"The ID of the client or company to assign as the billing contact": "The ID of the client or company to assign as the billing contact",
|
||||
"Comma-separated list of client IDs to associate with the case": "Comma-separated list of client IDs to associate with the case",
|
||||
"Comma-separated list of company IDs to associate with the case": "Comma-separated list of company IDs to associate with the case",
|
||||
"ID of staff member to associate with the case": "ID of staff member to associate with the case",
|
||||
"Is the staff member the lead lawyer for this case?": "Is the staff member the lead lawyer for this case?",
|
||||
"Is the staff member the originating lawyer for this case?": "Is the staff member the originating lawyer for this case?",
|
||||
"The name of the case stage": "The name of the case stage",
|
||||
"The name of the company": "The name of the company",
|
||||
"Company email address": "Company email address",
|
||||
"Company website URL": "Company website URL",
|
||||
"Main phone number for the company": "Main phone number for the company",
|
||||
"Fax phone number for the company": "Fax phone number for the company",
|
||||
"Street address line 1": "Street address line 1",
|
||||
"Street address line 2": "Street address line 2",
|
||||
"ZIP/Postal code": "ZIP/Postal code",
|
||||
"Additional information about the company (visible to firm members only)": "Additional information about the company (visible to firm members only)",
|
||||
"Cases to associate with the company": "Cases to associate with the company",
|
||||
"Clients to associate with the company": "Clients to associate with the company",
|
||||
"The name of the custom field": "The name of the custom field",
|
||||
"The parent resource type of the custom field": "The parent resource type of the custom field",
|
||||
"The field type of the custom field": "The field type of the custom field",
|
||||
"List of options for the custom field (required if field type is \"list\")": "List of options for the custom field (required if field type is \"list\")",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Choose whether to create a firm document or associate it with a specific case",
|
||||
"Select the case to associate this document with": "Select the case to associate this document with",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "The filename of the physical file including extension (e.g., file.pdf)",
|
||||
"The description of this document": "The description of this document",
|
||||
"The assigned date of this document": "The assigned date of this document",
|
||||
"Staff members to share this document with (only for firm documents)": "Staff members to share this document with (only for firm documents)",
|
||||
"The name of this event": "The name of this event",
|
||||
"The start date and time of this event": "The start date and time of this event",
|
||||
"The end date and time of this event": "The end date and time of this event",
|
||||
"Staff members to associate with this event": "Staff members to associate with this event",
|
||||
"Staff members who are required to attend (all others are optional)": "Staff members who are required to attend (all others are optional)",
|
||||
"Event description": "Event description",
|
||||
"Is this an all day event?": "Is this an all day event?",
|
||||
"Is this a private event?": "Is this a private event?",
|
||||
"The location associated with this event": "The location associated with this event",
|
||||
"The case associated with this event": "The case associated with this event",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "The activity name for this expense (will be created if it doesn't exist)",
|
||||
"The case to associate with this expense": "The case to associate with this expense",
|
||||
"The entry date of this expense": "The entry date of this expense",
|
||||
"Cost of the expense": "Cost of the expense",
|
||||
"Number of units": "Number of units",
|
||||
"Is this expense billable?": "Is this expense billable?",
|
||||
"Description of the expense": "Description of the expense",
|
||||
"The staff member associated with this expense": "The staff member associated with this expense",
|
||||
"The first name of the lead": "The first name of the lead",
|
||||
"The last name of the lead": "The last name of the lead",
|
||||
"The email of the lead": "The email of the lead",
|
||||
"The middle name or initial of the lead": "The middle name or initial of the lead",
|
||||
"Cell phone number": "Cell phone number",
|
||||
"Work phone number": "Work phone number",
|
||||
"Home phone number": "Home phone number",
|
||||
"Date of birth": "Date of birth",
|
||||
"Drivers license number": "Drivers license number",
|
||||
"Drivers license state": "Drivers license state",
|
||||
"Additional information (visible to firm members only)": "Additional information (visible to firm members only)",
|
||||
"The referral source to associate with this lead": "The referral source to associate with this lead",
|
||||
"Existing client or company who referred this lead": "Existing client or company who referred this lead",
|
||||
"The name of the location": "The name of the location",
|
||||
"Choose the type of entity to create the note for": "Choose the type of entity to create the note for",
|
||||
"Select the entity to create the note for": "Select the entity to create the note for",
|
||||
"Subject of the note": "Subject of the note",
|
||||
"The body text of the note": "The body text of the note",
|
||||
"The date and time of the note": "The date and time of the note",
|
||||
"The first name of the client": "The first name of the client",
|
||||
"The last name of the client": "The last name of the client",
|
||||
"The email of the client": "The email of the client",
|
||||
"The middle name of the client": "The middle name of the client",
|
||||
"Fax phone number": "Fax phone number",
|
||||
"The people group to associate with this client": "The people group to associate with this client",
|
||||
"Cases to associate with this client": "Cases to associate with this client",
|
||||
"The name of the practice area": "The name of the practice area",
|
||||
"The name of the referral source": "The name of the referral source",
|
||||
"The name of this task": "The name of this task",
|
||||
"The priority of this task": "The priority of this task",
|
||||
"The due date of this task": "The due date of this task",
|
||||
"Staff members to assign this task to": "Staff members to assign this task to",
|
||||
"Task description": "Task description",
|
||||
"Is this task completed?": "Is this task completed?",
|
||||
"The case to associate with this task": "The case to associate with this task",
|
||||
"The activity name for this time entry": "The activity name for this time entry",
|
||||
"The case to associate with this time entry": "The case to associate with this time entry",
|
||||
"The staff member associated with this time entry": "The staff member associated with this time entry",
|
||||
"The entry date of this time entry": "The entry date of this time entry",
|
||||
"The rate in dollars": "The rate in dollars",
|
||||
"The duration in hours": "The duration in hours",
|
||||
"Description of the time entry": "Description of the time entry",
|
||||
"Is this time entry billable?": "Is this time entry billable?",
|
||||
"Is this time entry a flat fee?": "Is this time entry a flat fee?",
|
||||
"When the call happened": "When the call happened",
|
||||
"The caller's phone number": "The caller's phone number",
|
||||
"The staff member this call is associated with": "The staff member this call is associated with",
|
||||
"A description of the call": "A description of the call",
|
||||
"Choose how to identify the caller": "Choose how to identify the caller",
|
||||
"The caller's name": "The caller's name",
|
||||
"The existing client": "The existing client",
|
||||
"The existing lead": "The existing lead",
|
||||
"Type of call": "Type of call",
|
||||
"Should this call show as resolved?": "Should this call show as resolved?",
|
||||
"Select the case to update": "Select the case to update",
|
||||
"An identifier for this case": "An identifier for this case",
|
||||
"The date the case was created/opened": "The date the case was created/opened",
|
||||
"The stage the case is currently in": "The stage the case is currently in",
|
||||
"The practice area for this case": "The practice area for this case",
|
||||
"The statute of limitations date": "The statute of limitations date",
|
||||
"The client or company to assign as the billing contact": "The client or company to assign as the billing contact",
|
||||
"Clients to associate with the case": "Clients to associate with the case",
|
||||
"Companies to associate with the case": "Companies to associate with the case",
|
||||
"Staff members to associate with the case": "Staff members to associate with the case",
|
||||
"Select the lead lawyer for this case": "Select the lead lawyer for this case",
|
||||
"Select the originating lawyer for this case": "Select the originating lawyer for this case",
|
||||
"Select the company to update": "Select the company to update",
|
||||
"Select the client to update": "Select the client to update",
|
||||
"HTTP method to use": "HTTP method to use",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "API endpoint path (e.g., /cases or /clients/123)",
|
||||
"Query parameters as JSON object": "Query parameters as JSON object",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Request body as JSON (for POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "Additional headers as JSON object",
|
||||
"Filter by case status": "Filter by case status",
|
||||
"Filter cases updated after this date and time": "Filter cases updated after this date and time",
|
||||
"Number of results per page (1-1000)": "Number of results per page (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Comma-separated list of client fields to include (e.g., id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Comma-separated list of custom field fields to include (e.g., id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filter calls updated after this date and time",
|
||||
"Filter case stages updated after this date and time": "Filter case stages updated after this date and time",
|
||||
"Filter by company name": "Filter by company name",
|
||||
"Filter by email address": "Filter by email address",
|
||||
"Filter by main phone number": "Filter by main phone number",
|
||||
"Filter by fax phone number": "Filter by fax phone number",
|
||||
"Filter companies updated after this date and time": "Filter companies updated after this date and time",
|
||||
"Filter locations updated after this date and time": "Filter locations updated after this date and time",
|
||||
"Filter people groups updated after this date and time": "Filter people groups updated after this date and time",
|
||||
"Filter by first name": "Filter by first name",
|
||||
"Filter by last name": "Filter by last name",
|
||||
"Filter by cell phone number": "Filter by cell phone number",
|
||||
"Filter by work phone number": "Filter by work phone number",
|
||||
"Filter by home phone number": "Filter by home phone number",
|
||||
"Filter clients updated after this date and time": "Filter clients updated after this date and time",
|
||||
"Filter practice areas updated after this date and time": "Filter practice areas updated after this date and time",
|
||||
"Filter referral sources updated after this date and time": "Filter referral sources updated after this date and time",
|
||||
"Filter by staff status": "Filter by staff status",
|
||||
"Filter staff updated after this date and time": "Filter staff updated after this date and time",
|
||||
"The name of the case to find or create": "The name of the case to find or create",
|
||||
"An identifier for this case (used only when creating)": "An identifier for this case (used only when creating)",
|
||||
"The date the case was created/opened (used only when creating)": "The date the case was created/opened (used only when creating)",
|
||||
"The stage the case is currently in (used only when creating)": "The stage the case is currently in (used only when creating)",
|
||||
"The practice area for this case (used only when creating)": "The practice area for this case (used only when creating)",
|
||||
"A description for the case (used only when creating)": "A description for the case (used only when creating)",
|
||||
"The statute of limitations date (used only when creating)": "The statute of limitations date (used only when creating)",
|
||||
"The status of the case (used only when creating)": "The status of the case (used only when creating)",
|
||||
"The outstanding balance of this case (used only when creating)": "The outstanding balance of this case (used only when creating)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "The client or company to assign as the billing contact (used only when creating)",
|
||||
"Clients to associate with the case (used only when creating)": "Clients to associate with the case (used only when creating)",
|
||||
"Companies to associate with the case (used only when creating)": "Companies to associate with the case (used only when creating)",
|
||||
"Staff members to associate with the case (used only when creating)": "Staff members to associate with the case (used only when creating)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Select the lead lawyer for this case (used only when creating)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Select the originating lawyer for this case (used only when creating)",
|
||||
"The name of the case stage to find or create": "The name of the case stage to find or create",
|
||||
"The name of the company to find or create": "The name of the company to find or create",
|
||||
"Company email address (used only when creating)": "Company email address (used only when creating)",
|
||||
"Company website URL (used only when creating)": "Company website URL (used only when creating)",
|
||||
"Main phone number for the company (used only when creating)": "Main phone number for the company (used only when creating)",
|
||||
"Fax phone number for the company (used only when creating)": "Fax phone number for the company (used only when creating)",
|
||||
"Street address line 1 (used only when creating)": "Street address line 1 (used only when creating)",
|
||||
"Street address line 2 (used only when creating)": "Street address line 2 (used only when creating)",
|
||||
"City (used only when creating)": "City (used only when creating)",
|
||||
"State (used only when creating)": "State (used only when creating)",
|
||||
"ZIP/Postal code (used only when creating)": "ZIP/Postal code (used only when creating)",
|
||||
"Country (used only when creating)": "Country (used only when creating)",
|
||||
"Additional information about the company (used only when creating)": "Additional information about the company (used only when creating)",
|
||||
"Cases to associate with the company (used only when creating)": "Cases to associate with the company (used only when creating)",
|
||||
"Clients to associate with the company (used only when creating)": "Clients to associate with the company (used only when creating)",
|
||||
"The name of the location to find or create": "The name of the location to find or create",
|
||||
"The email of the client (used only when creating)": "The email of the client (used only when creating)",
|
||||
"The middle name of the client (used only when creating)": "The middle name of the client (used only when creating)",
|
||||
"Cell phone number (used only when creating)": "Cell phone number (used only when creating)",
|
||||
"Work phone number (used only when creating)": "Work phone number (used only when creating)",
|
||||
"Home phone number (used only when creating)": "Home phone number (used only when creating)",
|
||||
"Fax phone number (used only when creating)": "Fax phone number (used only when creating)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)",
|
||||
"Additional information (used only when creating)": "Additional information (used only when creating)",
|
||||
"The people group to associate (used only when creating)": "The people group to associate (used only when creating)",
|
||||
"Cases to associate with the client (used only when creating)": "Cases to associate with the client (used only when creating)",
|
||||
"The name of the practice area to find or create": "The name of the practice area to find or create",
|
||||
"The name of the referral source to find or create": "The name of the referral source to find or create",
|
||||
"Open": "Open",
|
||||
"Closed": "Closed",
|
||||
"Expense": "Expense",
|
||||
"Time": "Time",
|
||||
"Time and Expense": "Time and Expense",
|
||||
"Short Text": "Short Text",
|
||||
"Long Text": "Long Text",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "List",
|
||||
"Currency": "Currency",
|
||||
"Firm Document": "Firm Document",
|
||||
"Case Document": "Case Document",
|
||||
"Low": "Low",
|
||||
"Medium": "Medium",
|
||||
"High": "High",
|
||||
"Unknown (provide name)": "Unknown (provide name)",
|
||||
"Existing Client": "Existing Client",
|
||||
"Existing Lead": "Existing Lead",
|
||||
"Incoming": "Incoming",
|
||||
"Outgoing": "Outgoing",
|
||||
"GET": "GET",
|
||||
"POST": "POST",
|
||||
"PUT": "PUT",
|
||||
"PATCH": "PATCH",
|
||||
"DELETE": "DELETE",
|
||||
"Active": "Active",
|
||||
"Inactive": "Inactive",
|
||||
"Case Added or Updated": "Case Added or Updated",
|
||||
"Event Added or Updated": "Event Added or Updated",
|
||||
"Person Added or Updated": "Person Added or Updated",
|
||||
"Company Added or Updated": "Company Added or Updated",
|
||||
"Lead Added or Updated": "Lead Added or Updated",
|
||||
"Triggers when a case has been added or updated": "Triggers when a case has been added or updated",
|
||||
"Triggers when an event has been added or updated": "Triggers when an event has been added or updated",
|
||||
"Triggers when a person has been added or updated": "Triggers when a person has been added or updated",
|
||||
"Triggers when a company has been added or updated": "Triggers when a company has been added or updated",
|
||||
"Triggers when a lead has been added or updated": "Triggers when a lead has been added or updated"
|
||||
}
|
||||
@@ -0,0 +1,416 @@
|
||||
{
|
||||
"Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.": "Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.",
|
||||
"\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe au": "\n## MyCase OAuth 2.0 Setup\n\n### Obtaining Client Credentials\n1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials\n2. Provide your application details and request a client ID and client secret\n3. MyCase support will provide you with:\n - **Client ID**: Your OAuth Client ID\n - **Client Secret**: Your OAuth Client secret\n - **Redirect URI**: A pre-configured redirect URI for your application\n\n### Required Permissions\nThe authorizing user must have the **\"Manage your firm's preferences, billing, and payment options\"** permission set to **Yes** in MyCase.\n\n### Authorization Flow\nMyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:\n\n**Authorization URL**: `https://auth.mycase.com/login_sessions/new` \n**Token URL**: `https://auth.mycase.com/tokens`\n\n### Rate Limits\n- 25 requests per second per client\n- Access tokens are valid for 24 hours\n- Refresh tokens are valid for 2 weeks\n\nFor detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)\n",
|
||||
"Create Case": "Create Case",
|
||||
"Create Case Stage": "Create Case Stage",
|
||||
"Create Company": "Create Company",
|
||||
"Create Custom Field": "Create Custom Field",
|
||||
"Create Document": "Create Document",
|
||||
"Create Event": "Create Event",
|
||||
"Create Expense": "Create Expense",
|
||||
"Create Lead": "Create Lead",
|
||||
"Create Location": "Create Location",
|
||||
"Create Note": "Create Note",
|
||||
"Create Person (Client)": "Create Person (Client)",
|
||||
"Create Practice Area": "Create Practice Area",
|
||||
"Create Referral Source": "Create Referral Source",
|
||||
"Create Task": "Create Task",
|
||||
"Create Time Entry": "Create Time Entry",
|
||||
"Create Call": "Create Call",
|
||||
"Update Case": "Update Case",
|
||||
"Update Company": "Update Company",
|
||||
"Update Person (Client)": "Update Person (Client)",
|
||||
"API Request": "API Request",
|
||||
"Find Case": "Find Case",
|
||||
"Find Call": "Find Call",
|
||||
"Find Case Stage": "Find Case Stage",
|
||||
"Find Company": "Find Company",
|
||||
"Find Location": "Find Location",
|
||||
"Find People Group": "Find People Group",
|
||||
"Find Person (Client)": "Find Person (Client)",
|
||||
"Find Practice Area": "Find Practice Area",
|
||||
"Find Referral Source": "Find Referral Source",
|
||||
"Find Staff": "Find Staff",
|
||||
"Find or Create Case": "Find or Create Case",
|
||||
"Find or Create Case Stage": "Find or Create Case Stage",
|
||||
"Find or Create Company": "Find or Create Company",
|
||||
"Find or Create Location": "Find or Create Location",
|
||||
"Find or Create Person (Client)": "Find or Create Person (Client)",
|
||||
"Find or Create Practice Area": "Find or Create Practice Area",
|
||||
"Find or Create Referral Source": "Find or Create Referral Source",
|
||||
"Creates a new case in MyCase": "Creates a new case in MyCase",
|
||||
"Creates a new case stage in MyCase": "Creates a new case stage in MyCase",
|
||||
"Creates a new company in MyCase": "Creates a new company in MyCase",
|
||||
"Creates a new custom field in MyCase": "Creates a new custom field in MyCase",
|
||||
"Creates a new document in MyCase": "Creates a new document in MyCase",
|
||||
"Creates a new event in MyCase": "Creates a new event in MyCase",
|
||||
"Creates a new expense in MyCase": "Creates a new expense in MyCase",
|
||||
"Creates a new lead in MyCase": "Creates a new lead in MyCase",
|
||||
"Creates a new location in MyCase": "Creates a new location in MyCase",
|
||||
"Creates a new note for a case, client, or company in MyCase": "Creates a new note for a case, client, or company in MyCase",
|
||||
"Creates a new individual client (person) in MyCase": "Creates a new individual client (person) in MyCase",
|
||||
"Creates a new practice area in MyCase": "Creates a new practice area in MyCase",
|
||||
"Creates a new referral source in MyCase": "Creates a new referral source in MyCase",
|
||||
"Creates a new task in MyCase": "Creates a new task in MyCase",
|
||||
"Creates a new time entry in MyCase": "Creates a new time entry in MyCase",
|
||||
"Creates a new call in the call log in MyCase": "Creates a new call in the call log in MyCase",
|
||||
"Updates an existing case in MyCase": "Updates an existing case in MyCase",
|
||||
"Updates an existing company in MyCase": "Updates an existing company in MyCase",
|
||||
"Updates an existing individual client (person) in MyCase": "Updates an existing individual client (person) in MyCase",
|
||||
"Makes a raw HTTP request to the MyCase API": "Makes a raw HTTP request to the MyCase API",
|
||||
"Searches for cases with optional filters": "Searches for cases with optional filters",
|
||||
"Searches for calls with optional filters": "Searches for calls with optional filters",
|
||||
"Searches for case stages with optional filters": "Searches for case stages with optional filters",
|
||||
"Searches for companies with optional filters": "Searches for companies with optional filters",
|
||||
"Searches for locations with optional filters": "Searches for locations with optional filters",
|
||||
"Searches for people groups with optional filters": "Searches for people groups with optional filters",
|
||||
"Searches for clients (people) with optional filters": "Searches for clients (people) with optional filters",
|
||||
"Searches for practice areas with optional filters": "Searches for practice areas with optional filters",
|
||||
"Searches for referral sources with optional filters": "Searches for referral sources with optional filters",
|
||||
"Searches for staff members with optional filters": "Searches for staff members with optional filters",
|
||||
"Finds a case by name or creates a new one if it does not exist": "Finds a case by name or creates a new one if it does not exist",
|
||||
"Finds a case stage by name or creates a new one if it does not exist": "Finds a case stage by name or creates a new one if it does not exist",
|
||||
"Finds a company by name or creates a new one if it does not exist": "Finds a company by name or creates a new one if it does not exist",
|
||||
"Finds a location by name or creates a new one if it does not exist": "Finds a location by name or creates a new one if it does not exist",
|
||||
"Finds a person by first and last name or creates a new one if not found": "Finds a person by first and last name or creates a new one if not found",
|
||||
"Finds a practice area by name or creates a new one if it does not exist": "Finds a practice area by name or creates a new one if it does not exist",
|
||||
"Finds a referral source by name or creates a new one if it does not exist": "Finds a referral source by name or creates a new one if it does not exist",
|
||||
"Case Name": "Case Name",
|
||||
"Case Number": "Case Number",
|
||||
"Opened Date": "Opened Date",
|
||||
"Case Stage": "Case Stage",
|
||||
"Practice Area": "Practice Area",
|
||||
"Description": "描述",
|
||||
"Statute of Limitations Date": "Statute of Limitations Date",
|
||||
"Status": "状态",
|
||||
"Outstanding Balance": "Outstanding Balance",
|
||||
"Billing Contact ID": "Billing Contact ID",
|
||||
"Client IDs": "Client IDs",
|
||||
"Company IDs": "Company IDs",
|
||||
"Staff ID": "Staff ID",
|
||||
"Lead Lawyer": "Lead Lawyer",
|
||||
"Originating Lawyer": "Originating Lawyer",
|
||||
"Case Stage Name": "Case Stage Name",
|
||||
"Company Name": "Company Name",
|
||||
"Email": "电子邮件地址",
|
||||
"Website": "Website",
|
||||
"Main Phone Number": "Main Phone Number",
|
||||
"Fax Phone Number": "Fax Phone Number",
|
||||
"Address Line 1": "Address Line 1",
|
||||
"Address Line 2": "Address Line 2",
|
||||
"City": "City",
|
||||
"State": "State",
|
||||
"ZIP Code": "ZIP Code",
|
||||
"Country": "Country",
|
||||
"Notes": "Notes",
|
||||
"Cases": "Cases",
|
||||
"Clients": "Clients",
|
||||
"Field Name": "Field Name",
|
||||
"Parent Type": "Parent Type",
|
||||
"Field Type": "Field Type",
|
||||
"List Options": "List Options",
|
||||
"Document Type": "Document Type",
|
||||
"Case": "Case",
|
||||
"Document Path": "Document Path",
|
||||
"Filename": "Filename",
|
||||
"Assigned Date": "Assigned Date",
|
||||
"Staff": "Staff",
|
||||
"Event Name": "Event Name",
|
||||
"Start Date/Time": "Start Date/Time",
|
||||
"End Date/Time": "End Date/Time",
|
||||
"Required Staff": "Required Staff",
|
||||
"All Day Event": "All Day Event",
|
||||
"Private Event": "Private Event",
|
||||
"Location": "Location",
|
||||
"Activity Name": "Activity Name",
|
||||
"Entry Date": "Entry Date",
|
||||
"Cost": "Cost",
|
||||
"Units": "Units",
|
||||
"Billable": "Billable",
|
||||
"First Name": "First Name",
|
||||
"Last Name": "名字",
|
||||
"Middle Initial": "Middle Initial",
|
||||
"Cell Phone Number": "Cell Phone Number",
|
||||
"Work Phone Number": "Work Phone Number",
|
||||
"Home Phone Number": "Home Phone Number",
|
||||
"Birthdate": "Birthdate",
|
||||
"Drivers License Number": "Drivers License Number",
|
||||
"Drivers License State": "Drivers License State",
|
||||
"Lead Details": "Lead Details",
|
||||
"Referral Source": "Referral Source",
|
||||
"Referred By": "Referred By",
|
||||
"Location Name": "Location Name",
|
||||
"Entity Type": "Entity Type",
|
||||
"Entity": "Entity",
|
||||
"Subject": "Subject",
|
||||
"Note": "说明",
|
||||
"Date": "Date",
|
||||
"Middle Name": "Middle Name",
|
||||
"People Group": "People Group",
|
||||
"Practice Area Name": "Practice Area Name",
|
||||
"Referral Source Name": "Referral Source Name",
|
||||
"Task Name": "Task Name",
|
||||
"Priority": "Priority",
|
||||
"Due Date": "Due Date",
|
||||
"Completed": "Completed",
|
||||
"Rate": "Rate",
|
||||
"Hours": "Hours",
|
||||
"Flat Fee": "Flat Fee",
|
||||
"Called At": "Called At",
|
||||
"Caller Phone Number": "Caller Phone Number",
|
||||
"Call For": "Call For",
|
||||
"Message": "Message",
|
||||
"Caller Type": "Caller Type",
|
||||
"Caller Name": "Caller Name",
|
||||
"Client": "Client",
|
||||
"Lead": "Lead",
|
||||
"Call Type": "Call Type",
|
||||
"Resolved": "已解决",
|
||||
"Billing Contact": "Billing Contact",
|
||||
"Companies": "Companies",
|
||||
"Company": "Company",
|
||||
"Method": "方法",
|
||||
"Path": "Path",
|
||||
"Query Parameters": "查询参数",
|
||||
"Request Body": "Request Body",
|
||||
"Additional Headers": "Additional Headers",
|
||||
"Updated After": "Updated After",
|
||||
"Page Size": "Page Size",
|
||||
"Client Fields": "Client Fields",
|
||||
"Custom Field Fields": "Custom Field Fields",
|
||||
"Name": "名称",
|
||||
"The name of the case (must be unique)": "The name of the case (must be unique)",
|
||||
"An identifier for this case (recommended to be unique)": "An identifier for this case (recommended to be unique)",
|
||||
"The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)": "The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)",
|
||||
"The stage the case is currently in (must match MyCase system)": "The stage the case is currently in (must match MyCase system)",
|
||||
"The practice area for this case (must match MyCase system)": "The practice area for this case (must match MyCase system)",
|
||||
"A description for the case": "A description for the case",
|
||||
"The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)": "The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)",
|
||||
"The status of the case": "The status of the case",
|
||||
"The outstanding balance of this case": "The outstanding balance of this case",
|
||||
"The ID of the client or company to assign as the billing contact": "The ID of the client or company to assign as the billing contact",
|
||||
"Comma-separated list of client IDs to associate with the case": "Comma-separated list of client IDs to associate with the case",
|
||||
"Comma-separated list of company IDs to associate with the case": "Comma-separated list of company IDs to associate with the case",
|
||||
"ID of staff member to associate with the case": "ID of staff member to associate with the case",
|
||||
"Is the staff member the lead lawyer for this case?": "Is the staff member the lead lawyer for this case?",
|
||||
"Is the staff member the originating lawyer for this case?": "Is the staff member the originating lawyer for this case?",
|
||||
"The name of the case stage": "The name of the case stage",
|
||||
"The name of the company": "The name of the company",
|
||||
"Company email address": "Company email address",
|
||||
"Company website URL": "Company website URL",
|
||||
"Main phone number for the company": "Main phone number for the company",
|
||||
"Fax phone number for the company": "Fax phone number for the company",
|
||||
"Street address line 1": "Street address line 1",
|
||||
"Street address line 2": "Street address line 2",
|
||||
"ZIP/Postal code": "ZIP/Postal code",
|
||||
"Additional information about the company (visible to firm members only)": "Additional information about the company (visible to firm members only)",
|
||||
"Cases to associate with the company": "Cases to associate with the company",
|
||||
"Clients to associate with the company": "Clients to associate with the company",
|
||||
"The name of the custom field": "The name of the custom field",
|
||||
"The parent resource type of the custom field": "The parent resource type of the custom field",
|
||||
"The field type of the custom field": "The field type of the custom field",
|
||||
"List of options for the custom field (required if field type is \"list\")": "List of options for the custom field (required if field type is \"list\")",
|
||||
"Choose whether to create a firm document or associate it with a specific case": "Choose whether to create a firm document or associate it with a specific case",
|
||||
"Select the case to associate this document with": "Select the case to associate this document with",
|
||||
"The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.": "The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.",
|
||||
"The filename of the physical file including extension (e.g., file.pdf)": "The filename of the physical file including extension (e.g., file.pdf)",
|
||||
"The description of this document": "The description of this document",
|
||||
"The assigned date of this document": "The assigned date of this document",
|
||||
"Staff members to share this document with (only for firm documents)": "Staff members to share this document with (only for firm documents)",
|
||||
"The name of this event": "The name of this event",
|
||||
"The start date and time of this event": "The start date and time of this event",
|
||||
"The end date and time of this event": "The end date and time of this event",
|
||||
"Staff members to associate with this event": "Staff members to associate with this event",
|
||||
"Staff members who are required to attend (all others are optional)": "Staff members who are required to attend (all others are optional)",
|
||||
"Event description": "Event description",
|
||||
"Is this an all day event?": "Is this an all day event?",
|
||||
"Is this a private event?": "Is this a private event?",
|
||||
"The location associated with this event": "The location associated with this event",
|
||||
"The case associated with this event": "The case associated with this event",
|
||||
"The activity name for this expense (will be created if it doesn't exist)": "The activity name for this expense (will be created if it doesn't exist)",
|
||||
"The case to associate with this expense": "The case to associate with this expense",
|
||||
"The entry date of this expense": "The entry date of this expense",
|
||||
"Cost of the expense": "Cost of the expense",
|
||||
"Number of units": "Number of units",
|
||||
"Is this expense billable?": "Is this expense billable?",
|
||||
"Description of the expense": "Description of the expense",
|
||||
"The staff member associated with this expense": "The staff member associated with this expense",
|
||||
"The first name of the lead": "The first name of the lead",
|
||||
"The last name of the lead": "The last name of the lead",
|
||||
"The email of the lead": "The email of the lead",
|
||||
"The middle name or initial of the lead": "The middle name or initial of the lead",
|
||||
"Cell phone number": "Cell phone number",
|
||||
"Work phone number": "Work phone number",
|
||||
"Home phone number": "Home phone number",
|
||||
"Date of birth": "Date of birth",
|
||||
"Drivers license number": "Drivers license number",
|
||||
"Drivers license state": "Drivers license state",
|
||||
"Additional information (visible to firm members only)": "Additional information (visible to firm members only)",
|
||||
"The referral source to associate with this lead": "The referral source to associate with this lead",
|
||||
"Existing client or company who referred this lead": "Existing client or company who referred this lead",
|
||||
"The name of the location": "The name of the location",
|
||||
"Choose the type of entity to create the note for": "Choose the type of entity to create the note for",
|
||||
"Select the entity to create the note for": "Select the entity to create the note for",
|
||||
"Subject of the note": "Subject of the note",
|
||||
"The body text of the note": "The body text of the note",
|
||||
"The date and time of the note": "The date and time of the note",
|
||||
"The first name of the client": "The first name of the client",
|
||||
"The last name of the client": "The last name of the client",
|
||||
"The email of the client": "The email of the client",
|
||||
"The middle name of the client": "The middle name of the client",
|
||||
"Fax phone number": "Fax phone number",
|
||||
"The people group to associate with this client": "The people group to associate with this client",
|
||||
"Cases to associate with this client": "Cases to associate with this client",
|
||||
"The name of the practice area": "The name of the practice area",
|
||||
"The name of the referral source": "The name of the referral source",
|
||||
"The name of this task": "The name of this task",
|
||||
"The priority of this task": "The priority of this task",
|
||||
"The due date of this task": "The due date of this task",
|
||||
"Staff members to assign this task to": "Staff members to assign this task to",
|
||||
"Task description": "Task description",
|
||||
"Is this task completed?": "Is this task completed?",
|
||||
"The case to associate with this task": "The case to associate with this task",
|
||||
"The activity name for this time entry": "The activity name for this time entry",
|
||||
"The case to associate with this time entry": "The case to associate with this time entry",
|
||||
"The staff member associated with this time entry": "The staff member associated with this time entry",
|
||||
"The entry date of this time entry": "The entry date of this time entry",
|
||||
"The rate in dollars": "The rate in dollars",
|
||||
"The duration in hours": "The duration in hours",
|
||||
"Description of the time entry": "Description of the time entry",
|
||||
"Is this time entry billable?": "Is this time entry billable?",
|
||||
"Is this time entry a flat fee?": "Is this time entry a flat fee?",
|
||||
"When the call happened": "When the call happened",
|
||||
"The caller's phone number": "The caller's phone number",
|
||||
"The staff member this call is associated with": "The staff member this call is associated with",
|
||||
"A description of the call": "A description of the call",
|
||||
"Choose how to identify the caller": "Choose how to identify the caller",
|
||||
"The caller's name": "The caller's name",
|
||||
"The existing client": "The existing client",
|
||||
"The existing lead": "The existing lead",
|
||||
"Type of call": "Type of call",
|
||||
"Should this call show as resolved?": "Should this call show as resolved?",
|
||||
"Select the case to update": "Select the case to update",
|
||||
"An identifier for this case": "An identifier for this case",
|
||||
"The date the case was created/opened": "The date the case was created/opened",
|
||||
"The stage the case is currently in": "The stage the case is currently in",
|
||||
"The practice area for this case": "The practice area for this case",
|
||||
"The statute of limitations date": "The statute of limitations date",
|
||||
"The client or company to assign as the billing contact": "The client or company to assign as the billing contact",
|
||||
"Clients to associate with the case": "Clients to associate with the case",
|
||||
"Companies to associate with the case": "Companies to associate with the case",
|
||||
"Staff members to associate with the case": "Staff members to associate with the case",
|
||||
"Select the lead lawyer for this case": "Select the lead lawyer for this case",
|
||||
"Select the originating lawyer for this case": "Select the originating lawyer for this case",
|
||||
"Select the company to update": "Select the company to update",
|
||||
"Select the client to update": "Select the client to update",
|
||||
"HTTP method to use": "HTTP method to use",
|
||||
"API endpoint path (e.g., /cases or /clients/123)": "API endpoint path (e.g., /cases or /clients/123)",
|
||||
"Query parameters as JSON object": "Query parameters as JSON object",
|
||||
"Request body as JSON (for POST, PUT, PATCH)": "Request body as JSON (for POST, PUT, PATCH)",
|
||||
"Additional headers as JSON object": "Additional headers as JSON object",
|
||||
"Filter by case status": "Filter by case status",
|
||||
"Filter cases updated after this date and time": "Filter cases updated after this date and time",
|
||||
"Number of results per page (1-1000)": "Number of results per page (1-1000)",
|
||||
"Comma-separated list of client fields to include (e.g., id,first_name,last_name)": "Comma-separated list of client fields to include (e.g., id,first_name,last_name)",
|
||||
"Comma-separated list of custom field fields to include (e.g., id,field_type)": "Comma-separated list of custom field fields to include (e.g., id,field_type)",
|
||||
"Filter calls updated after this date and time": "Filter calls updated after this date and time",
|
||||
"Filter case stages updated after this date and time": "Filter case stages updated after this date and time",
|
||||
"Filter by company name": "Filter by company name",
|
||||
"Filter by email address": "Filter by email address",
|
||||
"Filter by main phone number": "Filter by main phone number",
|
||||
"Filter by fax phone number": "Filter by fax phone number",
|
||||
"Filter companies updated after this date and time": "Filter companies updated after this date and time",
|
||||
"Filter locations updated after this date and time": "Filter locations updated after this date and time",
|
||||
"Filter people groups updated after this date and time": "Filter people groups updated after this date and time",
|
||||
"Filter by first name": "Filter by first name",
|
||||
"Filter by last name": "Filter by last name",
|
||||
"Filter by cell phone number": "Filter by cell phone number",
|
||||
"Filter by work phone number": "Filter by work phone number",
|
||||
"Filter by home phone number": "Filter by home phone number",
|
||||
"Filter clients updated after this date and time": "Filter clients updated after this date and time",
|
||||
"Filter practice areas updated after this date and time": "Filter practice areas updated after this date and time",
|
||||
"Filter referral sources updated after this date and time": "Filter referral sources updated after this date and time",
|
||||
"Filter by staff status": "Filter by staff status",
|
||||
"Filter staff updated after this date and time": "Filter staff updated after this date and time",
|
||||
"The name of the case to find or create": "The name of the case to find or create",
|
||||
"An identifier for this case (used only when creating)": "An identifier for this case (used only when creating)",
|
||||
"The date the case was created/opened (used only when creating)": "The date the case was created/opened (used only when creating)",
|
||||
"The stage the case is currently in (used only when creating)": "The stage the case is currently in (used only when creating)",
|
||||
"The practice area for this case (used only when creating)": "The practice area for this case (used only when creating)",
|
||||
"A description for the case (used only when creating)": "A description for the case (used only when creating)",
|
||||
"The statute of limitations date (used only when creating)": "The statute of limitations date (used only when creating)",
|
||||
"The status of the case (used only when creating)": "The status of the case (used only when creating)",
|
||||
"The outstanding balance of this case (used only when creating)": "The outstanding balance of this case (used only when creating)",
|
||||
"The client or company to assign as the billing contact (used only when creating)": "The client or company to assign as the billing contact (used only when creating)",
|
||||
"Clients to associate with the case (used only when creating)": "Clients to associate with the case (used only when creating)",
|
||||
"Companies to associate with the case (used only when creating)": "Companies to associate with the case (used only when creating)",
|
||||
"Staff members to associate with the case (used only when creating)": "Staff members to associate with the case (used only when creating)",
|
||||
"Select the lead lawyer for this case (used only when creating)": "Select the lead lawyer for this case (used only when creating)",
|
||||
"Select the originating lawyer for this case (used only when creating)": "Select the originating lawyer for this case (used only when creating)",
|
||||
"The name of the case stage to find or create": "The name of the case stage to find or create",
|
||||
"The name of the company to find or create": "The name of the company to find or create",
|
||||
"Company email address (used only when creating)": "Company email address (used only when creating)",
|
||||
"Company website URL (used only when creating)": "Company website URL (used only when creating)",
|
||||
"Main phone number for the company (used only when creating)": "Main phone number for the company (used only when creating)",
|
||||
"Fax phone number for the company (used only when creating)": "Fax phone number for the company (used only when creating)",
|
||||
"Street address line 1 (used only when creating)": "Street address line 1 (used only when creating)",
|
||||
"Street address line 2 (used only when creating)": "Street address line 2 (used only when creating)",
|
||||
"City (used only when creating)": "City (used only when creating)",
|
||||
"State (used only when creating)": "State (used only when creating)",
|
||||
"ZIP/Postal code (used only when creating)": "ZIP/Postal code (used only when creating)",
|
||||
"Country (used only when creating)": "Country (used only when creating)",
|
||||
"Additional information about the company (used only when creating)": "Additional information about the company (used only when creating)",
|
||||
"Cases to associate with the company (used only when creating)": "Cases to associate with the company (used only when creating)",
|
||||
"Clients to associate with the company (used only when creating)": "Clients to associate with the company (used only when creating)",
|
||||
"The name of the location to find or create": "The name of the location to find or create",
|
||||
"The email of the client (used only when creating)": "The email of the client (used only when creating)",
|
||||
"The middle name of the client (used only when creating)": "The middle name of the client (used only when creating)",
|
||||
"Cell phone number (used only when creating)": "Cell phone number (used only when creating)",
|
||||
"Work phone number (used only when creating)": "Work phone number (used only when creating)",
|
||||
"Home phone number (used only when creating)": "Home phone number (used only when creating)",
|
||||
"Fax phone number (used only when creating)": "Fax phone number (used only when creating)",
|
||||
"Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)": "Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)",
|
||||
"Additional information (used only when creating)": "Additional information (used only when creating)",
|
||||
"The people group to associate (used only when creating)": "The people group to associate (used only when creating)",
|
||||
"Cases to associate with the client (used only when creating)": "Cases to associate with the client (used only when creating)",
|
||||
"The name of the practice area to find or create": "The name of the practice area to find or create",
|
||||
"The name of the referral source to find or create": "The name of the referral source to find or create",
|
||||
"Open": "Open",
|
||||
"Closed": "Closed",
|
||||
"Expense": "Expense",
|
||||
"Time": "Time",
|
||||
"Time and Expense": "Time and Expense",
|
||||
"Short Text": "Short Text",
|
||||
"Long Text": "Long Text",
|
||||
"Numeric": "Numeric",
|
||||
"Boolean": "Boolean",
|
||||
"List": "List",
|
||||
"Currency": "Currency",
|
||||
"Firm Document": "Firm Document",
|
||||
"Case Document": "Case Document",
|
||||
"Low": "Low",
|
||||
"Medium": "Medium",
|
||||
"High": "High",
|
||||
"Unknown (provide name)": "Unknown (provide name)",
|
||||
"Existing Client": "Existing Client",
|
||||
"Existing Lead": "Existing Lead",
|
||||
"Incoming": "Incoming",
|
||||
"Outgoing": "Outgoing",
|
||||
"GET": "获取",
|
||||
"POST": "帖子",
|
||||
"PUT": "弹出",
|
||||
"PATCH": "PATCH",
|
||||
"DELETE": "删除",
|
||||
"Active": "使用中",
|
||||
"Inactive": "Inactive",
|
||||
"Case Added or Updated": "Case Added or Updated",
|
||||
"Event Added or Updated": "Event Added or Updated",
|
||||
"Person Added or Updated": "Person Added or Updated",
|
||||
"Company Added or Updated": "Company Added or Updated",
|
||||
"Lead Added or Updated": "Lead Added or Updated",
|
||||
"Triggers when a case has been added or updated": "Triggers when a case has been added or updated",
|
||||
"Triggers when an event has been added or updated": "Triggers when an event has been added or updated",
|
||||
"Triggers when a person has been added or updated": "Triggers when a person has been added or updated",
|
||||
"Triggers when a company has been added or updated": "Triggers when a company has been added or updated",
|
||||
"Triggers when a lead has been added or updated": "Triggers when a lead has been added or updated"
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
import { createPiece, PieceAuth } from '@activepieces/pieces-framework';
|
||||
import { createCase } from './lib/actions/create-case';
|
||||
import { createCaseStage } from './lib/actions/create-case-stage';
|
||||
import { createCompany } from './lib/actions/create-company';
|
||||
import { createCustomField } from './lib/actions/create-custom-field';
|
||||
import { createDocument } from './lib/actions/create-document';
|
||||
import { createEvent } from './lib/actions/create-event';
|
||||
import { createExpense } from './lib/actions/create-expense';
|
||||
import { createLead } from './lib/actions/create-lead';
|
||||
import { createLocation } from './lib/actions/create-location';
|
||||
import { createNote } from './lib/actions/create-note';
|
||||
import { createPerson } from './lib/actions/create-person';
|
||||
import { createPracticeArea } from './lib/actions/create-practice-area';
|
||||
import { createReferralSource } from './lib/actions/create-referral-source';
|
||||
import { createTask } from './lib/actions/create-task';
|
||||
import { createTimeEntry } from './lib/actions/create-time-entry';
|
||||
import { createCall } from './lib/actions/create-call';
|
||||
import { updateCase } from './lib/actions/update-case';
|
||||
import { updateCompany } from './lib/actions/update-company';
|
||||
import { updatePerson } from './lib/actions/update-person';
|
||||
import { makeRequest } from './lib/actions/make-request';
|
||||
import { findCase } from './lib/actions/find-case';
|
||||
import { findCall } from './lib/actions/find-call';
|
||||
import { findCaseStage } from './lib/actions/find-case-stage';
|
||||
import { findCompany } from './lib/actions/find-company';
|
||||
import { findLocation } from './lib/actions/find-location';
|
||||
import { findPeopleGroup } from './lib/actions/find-people-group';
|
||||
import { findPerson } from './lib/actions/find-person';
|
||||
import { findPracticeArea } from './lib/actions/find-practice-area';
|
||||
import { findReferralSource } from './lib/actions/find-referral-source';
|
||||
import { findStaff } from './lib/actions/find-staff';
|
||||
import { findOrCreateCase } from './lib/actions/find-or-create-case';
|
||||
import { findOrCreateCaseStage } from './lib/actions/find-or-create-case-stage';
|
||||
import { findOrCreateCompany } from './lib/actions/find-or-create-company';
|
||||
import { findOrCreateLocation } from './lib/actions/find-or-create-location';
|
||||
import { findOrCreatePerson } from './lib/actions/find-or-create-person';
|
||||
import { findOrCreatePracticeArea } from './lib/actions/find-or-create-practice-area';
|
||||
import { findOrCreateReferralSource } from './lib/actions/find-or-create-referral-source';
|
||||
import { caseAddedOrUpdated } from './lib/triggers/case-added-or-updated';
|
||||
import { eventAddedOrUpdated } from './lib/triggers/event-added-or-updated';
|
||||
import { personAddedOrUpdated } from './lib/triggers/person-added-or-updated';
|
||||
import { companyAddedOrUpdated } from './lib/triggers/company-added-or-updated';
|
||||
import { leadAddedOrUpdated } from './lib/triggers/lead-added-or-updated';
|
||||
|
||||
const mycaseAuthDescription = `
|
||||
## MyCase OAuth 2.0 Setup
|
||||
|
||||
### Obtaining Client Credentials
|
||||
1. Contact MyCase support at [https://www.mycase.com/support/](https://www.mycase.com/support/) to request OAuth 2.0 client credentials
|
||||
2. Provide your application details and request a client ID and client secret
|
||||
3. MyCase support will provide you with:
|
||||
- **Client ID**: Your OAuth Client ID
|
||||
- **Client Secret**: Your OAuth Client secret
|
||||
- **Redirect URI**: A pre-configured redirect URI for your application
|
||||
|
||||
### Required Permissions
|
||||
The authorizing user must have the **"Manage your firm's preferences, billing, and payment options"** permission set to **Yes** in MyCase.
|
||||
|
||||
### Authorization Flow
|
||||
MyCase uses OAuth 2.0 Authorization Code Grant flow with the following endpoints:
|
||||
|
||||
**Authorization URL**: \`https://auth.mycase.com/login_sessions/new\`
|
||||
**Token URL**: \`https://auth.mycase.com/tokens\`
|
||||
|
||||
### Rate Limits
|
||||
- 25 requests per second per client
|
||||
- Access tokens are valid for 24 hours
|
||||
- Refresh tokens are valid for 2 weeks
|
||||
|
||||
For detailed API documentation, visit: [https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started](https://mycaseapi.stoplight.io/docs/mycase-api-documentation/k5xpc4jyhkom7-getting-started)
|
||||
`;
|
||||
|
||||
export const mycaseAuth = PieceAuth.OAuth2({
|
||||
description: mycaseAuthDescription,
|
||||
authUrl: 'https://auth.mycase.com/login_sessions/new',
|
||||
tokenUrl: 'https://auth.mycase.com/tokens',
|
||||
required: true,
|
||||
scope: [],
|
||||
pkce: true
|
||||
});
|
||||
|
||||
export const mycasePiece = createPiece({
|
||||
displayName: 'MyCase',
|
||||
description: 'Automate legal case management workflows with MyCase. Create and manage cases, clients, companies, events, tasks, time entries, documents, and more. Get notified when cases, events, people, companies, or leads are added or updated.',
|
||||
auth: mycaseAuth,
|
||||
minimumSupportedRelease: '0.36.1',
|
||||
logoUrl: 'https://cdn.activepieces.com/pieces/mycase-piece.png',
|
||||
authors: ["Fortunamide"],
|
||||
actions: [createCase, createCaseStage, createCompany, createCustomField, createDocument, createEvent, createExpense, createLead, createLocation, createNote, createPerson, createPracticeArea, createReferralSource, createTask, createTimeEntry, createCall, updateCase, updateCompany, updatePerson, makeRequest, findCase, findCall, findCaseStage, findCompany, findLocation, findPeopleGroup, findPerson, findPracticeArea, findReferralSource, findStaff, findOrCreateCase, findOrCreateCaseStage, findOrCreateCompany, findOrCreateLocation, findOrCreatePerson, findOrCreatePracticeArea, findOrCreateReferralSource],
|
||||
triggers: [caseAddedOrUpdated, eventAddedOrUpdated, personAddedOrUpdated, companyAddedOrUpdated, leadAddedOrUpdated]
|
||||
});
|
||||
@@ -0,0 +1,249 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createCall = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_call',
|
||||
displayName: 'Create Call',
|
||||
description: 'Creates a new call in the call log in MyCase',
|
||||
props: {
|
||||
called_at: Property.DateTime({
|
||||
displayName: 'Called At',
|
||||
description: 'When the call happened',
|
||||
required: true,
|
||||
}),
|
||||
caller_phone_number: Property.ShortText({
|
||||
displayName: 'Caller Phone Number',
|
||||
description: 'The caller\'s phone number',
|
||||
required: true,
|
||||
}),
|
||||
call_for: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Call For',
|
||||
description: 'The staff member this call is associated with',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
message: Property.LongText({
|
||||
displayName: 'Message',
|
||||
description: 'A description of the call',
|
||||
required: true,
|
||||
}),
|
||||
caller_type: Property.StaticDropdown({
|
||||
displayName: 'Caller Type',
|
||||
description: 'Choose how to identify the caller',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Unknown (provide name)', value: 'unknown' },
|
||||
{ label: 'Existing Client', value: 'client' },
|
||||
{ label: 'Existing Lead', value: 'lead' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'unknown',
|
||||
}),
|
||||
caller_name: Property.ShortText({
|
||||
displayName: 'Caller Name',
|
||||
description: 'The caller\'s name',
|
||||
required: false,
|
||||
}),
|
||||
client: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Client',
|
||||
description: 'The existing client',
|
||||
required: false,
|
||||
refreshers: ['caller_type'],
|
||||
options: async ({ auth, caller_type }) => {
|
||||
if (!auth || caller_type !== 'client') {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select "Existing Client" above to choose a client',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: client.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
}),
|
||||
lead: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Lead',
|
||||
description: 'The existing lead',
|
||||
required: false,
|
||||
refreshers: ['caller_type'],
|
||||
options: async ({ auth, caller_type }) => {
|
||||
if (!auth || caller_type !== 'lead') {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select "Existing Lead" above to choose a lead',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/leads', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((lead: any) => ({
|
||||
label: `${lead.first_name} ${lead.last_name}${lead.email ? ` (${lead.email})` : ''}`,
|
||||
value: lead.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load leads',
|
||||
};
|
||||
},
|
||||
}),
|
||||
call_type: Property.StaticDropdown({
|
||||
displayName: 'Call Type',
|
||||
description: 'Type of call',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Incoming', value: 'incoming' },
|
||||
{ label: 'Outgoing', value: 'outgoing' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'incoming',
|
||||
}),
|
||||
resolved: Property.Checkbox({
|
||||
displayName: 'Resolved',
|
||||
description: 'Should this call show as resolved?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Validate caller identification based on type
|
||||
if (context.propsValue.caller_type === 'unknown' && !context.propsValue.caller_name) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Caller name is required when caller type is "Unknown"',
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.caller_type === 'client' && !context.propsValue.client) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Client selection is required when caller type is "Existing Client"',
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.caller_type === 'lead' && !context.propsValue.lead) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Lead selection is required when caller type is "Existing Lead"',
|
||||
};
|
||||
}
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
called_at: new Date(context.propsValue.called_at).toISOString(),
|
||||
caller_phone_number: context.propsValue.caller_phone_number,
|
||||
call_for: { id: parseInt(context.propsValue.call_for) },
|
||||
message: context.propsValue.message,
|
||||
};
|
||||
|
||||
// Add the appropriate caller identification
|
||||
if (context.propsValue.caller_type === 'unknown') {
|
||||
requestBody.caller_name = context.propsValue.caller_name;
|
||||
} else if (context.propsValue.caller_type === 'client') {
|
||||
requestBody.client = { id: parseInt(context.propsValue.client) };
|
||||
} else if (context.propsValue.caller_type === 'lead') {
|
||||
requestBody.lead = { id: parseInt(context.propsValue.lead) };
|
||||
}
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.call_type) {
|
||||
requestBody.call_type = context.propsValue.call_type;
|
||||
}
|
||||
|
||||
if (context.propsValue.resolved !== undefined) {
|
||||
requestBody.resolved = context.propsValue.resolved;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/calls', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
call: response.data,
|
||||
message: 'Call created successfully in call log',
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create call',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createCaseStage = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_case_stage',
|
||||
displayName: 'Create Case Stage',
|
||||
description: 'Creates a new case stage in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Case Stage Name',
|
||||
description: 'The name of the case stage',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const requestBody = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await api.post('/case_stages', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
case_stage: response.data,
|
||||
message: `Case stage "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create case stage',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,201 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createCase = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_case',
|
||||
displayName: 'Create Case',
|
||||
description: 'Creates a new case in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Case Name',
|
||||
description: 'The name of the case (must be unique)',
|
||||
required: true,
|
||||
}),
|
||||
case_number: Property.ShortText({
|
||||
displayName: 'Case Number',
|
||||
description: 'An identifier for this case (recommended to be unique)',
|
||||
required: false,
|
||||
}),
|
||||
opened_date: Property.ShortText({
|
||||
displayName: 'Opened Date',
|
||||
description: 'The date the case was created/opened (ISO-8601 format: YYYY-MM-DD)',
|
||||
required: false,
|
||||
}),
|
||||
case_stage: Property.ShortText({
|
||||
displayName: 'Case Stage',
|
||||
description: 'The stage the case is currently in (must match MyCase system)',
|
||||
required: false,
|
||||
}),
|
||||
practice_area: Property.ShortText({
|
||||
displayName: 'Practice Area',
|
||||
description: 'The practice area for this case (must match MyCase system)',
|
||||
required: false,
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'A description for the case',
|
||||
required: false,
|
||||
}),
|
||||
sol_date: Property.ShortText({
|
||||
displayName: 'Statute of Limitations Date',
|
||||
description: 'The statute of limitations date (ISO-8601 date format: YYYY-MM-DD)',
|
||||
required: false,
|
||||
}),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
description: 'The status of the case',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Open', value: 'open' },
|
||||
{ label: 'Closed', value: 'closed' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'open',
|
||||
}),
|
||||
outstanding_balance: Property.Number({
|
||||
displayName: 'Outstanding Balance',
|
||||
description: 'The outstanding balance of this case',
|
||||
required: false,
|
||||
}),
|
||||
billing_contact_id: Property.Number({
|
||||
displayName: 'Billing Contact ID',
|
||||
description: 'The ID of the client or company to assign as the billing contact',
|
||||
required: false,
|
||||
}),
|
||||
client_ids: Property.ShortText({
|
||||
displayName: 'Client IDs',
|
||||
description: 'Comma-separated list of client IDs to associate with the case',
|
||||
required: false,
|
||||
}),
|
||||
company_ids: Property.ShortText({
|
||||
displayName: 'Company IDs',
|
||||
description: 'Comma-separated list of company IDs to associate with the case',
|
||||
required: false,
|
||||
}),
|
||||
staff_id: Property.Number({
|
||||
displayName: 'Staff ID',
|
||||
description: 'ID of staff member to associate with the case',
|
||||
required: false,
|
||||
}),
|
||||
lead_lawyer: Property.Checkbox({
|
||||
displayName: 'Lead Lawyer',
|
||||
description: 'Is the staff member the lead lawyer for this case?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
originating_lawyer: Property.Checkbox({
|
||||
displayName: 'Originating Lawyer',
|
||||
description: 'Is the staff member the originating lawyer for this case?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
// Add optional fields if provided
|
||||
if (context.propsValue.case_number) {
|
||||
requestBody.case_number = context.propsValue.case_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.opened_date) {
|
||||
requestBody.opened_date = context.propsValue.opened_date;
|
||||
}
|
||||
|
||||
if (context.propsValue.case_stage) {
|
||||
requestBody.case_stage = context.propsValue.case_stage;
|
||||
}
|
||||
|
||||
if (context.propsValue.practice_area) {
|
||||
requestBody.practice_area = context.propsValue.practice_area;
|
||||
}
|
||||
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.sol_date) {
|
||||
requestBody.sol_date = context.propsValue.sol_date;
|
||||
}
|
||||
|
||||
if (context.propsValue.status) {
|
||||
requestBody.status = context.propsValue.status;
|
||||
}
|
||||
|
||||
if (context.propsValue.outstanding_balance !== undefined) {
|
||||
requestBody.outstanding_balance = context.propsValue.outstanding_balance;
|
||||
}
|
||||
|
||||
// Add billing contact if provided
|
||||
if (context.propsValue.billing_contact_id) {
|
||||
requestBody.billing_contact = {
|
||||
id: context.propsValue.billing_contact_id,
|
||||
};
|
||||
}
|
||||
|
||||
// Add clients if provided
|
||||
if (context.propsValue.client_ids) {
|
||||
const clientIds = context.propsValue.client_ids
|
||||
.split(',')
|
||||
.map(id => parseInt(id.trim()))
|
||||
.filter(id => !isNaN(id));
|
||||
|
||||
if (clientIds.length > 0) {
|
||||
requestBody.clients = clientIds.map(id => ({ id }));
|
||||
}
|
||||
}
|
||||
|
||||
// Add companies if provided
|
||||
if (context.propsValue.company_ids) {
|
||||
const companyIds = context.propsValue.company_ids
|
||||
.split(',')
|
||||
.map(id => parseInt(id.trim()))
|
||||
.filter(id => !isNaN(id));
|
||||
|
||||
if (companyIds.length > 0) {
|
||||
requestBody.companies = companyIds.map(id => ({ id }));
|
||||
}
|
||||
}
|
||||
|
||||
// Add staff if provided
|
||||
if (context.propsValue.staff_id) {
|
||||
requestBody.staff = [{
|
||||
id: context.propsValue.staff_id,
|
||||
lead_lawyer: context.propsValue.lead_lawyer || false,
|
||||
originating_lawyer: context.propsValue.originating_lawyer || false,
|
||||
}];
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/cases', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
case: response.data,
|
||||
message: `Case "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create case',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,223 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createCompany = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_company',
|
||||
displayName: 'Create Company',
|
||||
description: 'Creates a new company in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
description: 'The name of the company',
|
||||
required: true,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'Company email address',
|
||||
required: false,
|
||||
}),
|
||||
website: Property.ShortText({
|
||||
displayName: 'Website',
|
||||
description: 'Company website URL',
|
||||
required: false,
|
||||
}),
|
||||
main_phone_number: Property.ShortText({
|
||||
displayName: 'Main Phone Number',
|
||||
description: 'Main phone number for the company',
|
||||
required: false,
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Fax phone number for the company',
|
||||
required: false,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional information about the company (visible to firm members only)',
|
||||
required: false,
|
||||
}),
|
||||
cases: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Cases',
|
||||
description: 'Cases to associate with the company',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
clients: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Clients',
|
||||
description: 'Clients to associate with the company',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: client.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
// Add optional fields if provided
|
||||
if (context.propsValue.email) {
|
||||
requestBody.email = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.website) {
|
||||
requestBody.website = context.propsValue.website;
|
||||
}
|
||||
|
||||
if (context.propsValue.main_phone_number) {
|
||||
requestBody.main_phone_number = context.propsValue.main_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.fax_phone_number) {
|
||||
requestBody.fax_phone_number = context.propsValue.fax_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.notes) {
|
||||
requestBody.notes = context.propsValue.notes;
|
||||
}
|
||||
|
||||
// Add address if any address fields are provided
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
// Add cases if provided
|
||||
if (context.propsValue.cases && Array.isArray(context.propsValue.cases)) {
|
||||
requestBody.cases = context.propsValue.cases.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add clients if provided
|
||||
if (context.propsValue.clients && Array.isArray(context.propsValue.clients)) {
|
||||
requestBody.clients = context.propsValue.clients.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/companies', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
company: response.data,
|
||||
message: `Company "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create company',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,115 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createCustomField = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_custom_field',
|
||||
displayName: 'Create Custom Field',
|
||||
description: 'Creates a new custom field in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Field Name',
|
||||
description: 'The name of the custom field',
|
||||
required: true,
|
||||
}),
|
||||
parent_type: Property.StaticDropdown({
|
||||
displayName: 'Parent Type',
|
||||
description: 'The parent resource type of the custom field',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Case', value: 'case' },
|
||||
{ label: 'Client', value: 'client' },
|
||||
{ label: 'Company', value: 'company' },
|
||||
{ label: 'Expense', value: 'expense' },
|
||||
{ label: 'Time', value: 'time' },
|
||||
{ label: 'Time and Expense', value: 'time_and_expense' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
field_type: Property.StaticDropdown({
|
||||
displayName: 'Field Type',
|
||||
description: 'The field type of the custom field',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Short Text', value: 'short_text' },
|
||||
{ label: 'Long Text', value: 'long_text' },
|
||||
{ label: 'Numeric', value: 'numeric' },
|
||||
{ label: 'Boolean', value: 'boolean' },
|
||||
{ label: 'Date', value: 'date' },
|
||||
{ label: 'List', value: 'list' },
|
||||
{ label: 'Currency', value: 'currency' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
list_options: Property.Array({
|
||||
displayName: 'List Options',
|
||||
description: 'List of options for the custom field (required if field type is "list")',
|
||||
required: false,
|
||||
properties: {
|
||||
option: Property.ShortText({
|
||||
displayName: 'Option Value',
|
||||
description: 'The name of the list option',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
parent_type: context.propsValue.parent_type,
|
||||
field_type: context.propsValue.field_type,
|
||||
};
|
||||
|
||||
// Add list options if field type is list
|
||||
if (context.propsValue.field_type === 'list') {
|
||||
if (!context.propsValue.list_options || !Array.isArray(context.propsValue.list_options)) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'List options are required when field type is "list"',
|
||||
};
|
||||
}
|
||||
|
||||
if (context.propsValue.list_options.length === 0) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'At least one list option must be provided',
|
||||
};
|
||||
}
|
||||
|
||||
requestBody.list_options = context.propsValue.list_options.map((item: any) => ({
|
||||
option_value: item.option,
|
||||
}));
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/custom_fields', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
custom_field: response.data,
|
||||
message: `Custom field "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create custom field',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,190 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createDocument = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_document',
|
||||
displayName: 'Create Document',
|
||||
description: 'Creates a new document in MyCase',
|
||||
props: {
|
||||
document_type: Property.StaticDropdown({
|
||||
displayName: 'Document Type',
|
||||
description: 'Choose whether to create a firm document or associate it with a specific case',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Firm Document', value: 'firm' },
|
||||
{ label: 'Case Document', value: 'case' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'firm',
|
||||
}),
|
||||
case: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case',
|
||||
description: 'Select the case to associate this document with',
|
||||
required: false,
|
||||
refreshers: ['document_type'],
|
||||
options: async ({ auth, document_type }) => {
|
||||
if (!auth || document_type !== 'case') {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select "Case Document" above to choose a case',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
path: Property.ShortText({
|
||||
displayName: 'Document Path',
|
||||
description: 'The relative path including document name (e.g., folder1/folder2/document_name). Folders will be created automatically.',
|
||||
required: true,
|
||||
}),
|
||||
filename: Property.ShortText({
|
||||
displayName: 'Filename',
|
||||
description: 'The filename of the physical file including extension (e.g., file.pdf)',
|
||||
required: true,
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'The description of this document',
|
||||
required: false,
|
||||
}),
|
||||
assigned_date: Property.DateTime({
|
||||
displayName: 'Assigned Date',
|
||||
description: 'The assigned date of this document',
|
||||
required: false,
|
||||
}),
|
||||
staff: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Staff',
|
||||
description: 'Staff members to share this document with (only for firm documents)',
|
||||
required: false,
|
||||
refreshers: ['document_type'],
|
||||
options: async ({ auth, document_type }) => {
|
||||
if (!auth || document_type === 'case') {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Only available for firm documents',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Validate case selection for case documents
|
||||
if (context.propsValue.document_type === 'case' && !context.propsValue.case) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Case must be selected when creating a case document',
|
||||
};
|
||||
}
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
path: context.propsValue.path,
|
||||
filename: context.propsValue.filename,
|
||||
};
|
||||
|
||||
// Add optional fields if provided
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.assigned_date) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.assigned_date);
|
||||
requestBody.assigned_date = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
// Add staff if provided (only for firm documents)
|
||||
if (context.propsValue.document_type === 'firm' && context.propsValue.staff && Array.isArray(context.propsValue.staff)) {
|
||||
requestBody.staff = context.propsValue.staff.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
try {
|
||||
let endpoint: string;
|
||||
let successMessage: string;
|
||||
|
||||
if (context.propsValue.document_type === 'case') {
|
||||
endpoint = `/cases/${context.propsValue.case}/documents`;
|
||||
successMessage = `Case document "${context.propsValue.path}" created successfully`;
|
||||
} else {
|
||||
endpoint = '/documents';
|
||||
successMessage = `Firm document "${context.propsValue.path}" created successfully`;
|
||||
}
|
||||
|
||||
const response = await api.post(endpoint, requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
document: response.data,
|
||||
message: successMessage,
|
||||
upload_info: {
|
||||
put_url: response.data?.put_url,
|
||||
put_headers: response.data?.put_headers,
|
||||
note: 'Use the put_url and put_headers to upload your file to Amazon S3. Set Content-Type: application/octet-stream',
|
||||
},
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create document',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,272 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createEvent = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_event',
|
||||
displayName: 'Create Event',
|
||||
description: 'Creates a new event in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Event Name',
|
||||
description: 'The name of this event',
|
||||
required: true,
|
||||
}),
|
||||
start: Property.DateTime({
|
||||
displayName: 'Start Date/Time',
|
||||
description: 'The start date and time of this event',
|
||||
required: true,
|
||||
}),
|
||||
end: Property.DateTime({
|
||||
displayName: 'End Date/Time',
|
||||
description: 'The end date and time of this event',
|
||||
required: true,
|
||||
}),
|
||||
staff: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Staff',
|
||||
description: 'Staff members to associate with this event',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
// Store staff data for reuse in required_staff dropdown
|
||||
const staffOptions = response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: staffOptions,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
required_staff: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Required Staff',
|
||||
description: 'Staff members who are required to attend (all others are optional)',
|
||||
required: false,
|
||||
refreshers: ['staff'],
|
||||
options: async ({ auth, staff }) => {
|
||||
if (!auth || !staff || !Array.isArray(staff) || staff.length === 0) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select staff members first',
|
||||
};
|
||||
}
|
||||
|
||||
// Fetch staff data once and cache
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
// Filter to only show staff that were selected in the staff field
|
||||
const allStaffData = response.data;
|
||||
const selectedStaffOptions = allStaffData
|
||||
.filter((s: any) => staff.includes(s.id.toString()))
|
||||
.map((s: any) => ({
|
||||
label: `${s.first_name} ${s.last_name}`,
|
||||
value: s.id.toString(),
|
||||
}));
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: selectedStaffOptions,
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'Event description',
|
||||
required: false,
|
||||
}),
|
||||
all_day: Property.Checkbox({
|
||||
displayName: 'All Day Event',
|
||||
description: 'Is this an all day event?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
private: Property.Checkbox({
|
||||
displayName: 'Private Event',
|
||||
description: 'Is this a private event?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
location: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Location',
|
||||
description: 'The location associated with this event',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/locations', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((location: any) => ({
|
||||
label: location.name,
|
||||
value: location.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load locations',
|
||||
};
|
||||
},
|
||||
}),
|
||||
case: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case',
|
||||
description: 'The case associated with this event',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Validate that staff is selected
|
||||
if (!context.propsValue.staff || !Array.isArray(context.propsValue.staff) || context.propsValue.staff.length === 0) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'At least one staff member must be selected',
|
||||
};
|
||||
}
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
start: new Date(context.propsValue.start).toISOString(),
|
||||
end: new Date(context.propsValue.end).toISOString(),
|
||||
staff: context.propsValue.staff.map((staffId: string) => {
|
||||
// Check if this staff member is marked as required
|
||||
const isRequired = context.propsValue.required_staff?.includes(staffId) || false;
|
||||
|
||||
return {
|
||||
id: parseInt(staffId),
|
||||
required: isRequired,
|
||||
};
|
||||
}),
|
||||
};
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.all_day !== undefined) {
|
||||
requestBody.all_day = context.propsValue.all_day;
|
||||
}
|
||||
|
||||
if (context.propsValue.private !== undefined) {
|
||||
requestBody.private = context.propsValue.private;
|
||||
}
|
||||
|
||||
if (context.propsValue.location) {
|
||||
requestBody.location = { id: parseInt(context.propsValue.location) };
|
||||
}
|
||||
|
||||
if (context.propsValue.case) {
|
||||
requestBody.case = { id: parseInt(context.propsValue.case) };
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/events', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
event: response.data,
|
||||
message: `Event "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create event',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,163 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createExpense = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_expense',
|
||||
displayName: 'Create Expense',
|
||||
description: 'Creates a new expense in MyCase',
|
||||
props: {
|
||||
activity_name: Property.ShortText({
|
||||
displayName: 'Activity Name',
|
||||
description: 'The activity name for this expense (will be created if it doesn\'t exist)',
|
||||
required: true,
|
||||
}),
|
||||
case: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case',
|
||||
description: 'The case to associate with this expense',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
entry_date: Property.DateTime({
|
||||
displayName: 'Entry Date',
|
||||
description: 'The entry date of this expense',
|
||||
required: true,
|
||||
}),
|
||||
cost: Property.Number({
|
||||
displayName: 'Cost',
|
||||
description: 'Cost of the expense',
|
||||
required: true,
|
||||
}),
|
||||
units: Property.Number({
|
||||
displayName: 'Units',
|
||||
description: 'Number of units',
|
||||
required: true,
|
||||
}),
|
||||
billable: Property.Checkbox({
|
||||
displayName: 'Billable',
|
||||
description: 'Is this expense billable?',
|
||||
required: true,
|
||||
defaultValue: true,
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'Description of the expense',
|
||||
required: false,
|
||||
}),
|
||||
staff: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Staff',
|
||||
description: 'The staff member associated with this expense',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
activity_name: context.propsValue.activity_name,
|
||||
case: { id: parseInt(context.propsValue.case) },
|
||||
entry_date: new Date(context.propsValue.entry_date).toISOString().split('T')[0],
|
||||
cost: context.propsValue.cost,
|
||||
units: context.propsValue.units,
|
||||
billable: context.propsValue.billable,
|
||||
};
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.staff) {
|
||||
requestBody.staff = { id: parseInt(context.propsValue.staff) };
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/expenses', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
expense: response.data,
|
||||
message: `Expense "${context.propsValue.activity_name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create expense',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,279 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createLead = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_lead',
|
||||
displayName: 'Create Lead',
|
||||
description: 'Creates a new lead in MyCase',
|
||||
props: {
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'The first name of the lead',
|
||||
required: true,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'The last name of the lead',
|
||||
required: true,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'The email of the lead',
|
||||
required: false,
|
||||
}),
|
||||
middle_initial: Property.ShortText({
|
||||
displayName: 'Middle Initial',
|
||||
description: 'The middle name or initial of the lead',
|
||||
required: false,
|
||||
}),
|
||||
cell_phone_number: Property.ShortText({
|
||||
displayName: 'Cell Phone Number',
|
||||
description: 'Cell phone number',
|
||||
required: false,
|
||||
}),
|
||||
work_phone_number: Property.ShortText({
|
||||
displayName: 'Work Phone Number',
|
||||
description: 'Work phone number',
|
||||
required: false,
|
||||
}),
|
||||
home_phone_number: Property.ShortText({
|
||||
displayName: 'Home Phone Number',
|
||||
description: 'Home phone number',
|
||||
required: false,
|
||||
}),
|
||||
birthdate: Property.DateTime({
|
||||
displayName: 'Birthdate',
|
||||
description: 'Date of birth',
|
||||
required: false,
|
||||
}),
|
||||
drivers_license_number: Property.ShortText({
|
||||
displayName: 'Drivers License Number',
|
||||
description: 'Drivers license number',
|
||||
required: false,
|
||||
}),
|
||||
drivers_license_state: Property.ShortText({
|
||||
displayName: 'Drivers License State',
|
||||
description: 'Drivers license state',
|
||||
required: false,
|
||||
}),
|
||||
lead_details: Property.LongText({
|
||||
displayName: 'Lead Details',
|
||||
description: 'Additional information (visible to firm members only)',
|
||||
required: false,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country',
|
||||
required: false,
|
||||
}),
|
||||
referral_source: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Referral Source',
|
||||
description: 'The referral source to associate with this lead',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/referral_sources', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((source: any) => ({
|
||||
label: source.name,
|
||||
value: source.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load referral sources',
|
||||
};
|
||||
},
|
||||
}),
|
||||
referred_by: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Referred By',
|
||||
description: 'Existing client or company who referred this lead',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
|
||||
// Get clients
|
||||
const clientsResponse = await api.get('/clients', { page_size: '50' });
|
||||
const clientOptions = clientsResponse.success && Array.isArray(clientsResponse.data)
|
||||
? clientsResponse.data.map((client: any) => ({
|
||||
label: `Client: ${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: `client_${client.id}`,
|
||||
}))
|
||||
: [];
|
||||
|
||||
// Get companies
|
||||
const companiesResponse = await api.get('/companies', { page_size: '50' });
|
||||
const companyOptions = companiesResponse.success && Array.isArray(companiesResponse.data)
|
||||
? companiesResponse.data.map((company: any) => ({
|
||||
label: `Company: ${company.name}`,
|
||||
value: `company_${company.id}`,
|
||||
}))
|
||||
: [];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: [...clientOptions, ...companyOptions],
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
first_name: context.propsValue.first_name,
|
||||
last_name: context.propsValue.last_name,
|
||||
};
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.email) {
|
||||
requestBody.email = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.middle_initial) {
|
||||
requestBody.middle_initial = context.propsValue.middle_initial;
|
||||
}
|
||||
|
||||
if (context.propsValue.cell_phone_number) {
|
||||
requestBody.cell_phone_number = context.propsValue.cell_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.work_phone_number) {
|
||||
requestBody.work_phone_number = context.propsValue.work_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.home_phone_number) {
|
||||
requestBody.home_phone_number = context.propsValue.home_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.birthdate) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.birthdate);
|
||||
requestBody.birthdate = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
if (context.propsValue.drivers_license_number) {
|
||||
requestBody.drivers_license_number = context.propsValue.drivers_license_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.drivers_license_state) {
|
||||
requestBody.drivers_license_state = context.propsValue.drivers_license_state;
|
||||
}
|
||||
|
||||
if (context.propsValue.lead_details) {
|
||||
requestBody.lead_details = context.propsValue.lead_details;
|
||||
}
|
||||
|
||||
// Add address if any address fields are provided
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
// Add referral source if provided
|
||||
if (context.propsValue.referral_source) {
|
||||
requestBody.referral_source_reference = {
|
||||
id: parseInt(context.propsValue.referral_source),
|
||||
};
|
||||
}
|
||||
|
||||
// Add referred by if provided
|
||||
if (context.propsValue.referred_by) {
|
||||
const [type, idStr] = context.propsValue.referred_by.split('_');
|
||||
const id = parseInt(idStr);
|
||||
if (!isNaN(id)) {
|
||||
requestBody.referred_by = { id };
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/leads', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
lead: response.data,
|
||||
message: `Lead "${context.propsValue.first_name} ${context.propsValue.last_name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create lead',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,95 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createLocation = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_location',
|
||||
displayName: 'Create Location',
|
||||
description: 'Creates a new location in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Location Name',
|
||||
description: 'The name of the location',
|
||||
required: true,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
// Add address if any address fields are provided
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/locations', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
location: response.data,
|
||||
message: `Location "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create location',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,162 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createNote = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_note',
|
||||
displayName: 'Create Note',
|
||||
description: 'Creates a new note for a case, client, or company in MyCase',
|
||||
props: {
|
||||
entity_type: Property.StaticDropdown({
|
||||
displayName: 'Entity Type',
|
||||
description: 'Choose the type of entity to create the note for',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Case', value: 'case' },
|
||||
{ label: 'Client', value: 'client' },
|
||||
{ label: 'Company', value: 'company' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'case',
|
||||
}),
|
||||
entity: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Entity',
|
||||
description: 'Select the entity to create the note for',
|
||||
required: true,
|
||||
refreshers: ['entity_type'],
|
||||
options: async ({ auth, entity_type }) => {
|
||||
if (!auth || !entity_type) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please select entity type first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
let endpoint = '';
|
||||
let mapFunction = null;
|
||||
|
||||
switch (entity_type) {
|
||||
case 'case':
|
||||
endpoint = '/cases';
|
||||
mapFunction = (item: any) => ({
|
||||
label: `${item.name}${item.case_number ? ` (${item.case_number})` : ''}`,
|
||||
value: item.id.toString(),
|
||||
});
|
||||
break;
|
||||
case 'client':
|
||||
endpoint = '/clients';
|
||||
mapFunction = (item: any) => ({
|
||||
label: `${item.first_name} ${item.last_name}${item.email ? ` (${item.email})` : ''}`,
|
||||
value: item.id.toString(),
|
||||
});
|
||||
break;
|
||||
case 'company':
|
||||
endpoint = '/companies';
|
||||
mapFunction = (item: any) => ({
|
||||
label: item.name,
|
||||
value: item.id.toString(),
|
||||
});
|
||||
break;
|
||||
default:
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Invalid entity type',
|
||||
};
|
||||
}
|
||||
|
||||
const response = await api.get(endpoint, { page_size: '100' });
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map(mapFunction),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: `Failed to load ${entity_type}s`,
|
||||
};
|
||||
},
|
||||
}),
|
||||
subject: Property.ShortText({
|
||||
displayName: 'Subject',
|
||||
description: 'Subject of the note',
|
||||
required: true,
|
||||
}),
|
||||
note: Property.LongText({
|
||||
displayName: 'Note',
|
||||
description: 'The body text of the note',
|
||||
required: true,
|
||||
}),
|
||||
date: Property.DateTime({
|
||||
displayName: 'Date',
|
||||
description: 'The date and time of the note',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody = {
|
||||
subject: context.propsValue.subject,
|
||||
note: context.propsValue.note,
|
||||
date: new Date(context.propsValue.date).toISOString(),
|
||||
};
|
||||
|
||||
try {
|
||||
let endpoint: string;
|
||||
let entityName: string;
|
||||
|
||||
switch (context.propsValue.entity_type) {
|
||||
case 'case':
|
||||
endpoint = `/cases/${context.propsValue.entity}/notes`;
|
||||
entityName = 'case';
|
||||
break;
|
||||
case 'client':
|
||||
endpoint = `/clients/${context.propsValue.entity}/notes`;
|
||||
entityName = 'client';
|
||||
break;
|
||||
case 'company':
|
||||
endpoint = `/companies/${context.propsValue.entity}/notes`;
|
||||
entityName = 'company';
|
||||
break;
|
||||
default:
|
||||
return {
|
||||
success: false,
|
||||
error: 'Invalid entity type',
|
||||
};
|
||||
}
|
||||
|
||||
const response = await api.post(endpoint, requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
note: response.data,
|
||||
message: `Note "${context.propsValue.subject}" created successfully for ${entityName} ${context.propsValue.entity}`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create note',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,261 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createPerson = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_person',
|
||||
displayName: 'Create Person (Client)',
|
||||
description: 'Creates a new individual client (person) in MyCase',
|
||||
props: {
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'The first name of the client',
|
||||
required: true,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'The last name of the client',
|
||||
required: true,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'The email of the client',
|
||||
required: false,
|
||||
}),
|
||||
middle_name: Property.ShortText({
|
||||
displayName: 'Middle Name',
|
||||
description: 'The middle name of the client',
|
||||
required: false,
|
||||
}),
|
||||
cell_phone_number: Property.ShortText({
|
||||
displayName: 'Cell Phone Number',
|
||||
description: 'Cell phone number',
|
||||
required: false,
|
||||
}),
|
||||
work_phone_number: Property.ShortText({
|
||||
displayName: 'Work Phone Number',
|
||||
description: 'Work phone number',
|
||||
required: false,
|
||||
}),
|
||||
home_phone_number: Property.ShortText({
|
||||
displayName: 'Home Phone Number',
|
||||
description: 'Home phone number',
|
||||
required: false,
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Fax phone number',
|
||||
required: false,
|
||||
}),
|
||||
birthdate: Property.DateTime({
|
||||
displayName: 'Birthdate',
|
||||
description: 'Date of birth',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional information (visible to firm members only)',
|
||||
required: false,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country',
|
||||
required: false,
|
||||
}),
|
||||
people_group: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'People Group',
|
||||
description: 'The people group to associate with this client',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/people_groups', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load people groups',
|
||||
};
|
||||
},
|
||||
}),
|
||||
cases: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Cases',
|
||||
description: 'Cases to associate with this client',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
first_name: context.propsValue.first_name,
|
||||
last_name: context.propsValue.last_name,
|
||||
};
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.email) {
|
||||
requestBody.email = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.middle_name) {
|
||||
requestBody.middle_name = context.propsValue.middle_name;
|
||||
}
|
||||
|
||||
if (context.propsValue.cell_phone_number) {
|
||||
requestBody.cell_phone_number = context.propsValue.cell_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.work_phone_number) {
|
||||
requestBody.work_phone_number = context.propsValue.work_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.home_phone_number) {
|
||||
requestBody.home_phone_number = context.propsValue.home_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.fax_phone_number) {
|
||||
requestBody.fax_phone_number = context.propsValue.fax_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.birthdate) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.birthdate);
|
||||
requestBody.birthdate = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
if (context.propsValue.notes) {
|
||||
requestBody.notes = context.propsValue.notes;
|
||||
}
|
||||
|
||||
// Add address if any address fields are provided
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
// Add people group if provided
|
||||
if (context.propsValue.people_group) {
|
||||
requestBody.people_group = {
|
||||
id: parseInt(context.propsValue.people_group),
|
||||
};
|
||||
}
|
||||
|
||||
// Add cases if provided
|
||||
if (context.propsValue.cases && Array.isArray(context.propsValue.cases)) {
|
||||
requestBody.cases = context.propsValue.cases.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/clients', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
client: response.data,
|
||||
message: `Client "${context.propsValue.first_name} ${context.propsValue.last_name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create client',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createPracticeArea = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_practice_area',
|
||||
displayName: 'Create Practice Area',
|
||||
description: 'Creates a new practice area in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Practice Area Name',
|
||||
description: 'The name of the practice area',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const requestBody = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await api.post('/practice_areas', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
practice_area: response.data,
|
||||
message: `Practice area "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create practice area',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,48 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createReferralSource = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_referral_source',
|
||||
displayName: 'Create Referral Source',
|
||||
description: 'Creates a new referral source in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Referral Source Name',
|
||||
description: 'The name of the referral source',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const requestBody = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await api.post('/referral_sources', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
referral_source: response.data,
|
||||
message: `Referral source "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create referral source',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,177 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createTask = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_task',
|
||||
displayName: 'Create Task',
|
||||
description: 'Creates a new task in MyCase',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Task Name',
|
||||
description: 'The name of this task',
|
||||
required: true,
|
||||
}),
|
||||
priority: Property.StaticDropdown({
|
||||
displayName: 'Priority',
|
||||
description: 'The priority of this task',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Low', value: 'Low' },
|
||||
{ label: 'Medium', value: 'Medium' },
|
||||
{ label: 'High', value: 'High' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'Medium',
|
||||
}),
|
||||
due_date: Property.DateTime({
|
||||
displayName: 'Due Date',
|
||||
description: 'The due date of this task',
|
||||
required: true,
|
||||
}),
|
||||
staff: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Staff',
|
||||
description: 'Staff members to assign this task to',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'Task description',
|
||||
required: false,
|
||||
}),
|
||||
completed: Property.Checkbox({
|
||||
displayName: 'Completed',
|
||||
description: 'Is this task completed?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
case: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case',
|
||||
description: 'The case to associate with this task',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Validate that staff is selected
|
||||
if (!context.propsValue.staff || !Array.isArray(context.propsValue.staff) || context.propsValue.staff.length === 0) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'At least one staff member must be selected',
|
||||
};
|
||||
}
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
priority: context.propsValue.priority,
|
||||
due_date: new Date(context.propsValue.due_date).toISOString().split('T')[0],
|
||||
staff: context.propsValue.staff.map((staffId: string) => ({
|
||||
id: parseInt(staffId),
|
||||
})),
|
||||
};
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.completed !== undefined) {
|
||||
requestBody.completed = context.propsValue.completed;
|
||||
}
|
||||
|
||||
if (context.propsValue.case) {
|
||||
requestBody.case = { id: parseInt(context.propsValue.case) };
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/tasks', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
task: response.data,
|
||||
message: `Task "${context.propsValue.name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create task',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,173 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const createTimeEntry = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'create_time_entry',
|
||||
displayName: 'Create Time Entry',
|
||||
description: 'Creates a new time entry in MyCase',
|
||||
props: {
|
||||
activity_name: Property.ShortText({
|
||||
displayName: 'Activity Name',
|
||||
description: 'The activity name for this time entry',
|
||||
required: true,
|
||||
}),
|
||||
case: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case',
|
||||
description: 'The case to associate with this time entry',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
staff: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Staff',
|
||||
description: 'The staff member associated with this time entry',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
entry_date: Property.DateTime({
|
||||
displayName: 'Entry Date',
|
||||
description: 'The entry date of this time entry',
|
||||
required: true,
|
||||
}),
|
||||
rate: Property.Number({
|
||||
displayName: 'Rate',
|
||||
description: 'The rate in dollars',
|
||||
required: true,
|
||||
}),
|
||||
hours: Property.Number({
|
||||
displayName: 'Hours',
|
||||
description: 'The duration in hours',
|
||||
required: true,
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'Description of the time entry',
|
||||
required: false,
|
||||
}),
|
||||
billable: Property.Checkbox({
|
||||
displayName: 'Billable',
|
||||
description: 'Is this time entry billable?',
|
||||
required: false,
|
||||
defaultValue: true,
|
||||
}),
|
||||
flat_fee: Property.Checkbox({
|
||||
displayName: 'Flat Fee',
|
||||
description: 'Is this time entry a flat fee?',
|
||||
required: false,
|
||||
defaultValue: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
// Build the request body
|
||||
const requestBody: any = {
|
||||
activity_name: context.propsValue.activity_name,
|
||||
case: { id: parseInt(context.propsValue.case) },
|
||||
staff: { id: parseInt(context.propsValue.staff) },
|
||||
entry_date: new Date(context.propsValue.entry_date).toISOString().split('T')[0],
|
||||
rate: context.propsValue.rate,
|
||||
hours: context.propsValue.hours,
|
||||
};
|
||||
|
||||
// Add optional fields
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.billable !== undefined) {
|
||||
requestBody.billable = context.propsValue.billable;
|
||||
}
|
||||
|
||||
if (context.propsValue.flat_fee !== undefined) {
|
||||
requestBody.flat_fee = context.propsValue.flat_fee;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.post('/time_entries', requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
time_entry: response.data,
|
||||
message: `Time entry "${context.propsValue.activity_name}" created successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to create time entry',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findCall = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_call',
|
||||
displayName: 'Find Call',
|
||||
description: 'Searches for calls with optional filters',
|
||||
props: {
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter calls updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/calls', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
calls: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find calls',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findCaseStage = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_case_stage',
|
||||
displayName: 'Find Case Stage',
|
||||
description: 'Searches for case stages with optional filters',
|
||||
props: {
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter case stages updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/case_stages', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
case_stages: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find case stages',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,94 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findCase = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_case',
|
||||
displayName: 'Find Case',
|
||||
description: 'Searches for cases with optional filters',
|
||||
props: {
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
description: 'Filter by case status',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Open', value: 'open' },
|
||||
{ label: 'Closed', value: 'closed' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter cases updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
client_fields: Property.ShortText({
|
||||
displayName: 'Client Fields',
|
||||
description: 'Comma-separated list of client fields to include (e.g., id,first_name,last_name)',
|
||||
required: false,
|
||||
}),
|
||||
custom_field_fields: Property.ShortText({
|
||||
displayName: 'Custom Field Fields',
|
||||
description: 'Comma-separated list of custom field fields to include (e.g., id,field_type)',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.status) {
|
||||
queryParams['filter[status]'] = context.propsValue.status;
|
||||
}
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
if (context.propsValue.client_fields) {
|
||||
queryParams['field[client]'] = context.propsValue.client_fields;
|
||||
}
|
||||
|
||||
if (context.propsValue.custom_field_fields) {
|
||||
queryParams['field[custom_field]'] = context.propsValue.custom_field_fields;
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/cases', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
cases: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find cases',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,97 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findCompany = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_company',
|
||||
displayName: 'Find Company',
|
||||
description: 'Searches for companies with optional filters',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Name',
|
||||
description: 'Filter by company name',
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'Filter by email address',
|
||||
required: false,
|
||||
}),
|
||||
main_phone_number: Property.ShortText({
|
||||
displayName: 'Main Phone Number',
|
||||
description: 'Filter by main phone number',
|
||||
required: false,
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Filter by fax phone number',
|
||||
required: false,
|
||||
}),
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter companies updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.name) {
|
||||
queryParams['filter[name]'] = context.propsValue.name;
|
||||
}
|
||||
|
||||
if (context.propsValue.email) {
|
||||
queryParams['filter[email]'] = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.main_phone_number) {
|
||||
queryParams['filter[main_phone_number]'] = context.propsValue.main_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.fax_phone_number) {
|
||||
queryParams['filter[fax_phone_number]'] = context.propsValue.fax_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/companies', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
companies: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find companies',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,60 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findLocation = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_location',
|
||||
displayName: 'Find Location',
|
||||
description: 'Searches for locations with optional filters',
|
||||
props: {
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter locations updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
queryParams['filter[updated_after]'] = context.propsValue.updated_after;
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/locations', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
locations: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find locations',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,72 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreateCaseStage = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_case_stage',
|
||||
displayName: 'Find or Create Case Stage',
|
||||
description: 'Finds a case stage by name or creates a new one if it does not exist',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Case Stage Name',
|
||||
description: 'The name of the case stage to find or create',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const stageName = context.propsValue.name;
|
||||
|
||||
try {
|
||||
// First, try to find the case stage
|
||||
const findResponse = await api.get('/case_stages', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
// Search for a case stage with matching name
|
||||
const existingStage = findResponse.data.find(
|
||||
(stage: any) => stage.name && stage.name.toLowerCase() === stageName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingStage) {
|
||||
return {
|
||||
success: true,
|
||||
case_stage: existingStage,
|
||||
created: false,
|
||||
message: `Case stage "${stageName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Case stage not found, create a new one
|
||||
const requestBody = {
|
||||
name: stageName,
|
||||
};
|
||||
|
||||
const createResponse = await api.post('/case_stages', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
case_stage: createResponse.data,
|
||||
created: true,
|
||||
message: `Case stage "${stageName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create case stage',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,481 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreateCase = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_case',
|
||||
displayName: 'Find or Create Case',
|
||||
description: 'Finds a case by name or creates a new one if it does not exist',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Case Name',
|
||||
description: 'The name of the case to find or create',
|
||||
required: true
|
||||
}),
|
||||
case_number: Property.ShortText({
|
||||
displayName: 'Case Number',
|
||||
description: 'An identifier for this case (used only when creating)',
|
||||
required: false
|
||||
}),
|
||||
opened_date: Property.DateTime({
|
||||
displayName: 'Opened Date',
|
||||
description: 'The date the case was created/opened (used only when creating)',
|
||||
required: false
|
||||
}),
|
||||
case_stage: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case Stage',
|
||||
description: 'The stage the case is currently in (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/case_stages', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((stage: any) => ({
|
||||
label: stage.name,
|
||||
value: stage.name,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load case stages',
|
||||
};
|
||||
},
|
||||
}),
|
||||
practice_area: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Practice Area',
|
||||
description: 'The practice area for this case (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/practice_areas', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((area: any) => ({
|
||||
label: area.name,
|
||||
value: area.name,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load practice areas',
|
||||
};
|
||||
},
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'A description for the case (used only when creating)',
|
||||
required: false
|
||||
}),
|
||||
sol_date: Property.DateTime({
|
||||
displayName: 'Statute of Limitations Date',
|
||||
description: 'The statute of limitations date (used only when creating)',
|
||||
required: false
|
||||
}),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
description: 'The status of the case (used only when creating)',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Open', value: 'open' },
|
||||
{ label: 'Closed', value: 'closed' }
|
||||
]
|
||||
},
|
||||
defaultValue: 'open'
|
||||
}),
|
||||
outstanding_balance: Property.Number({
|
||||
displayName: 'Outstanding Balance',
|
||||
description: 'The outstanding balance of this case (used only when creating)',
|
||||
required: false
|
||||
}),
|
||||
billing_contact: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Billing Contact',
|
||||
description: 'The client or company to assign as the billing contact (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
|
||||
// Get clients
|
||||
const clientsResponse = await api.get('/clients', { page_size: '50' });
|
||||
const clientOptions = clientsResponse.success && Array.isArray(clientsResponse.data)
|
||||
? clientsResponse.data.map((client: any) => ({
|
||||
label: `Client: ${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: `client_${client.id}`,
|
||||
}))
|
||||
: [];
|
||||
|
||||
// Get companies
|
||||
const companiesResponse = await api.get('/companies', { page_size: '50' });
|
||||
const companyOptions = companiesResponse.success && Array.isArray(companiesResponse.data)
|
||||
? companiesResponse.data.map((company: any) => ({
|
||||
label: `Company: ${company.name}`,
|
||||
value: `company_${company.id}`,
|
||||
}))
|
||||
: [];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: [...clientOptions, ...companyOptions],
|
||||
};
|
||||
},
|
||||
}),
|
||||
clients: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Clients',
|
||||
description: 'Clients to associate with the case (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: client.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
}),
|
||||
companies: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Companies',
|
||||
description: 'Companies to associate with the case (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/companies', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((company: any) => ({
|
||||
label: company.name,
|
||||
value: company.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load companies',
|
||||
};
|
||||
},
|
||||
}),
|
||||
staff: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Staff',
|
||||
description: 'Staff members to associate with the case (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
lead_lawyer: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Lead Lawyer',
|
||||
description: 'Select the lead lawyer for this case (used only when creating)',
|
||||
required: false,
|
||||
refreshers: ['staff'],
|
||||
options: async ({ auth, staff }) => {
|
||||
if (!auth || !staff || !Array.isArray(staff) || staff.length === 0) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select staff members first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
const selectedStaff = response.data.filter((s: any) =>
|
||||
staff.includes(s.id.toString())
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: selectedStaff.map((s: any) => ({
|
||||
label: `${s.first_name} ${s.last_name}`,
|
||||
value: s.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
originating_lawyer: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Originating Lawyer',
|
||||
description: 'Select the originating lawyer for this case (used only when creating)',
|
||||
required: false,
|
||||
refreshers: ['staff'],
|
||||
options: async ({ auth, staff }) => {
|
||||
if (!auth || !staff || !Array.isArray(staff) || staff.length === 0) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select staff members first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
const selectedStaff = response.data.filter((s: any) =>
|
||||
staff.includes(s.id.toString())
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: selectedStaff.map((s: any) => ({
|
||||
label: `${s.first_name} ${s.last_name}`,
|
||||
value: s.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const caseName = context.propsValue.name;
|
||||
|
||||
try {
|
||||
// First, try to find the case
|
||||
const findResponse = await api.get('/cases', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
// Search for a case with matching name
|
||||
const existingCase = findResponse.data.find(
|
||||
(c: any) => c.name && c.name.toLowerCase() === caseName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingCase) {
|
||||
return {
|
||||
success: true,
|
||||
case: existingCase,
|
||||
created: false,
|
||||
message: `Case "${caseName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Case not found, create a new one
|
||||
const requestBody: any = {
|
||||
name: caseName
|
||||
};
|
||||
|
||||
if (context.propsValue.case_number) {
|
||||
requestBody.case_number = context.propsValue.case_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.opened_date) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.opened_date);
|
||||
requestBody.opened_date = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
if (context.propsValue.case_stage) {
|
||||
requestBody.case_stage = context.propsValue.case_stage;
|
||||
}
|
||||
|
||||
if (context.propsValue.practice_area) {
|
||||
requestBody.practice_area = context.propsValue.practice_area;
|
||||
}
|
||||
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.sol_date) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.sol_date);
|
||||
requestBody.sol_date = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
if (context.propsValue.status) {
|
||||
requestBody.status = context.propsValue.status;
|
||||
}
|
||||
|
||||
if (context.propsValue.outstanding_balance !== undefined) {
|
||||
requestBody.outstanding_balance = context.propsValue.outstanding_balance;
|
||||
}
|
||||
|
||||
// Add billing contact if provided
|
||||
if (context.propsValue.billing_contact) {
|
||||
const [type, idStr] = context.propsValue.billing_contact.split('_');
|
||||
const id = parseInt(idStr);
|
||||
if (!isNaN(id)) {
|
||||
requestBody.billing_contact = { id };
|
||||
}
|
||||
}
|
||||
|
||||
// Add clients if provided
|
||||
if (context.propsValue.clients && Array.isArray(context.propsValue.clients)) {
|
||||
requestBody.clients = context.propsValue.clients.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add companies if provided
|
||||
if (context.propsValue.companies && Array.isArray(context.propsValue.companies)) {
|
||||
requestBody.companies = context.propsValue.companies.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add staff if provided
|
||||
if (context.propsValue.staff && Array.isArray(context.propsValue.staff)) {
|
||||
const leadLawyerId = context.propsValue.lead_lawyer ? parseInt(context.propsValue.lead_lawyer) : null;
|
||||
const originatingLawyerId = context.propsValue.originating_lawyer ? parseInt(context.propsValue.originating_lawyer) : null;
|
||||
|
||||
requestBody.staff = context.propsValue.staff.map(staffId => ({
|
||||
id: parseInt(staffId),
|
||||
lead_lawyer: leadLawyerId === parseInt(staffId),
|
||||
originating_lawyer: originatingLawyerId === parseInt(staffId),
|
||||
}));
|
||||
}
|
||||
|
||||
const createResponse = await api.post('/cases', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
case: createResponse.data,
|
||||
created: true,
|
||||
message: `Case "${caseName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create case',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,243 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreateCompany = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_company',
|
||||
displayName: 'Find or Create Company',
|
||||
description: 'Finds a company by name or creates a new one if it does not exist',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
description: 'The name of the company to find or create',
|
||||
required: true,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'Company email address (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
website: Property.ShortText({
|
||||
displayName: 'Website',
|
||||
description: 'Company website URL (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
main_phone_number: Property.ShortText({
|
||||
displayName: 'Main Phone Number',
|
||||
description: 'Main phone number for the company (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Fax phone number for the company (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1 (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2 (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional information about the company (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
cases: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Cases',
|
||||
description: 'Cases to associate with the company (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
clients: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Clients',
|
||||
description: 'Clients to associate with the company (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: client.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const companyName = context.propsValue.name;
|
||||
|
||||
try {
|
||||
// First, try to find the company
|
||||
const findResponse = await api.get('/companies', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
const existingCompany = findResponse.data.find(
|
||||
(c: any) => c.name && c.name.toLowerCase() === companyName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingCompany) {
|
||||
return {
|
||||
success: true,
|
||||
company: existingCompany,
|
||||
created: false,
|
||||
message: `Company "${companyName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Company not found, create a new one
|
||||
const requestBody: any = {
|
||||
name: companyName,
|
||||
};
|
||||
|
||||
if (context.propsValue.email) {
|
||||
requestBody.email = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.website) {
|
||||
requestBody.website = context.propsValue.website;
|
||||
}
|
||||
|
||||
if (context.propsValue.main_phone_number) {
|
||||
requestBody.main_phone_number = context.propsValue.main_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.fax_phone_number) {
|
||||
requestBody.fax_phone_number = context.propsValue.fax_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.notes) {
|
||||
requestBody.notes = context.propsValue.notes;
|
||||
}
|
||||
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
// Add cases if provided
|
||||
if (context.propsValue.cases && Array.isArray(context.propsValue.cases)) {
|
||||
requestBody.cases = context.propsValue.cases.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add clients if provided
|
||||
if (context.propsValue.clients && Array.isArray(context.propsValue.clients)) {
|
||||
requestBody.clients = context.propsValue.clients.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
const createResponse = await api.post('/companies', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
company: createResponse.data,
|
||||
created: true,
|
||||
message: `Company "${companyName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create company',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,116 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreateLocation = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_location',
|
||||
displayName: 'Find or Create Location',
|
||||
description: 'Finds a location by name or creates a new one if it does not exist',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Location Name',
|
||||
description: 'The name of the location to find or create',
|
||||
required: true,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1 (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2 (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const locationName = context.propsValue.name;
|
||||
|
||||
try {
|
||||
// First, try to find the location
|
||||
const findResponse = await api.get('/locations', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
const existingLocation = findResponse.data.find(
|
||||
(loc: any) => loc.name && loc.name.toLowerCase() === locationName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingLocation) {
|
||||
return {
|
||||
success: true,
|
||||
location: existingLocation,
|
||||
created: false,
|
||||
message: `Location "${locationName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Location not found, create a new one
|
||||
const requestBody: any = {
|
||||
name: locationName,
|
||||
};
|
||||
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
const createResponse = await api.post('/locations', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
location: createResponse.data,
|
||||
created: true,
|
||||
message: `Location "${locationName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create location',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,283 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreatePerson = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_person',
|
||||
displayName: 'Find or Create Person (Client)',
|
||||
description: 'Finds a person by first and last name or creates a new one if not found',
|
||||
props: {
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'The first name of the client',
|
||||
required: true,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'The last name of the client',
|
||||
required: true,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'The email of the client (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
middle_name: Property.ShortText({
|
||||
displayName: 'Middle Name',
|
||||
description: 'The middle name of the client (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
cell_phone_number: Property.ShortText({
|
||||
displayName: 'Cell Phone Number',
|
||||
description: 'Cell phone number (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
work_phone_number: Property.ShortText({
|
||||
displayName: 'Work Phone Number',
|
||||
description: 'Work phone number (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
home_phone_number: Property.ShortText({
|
||||
displayName: 'Home Phone Number',
|
||||
description: 'Home phone number (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Fax phone number (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
birthdate: Property.ShortText({
|
||||
displayName: 'Birthdate',
|
||||
description: 'Date of birth in ISO-8601 format: YYYY-MM-DD (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional information (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1 (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2 (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country (used only when creating)',
|
||||
required: false,
|
||||
}),
|
||||
people_group: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'People Group',
|
||||
description: 'The people group to associate (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/people_groups', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load people groups',
|
||||
};
|
||||
},
|
||||
}),
|
||||
cases: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Cases',
|
||||
description: 'Cases to associate with the client (used only when creating)',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const firstName = context.propsValue.first_name;
|
||||
const lastName = context.propsValue.last_name;
|
||||
|
||||
try {
|
||||
// First, try to find the person
|
||||
const findResponse = await api.get('/clients', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
const existingPerson = findResponse.data.find(
|
||||
(p: any) =>
|
||||
p.first_name && p.last_name &&
|
||||
p.first_name.toLowerCase() === firstName.toLowerCase() &&
|
||||
p.last_name.toLowerCase() === lastName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingPerson) {
|
||||
return {
|
||||
success: true,
|
||||
client: existingPerson,
|
||||
created: false,
|
||||
message: `Client "${firstName} ${lastName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Person not found, create a new one
|
||||
const requestBody: any = {
|
||||
first_name: firstName,
|
||||
last_name: lastName,
|
||||
};
|
||||
|
||||
if (context.propsValue.email) {
|
||||
requestBody.email = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.middle_name) {
|
||||
requestBody.middle_name = context.propsValue.middle_name;
|
||||
}
|
||||
|
||||
if (context.propsValue.cell_phone_number) {
|
||||
requestBody.cell_phone_number = context.propsValue.cell_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.work_phone_number) {
|
||||
requestBody.work_phone_number = context.propsValue.work_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.home_phone_number) {
|
||||
requestBody.home_phone_number = context.propsValue.home_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.fax_phone_number) {
|
||||
requestBody.fax_phone_number = context.propsValue.fax_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.birthdate) {
|
||||
requestBody.birthdate = context.propsValue.birthdate;
|
||||
}
|
||||
|
||||
if (context.propsValue.notes) {
|
||||
requestBody.notes = context.propsValue.notes;
|
||||
}
|
||||
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
// Add people group if provided
|
||||
if (context.propsValue.people_group) {
|
||||
requestBody.people_group = {
|
||||
id: parseInt(context.propsValue.people_group),
|
||||
};
|
||||
}
|
||||
|
||||
// Add cases if provided
|
||||
if (context.propsValue.cases && Array.isArray(context.propsValue.cases)) {
|
||||
requestBody.cases = context.propsValue.cases.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
const createResponse = await api.post('/clients', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
client: createResponse.data,
|
||||
created: true,
|
||||
message: `Client "${firstName} ${lastName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create client',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,71 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreatePracticeArea = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_practice_area',
|
||||
displayName: 'Find or Create Practice Area',
|
||||
description: 'Finds a practice area by name or creates a new one if it does not exist',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Practice Area Name',
|
||||
description: 'The name of the practice area to find or create',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const practiceAreaName = context.propsValue.name;
|
||||
|
||||
try {
|
||||
// First, try to find the practice area
|
||||
const findResponse = await api.get('/practice_areas', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
const existingPracticeArea = findResponse.data.find(
|
||||
(pa: any) => pa.name && pa.name.toLowerCase() === practiceAreaName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingPracticeArea) {
|
||||
return {
|
||||
success: true,
|
||||
practice_area: existingPracticeArea,
|
||||
created: false,
|
||||
message: `Practice area "${practiceAreaName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Practice area not found, create a new one
|
||||
const requestBody = {
|
||||
name: practiceAreaName,
|
||||
};
|
||||
|
||||
const createResponse = await api.post('/practice_areas', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
practice_area: createResponse.data,
|
||||
created: true,
|
||||
message: `Practice area "${practiceAreaName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create practice area',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,71 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findOrCreateReferralSource = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_or_create_referral_source',
|
||||
displayName: 'Find or Create Referral Source',
|
||||
description: 'Finds a referral source by name or creates a new one if it does not exist',
|
||||
props: {
|
||||
name: Property.ShortText({
|
||||
displayName: 'Referral Source Name',
|
||||
description: 'The name of the referral source to find or create',
|
||||
required: true,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
const referralSourceName = context.propsValue.name;
|
||||
|
||||
try {
|
||||
// First, try to find the referral source
|
||||
const findResponse = await api.get('/referral_sources', {
|
||||
page_size: '1000'
|
||||
});
|
||||
|
||||
if (findResponse.success && Array.isArray(findResponse.data)) {
|
||||
const existingReferralSource = findResponse.data.find(
|
||||
(rs: any) => rs.name && rs.name.toLowerCase() === referralSourceName.toLowerCase()
|
||||
);
|
||||
|
||||
if (existingReferralSource) {
|
||||
return {
|
||||
success: true,
|
||||
referral_source: existingReferralSource,
|
||||
created: false,
|
||||
message: `Referral source "${referralSourceName}" found`
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
// Referral source not found, create a new one
|
||||
const requestBody = {
|
||||
name: referralSourceName,
|
||||
};
|
||||
|
||||
const createResponse = await api.post('/referral_sources', requestBody);
|
||||
|
||||
if (createResponse.success) {
|
||||
return {
|
||||
success: true,
|
||||
referral_source: createResponse.data,
|
||||
created: true,
|
||||
message: `Referral source "${referralSourceName}" created successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: createResponse.error,
|
||||
details: createResponse.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find or create referral source',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findPeopleGroup = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_people_group',
|
||||
displayName: 'Find People Group',
|
||||
description: 'Searches for people groups with optional filters',
|
||||
props: {
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter people groups updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/people_groups', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
people_groups: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find people groups',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,115 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findPerson = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_person',
|
||||
displayName: 'Find Person (Client)',
|
||||
description: 'Searches for clients (people) with optional filters',
|
||||
props: {
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'Filter by first name',
|
||||
required: false,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'Filter by last name',
|
||||
required: false,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'Filter by email address',
|
||||
required: false,
|
||||
}),
|
||||
cell_phone_number: Property.ShortText({
|
||||
displayName: 'Cell Phone Number',
|
||||
description: 'Filter by cell phone number',
|
||||
required: false,
|
||||
}),
|
||||
work_phone_number: Property.ShortText({
|
||||
displayName: 'Work Phone Number',
|
||||
description: 'Filter by work phone number',
|
||||
required: false,
|
||||
}),
|
||||
home_phone_number: Property.ShortText({
|
||||
displayName: 'Home Phone Number',
|
||||
description: 'Filter by home phone number',
|
||||
required: false,
|
||||
}),
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter clients updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.first_name) {
|
||||
queryParams['filter[first_name]'] = context.propsValue.first_name;
|
||||
}
|
||||
|
||||
if (context.propsValue.last_name) {
|
||||
queryParams['filter[last_name]'] = context.propsValue.last_name;
|
||||
}
|
||||
|
||||
if (context.propsValue.email) {
|
||||
queryParams['filter[email]'] = context.propsValue.email;
|
||||
}
|
||||
|
||||
if (context.propsValue.cell_phone_number) {
|
||||
queryParams['filter[cell_phone_number]'] = context.propsValue.cell_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.work_phone_number) {
|
||||
queryParams['filter[work_phone_number]'] = context.propsValue.work_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.home_phone_number) {
|
||||
queryParams['filter[home_phone_number]'] = context.propsValue.home_phone_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/clients', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
clients: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find clients',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findPracticeArea = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_practice_area',
|
||||
displayName: 'Find Practice Area',
|
||||
description: 'Searches for practice areas with optional filters',
|
||||
props: {
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter practice areas updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/practice_areas', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
practice_areas: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find practice areas',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,61 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findReferralSource = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_referral_source',
|
||||
displayName: 'Find Referral Source',
|
||||
description: 'Searches for referral sources with optional filters',
|
||||
props: {
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter referral sources updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/referral_sources', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
referral_sources: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find referral sources',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,76 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const findStaff = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'find_staff',
|
||||
displayName: 'Find Staff',
|
||||
description: 'Searches for staff members with optional filters',
|
||||
props: {
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
description: 'Filter by staff status',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Active', value: 'active' },
|
||||
{ label: 'Inactive', value: 'inactive' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
updated_after: Property.DateTime({
|
||||
displayName: 'Updated After',
|
||||
description: 'Filter staff updated after this date and time',
|
||||
required: false,
|
||||
}),
|
||||
page_size: Property.Number({
|
||||
displayName: 'Page Size',
|
||||
description: 'Number of results per page (1-1000)',
|
||||
required: false,
|
||||
defaultValue: 25,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const queryParams: Record<string, string> = {};
|
||||
|
||||
if (context.propsValue.status) {
|
||||
queryParams['filter[status]'] = context.propsValue.status;
|
||||
}
|
||||
|
||||
if (context.propsValue.updated_after) {
|
||||
// Convert DateTime to ISO string format
|
||||
queryParams['filter[updated_after]'] = new Date(context.propsValue.updated_after).toISOString();
|
||||
}
|
||||
|
||||
if (context.propsValue.page_size) {
|
||||
queryParams['page_size'] = context.propsValue.page_size.toString();
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.get('/staff', queryParams);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
staff: response.data,
|
||||
count: Array.isArray(response.data) ? response.data.length : 0,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to find staff',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,85 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { HttpMethod, httpClient } from '@activepieces/pieces-common';
|
||||
import { mycaseAuth } from '../../index';
|
||||
|
||||
export const makeRequest = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'make_request',
|
||||
displayName: 'API Request',
|
||||
description: 'Makes a raw HTTP request to the MyCase API',
|
||||
props: {
|
||||
method: Property.StaticDropdown({
|
||||
displayName: 'Method',
|
||||
description: 'HTTP method to use',
|
||||
required: true,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'GET', value: 'GET' },
|
||||
{ label: 'POST', value: 'POST' },
|
||||
{ label: 'PUT', value: 'PUT' },
|
||||
{ label: 'PATCH', value: 'PATCH' },
|
||||
{ label: 'DELETE', value: 'DELETE' },
|
||||
],
|
||||
},
|
||||
defaultValue: 'GET',
|
||||
}),
|
||||
path: Property.ShortText({
|
||||
displayName: 'Path',
|
||||
description: 'API endpoint path (e.g., /cases or /clients/123)',
|
||||
required: true,
|
||||
}),
|
||||
query_params: Property.Object({
|
||||
displayName: 'Query Parameters',
|
||||
description: 'Query parameters as JSON object',
|
||||
required: false,
|
||||
}),
|
||||
body: Property.Json({
|
||||
displayName: 'Request Body',
|
||||
description: 'Request body as JSON (for POST, PUT, PATCH)',
|
||||
required: false,
|
||||
}),
|
||||
headers: Property.Object({
|
||||
displayName: 'Additional Headers',
|
||||
description: 'Additional headers as JSON object',
|
||||
required: false,
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const baseUrl = 'https://external-integrations.mycase.com/v1';
|
||||
const path = context.propsValue.path.startsWith('/')
|
||||
? context.propsValue.path
|
||||
: `/${context.propsValue.path}`;
|
||||
|
||||
const url = `${baseUrl}${path}`;
|
||||
|
||||
const headers: Record<string, string> = {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${context.auth.access_token}`,
|
||||
...((context.propsValue.headers as Record<string, string>) || {}),
|
||||
};
|
||||
|
||||
try {
|
||||
const response = await httpClient.sendRequest({
|
||||
method: context.propsValue.method as HttpMethod,
|
||||
url,
|
||||
headers,
|
||||
queryParams: context.propsValue.query_params as Record<string, string>,
|
||||
body: context.propsValue.body,
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
status: response.status,
|
||||
headers: response.headers,
|
||||
body: response.body,
|
||||
};
|
||||
} catch (error: any) {
|
||||
return {
|
||||
success: false,
|
||||
status: error.response?.status,
|
||||
error: error.message || 'Request failed',
|
||||
details: error.response?.body || error,
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,493 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const updateCase = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'update_case',
|
||||
displayName: 'Update Case',
|
||||
description: 'Updates an existing case in MyCase',
|
||||
props: {
|
||||
case_id: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case',
|
||||
description: 'Select the case to update',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''} - ID: ${caseItem.id}`,
|
||||
value: caseItem.id,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Case Name',
|
||||
description: 'The name of the case (must be unique)',
|
||||
required: true,
|
||||
}),
|
||||
case_number: Property.ShortText({
|
||||
displayName: 'Case Number',
|
||||
description: 'An identifier for this case',
|
||||
required: false,
|
||||
}),
|
||||
opened_date: Property.DateTime({
|
||||
displayName: 'Opened Date',
|
||||
description: 'The date the case was created/opened',
|
||||
required: false,
|
||||
}),
|
||||
case_stage: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Case Stage',
|
||||
description: 'The stage the case is currently in',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/case_stages', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((stage: any) => ({
|
||||
label: stage.name,
|
||||
value: stage.name,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load case stages',
|
||||
};
|
||||
},
|
||||
}),
|
||||
practice_area: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Practice Area',
|
||||
description: 'The practice area for this case',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/practice_areas', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((area: any) => ({
|
||||
label: area.name,
|
||||
value: area.name,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load practice areas',
|
||||
};
|
||||
},
|
||||
}),
|
||||
description: Property.LongText({
|
||||
displayName: 'Description',
|
||||
description: 'A description for the case',
|
||||
required: false,
|
||||
}),
|
||||
sol_date: Property.DateTime({
|
||||
displayName: 'Statute of Limitations Date',
|
||||
description: 'The statute of limitations date',
|
||||
required: false,
|
||||
}),
|
||||
status: Property.StaticDropdown({
|
||||
displayName: 'Status',
|
||||
description: 'The status of the case',
|
||||
required: false,
|
||||
options: {
|
||||
options: [
|
||||
{ label: 'Open', value: 'open' },
|
||||
{ label: 'Closed', value: 'closed' },
|
||||
],
|
||||
},
|
||||
}),
|
||||
outstanding_balance: Property.Number({
|
||||
displayName: 'Outstanding Balance',
|
||||
description: 'The outstanding balance of this case',
|
||||
required: false,
|
||||
}),
|
||||
billing_contact: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Billing Contact',
|
||||
description: 'The client or company to assign as the billing contact',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
|
||||
// Get clients
|
||||
const clientsResponse = await api.get('/clients', { page_size: '50' });
|
||||
const clientOptions = clientsResponse.success && Array.isArray(clientsResponse.data)
|
||||
? clientsResponse.data.map((client: any) => ({
|
||||
label: `Client: ${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: `client_${client.id}`,
|
||||
}))
|
||||
: [];
|
||||
|
||||
// Get companies
|
||||
const companiesResponse = await api.get('/companies', { page_size: '50' });
|
||||
const companyOptions = companiesResponse.success && Array.isArray(companiesResponse.data)
|
||||
? companiesResponse.data.map((company: any) => ({
|
||||
label: `Company: ${company.name}`,
|
||||
value: `company_${company.id}`,
|
||||
}))
|
||||
: [];
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: [...clientOptions, ...companyOptions],
|
||||
};
|
||||
},
|
||||
}),
|
||||
clients: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Clients',
|
||||
description: 'Clients to associate with the case',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: client.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
}),
|
||||
companies: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Companies',
|
||||
description: 'Companies to associate with the case',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/companies', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((company: any) => ({
|
||||
label: company.name,
|
||||
value: company.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load companies',
|
||||
};
|
||||
},
|
||||
}),
|
||||
staff: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Staff',
|
||||
description: 'Staff members to associate with the case',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((staff: any) => ({
|
||||
label: `${staff.first_name} ${staff.last_name}`,
|
||||
value: staff.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
lead_lawyer: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Lead Lawyer',
|
||||
description: 'Select the lead lawyer for this case',
|
||||
required: false,
|
||||
refreshers: ['staff'],
|
||||
options: async ({ auth, staff }) => {
|
||||
if (!auth || !staff || !Array.isArray(staff) || staff.length === 0) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select staff members first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
const selectedStaff = response.data.filter((s: any) =>
|
||||
staff.includes(s.id.toString())
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: selectedStaff.map((s: any) => ({
|
||||
label: `${s.first_name} ${s.last_name}`,
|
||||
value: s.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
originating_lawyer: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Originating Lawyer',
|
||||
description: 'Select the originating lawyer for this case',
|
||||
required: false,
|
||||
refreshers: ['staff'],
|
||||
options: async ({ auth, staff }) => {
|
||||
if (!auth || !staff || !Array.isArray(staff) || staff.length === 0) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Select staff members first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/staff', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
const selectedStaff = response.data.filter((s: any) =>
|
||||
staff.includes(s.id.toString())
|
||||
);
|
||||
|
||||
return {
|
||||
disabled: false,
|
||||
options: selectedStaff.map((s: any) => ({
|
||||
label: `${s.first_name} ${s.last_name}`,
|
||||
value: s.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load staff',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name,
|
||||
};
|
||||
|
||||
// Add optional fields if provided
|
||||
if (context.propsValue.case_number) {
|
||||
requestBody.case_number = context.propsValue.case_number;
|
||||
}
|
||||
|
||||
if (context.propsValue.opened_date) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.opened_date);
|
||||
requestBody.opened_date = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
if (context.propsValue.case_stage) {
|
||||
requestBody.case_stage = context.propsValue.case_stage;
|
||||
}
|
||||
|
||||
if (context.propsValue.practice_area) {
|
||||
requestBody.practice_area = context.propsValue.practice_area;
|
||||
}
|
||||
|
||||
if (context.propsValue.description) {
|
||||
requestBody.description = context.propsValue.description;
|
||||
}
|
||||
|
||||
if (context.propsValue.sol_date) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.sol_date);
|
||||
requestBody.sol_date = date.toISOString().split('T')[0];
|
||||
}
|
||||
|
||||
if (context.propsValue.status) {
|
||||
requestBody.status = context.propsValue.status;
|
||||
}
|
||||
|
||||
if (context.propsValue.outstanding_balance !== undefined) {
|
||||
requestBody.outstanding_balance = context.propsValue.outstanding_balance;
|
||||
}
|
||||
|
||||
// Add billing contact if provided
|
||||
if (context.propsValue.billing_contact) {
|
||||
const [type, idStr] = context.propsValue.billing_contact.split('_');
|
||||
const id = parseInt(idStr);
|
||||
if (!isNaN(id)) {
|
||||
requestBody.billing_contact = { id };
|
||||
}
|
||||
}
|
||||
|
||||
// Add clients if provided
|
||||
if (context.propsValue.clients && Array.isArray(context.propsValue.clients)) {
|
||||
requestBody.clients = context.propsValue.clients.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add companies if provided
|
||||
if (context.propsValue.companies && Array.isArray(context.propsValue.companies)) {
|
||||
requestBody.companies = context.propsValue.companies.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add staff if provided
|
||||
if (context.propsValue.staff && Array.isArray(context.propsValue.staff)) {
|
||||
const leadLawyerId = context.propsValue.lead_lawyer ? parseInt(context.propsValue.lead_lawyer) : null;
|
||||
const originatingLawyerId = context.propsValue.originating_lawyer ? parseInt(context.propsValue.originating_lawyer) : null;
|
||||
|
||||
requestBody.staff = context.propsValue.staff.map(staffId => ({
|
||||
id: parseInt(staffId),
|
||||
lead_lawyer: leadLawyerId === parseInt(staffId),
|
||||
originating_lawyer: originatingLawyerId === parseInt(staffId),
|
||||
}));
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.put(`/cases/${context.propsValue.case_id}`, requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
message: `Case ${context.propsValue.case_id} updated successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to update case',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,254 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const updateCompany = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'update_company',
|
||||
displayName: 'Update Company',
|
||||
description: 'Updates an existing company in MyCase',
|
||||
props: {
|
||||
company_id: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Company',
|
||||
description: 'Select the company to update',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first'
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/companies', {
|
||||
page_size: '100'
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((company: any) => ({
|
||||
label: `${company.name}${
|
||||
company.email ? ` (${company.email})` : ''
|
||||
} - ID: ${company.id}`,
|
||||
value: company.id
|
||||
}))
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load companies'
|
||||
};
|
||||
}
|
||||
}),
|
||||
name: Property.ShortText({
|
||||
displayName: 'Company Name',
|
||||
description: 'The name of the company',
|
||||
required: true
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'Company email address',
|
||||
required: false
|
||||
}),
|
||||
website: Property.ShortText({
|
||||
displayName: 'Website',
|
||||
description: 'Company website URL',
|
||||
required: false
|
||||
}),
|
||||
main_phone_number: Property.ShortText({
|
||||
displayName: 'Main Phone Number',
|
||||
description: 'Main phone number for the company',
|
||||
required: false
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Fax phone number for the company',
|
||||
required: false
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1',
|
||||
required: false
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2',
|
||||
required: false
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City',
|
||||
required: false
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State',
|
||||
required: false
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code',
|
||||
required: false
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country',
|
||||
required: false
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description:
|
||||
'Additional information about the company (visible to firm members only)',
|
||||
required: false
|
||||
}),
|
||||
cases: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Cases',
|
||||
description: 'Cases to associate with the company',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
clients: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Clients',
|
||||
description: 'Clients to associate with the company',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''}`,
|
||||
value: client.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
})
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const requestBody: any = {
|
||||
name: context.propsValue.name
|
||||
};
|
||||
|
||||
if (context.propsValue.email) requestBody.email = context.propsValue.email;
|
||||
if (context.propsValue.website)
|
||||
requestBody.website = context.propsValue.website;
|
||||
if (context.propsValue.main_phone_number)
|
||||
requestBody.main_phone_number = context.propsValue.main_phone_number;
|
||||
if (context.propsValue.fax_phone_number)
|
||||
requestBody.fax_phone_number = context.propsValue.fax_phone_number;
|
||||
if (context.propsValue.notes) requestBody.notes = context.propsValue.notes;
|
||||
|
||||
const hasAddress =
|
||||
context.propsValue.address1 ||
|
||||
context.propsValue.city ||
|
||||
context.propsValue.state ||
|
||||
context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || ''
|
||||
};
|
||||
}
|
||||
|
||||
// Add cases if provided
|
||||
if (context.propsValue.cases && Array.isArray(context.propsValue.cases)) {
|
||||
requestBody.cases = context.propsValue.cases.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
// Add clients if provided
|
||||
if (context.propsValue.clients && Array.isArray(context.propsValue.clients)) {
|
||||
requestBody.clients = context.propsValue.clients.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.put(
|
||||
`/companies/${context.propsValue.company_id}`,
|
||||
requestBody
|
||||
);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
message: `Company ${context.propsValue.company_id} updated successfully`
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to update company',
|
||||
details: error instanceof Error ? error.message : String(error)
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,273 @@
|
||||
import { createAction, Property } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
export const updatePerson = createAction({
|
||||
auth: mycaseAuth,
|
||||
name: 'update_person',
|
||||
displayName: 'Update Person (Client)',
|
||||
description: 'Updates an existing individual client (person) in MyCase',
|
||||
props: {
|
||||
client_id: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'Client',
|
||||
description: 'Select the client to update',
|
||||
required: true,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/clients', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((client: any) => ({
|
||||
label: `${client.first_name} ${client.last_name}${client.email ? ` (${client.email})` : ''} - ID: ${client.id}`,
|
||||
value: client.id,
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load clients',
|
||||
};
|
||||
},
|
||||
}),
|
||||
first_name: Property.ShortText({
|
||||
displayName: 'First Name',
|
||||
description: 'The first name of the client',
|
||||
required: true,
|
||||
}),
|
||||
last_name: Property.ShortText({
|
||||
displayName: 'Last Name',
|
||||
description: 'The last name of the client',
|
||||
required: true,
|
||||
}),
|
||||
email: Property.ShortText({
|
||||
displayName: 'Email',
|
||||
description: 'The email of the client',
|
||||
required: false,
|
||||
}),
|
||||
middle_name: Property.ShortText({
|
||||
displayName: 'Middle Name',
|
||||
description: 'The middle name of the client',
|
||||
required: false,
|
||||
}),
|
||||
cell_phone_number: Property.ShortText({
|
||||
displayName: 'Cell Phone Number',
|
||||
description: 'Cell phone number',
|
||||
required: false,
|
||||
}),
|
||||
work_phone_number: Property.ShortText({
|
||||
displayName: 'Work Phone Number',
|
||||
description: 'Work phone number',
|
||||
required: false,
|
||||
}),
|
||||
home_phone_number: Property.ShortText({
|
||||
displayName: 'Home Phone Number',
|
||||
description: 'Home phone number',
|
||||
required: false,
|
||||
}),
|
||||
fax_phone_number: Property.ShortText({
|
||||
displayName: 'Fax Phone Number',
|
||||
description: 'Fax phone number',
|
||||
required: false,
|
||||
}),
|
||||
birthdate: Property.DateTime({
|
||||
displayName: 'Birthdate',
|
||||
description: 'Date of birth',
|
||||
required: false,
|
||||
}),
|
||||
notes: Property.LongText({
|
||||
displayName: 'Notes',
|
||||
description: 'Additional information (visible to firm members only)',
|
||||
required: false,
|
||||
}),
|
||||
address1: Property.ShortText({
|
||||
displayName: 'Address Line 1',
|
||||
description: 'Street address line 1',
|
||||
required: false,
|
||||
}),
|
||||
address2: Property.ShortText({
|
||||
displayName: 'Address Line 2',
|
||||
description: 'Street address line 2',
|
||||
required: false,
|
||||
}),
|
||||
city: Property.ShortText({
|
||||
displayName: 'City',
|
||||
description: 'City',
|
||||
required: false,
|
||||
}),
|
||||
state: Property.ShortText({
|
||||
displayName: 'State',
|
||||
description: 'State',
|
||||
required: false,
|
||||
}),
|
||||
zip_code: Property.ShortText({
|
||||
displayName: 'ZIP Code',
|
||||
description: 'ZIP/Postal code',
|
||||
required: false,
|
||||
}),
|
||||
country: Property.ShortText({
|
||||
displayName: 'Country',
|
||||
description: 'Country',
|
||||
required: false,
|
||||
}),
|
||||
people_group: Property.Dropdown({
|
||||
auth: mycaseAuth,
|
||||
displayName: 'People Group',
|
||||
description: 'The people group to associate with this client',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/people_groups', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((group: any) => ({
|
||||
label: group.name,
|
||||
value: group.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load people groups',
|
||||
};
|
||||
},
|
||||
}),
|
||||
cases: Property.MultiSelectDropdown({
|
||||
auth: mycaseAuth, displayName: 'Cases',
|
||||
description: 'Cases to associate with this client',
|
||||
required: false,
|
||||
refreshers: [],
|
||||
options: async ({ auth }) => {
|
||||
if (!auth) {
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Please connect your account first',
|
||||
};
|
||||
}
|
||||
|
||||
const api = createMyCaseApi(auth);
|
||||
const response = await api.get('/cases', {
|
||||
page_size: '100',
|
||||
});
|
||||
|
||||
if (response.success && Array.isArray(response.data)) {
|
||||
return {
|
||||
disabled: false,
|
||||
options: response.data.map((caseItem: any) => ({
|
||||
label: `${caseItem.name}${caseItem.case_number ? ` (${caseItem.case_number})` : ''}`,
|
||||
value: caseItem.id.toString(),
|
||||
})),
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
disabled: true,
|
||||
options: [],
|
||||
placeholder: 'Failed to load cases',
|
||||
};
|
||||
},
|
||||
}),
|
||||
},
|
||||
async run(context) {
|
||||
const api = createMyCaseApi(context.auth);
|
||||
|
||||
const requestBody: any = {
|
||||
first_name: context.propsValue.first_name,
|
||||
last_name: context.propsValue.last_name,
|
||||
};
|
||||
|
||||
if (context.propsValue.email) requestBody.email = context.propsValue.email;
|
||||
if (context.propsValue.middle_name) requestBody.middle_name = context.propsValue.middle_name;
|
||||
if (context.propsValue.cell_phone_number) requestBody.cell_phone_number = context.propsValue.cell_phone_number;
|
||||
if (context.propsValue.work_phone_number) requestBody.work_phone_number = context.propsValue.work_phone_number;
|
||||
if (context.propsValue.home_phone_number) requestBody.home_phone_number = context.propsValue.home_phone_number;
|
||||
if (context.propsValue.fax_phone_number) requestBody.fax_phone_number = context.propsValue.fax_phone_number;
|
||||
if (context.propsValue.birthdate) {
|
||||
// Convert DateTime to ISO date format
|
||||
const date = new Date(context.propsValue.birthdate);
|
||||
requestBody.birthdate = date.toISOString().split('T')[0];
|
||||
}
|
||||
if (context.propsValue.notes) requestBody.notes = context.propsValue.notes;
|
||||
|
||||
const hasAddress = context.propsValue.address1 || context.propsValue.city ||
|
||||
context.propsValue.state || context.propsValue.zip_code ||
|
||||
context.propsValue.country;
|
||||
|
||||
if (hasAddress) {
|
||||
requestBody.address = {
|
||||
address1: context.propsValue.address1 || '',
|
||||
address2: context.propsValue.address2 || '',
|
||||
city: context.propsValue.city || '',
|
||||
state: context.propsValue.state || '',
|
||||
zip_code: context.propsValue.zip_code || '',
|
||||
country: context.propsValue.country || '',
|
||||
};
|
||||
}
|
||||
|
||||
// Add people group if provided
|
||||
if (context.propsValue.people_group) {
|
||||
requestBody.people_group = {
|
||||
id: parseInt(context.propsValue.people_group),
|
||||
};
|
||||
}
|
||||
|
||||
// Add cases if provided
|
||||
if (context.propsValue.cases && Array.isArray(context.propsValue.cases)) {
|
||||
requestBody.cases = context.propsValue.cases.map(id => ({ id: parseInt(id) }));
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await api.put(`/clients/${context.propsValue.client_id}`, requestBody);
|
||||
|
||||
if (response.success) {
|
||||
return {
|
||||
success: true,
|
||||
message: `Client ${context.propsValue.client_id} updated successfully`,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: response.error,
|
||||
details: response.details,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to update client',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,89 @@
|
||||
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
|
||||
|
||||
export interface MyCaseAuth {
|
||||
access_token: string;
|
||||
token_type: string;
|
||||
refresh_token?: string;
|
||||
expires_in?: number;
|
||||
firm_uuid?: string;
|
||||
}
|
||||
|
||||
export interface MyCaseApiResponse<T = any> {
|
||||
success: boolean;
|
||||
data?: T;
|
||||
error?: string;
|
||||
details?: any;
|
||||
}
|
||||
|
||||
export class MyCaseApi {
|
||||
private baseUrl = 'https://external-integrations.mycase.com/v1';
|
||||
|
||||
constructor(private auth: MyCaseAuth) {}
|
||||
|
||||
async makeRequest<T = any>(
|
||||
method: HttpMethod,
|
||||
endpoint: string,
|
||||
body?: any,
|
||||
queryParams?: Record<string, string>
|
||||
): Promise<MyCaseApiResponse<T>> {
|
||||
try {
|
||||
const url = `${this.baseUrl}${endpoint}`;
|
||||
|
||||
const response = await httpClient.sendRequest({
|
||||
method,
|
||||
url,
|
||||
headers: {
|
||||
'Authorization': `Bearer ${this.auth.access_token}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: body ? JSON.stringify(body) : undefined,
|
||||
queryParams,
|
||||
});
|
||||
|
||||
if (response.status >= 200 && response.status < 300) {
|
||||
return {
|
||||
success: true,
|
||||
data: response.body,
|
||||
};
|
||||
} else if (response.status === 401) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Unauthorized - Access token may be expired',
|
||||
details: response.body,
|
||||
};
|
||||
} else {
|
||||
return {
|
||||
success: false,
|
||||
error: `API request failed with status: ${response.status}`,
|
||||
details: response.body,
|
||||
};
|
||||
}
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: 'Failed to make API request',
|
||||
details: error instanceof Error ? error.message : String(error),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
async get<T = any>(endpoint: string, queryParams?: Record<string, string>): Promise<MyCaseApiResponse<T>> {
|
||||
return this.makeRequest<T>(HttpMethod.GET, endpoint, undefined, queryParams);
|
||||
}
|
||||
|
||||
async post<T = any>(endpoint: string, body?: any): Promise<MyCaseApiResponse<T>> {
|
||||
return this.makeRequest<T>(HttpMethod.POST, endpoint, body);
|
||||
}
|
||||
|
||||
async put<T = any>(endpoint: string, body?: any): Promise<MyCaseApiResponse<T>> {
|
||||
return this.makeRequest<T>(HttpMethod.PUT, endpoint, body);
|
||||
}
|
||||
|
||||
async delete<T = any>(endpoint: string): Promise<MyCaseApiResponse<T>> {
|
||||
return this.makeRequest<T>(HttpMethod.DELETE, endpoint);
|
||||
}
|
||||
}
|
||||
|
||||
export function createMyCaseApi(auth: any): MyCaseApi {
|
||||
return new MyCaseApi(auth as MyCaseAuth);
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
interface WebhookSubscription {
|
||||
id: string;
|
||||
hmac_key: string;
|
||||
}
|
||||
|
||||
export const caseAddedOrUpdated = createTrigger({
|
||||
auth: mycaseAuth,
|
||||
name: 'case_added_or_updated',
|
||||
displayName: 'Case Added or Updated',
|
||||
description: 'Triggers when a case has been added or updated',
|
||||
props: {},
|
||||
sampleData: {
|
||||
id: 12345,
|
||||
name: 'Sample Case',
|
||||
case_number: 'CASE-001',
|
||||
description: 'Sample case description',
|
||||
opened_date: '2024-01-01',
|
||||
closed_date: null,
|
||||
sol_date: null,
|
||||
practice_area: 'Personal Injury',
|
||||
case_stage: 'Discovery',
|
||||
status: 'open',
|
||||
outstanding_balance: 5000,
|
||||
created_at: '2024-01-01T10:00:00Z',
|
||||
updated_at: '2024-01-15T14:30:00Z'
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(ctx) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
|
||||
const requestBody = {
|
||||
model: 'case',
|
||||
url: ctx.webhookUrl,
|
||||
actions: ['created', 'updated']
|
||||
};
|
||||
|
||||
const response = await api.post('/webhooks/subscriptions', requestBody);
|
||||
|
||||
if (response.success && response.data) {
|
||||
await ctx.store.put<WebhookSubscription>('_webhook_subscription', {
|
||||
id: response.data.id,
|
||||
hmac_key: response.data.hmac_key
|
||||
});
|
||||
} else {
|
||||
throw new Error(
|
||||
`Failed to create webhook subscription: ${response.error}`
|
||||
);
|
||||
}
|
||||
},
|
||||
async onDisable(ctx) {
|
||||
const subscription = await ctx.store.get<WebhookSubscription>(
|
||||
'_webhook_subscription'
|
||||
);
|
||||
|
||||
if (subscription) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
await api.delete(`/webhooks/subscriptions/${subscription.id}`);
|
||||
await ctx.store.delete('_webhook_subscription');
|
||||
}
|
||||
},
|
||||
async run(ctx) {
|
||||
return [ctx.payload.body];
|
||||
},
|
||||
async test(ctx) {
|
||||
return [ctx.propsValue];
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,89 @@
|
||||
import {
|
||||
TriggerStrategy,
|
||||
createTrigger,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
interface WebhookSubscription {
|
||||
id: string;
|
||||
hmac_key: string;
|
||||
}
|
||||
|
||||
export const companyAddedOrUpdated = createTrigger({
|
||||
auth: mycaseAuth,
|
||||
name: 'company_added_or_updated',
|
||||
displayName: 'Company Added or Updated',
|
||||
description: 'Triggers when a company has been added or updated',
|
||||
props: {},
|
||||
sampleData: {
|
||||
id: 12345,
|
||||
name: 'Acme Corporation',
|
||||
email: 'contact@acmecorp.com',
|
||||
website: 'https://www.acmecorp.com',
|
||||
main_phone_number: '555-123-4567',
|
||||
fax_phone_number: '555-987-6543',
|
||||
address: {
|
||||
address1: '456 Business Ave',
|
||||
address2: 'Floor 5',
|
||||
city: 'New York',
|
||||
state: 'NY',
|
||||
zip_code: '10001',
|
||||
country: 'USA',
|
||||
},
|
||||
notes: 'Important company notes',
|
||||
cases: [
|
||||
{
|
||||
id: 100,
|
||||
},
|
||||
],
|
||||
clients: [
|
||||
{
|
||||
id: 200,
|
||||
},
|
||||
],
|
||||
custom_field_values: [],
|
||||
archived: false,
|
||||
created_at: '2024-01-01T10:00:00Z',
|
||||
updated_at: '2024-01-15T14:30:00Z',
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(ctx) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
|
||||
const requestBody = {
|
||||
model: 'company',
|
||||
url: ctx.webhookUrl,
|
||||
actions: ['created', 'updated'],
|
||||
};
|
||||
|
||||
const response = await api.post('/webhooks/subscriptions', requestBody);
|
||||
|
||||
if (response.success && response.data) {
|
||||
await ctx.store.put<WebhookSubscription>('_webhook_subscription', {
|
||||
id: response.data.id,
|
||||
hmac_key: response.data.hmac_key,
|
||||
});
|
||||
} else {
|
||||
throw new Error(
|
||||
`Failed to create webhook subscription: ${response.error}`
|
||||
);
|
||||
}
|
||||
},
|
||||
async onDisable(ctx) {
|
||||
const subscription =
|
||||
await ctx.store.get<WebhookSubscription>('_webhook_subscription');
|
||||
|
||||
if (subscription) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
await api.delete(`/webhooks/subscriptions/${subscription.id}`);
|
||||
await ctx.store.delete('_webhook_subscription');
|
||||
}
|
||||
},
|
||||
async run(ctx) {
|
||||
return [ctx.payload.body];
|
||||
},
|
||||
async test(ctx) {
|
||||
return [ctx.propsValue];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,81 @@
|
||||
import {
|
||||
TriggerStrategy,
|
||||
createTrigger,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
interface WebhookSubscription {
|
||||
id: string;
|
||||
hmac_key: string;
|
||||
}
|
||||
|
||||
export const eventAddedOrUpdated = createTrigger({
|
||||
auth: mycaseAuth,
|
||||
name: 'event_added_or_updated',
|
||||
displayName: 'Event Added or Updated',
|
||||
description: 'Triggers when an event has been added or updated',
|
||||
props: {},
|
||||
sampleData: {
|
||||
id: 12345,
|
||||
name: 'Client Meeting',
|
||||
description: 'Initial consultation with client',
|
||||
start: '2024-01-15T10:00:00Z',
|
||||
end: '2024-01-15T11:00:00Z',
|
||||
all_day: false,
|
||||
private: false,
|
||||
event_type: 'Meeting',
|
||||
location: {
|
||||
id: 1,
|
||||
},
|
||||
case: {
|
||||
id: 100,
|
||||
},
|
||||
staff: [
|
||||
{
|
||||
id: 5,
|
||||
},
|
||||
],
|
||||
created_at: '2024-01-01T10:00:00Z',
|
||||
updated_at: '2024-01-15T09:30:00Z',
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(ctx) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
|
||||
const requestBody = {
|
||||
model: 'event',
|
||||
url: ctx.webhookUrl,
|
||||
actions: ['created', 'updated'],
|
||||
};
|
||||
|
||||
const response = await api.post('/webhooks/subscriptions', requestBody);
|
||||
|
||||
if (response.success && response.data) {
|
||||
await ctx.store.put<WebhookSubscription>('_webhook_subscription', {
|
||||
id: response.data.id,
|
||||
hmac_key: response.data.hmac_key,
|
||||
});
|
||||
} else {
|
||||
throw new Error(
|
||||
`Failed to create webhook subscription: ${response.error}`
|
||||
);
|
||||
}
|
||||
},
|
||||
async onDisable(ctx) {
|
||||
const subscription =
|
||||
await ctx.store.get<WebhookSubscription>('_webhook_subscription');
|
||||
|
||||
if (subscription) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
await api.delete(`/webhooks/subscriptions/${subscription.id}`);
|
||||
await ctx.store.delete('_webhook_subscription');
|
||||
}
|
||||
},
|
||||
async run(ctx) {
|
||||
return [ctx.payload.body];
|
||||
},
|
||||
async test(ctx) {
|
||||
return [ctx.propsValue];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,91 @@
|
||||
import {
|
||||
TriggerStrategy,
|
||||
createTrigger,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
interface WebhookSubscription {
|
||||
id: string;
|
||||
hmac_key: string;
|
||||
}
|
||||
|
||||
export const leadAddedOrUpdated = createTrigger({
|
||||
auth: mycaseAuth,
|
||||
name: 'lead_added_or_updated',
|
||||
displayName: 'Lead Added or Updated',
|
||||
description: 'Triggers when a lead has been added or updated',
|
||||
props: {},
|
||||
sampleData: {
|
||||
id: 12345,
|
||||
email: 'lead@example.com',
|
||||
first_name: 'Jane',
|
||||
middle_initial: 'M',
|
||||
last_name: 'Smith',
|
||||
address: {
|
||||
address1: '789 Lead St',
|
||||
address2: 'Apt 3',
|
||||
city: 'Chicago',
|
||||
state: 'IL',
|
||||
zip_code: '60601',
|
||||
country: 'USA',
|
||||
},
|
||||
cell_phone_number: '555-123-4567',
|
||||
work_phone_number: '555-987-6543',
|
||||
home_phone_number: '555-111-2222',
|
||||
lead_details: 'Potential client for personal injury case',
|
||||
birthdate: '1985-03-20',
|
||||
drivers_license_number: 'D1234567',
|
||||
drivers_license_state: 'IL',
|
||||
status: 'New',
|
||||
approved: false,
|
||||
referral_source_reference: {
|
||||
id: 1,
|
||||
},
|
||||
referred_by: {
|
||||
id: 100,
|
||||
},
|
||||
custom_field_values: [],
|
||||
created_at: '2024-01-01T10:00:00Z',
|
||||
updated_at: '2024-01-15T14:30:00Z',
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(ctx) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
|
||||
const requestBody = {
|
||||
model: 'lead',
|
||||
url: ctx.webhookUrl,
|
||||
actions: ['created', 'updated'],
|
||||
};
|
||||
|
||||
const response = await api.post('/webhooks/subscriptions', requestBody);
|
||||
|
||||
if (response.success && response.data) {
|
||||
await ctx.store.put<WebhookSubscription>('_webhook_subscription', {
|
||||
id: response.data.id,
|
||||
hmac_key: response.data.hmac_key,
|
||||
});
|
||||
} else {
|
||||
throw new Error(
|
||||
`Failed to create webhook subscription: ${response.error}`
|
||||
);
|
||||
}
|
||||
},
|
||||
async onDisable(ctx) {
|
||||
const subscription =
|
||||
await ctx.store.get<WebhookSubscription>('_webhook_subscription');
|
||||
|
||||
if (subscription) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
await api.delete(`/webhooks/subscriptions/${subscription.id}`);
|
||||
await ctx.store.delete('_webhook_subscription');
|
||||
}
|
||||
},
|
||||
async run(ctx) {
|
||||
return [ctx.payload.body];
|
||||
},
|
||||
async test(ctx) {
|
||||
return [ctx.propsValue];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,92 @@
|
||||
import {
|
||||
TriggerStrategy,
|
||||
createTrigger,
|
||||
} from '@activepieces/pieces-framework';
|
||||
import { mycaseAuth } from '../../index';
|
||||
import { createMyCaseApi } from '../common/mycase-api';
|
||||
|
||||
interface WebhookSubscription {
|
||||
id: string;
|
||||
hmac_key: string;
|
||||
}
|
||||
|
||||
export const personAddedOrUpdated = createTrigger({
|
||||
auth: mycaseAuth,
|
||||
name: 'person_added_or_updated',
|
||||
displayName: 'Person Added or Updated',
|
||||
description: 'Triggers when a person has been added or updated',
|
||||
props: {},
|
||||
sampleData: {
|
||||
id: 12345,
|
||||
email: 'john.doe@example.com',
|
||||
first_name: 'John',
|
||||
middle_name: 'Michael',
|
||||
last_name: 'Doe',
|
||||
address: {
|
||||
address1: '123 Main St',
|
||||
address2: 'Suite 100',
|
||||
city: 'Los Angeles',
|
||||
state: 'CA',
|
||||
zip_code: '90001',
|
||||
country: 'USA',
|
||||
},
|
||||
cell_phone_number: '555-123-4567',
|
||||
work_phone_number: '555-987-6543',
|
||||
home_phone_number: '555-111-2222',
|
||||
fax_phone_number: '555-333-4444',
|
||||
contact_group: 'Client',
|
||||
people_group: {
|
||||
id: 1,
|
||||
},
|
||||
notes: 'Important client notes',
|
||||
birthdate: '1980-05-15',
|
||||
archived: false,
|
||||
cases: [
|
||||
{
|
||||
id: 100,
|
||||
},
|
||||
],
|
||||
custom_field_values: [],
|
||||
created_at: '2024-01-01T10:00:00Z',
|
||||
updated_at: '2024-01-15T14:30:00Z',
|
||||
},
|
||||
type: TriggerStrategy.WEBHOOK,
|
||||
async onEnable(ctx) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
|
||||
const requestBody = {
|
||||
model: 'client',
|
||||
url: ctx.webhookUrl,
|
||||
actions: ['created', 'updated'],
|
||||
};
|
||||
|
||||
const response = await api.post('/webhooks/subscriptions', requestBody);
|
||||
|
||||
if (response.success && response.data) {
|
||||
await ctx.store.put<WebhookSubscription>('_webhook_subscription', {
|
||||
id: response.data.id,
|
||||
hmac_key: response.data.hmac_key,
|
||||
});
|
||||
} else {
|
||||
throw new Error(
|
||||
`Failed to create webhook subscription: ${response.error}`
|
||||
);
|
||||
}
|
||||
},
|
||||
async onDisable(ctx) {
|
||||
const subscription =
|
||||
await ctx.store.get<WebhookSubscription>('_webhook_subscription');
|
||||
|
||||
if (subscription) {
|
||||
const api = createMyCaseApi(ctx.auth);
|
||||
await api.delete(`/webhooks/subscriptions/${subscription.id}`);
|
||||
await ctx.store.delete('_webhook_subscription');
|
||||
}
|
||||
},
|
||||
async run(ctx) {
|
||||
return [ctx.payload.body];
|
||||
},
|
||||
async test(ctx) {
|
||||
return [ctx.propsValue];
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"extends": "../../../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"strict": true,
|
||||
"importHelpers": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noPropertyAccessFromIndexSignature": true
|
||||
},
|
||||
"files": [],
|
||||
"include": [],
|
||||
"references": [
|
||||
{
|
||||
"path": "./tsconfig.lib.json"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"extends": "./tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"outDir": "../../../../dist/out-tsc",
|
||||
"declaration": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"include": ["src/**/*.ts"]
|
||||
}
|
||||
Reference in New Issue
Block a user