diff --git a/VERSION.txt b/VERSION.txt
index d3c5b687ad22..d47c52353191 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1 +1 @@
-5.8.35
\ No newline at end of file
+5.8.36
\ No newline at end of file
diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php
index 2941f2223d5a..31ccdc2908f7 100644
--- a/app/Console/Commands/CheckData.php
+++ b/app/Console/Commands/CheckData.php
@@ -891,7 +891,7 @@ class CheckData extends Command
$this->logMessage("Fixing country for # {$client->id}");
});
- Client::query()->whereNull("settings->currency_id")->cursor()->each(function ($client) {
+ Client::query()->whereNull("settings->currency_id")->orWhereJsonContains('settings', ['currency_id' => ''])->cursor()->each(function ($client) {
$settings = $client->settings;
$settings->currency_id = (string)$client->company->settings->currency_id;
$client->settings = $settings;
@@ -933,7 +933,6 @@ class CheckData extends Command
});
-
Invoice::withTrashed()
->where("partial", 0)
->whereNotNull("partial_due_date")
@@ -967,7 +966,6 @@ class CheckData extends Command
});
-
CompanyUser::whereDoesntHave('user')
->cursor()
->when(Ninja::isHosted())
@@ -977,6 +975,14 @@ class CheckData extends Command
});
+ $cus = CompanyUser::withTrashed()
+ ->whereHas("user", function ($query) {
+ $query->whereColumn("users.account_id", "!=", "company_user.account_id");
+ })->pluck('id')->implode(",");
+
+
+ $this->logMessage("Cross Linked CompanyUser ids # {$cus}");
+
}
}
diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php
index 514d8f28dde6..34ad4564d58a 100644
--- a/app/Exceptions/Handler.php
+++ b/app/Exceptions/Handler.php
@@ -138,7 +138,7 @@ class Handler extends ExceptionHandler
'email' => 'anonymous@example.com',
'name' => 'Anonymous User',
]);
- } elseif (auth()->guard('user') && auth()->guard('user')->user() && auth()->user()->company() && auth()->user()->company()->account->report_errors) {
+ } elseif (auth()->guard('user') && auth()->guard('user')->user() && auth()->user()->companyIsSet() && auth()->user()->company()->account->report_errors) {
$scope->setUser([
'id' => auth()->user()->account->key,
'email' => 'anonymous@example.com',
diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php
index 06957ae8ce10..c1b41dd4b7e2 100644
--- a/app/Filters/InvoiceFilters.php
+++ b/app/Filters/InvoiceFilters.php
@@ -328,6 +328,7 @@ class InvoiceFilters extends QueryFilters
}
if($sort_col[0] == 'number') {
+ // return $this->builder->orderByRaw('CAST(number AS UNSIGNED), number ' . $dir);
return $this->builder->orderByRaw('ABS(number) ' . $dir);
}
diff --git a/app/Http/Controllers/ClientPortal/EmailPreferencesController.php b/app/Http/Controllers/ClientPortal/EmailPreferencesController.php
index 5abf591f0602..849535242e94 100644
--- a/app/Http/Controllers/ClientPortal/EmailPreferencesController.php
+++ b/app/Http/Controllers/ClientPortal/EmailPreferencesController.php
@@ -45,7 +45,7 @@ class EmailPreferencesController extends Controller
if ($invitation->contact->is_locked && !Cache::has("unsubscribe_notitfication_suppression:{$invitation_key}")) {
$nmo = new NinjaMailerObject();
- $nmo->mailable = new NinjaMailer((new ClientUnsubscribedObject($invitation->contact, $invitation->contact->company, $invitation->contact->company->owner()->company_users()->first()->portalType() ?? true))->build());
+ $nmo->mailable = new NinjaMailer((new ClientUnsubscribedObject($invitation->contact, $invitation->contact->company, true))->build());
$nmo->company = $invitation->contact->company;
$nmo->to_user = $invitation->contact->company->owner();
$nmo->settings = $invitation->contact->company->settings;
diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php
index ae52af3cc07f..9185b94bc153 100644
--- a/app/Http/Controllers/ClientPortal/InvitationController.php
+++ b/app/Http/Controllers/ClientPortal/InvitationController.php
@@ -271,6 +271,7 @@ class InvitationController extends Controller
->with('contact.client')
->firstOrFail();
+
if ($invitation->contact->trashed()) {
$invitation->contact->restore();
}
@@ -294,7 +295,10 @@ class InvitationController extends Controller
'payable_invoices' => [
['invoice_id' => $invitation->invoice->hashed_id, 'amount' => $amount],
],
- 'signature' => false
+ 'signature' => false,
+ 'contact_first_name' => $invitation->contact->first_name ?? '',
+ 'contact_last_name' => $invitation->contact->last_name ?? '',
+ 'contact_email' => $invitation->contact->email ?? ''
];
$request->replace($data);
diff --git a/app/Http/Controllers/SmtpController.php b/app/Http/Controllers/SmtpController.php
index bf03012f017b..edfc24c38689 100644
--- a/app/Http/Controllers/SmtpController.php
+++ b/app/Http/Controllers/SmtpController.php
@@ -55,7 +55,7 @@ class SmtpController extends BaseController
(new \Illuminate\Mail\MailServiceProvider(app()))->register();
try {
- Mail::to($user->email, $user->present()->name())->send(new TestMailServer('Email Server Works!', strlen($company->settings->custom_sending_email) > 1 ? $company->settings->custom_sending_email : $user->email));
+ Mail::mailer('smtp')->to($user->email, $user->present()->name())->send(new TestMailServer('Email Server Works!', strlen($company->settings->custom_sending_email) > 1 ? $company->settings->custom_sending_email : $user->email));
} catch (\Exception $e) {
app('mail.manager')->forgetMailers();
return response()->json(['message' => $e->getMessage()], 400);
diff --git a/app/Http/Controllers/StripeConnectController.php b/app/Http/Controllers/StripeConnectController.php
index 3aa9639a48c0..e2479c62d45f 100644
--- a/app/Http/Controllers/StripeConnectController.php
+++ b/app/Http/Controllers/StripeConnectController.php
@@ -54,8 +54,6 @@ class StripeConnectController extends BaseController
$redirect_uri = config('ninja.app_url').'/stripe/completed';
$endpoint = "https://connect.stripe.com/oauth/authorize?response_type=code&client_id={$stripe_client_id}&redirect_uri={$redirect_uri}&scope=read_write&state={$token}";
- \Illuminate\Support\Facades\Cache::pull($token);
-
return redirect($endpoint);
}
@@ -156,6 +154,8 @@ class StripeConnectController extends BaseController
$redirect_uri = config('ninja.app_url');
}
+ \Illuminate\Support\Facades\Cache::pull($request->token);
+
//response here
return view('auth.connect.completed', ['url' => $redirect_uri]);
// return redirect($redirect_uri);
diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php
index 6a53796f3bd0..ef66fb8faba8 100644
--- a/app/Http/Kernel.php
+++ b/app/Http/Kernel.php
@@ -135,7 +135,7 @@ class Kernel extends HttpKernel
'can' => Authorize::class,
'cors' => Cors::class,
'guest' => RedirectIfAuthenticated::class,
- 'signed' => ValidateSignature::class,
+ 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'verified' => EnsureEmailIsVerified::class,
'query_logging' => QueryLogging::class,
'token_auth' => TokenAuth::class,
diff --git a/app/Http/Requests/Client/StoreClientRequest.php b/app/Http/Requests/Client/StoreClientRequest.php
index 30697ab9b09f..a0d807d7d6dd 100644
--- a/app/Http/Requests/Client/StoreClientRequest.php
+++ b/app/Http/Requests/Client/StoreClientRequest.php
@@ -59,20 +59,6 @@ class StoreClientRequest extends Request
$rules['file'] = $this->file_validation;
}
- if (isset($this->number)) {
- $rules['number'] = Rule::unique('clients')->where('company_id', $user->company()->id);
- }
-
- $rules['country_id'] = 'integer|nullable';
-
- if (isset($this->currency_code)) {
- $rules['currency_code'] = 'sometimes|exists:currencies,code';
- }
-
- if (isset($this->country_code)) {
- $rules['country_code'] = new CountryCodeExistsRule();
- }
-
/* Ensure we have a client name, and that all emails are unique*/
//$rules['name'] = 'required|min:1';
$rules['settings'] = new ValidClientGroupSettingsRule();
@@ -97,6 +83,9 @@ class StoreClientRequest extends Request
$rules['number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)];
$rules['id_number'] = ['bail', 'nullable', Rule::unique('clients')->where('company_id', $user->company()->id)];
$rules['classification'] = 'bail|sometimes|nullable|in:individual,business,company,partnership,trust,charity,government,other';
+ $rules['shipping_country_id'] = 'integer|nullable|exists:countries,id';
+ $rules['number'] = ['sometimes', 'nullable', 'bail', Rule::unique('clients')->where('company_id', $user->company()->id)];
+ $rules['country_id'] = 'integer|nullable|exists:countries,id';
return $rules;
}
@@ -139,12 +128,16 @@ class StoreClientRequest extends Request
if (! array_key_exists('currency_id', $input['settings']) && isset($input['group_settings_id'])) {
$group_settings = GroupSetting::find($input['group_settings_id']);
- if ($group_settings && property_exists($group_settings->settings, 'currency_id') && isset($group_settings->settings->currency_id)) {
+ if ($group_settings && property_exists($group_settings->settings, 'currency_id') && is_numeric($group_settings->settings->currency_id)) {
$input['settings']['currency_id'] = (string) $group_settings->settings->currency_id;
} else {
$input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
}
- } elseif (! array_key_exists('currency_id', $input['settings'])) {
+ }
+ elseif (! array_key_exists('currency_id', $input['settings'])) {
+ $input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
+ }
+ elseif (empty($input['settings']['currency_id']) ?? true) {
$input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
}
@@ -160,10 +153,13 @@ class StoreClientRequest extends Request
}
}
+
+ // allow setting country_id by iso code
if (isset($input['country_code'])) {
$input['country_id'] = $this->getCountryCode($input['country_code']);
}
+ // allow setting country_id by iso code
if (isset($input['shipping_country_code'])) {
$input['shipping_country_id'] = $this->getCountryCode($input['shipping_country_code']);
}
@@ -173,10 +169,14 @@ class StoreClientRequest extends Request
unset($input['number']);
}
+ // prevent xss injection
if (array_key_exists('name', $input)) {
$input['name'] = strip_tags($input['name']);
}
+ //If you want to validate, the prop must be set.
+ $input['id'] = null;
+
$this->replace($input);
}
diff --git a/app/Http/Requests/Client/UpdateClientRequest.php b/app/Http/Requests/Client/UpdateClientRequest.php
index 11b8c4a60ffc..b0307d312da3 100644
--- a/app/Http/Requests/Client/UpdateClientRequest.php
+++ b/app/Http/Requests/Client/UpdateClientRequest.php
@@ -60,17 +60,11 @@ class UpdateClientRequest extends Request
$rules['company_logo'] = 'mimes:jpeg,jpg,png,gif|max:10000';
$rules['industry_id'] = 'integer|nullable';
$rules['size_id'] = 'integer|nullable';
- $rules['country_id'] = 'integer|nullable';
- $rules['shipping_country_id'] = 'integer|nullable';
+ $rules['country_id'] = 'integer|nullable|exists:countries,id';
+ $rules['shipping_country_id'] = 'integer|nullable|exists:countries,id';
$rules['classification'] = 'bail|sometimes|nullable|in:individual,business,company,partnership,trust,charity,government,other';
-
- if ($this->id_number) {
- $rules['id_number'] = Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id);
- }
-
- if ($this->number) {
- $rules['number'] = Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id);
- }
+ $rules['id_number'] = ['sometimes', 'bail', Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id)];
+ $rules['number'] = ['sometimes', 'bail', Rule::unique('clients')->where('company_id', $user->company()->id)->ignore($this->client->id)];
$rules['settings'] = new ValidClientGroupSettingsRule();
$rules['contacts'] = 'array';
@@ -112,6 +106,9 @@ class UpdateClientRequest extends Request
if (array_key_exists('settings', $input) && ! array_key_exists('currency_id', $input['settings'])) {
$input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
}
+ elseif (empty($input['settings']['currency_id']) ?? true) {
+ $input['settings']['currency_id'] = (string) $user->company()->settings->currency_id;
+ }
if (isset($input['language_code'])) {
$input['settings']['language_id'] = $this->getLanguageId($input['language_code']);
@@ -127,9 +124,35 @@ class UpdateClientRequest extends Request
$input['name'] = strip_tags($input['name']);
}
+ // allow setting country_id by iso code
+ if (isset($input['country_code'])) {
+ $input['country_id'] = $this->getCountryCode($input['country_code']);
+ }
+
+ // allow setting country_id by iso code
+ if (isset($input['shipping_country_code'])) {
+ $input['shipping_country_id'] = $this->getCountryCode($input['shipping_country_code']);
+ }
+
+
$this->replace($input);
}
+ private function getCountryCode($country_code)
+ {
+ $countries = Cache::get('countries');
+
+ $country = $countries->filter(function ($item) use ($country_code) {
+ return $item->iso_3166_2 == $country_code || $item->iso_3166_3 == $country_code;
+ })->first();
+
+ if ($country) {
+ return (string) $country->id;
+ }
+
+ return '';
+ }
+
private function getLanguageId($language_code)
{
$languages = Cache::get('languages');
diff --git a/app/Http/Requests/User/StoreUserRequest.php b/app/Http/Requests/User/StoreUserRequest.php
index 8b979bfdcaeb..7d84b15b969f 100644
--- a/app/Http/Requests/User/StoreUserRequest.php
+++ b/app/Http/Requests/User/StoreUserRequest.php
@@ -95,6 +95,8 @@ class StoreUserRequest extends Request
$input['last_name'] = strip_tags($input['last_name']);
}
+ $input['id'] = null;
+
$this->replace($input);
}
diff --git a/app/Import/Transformer/Csv/InvoiceTransformer.php b/app/Import/Transformer/Csv/InvoiceTransformer.php
index 38980311eae1..5dbced3ca7e8 100644
--- a/app/Import/Transformer/Csv/InvoiceTransformer.php
+++ b/app/Import/Transformer/Csv/InvoiceTransformer.php
@@ -98,19 +98,19 @@ class InvoiceTransformer extends BaseTransformer
$invoice_data,
'invoice.partial_due_date'
),
- 'custom_surcharge1' => $this->getString(
+ 'custom_surcharge1' => $this->getFloat(
$invoice_data,
'invoice.custom_surcharge1'
),
- 'custom_surcharge2' => $this->getString(
+ 'custom_surcharge2' => $this->getFloat(
$invoice_data,
'invoice.custom_surcharge2'
),
- 'custom_surcharge3' => $this->getString(
+ 'custom_surcharge3' => $this->getFloat(
$invoice_data,
'invoice.custom_surcharge3'
),
- 'custom_surcharge4' => $this->getString(
+ 'custom_surcharge4' => $this->getFloat(
$invoice_data,
'invoice.custom_surcharge4'
),
diff --git a/app/Jobs/Company/CompanyImport.php b/app/Jobs/Company/CompanyImport.php
index ca0c8d7adef6..367a06437d8a 100644
--- a/app/Jobs/Company/CompanyImport.php
+++ b/app/Jobs/Company/CompanyImport.php
@@ -311,8 +311,11 @@ class CompanyImport implements ShouldQueue
}
}
- unlink($tmp_file);
- unlink(Storage::path($this->file_location));
+ if(file_exists($tmp_file))
+ unlink($tmp_file);
+
+ if(Storage::exists($this->file_location))
+ unlink(Storage::path($this->file_location));
}
//
diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php
index 7932c01ec79c..f421667a31a4 100644
--- a/app/Jobs/Mail/NinjaMailerJob.php
+++ b/app/Jobs/Mail/NinjaMailerJob.php
@@ -145,7 +145,8 @@ class NinjaMailerJob implements ShouldQueue
->send($mailable);
/* Count the amount of emails sent across all the users accounts */
- Cache::increment("email_quota".$this->company->account->key);
+
+ $this->incrementEmailCounter();
LightLogs::create(new EmailSuccess($this->nmo->company->company_key, $this->nmo->mailable->subject))
->send();
@@ -221,6 +222,12 @@ class NinjaMailerJob implements ShouldQueue
$this->cleanUpMailers();
}
+ private function incrementEmailCounter(): void
+ {
+ if(in_array($this->mailer, ['default','mailgun']))
+ Cache::increment("email_quota".$this->company->account->key);
+
+ }
/**
* Entity notification when an email fails to send
*
@@ -324,7 +331,10 @@ class NinjaMailerJob implements ShouldQueue
$this->mailer = 'mailgun';
$this->setMailgunMailer();
return $this;
-
+ case 'smtp':
+ $this->mailer = 'smtp';
+ $this->configureSmtpMailer();
+ return $this;
default:
break;
}
@@ -336,6 +346,48 @@ class NinjaMailerJob implements ShouldQueue
return $this;
}
+ private function configureSmtpMailer(): void
+ {
+
+ $company = $this->company;
+
+ $smtp_host = $company->smtp_host;
+ $smtp_port = $company->smtp_port;
+ $smtp_username = $company->smtp_username;
+ $smtp_password = $company->smtp_password;
+ $smtp_encryption = $company->smtp_encryption ?? 'tls';
+ $smtp_local_domain = strlen($company->smtp_local_domain) > 2 ? $company->smtp_local_domain : null;
+ $smtp_verify_peer = $company->smtp_verify_peer ?? true;
+
+ config([
+ 'mail.mailers.smtp' => [
+ 'transport' => 'smtp',
+ 'host' => $smtp_host,
+ 'port' => $smtp_port,
+ 'username' => $smtp_username,
+ 'password' => $smtp_password,
+ 'encryption' => $smtp_encryption,
+ 'local_domain' => $smtp_local_domain,
+ 'verify_peer' => $smtp_verify_peer,
+ 'timeout' => 30,
+ ],
+ ]);
+
+ if (property_exists($this->nmo->settings, 'email_from_name') && strlen($this->nmo->settings->email_from_name) > 1) {
+ $email_from_name = $this->nmo->settings->email_from_name;
+ } else {
+ $email_from_name = $this->company->present()->name();
+ }
+
+ $user = $this->resolveSendingUser();
+ $sending_email = (isset($this->nmo->settings->custom_sending_email) && stripos($this->nmo->settings->custom_sending_email, "@")) ? $this->nmo->settings->custom_sending_email : $user->email;
+
+ $this->nmo
+ ->mailable
+ ->from($sending_email, $email_from_name);
+
+ }
+
/**
* Allows configuration of multiple mailers
* per company for use by self hosted users
diff --git a/app/Jobs/Util/WebhookSingle.php b/app/Jobs/Util/WebhookSingle.php
index 9ec886dd9042..ca5136f78455 100644
--- a/app/Jobs/Util/WebhookSingle.php
+++ b/app/Jobs/Util/WebhookSingle.php
@@ -123,7 +123,7 @@ class WebhookSingle implements ShouldQueue
]);
(new SystemLogger(
- ['message' => $response->getBody()->getHeaders(), 'body' => $data],
+ ['message' => $response->getHeaders(), 'body' => $data],
SystemLog::CATEGORY_WEBHOOK,
SystemLog::EVENT_WEBHOOK_SUCCESS,
SystemLog::TYPE_WEBHOOK_RESPONSE,
diff --git a/app/Livewire/RequiredClientInfo.php b/app/Livewire/RequiredClientInfo.php
index a4595b771ef2..733f9a0b4559 100644
--- a/app/Livewire/RequiredClientInfo.php
+++ b/app/Livewire/RequiredClientInfo.php
@@ -12,15 +12,17 @@
namespace App\Livewire;
+use App\Models\Client;
+use App\Models\Invoice;
+use Livewire\Component;
use App\Libraries\MultiDB;
+use Illuminate\Support\Str;
use App\Models\ClientContact;
use App\Models\CompanyGateway;
-use App\Models\Invoice;
use App\Utils\Traits\MakesHash;
+use Livewire\Attributes\Computed;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Validator;
-use Illuminate\Support\Str;
-use Livewire\Component;
class RequiredClientInfo extends Component
{
@@ -31,10 +33,7 @@ class RequiredClientInfo extends Component
*/
public $show_terms = false;
- /**
- * @var array
- */
- public $invoice;
+ public $invoice_terms;
/**
* @var bool
@@ -49,18 +48,40 @@ class RequiredClientInfo extends Component
/**
* @var ClientContact
*/
- public $contact;
+ public $contact_id;
/**
* @var \App\Models\Client
*/
- public $client;
+ public $client_id;
/**
* @var array
*/
public $countries;
+
+ public $client_name;
+ public $contact_first_name;
+ public $contact_last_name;
+ public $contact_email;
+ public $client_phone;
+ public $client_address_line_1;
+ public $client_city;
+ public $client_state;
+ public $client_country_id;
+ public $client_postal_code;
+ public $client_shipping_address_line_1;
+ public $client_shipping_city;
+ public $client_shipping_state;
+ public $client_shipping_postal_code;
+ public $client_shipping_country_id;
+ public $client_custom_value1;
+ public $client_custom_value2;
+ public $client_custom_value3;
+ public $client_custom_value4;
+
+
/**
* Mappings for updating the database. Left side is mapping from gateway,
* right side is column in database.
@@ -113,50 +134,96 @@ class RequiredClientInfo extends Component
];
protected $rules = [
- 'client.address1' => '',
- 'client.address2' => '',
- 'client.city' => '',
- 'client.state' => '',
- 'client.postal_code' => '',
- 'client.country_id' => '',
- 'client.shipping_address1' => '',
- 'client.shipping_address2' => '',
- 'client.shipping_city' => '',
- 'client.shipping_state' => '',
- 'client.shipping_postal_code' => '',
- 'client.shipping_country_id' => '',
- 'contact.first_name' => '',
- 'contact.last_name' => '',
- 'contact.email' => '',
- 'client.name' => '',
- 'client.website' => '',
- 'client.phone' => '',
- 'client.custom_value1' => '',
- 'client.custom_value2' => '',
- 'client.custom_value3' => '',
- 'client.custom_value4' => '',
+ // 'client.address1' => '',
+ // 'client.address2' => '',
+ // 'client.city' => '',
+ // 'client.state' => '',
+ // 'client.postal_code' => '',
+ // 'client.country_id' => '',
+ // 'client.shipping_address1' => '',
+ // 'client.shipping_address2' => '',
+ // 'client.shipping_city' => '',
+ // 'client.shipping_state' => '',
+ // 'client.shipping_postal_code' => '',
+ // 'client.shipping_country_id' => '',
+ // 'contact.first_name' => '',
+ // 'contact.last_name' => '',
+ // 'contact.email' => '',
+ // 'client.name' => '',
+ // 'client.website' => '',
+ // 'client.phone' => '',
+ // 'client.custom_value1' => '',
+ // 'client.custom_value2' => '',
+ // 'client.custom_value3' => '',
+ // 'client.custom_value4' => '',
+ 'client_name' => '',
+ 'client_website' => '',
+ 'client_phone' => '',
+ 'client_address_line_1' => '',
+ 'client_address_line_2' => '',
+ 'client_city' => '',
+ 'client_state' => '',
+ 'client_postal_code' => '',
+ 'client_country_id' => '',
+ 'client_shipping_address_line_1' => '',
+ 'client_shipping_address_line_2' => '',
+ 'client_shipping_city' => '',
+ 'client_shipping_state' => '',
+ 'client_shipping_postal_code' => '',
+ 'client_shipping_country_id' => '',
+ 'client_custom_value1' => '',
+ 'client_custom_value2' => '',
+ 'client_custom_value3' => '',
+ 'client_custom_value4' => '',
+ 'contact_first_name' => '',
+ 'contact_last_name' => '',
+ 'contact_email' => '',
];
public $show_form = false;
- public $company;
+ public $company_id;
public $company_gateway_id;
+ public $db;
+
public function mount()
{
- MultiDB::setDb($this->company->db);
+ MultiDB::setDb($this->db);
+ $contact = ClientContact::withTrashed()->find($this->contact_id);
+ $company = $contact->company;
- $this->client = $this->contact->client;
+ $this->client_name = $contact->client->name;
+ $this->contact_first_name = $contact->first_name;
+ $this->contact_last_name = $contact->last_name;
+ $this->contact_email = $contact->email;
+ $this->client_phone = $contact->client->phone;
+ $this->client_address_line_1 = $contact->client->address1;
+ $this->client_city = $contact->client->city ;
+ $this->client_state = $contact->client->state;
+ $this->client_country_id = $contact->client->country_id;
+ $this->client_postal_code = $contact->client->postal_code;
+ $this->client_shipping_address_line_1 = $contact->client->shipping_address1;
+ $this->client_shipping_city = $contact->client->shipping_city;
+ $this->client_shipping_state = $contact->client->shipping_state;
+ $this->client_shipping_postal_code = $contact->client->shipping_postal_code;
+ $this->client_shipping_country_id = $contact->client->shipping_country_id;
+ $this->client_custom_value1 = $contact->client->custom_value1;
+ $this->client_custom_value2 = $contact->client->custom_value2;
+ $this->client_custom_value3 = $contact->client->custom_value3;
+ $this->client_custom_value4 = $contact->client->custom_value4;
- if ($this->company->settings->show_accept_invoice_terms && request()->query('hash')) {
+ // $this->client = $this->contact->client;
+
+ if ($company->settings->show_accept_invoice_terms && request()->query('hash')) {
$this->show_terms = true;
$this->terms_accepted = false;
$this->show_form = true;
$hash = Cache::get(request()->input('hash'));
- $this->invoice = Invoice::find($this->decodePrimaryKey($hash['invoice_id']));
+ $this->invoice_terms = Invoice::find($this->decodePrimaryKey($hash['invoice_id']))->terms;
}
count($this->fields) > 0 || $this->show_terms
@@ -164,6 +231,24 @@ class RequiredClientInfo extends Component
: $this->show_form = false;
}
+ #[Computed]
+ public function contact()
+ {
+
+ MultiDB::setDb($this->db);
+ return ClientContact::withTrashed()->find($this->contact_id);
+
+ }
+
+ #[Computed]
+ public function client()
+ {
+
+ MultiDB::setDb($this->db);
+ return ClientContact::withTrashed()->find($this->contact_id)->client;
+
+ }
+
public function toggleTermsAccepted()
{
$this->terms_accepted = !$this->terms_accepted;
@@ -171,6 +256,10 @@ class RequiredClientInfo extends Component
public function handleSubmit(array $data): bool
{
+
+ MultiDB::setDb($this->db);
+ $contact = ClientContact::withTrashed()->find($this->contact_id);
+
$rules = [];
collect($this->fields)->map(function ($field) use (&$rules) {
@@ -192,7 +281,7 @@ class RequiredClientInfo extends Component
if ($this->updateClientDetails($data)) {
$this->dispatch(
'passed-required-fields-check',
- client_postal_code: $this->contact->client->postal_code
+ client_postal_code: $contact->client->postal_code
);
//if stripe is enabled, we want to update the customer at this point.
@@ -209,6 +298,11 @@ class RequiredClientInfo extends Component
$client = [];
$contact = [];
+
+ MultiDB::setDb($this->db);
+ $_contact = ClientContact::withTrashed()->find($this->contact_id);
+
+
foreach ($data as $field => $value) {
if (Str::startsWith($field, 'client_')) {
$client[$this->mappings[$field]] = $value;
@@ -219,20 +313,43 @@ class RequiredClientInfo extends Component
}
}
- $contact_update = $this->contact
+
+$_contact->first_name = $this->contact_first_name;
+$_contact->last_name = $this->contact_last_name;
+$_contact->client->name = $this->client_name;
+$_contact->email = $this->contact_email;
+$_contact->client->phone = $this->client_phone;
+$_contact->client->address1 = $this->client_address_line_1;
+$_contact->client->city = $this->client_city;
+$_contact->client->state = $this->client_state;
+$_contact->client->country_id = $this->client_country_id;
+$_contact->client->postal_code = $this->client_postal_code;
+$_contact->client->shipping_address1 = $this->client_shipping_address_line_1;
+$_contact->client->shipping_city = $this->client_shipping_city;
+$_contact->client->shipping_state = $this->client_shipping_state;
+$_contact->client->shipping_postal_code = $this->client_shipping_postal_code;
+$_contact->client->shipping_country_id = $this->client_shipping_country_id;
+$_contact->client->custom_value1 = $this->client_custom_value1;
+$_contact->client->custom_value2 = $this->client_custom_value2;
+$_contact->client->custom_value3 = $this->client_custom_value3;
+$_contact->client->custom_value4 = $this->client_custom_value4;
+$_contact->push();
+
+
+ $contact_update = $_contact
->fill($contact)
->push();
- $client_update = $this->contact->client
+ $client_update = $_contact->client
->fill($client)
->push();
- if ($contact_update && $client_update) {
+ if ($_contact) {
/** @var \App\Models\CompanyGateway $cg */
$cg = CompanyGateway::find($this->company_gateway_id);
if ($cg && $cg->update_details) {
- $payment_gateway = $cg->driver($this->client)->init();
+ $payment_gateway = $cg->driver($_contact->client)->init();
if (method_exists($payment_gateway, "updateCustomer")) {
$payment_gateway->updateCustomer();
@@ -247,11 +364,15 @@ class RequiredClientInfo extends Component
public function checkFields()
{
+
+ MultiDB::setDb($this->db);
+ $_contact = ClientContact::withTrashed()->find($this->contact_id);
+
foreach ($this->fields as $index => $field) {
$_field = $this->mappings[$field['name']];
if (Str::startsWith($field['name'], 'client_')) {
- if (empty($this->contact->client->{$_field}) || is_null($this->contact->client->{$_field}) || in_array($_field, $this->client_address_array)) {
+ if (empty($_contact->client->{$_field}) || is_null($_contact->client->{$_field}) || in_array($_field, $this->client_address_array)) {
$this->show_form = true;
} else {
$this->fields[$index]['filled'] = true;
@@ -259,7 +380,7 @@ class RequiredClientInfo extends Component
}
if (Str::startsWith($field['name'], 'contact_')) {
- if (empty($this->contact->{$_field}) || is_null($this->contact->{$_field}) || str_contains($this->contact->{$_field}, '@example.com')) {
+ if (empty($_contact->{$_field}) || is_null($_contact->{$_field}) || str_contains($_contact->{$_field}, '@example.com')) {
$this->show_form = true;
} else {
$this->fields[$index]['filled'] = true;
@@ -289,14 +410,18 @@ class RequiredClientInfo extends Component
public function handleCopyBilling(): void
{
+
+ MultiDB::setDb($this->db);
+ $_contact = ClientContact::withTrashed()->find($this->contact_id);
+
$this->dispatch(
'update-shipping-data',
- client_shipping_address_line_1: $this->contact->client->address1,
- client_shipping_address_line_2: $this->contact->client->address2,
- client_shipping_city: $this->contact->client->city,
- client_shipping_state: $this->contact->client->state,
- client_shipping_postal_code: $this->contact->client->postal_code,
- client_shipping_country_id: $this->contact->client->country_id,
+ client_shipping_address_line_1: $_contact->client->address1,
+ client_shipping_address_line_2: $_contact->client->address2,
+ client_shipping_city: $_contact->client->city,
+ client_shipping_state: $_contact->client->state,
+ client_shipping_postal_code: $_contact->client->postal_code,
+ client_shipping_country_id: $_contact->client->country_id,
);
}
diff --git a/app/PaymentDrivers/Square/CreditCard.php b/app/PaymentDrivers/Square/CreditCard.php
index 167744331d76..da53d36a2610 100644
--- a/app/PaymentDrivers/Square/CreditCard.php
+++ b/app/PaymentDrivers/Square/CreditCard.php
@@ -271,7 +271,7 @@ class CreditCard implements MethodInterface
$errors = $api_response->getErrors();
}
- if (property_exists($customers, 'customers')) {
+ if ($customers && property_exists($customers, 'customers')) {
return $customers->customers[0]->id;
}
diff --git a/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php b/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php
index ea757faca88e..6cca5ba8e3a0 100644
--- a/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php
+++ b/app/PaymentDrivers/Stripe/Jobs/PaymentIntentWebhook.php
@@ -89,6 +89,10 @@ class PaymentIntentWebhook implements ShouldQueue
}
$company_gateway = CompanyGateway::query()->find($this->company_gateway_id);
+
+ if(!$company_gateway)
+ return;
+
$stripe_driver = $company_gateway->driver()->init();
$charge_id = false;
diff --git a/app/Services/ClientPortal/InstantPayment.php b/app/Services/ClientPortal/InstantPayment.php
index 660ed9a345e0..3ff5cd2c7758 100644
--- a/app/Services/ClientPortal/InstantPayment.php
+++ b/app/Services/ClientPortal/InstantPayment.php
@@ -44,7 +44,6 @@ class InstantPayment
public function run()
{
- nlog($this->request->all());
$cc = auth()->guard('contact')->user();
diff --git a/app/Services/Email/Email.php b/app/Services/Email/Email.php
index d0e2da2d39d8..f47189009b3f 100644
--- a/app/Services/Email/Email.php
+++ b/app/Services/Email/Email.php
@@ -244,6 +244,12 @@ class Email implements ShouldQueue
return $this;
}
+ private function incrementEmailCounter(): void
+ {
+ if(in_array($this->mailer, ['default','mailgun']))
+ Cache::increment("email_quota".$this->company->account->key);
+ }
+
/**
* Attempts to send the email
*
@@ -270,7 +276,7 @@ class Email implements ShouldQueue
$mailer->send($this->mailable);
- Cache::increment("email_quota".$this->company->account->key);
+ $this->incrementEmailCounter();
LightLogs::create(new EmailSuccess($this->company->company_key, $this->mailable->subject))
->send();
@@ -549,7 +555,10 @@ class Email implements ShouldQueue
$this->mailer = 'mailgun';
$this->setMailgunMailer();
return $this;
-
+ case 'smtp':
+ $this->mailer = 'smtp';
+ $this->configureSmtpMailer();
+ return $this;
default:
$this->mailer = config('mail.default');
return $this;
@@ -562,6 +571,43 @@ class Email implements ShouldQueue
return $this;
}
+ private function configureSmtpMailer(): void
+ {
+
+ $company = $this->company;
+
+ $smtp_host = $company->smtp_host;
+ $smtp_port = $company->smtp_port;
+ $smtp_username = $company->smtp_username;
+ $smtp_password = $company->smtp_password;
+ $smtp_encryption = $company->smtp_encryption ?? 'tls';
+ $smtp_local_domain = strlen($company->smtp_local_domain) > 2 ? $company->smtp_local_domain : null;
+ $smtp_verify_peer = $company->smtp_verify_peer ?? true;
+
+ config([
+ 'mail.mailers.smtp' => [
+ 'transport' => 'smtp',
+ 'host' => $smtp_host,
+ 'port' => $smtp_port,
+ 'username' => $smtp_username,
+ 'password' => $smtp_password,
+ 'encryption' => $smtp_encryption,
+ 'local_domain' => $smtp_local_domain,
+ 'verify_peer' => $smtp_verify_peer,
+ 'timeout' => 30,
+ ],
+ ]);
+
+ $user = $this->resolveSendingUser();
+
+ $sending_email = (isset($this->email_object->settings->custom_sending_email) && stripos($this->email_object->settings->custom_sending_email, "@")) ? $this->email_object->settings->custom_sending_email : $user->email;
+ $sending_user = (isset($this->email_object->settings->email_from_name) && strlen($this->email_object->settings->email_from_name) > 2) ? $this->email_object->settings->email_from_name : $user->name();
+
+ $this->mailable
+ ->from($sending_email, $sending_user);
+
+ }
+
/**
* Allows configuration of multiple mailers
* per company for use by self hosted users
diff --git a/app/Services/Email/EmailDefaults.php b/app/Services/Email/EmailDefaults.php
index 033b2ad77478..06835c75cda8 100644
--- a/app/Services/Email/EmailDefaults.php
+++ b/app/Services/Email/EmailDefaults.php
@@ -123,7 +123,7 @@ class EmailDefaults
*/
private function setFrom(): self
{
- if (Ninja::isHosted() && $this->email->email_object->settings->email_sending_method == 'default') {
+ if (Ninja::isHosted() && in_array($this->email->email_object->settings->email_sending_method,['default', 'mailgun'])) {
if ($this->email->company->account->isPaid() && property_exists($this->email->email_object->settings, 'email_from_name') && strlen($this->email->email_object->settings->email_from_name) > 1) {
$email_from_name = $this->email->email_object->settings->email_from_name;
} else {
diff --git a/app/Services/Template/TemplateService.php b/app/Services/Template/TemplateService.php
index 37bd568f8ee5..e9fcced20a5e 100644
--- a/app/Services/Template/TemplateService.php
+++ b/app/Services/Template/TemplateService.php
@@ -1032,6 +1032,8 @@ class TemplateService
'payment_balance' => $purchase_order->client->payment_balance,
'credit_balance' => $purchase_order->client->credit_balance,
'vat_number' => $purchase_order->client->vat_number ?? '',
+ 'address' => $purchase_order->client->present()->address(),
+ 'shipping_address' => $purchase_order->client->present()->shipping_address(),
] : [],
'status_id' => (string)($purchase_order->status_id ?: 1),
'status' => PurchaseOrder::stringStatus($purchase_order->status_id ?? 1),
diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php
index 8316b6a7e4a5..36abc81f784f 100644
--- a/app/Utils/HtmlEngine.php
+++ b/app/Utils/HtmlEngine.php
@@ -622,6 +622,33 @@ class HtmlEngine
$data['$task.task3'] = ['value' => '', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'task3')];
$data['$task.task4'] = ['value' => '', 'label' => $this->helpers->makeCustomField($this->company->custom_fields, 'task4')];
+
+ if($this->entity->vendor) {
+
+ $data['$vendor_name'] = ['value' => $this->entity->vendor->present()->name() ?: ' ', 'label' => ctrans('texts.vendor_name')];
+ $data['$vendor.name'] = &$data['$vendor_name'];
+ $data['$vendor'] = &$data['$vendor_name'];
+ $data['$vendor.address1'] = ['value' => $this->entity->vendor->address1 ?: ' ', 'label' => ctrans('texts.address1')];
+ $data['$vendor.address2'] = ['value' => $this->entity->vendor->address2 ?: ' ', 'label' => ctrans('texts.address2')];
+ $data['$vendor.id_number'] = ['value' => $this->entity->vendor->id_number ?: ' ', 'label' => ctrans('texts.id_number')];
+ $data['$vendor.number'] = ['value' => $this->entity->vendor->number ?: ' ', 'label' => ctrans('texts.number')];
+ $data['$vendor.vat_number'] = ['value' => $this->entity->vendor->vat_number ?: ' ', 'label' => ctrans('texts.vat_number')];
+ $data['$vendor.website'] = ['value' => $this->entity->vendor->present()->website() ?: ' ', 'label' => ctrans('texts.website')];
+ $data['$vendor.phone'] = ['value' => $this->entity->vendor->present()->phone() ?: ' ', 'label' => ctrans('texts.phone')];
+ $data['$vendor.country'] = ['value' => isset($this->entity->vendor->country->name) ? ctrans('texts.country_' . $this->entity->vendor->country->name) : '', 'label' => ctrans('texts.country')];
+ $data['$vendor.country_2'] = ['value' => isset($this->entity->vendor->country) ? $this->entity->vendor->country->iso_3166_2 : '', 'label' => ctrans('texts.country')];
+ $data['$vendor_address'] = ['value' => $this->entity->vendor->present()->address() ?: ' ', 'label' => ctrans('texts.address')];
+ $data['$vendor.address'] = &$data['$vendor_address'];
+ $data['$vendor.postal_code'] = ['value' => $this->entity->vendor->postal_code ?: ' ', 'label' => ctrans('texts.postal_code')];
+ $data['$vendor.public_notes'] = ['value' => $this->entity->vendor->public_notes ?: ' ', 'label' => ctrans('texts.notes')];
+ $data['$vendor.city'] = ['value' => $this->entity->vendor->city ?: ' ', 'label' => ctrans('texts.city')];
+ $data['$vendor.state'] = ['value' => $this->entity->vendor->state ?: ' ', 'label' => ctrans('texts.state')];
+ $data['$vendor.city_state_postal'] = ['value' => $this->entity->vendor->present()->cityStateZip($this->entity->vendor->city, $this->entity->vendor->state, $this->entity->vendor->postal_code, false) ?: ' ', 'label' => ctrans('texts.city_state_postal')];
+ $data['$vendor.postal_city_state'] = ['value' => $this->entity->vendor->present()->cityStateZip($this->entity->vendor->city, $this->entity->vendor->state, $this->entity->vendor->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city_state')];
+ $data['$vendor.postal_city'] = ['value' => $this->entity->vendor->present()->cityStateZip($this->entity->vendor->city, null, $this->entity->vendor->postal_code, true) ?: ' ', 'label' => ctrans('texts.postal_city')];
+
+ }
+
if ($this->settings->signature_on_pdf) {
$data['$contact.signature'] = ['value' => $this->invitation->signature_base64, 'label' => ctrans('texts.signature')];
$data['$contact.signature_date'] = ['value' => $this->translateDate($this->invitation->signature_date, $this->client->date_format(), $this->client->locale()), 'label' => ctrans('texts.date')];
diff --git a/app/Utils/Number.php b/app/Utils/Number.php
index 53e030093c2c..bc1739f64c9f 100644
--- a/app/Utils/Number.php
+++ b/app/Utils/Number.php
@@ -93,59 +93,59 @@ class Number
* @param string $value The formatted number to be converted back to float
* @return float The formatted value
*/
- public static function parseFloat2($value)
+ public static function parseFloat($value)
{
- if(!$value)
- return 0;
-
- //remove everything except for numbers, decimals, commas and hyphens
- $value = preg_replace('/[^0-9.,-]+/', '', $value);
-
- $decimal = strpos($value, '.');
- $comma = strpos($value, ',');
-
- if($comma === false) //no comma must be a decimal number already
- return (float) $value;
-
- if($decimal < $comma){ //decimal before a comma = euro
- $value = str_replace(['.',','], ['','.'], $value);
- // $value = str_replace(',', '.', $value);
- return (float) $value;
- }
-
- //comma first = traditional thousan separator
- $value = str_replace(',', '', $value);
-
- return (float)$value;
-
-
// if(!$value)
// return 0;
- // $multiplier = false;
+ // //remove everything except for numbers, decimals, commas and hyphens
+ // $value = preg_replace('/[^0-9.,-]+/', '', $value);
- // if(substr($value, 0,1) == '-')
- // $multiplier = -1;
+ // $decimal = strpos($value, '.');
+ // $comma = strpos($value, ',');
+
+ // if($comma === false) //no comma must be a decimal number already
+ // return (float) $value;
- // $s = str_replace(',', '.', $value);
-
- // $s = preg_replace("/[^0-9\.]/", '', $s);
-
- // if ($s < 1) {
- // return (float) $s;
+ // if($decimal < $comma){ //decimal before a comma = euro
+ // $value = str_replace(['.',','], ['','.'], $value);
+ // // $value = str_replace(',', '.', $value);
+ // return (float) $value;
// }
- // $s = str_replace('.', '', substr($s, 0, -3)).substr($s, -3);
+ // //comma first = traditional thousan separator
+ // $value = str_replace(',', '', $value);
+
+ // return (float)$value;
+
+
+ if(!$value)
+ return 0;
- // if($multiplier)
- // $s = floatval($s)*-1;
+ $multiplier = false;
- // return (float) $s;
+ if(substr($value, 0,1) == '-')
+ $multiplier = -1;
+
+ $s = str_replace(',', '.', $value);
+
+ $s = preg_replace("/[^0-9\.]/", '', $s);
+
+ if ($s < 1) {
+ return (float) $s;
+ }
+
+ $s = str_replace('.', '', substr($s, 0, -3)).substr($s, -3);
+
+ if($multiplier)
+ $s = floatval($s)*-1;
+
+ return (float) $s;
}
//next iteration of float parsing
- public static function parseFloat($value)
+ public static function parseFloat2($value)
{
if(!$value) {
@@ -181,7 +181,7 @@ class Number
return (float) $value;
}
- //comma first = traditional thousan separator
+ //comma first = traditional thousand separator
$value = str_replace(',', '', $value);
return (float)$value;
diff --git a/config/ninja.php b/config/ninja.php
index 18a32359d864..76621119f951 100644
--- a/config/ninja.php
+++ b/config/ninja.php
@@ -17,8 +17,8 @@ return [
'require_https' => env('REQUIRE_HTTPS', true),
'app_url' => rtrim(env('APP_URL', ''), '/'),
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
- 'app_version' => env('APP_VERSION', '5.8.35'),
- 'app_tag' => env('APP_TAG', '5.8.35'),
+ 'app_version' => env('APP_VERSION', '5.8.36'),
+ 'app_tag' => env('APP_TAG', '5.8.36'),
'minimum_client_version' => '5.0.16',
'terms_version' => '1.0.1',
'api_secret' => env('API_SECRET', false),
diff --git a/lang/ar/texts.php b/lang/ar/texts.php
index 6ed50ced938b..b8dbdba21b8f 100644
--- a/lang/ar/texts.php
+++ b/lang/ar/texts.php
@@ -453,7 +453,7 @@ $lang = array(
'edit_token' => 'تحرير الرمز',
'delete_token' => 'حذف الرمز المميز',
'token' => 'رمز',
- 'add_gateway' => 'إضافة بوابة',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'حذف البوابة',
'edit_gateway' => 'تحرير البوابة',
'updated_gateway' => 'تم تحديث البوابة بنجاح',
@@ -5182,7 +5182,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'غير جاهز',
'nordigen_handler_error_contents_requisition_invalid_status' => 'لقد اتصلت بهذا الموقع مبكرًا جدًا. الرجاء إنهاء الترخيص وتحديث هذه الصفحة. اتصل بالدعم للحصول على المساعدة، إذا استمرت هذه المشكلة.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'لم يتم تحديد أي حسابات',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'لم تقم الخدمة بإرجاع أي حسابات صالحة. فكر في إعادة تشغيل التدفق.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'إعادة تشغيل التدفق.',
'nordigen_handler_return' => 'العودة إلى التطبيق.',
'lang_Lao' => 'لاو',
@@ -5222,7 +5222,19 @@ $lang = array(
'test_email_sent' => 'تم إرسال البريد الإلكتروني بنجاح',
'gateway_type' => 'نوع البوابة',
'save_template_body' => 'هل ترغب في حفظ تعيين الاستيراد هذا كقالب لاستخدامه في المستقبل؟',
- 'save_as_template' => 'حفظ تعيين القالب'
+ 'save_as_template' => 'حفظ تعيين القالب',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'يضبط تاريخ استحقاق الفاتورة الافتراضي',
+ 'payment_type_help' => 'يعيّن نوع الدفع اليدوي الافتراضي.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/bg/texts.php b/lang/bg/texts.php
index d0581989d197..c7f59537993a 100644
--- a/lang/bg/texts.php
+++ b/lang/bg/texts.php
@@ -461,7 +461,7 @@ $lang = array(
'edit_token' => 'Редакция на токън',
'delete_token' => 'Изтриване на токън',
'token' => 'Токън',
- 'add_gateway' => 'Добавяне на Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Изтриване на Gateway',
'edit_gateway' => 'Редакция на Gateway',
'updated_gateway' => 'Успешно актуализиран Gateway',
@@ -3869,7 +3869,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Задава падеж на фактурата по подразбиране',
+ 'payment_type_help' => 'Задава тип за ръчно плащане по подразбиране.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/ca/texts.php b/lang/ca/texts.php
index 4e92139f804d..9e5b077a8a21 100644
--- a/lang/ca/texts.php
+++ b/lang/ca/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Edit Token',
'delete_token' => 'Delete Token',
'token' => 'Token',
- 'add_gateway' => 'Add Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Delete Gateway',
'edit_gateway' => 'Edit Gateway',
'updated_gateway' => 'Successfully updated gateway',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5237,6 +5237,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sets the default invoice due date',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/cs/texts.php b/lang/cs/texts.php
index 474f0177f85b..7d1c0f4ffaf7 100644
--- a/lang/cs/texts.php
+++ b/lang/cs/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Editovat token',
'delete_token' => 'Smazat Token',
'token' => 'Token',
- 'add_gateway' => 'Přidat platební bránu',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Smazat platební bránu',
'edit_gateway' => 'Editovat bránu',
'updated_gateway' => 'Brána úspěšně změněna',
@@ -5202,7 +5202,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5238,6 +5238,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Nastaví jako výchozí datum splatnosti faktury',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/da/texts.php b/lang/da/texts.php
index 7794b7b986e8..e21df25cd5ce 100644
--- a/lang/da/texts.php
+++ b/lang/da/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Redigér token',
'delete_token' => 'Slet token',
'token' => 'Token',
- 'add_gateway' => 'Tilføj gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Slet gateway',
'edit_gateway' => 'Redigér gateway',
'updated_gateway' => 'Gateway blev opdateret',
@@ -5200,7 +5200,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5236,6 +5236,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sætter standard faktura forfalds dato',
+ 'payment_type_help' => 'Indstiller den manuelle Betaling som standard.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/de/texts.php b/lang/de/texts.php
index 2f055d0b222d..e8d473729f42 100644
--- a/lang/de/texts.php
+++ b/lang/de/texts.php
@@ -461,7 +461,7 @@ $lang = array(
'edit_token' => 'Token bearbeiten',
'delete_token' => 'Token löschen',
'token' => 'Token',
- 'add_gateway' => 'Zahlungsanbieter hinzufügen',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Zahlungsanbieter löschen',
'edit_gateway' => 'Zahlungsanbieter bearbeiten',
'updated_gateway' => 'Zahlungsanbieter aktualisiert',
@@ -5205,7 +5205,7 @@ Leistungsempfängers',
'nordigen_handler_error_heading_requisition_invalid_status' => 'Nicht bereit',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Sie haben diese Seite zu früh aufgerufen. Bitte schließen Sie die Autorisierung ab und aktualisieren Sie diese Seite. Wenn das Problem weiterhin besteht, wenden Sie sich an den Support.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Keine Konten ausgewählt',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'Der Dienst hat keine gültigen Konten zurückgegeben. Erwägen Sie, den Flow neu zu starten.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Fluss neu starten.',
'nordigen_handler_return' => 'Zurück zur Bewerbung.',
'lang_Lao' => 'Laotisch',
@@ -5245,7 +5245,19 @@ Leistungsempfängers',
'test_email_sent' => 'E-Mail erfolgreich gesendet',
'gateway_type' => 'Gateway-Typ',
'save_template_body' => 'Möchten Sie diese Importzuordnung als Vorlage für die zukünftige Verwendung speichern?',
- 'save_as_template' => 'Vorlagenzuordnung speichern'
+ 'save_as_template' => 'Vorlagenzuordnung speichern',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Setzt das Standardfälligkeitsdatum',
+ 'payment_type_help' => 'Setze die Standard manuelle Zahlungsmethode.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/el/texts.php b/lang/el/texts.php
index 55eca879770a..e90b83714245 100644
--- a/lang/el/texts.php
+++ b/lang/el/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Επεξεργασία Διακριτικού',
'delete_token' => 'Διαγραφή Διακριτικού',
'token' => 'Διακριτικό',
- 'add_gateway' => 'Προσθήκη Πύλης Πληρωμών (Gateway)',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Διαγραφή Πύλης Πληρωμών (Gateway)',
'edit_gateway' => 'Επεξεργασία Πύλης Πληρωμών (Gateway)',
'updated_gateway' => 'Επιτυχής ενημέρωση πύλης πληρωμών (Gateway)',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Η ακύρωση εκκρεμεί, θα επικοινωνήσουμε μαζί σας!',
'list_of_payments' => 'Λίστα Πληρωμών',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Οριστική αφαίρεσηε αυτής της μεθόδου πληρωμής',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'Δεν υπάρχουν χρεώσιμες εργασίες για αυτό το έργο',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Ορίζει την προεπιλεγμένη ημερομηνία ολοκλήρωσης των τιμολογίων',
+ 'payment_type_help' => 'Ορίζει τον προεπιλεγμένο τρόπο χειροκίνητης πληρωμής.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/en/texts.php b/lang/en/texts.php
index 2d7982a8d62e..fd5294d1f969 100644
--- a/lang/en/texts.php
+++ b/lang/en/texts.php
@@ -5253,7 +5253,9 @@ $lang = array(
'expense_payment_type_help' => 'The default expense payment type to be used',
'paylater' => 'Pay in 4',
'payment_provider' => 'Payment Provider',
-
+ 'select_email_provider' => 'Set your email as the sending user',
+ 'purchase_order_items' => 'Purchase Order Items',
+
);
return $lang;
diff --git a/lang/es/texts.php b/lang/es/texts.php
index 010c2bb8dd66..a9c4f01a989f 100644
--- a/lang/es/texts.php
+++ b/lang/es/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Editar Token',
'delete_token' => 'Eliminar Token',
'token' => 'Token',
- 'add_gateway' => 'Agregar Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Eliminar Gateway',
'edit_gateway' => 'Editar Gateway',
'updated_gateway' => 'Gateway actualizado con éxito',
@@ -5200,7 +5200,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'No está listo',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Llamaste a este sitio demasiado pronto. Finalice la autorización y actualice esta página. Póngase en contacto con el soporte para obtener ayuda si este problema persiste.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No hay cuentas seleccionadas',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'El servicio no ha devuelto ninguna cuenta válida. Considere reiniciar el flujo.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Reiniciar el flujo.',
'nordigen_handler_return' => 'Volver a la aplicación.',
'lang_Lao' => 'laosiano',
@@ -5240,7 +5240,19 @@ $lang = array(
'test_email_sent' => 'Correo electrónico enviado correctamente',
'gateway_type' => 'Tipo de puerta de enlace',
'save_template_body' => '¿Le gustaría guardar este mapeo de importación como plantilla para uso futuro?',
- 'save_as_template' => 'Guardar asignación de plantilla'
+ 'save_as_template' => 'Guardar asignación de plantilla',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Establecer fecha de vencimiento de la factura por defecto',
+ 'payment_type_help' => 'Establecer el tipo de pago manual por defecto.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/es_ES/texts.php b/lang/es_ES/texts.php
index bb6228522af3..70e4c4208d99 100644
--- a/lang/es_ES/texts.php
+++ b/lang/es_ES/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Editar Token',
'delete_token' => 'Eliminar Token',
'token' => 'Token',
- 'add_gateway' => 'Agregar Pasarela',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Eliminar Pasarela',
'edit_gateway' => 'Editar Pasarela',
'updated_gateway' => 'Pasarela actualizada correctamente',
@@ -5198,7 +5198,7 @@ De lo contrario, este campo deberá dejarse en blanco.',
'nordigen_handler_error_heading_requisition_invalid_status' => 'No listo',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Llamaste a este sitio demasiado pronto. Finalice la autorización y actualice esta página. Póngase en contacto con el soporte para obtener ayuda si este problema persiste.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No hay cuentas seleccionadas',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'El servicio no ha devuelto ninguna cuenta válida. Considere reiniciar el flujo.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Reiniciar el flujo.',
'nordigen_handler_return' => 'Volver a la aplicación.',
'lang_Lao' => 'Lao',
@@ -5238,7 +5238,19 @@ De lo contrario, este campo deberá dejarse en blanco.',
'test_email_sent' => 'Correo electrónico enviado correctamente',
'gateway_type' => 'Tipo de puerta de enlace',
'save_template_body' => '¿Le gustaría guardar este mapeo de importación como plantilla para uso futuro?',
- 'save_as_template' => 'Guardar asignación de plantilla'
+ 'save_as_template' => 'Guardar asignación de plantilla',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Establezca la fecha límite de pago de factura por defecto',
+ 'payment_type_help' => 'Establece el tipo de pago manual predeterminado.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/et/texts.php b/lang/et/texts.php
index b9dd9d9a00a2..e0323fe259d0 100644
--- a/lang/et/texts.php
+++ b/lang/et/texts.php
@@ -461,7 +461,7 @@ $lang = array(
'edit_token' => 'Redigeeri Tokenit',
'delete_token' => 'Kustuta Token',
'token' => 'Token',
- 'add_gateway' => 'Lisa Lüüs',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Kustuta Lüüs',
'edit_gateway' => 'Muuda Lüüsi',
'updated_gateway' => 'Makselahendus uuendatud',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Määrab vaikimisi arve tähtaeg',
+ 'payment_type_help' => 'Määrab vaikimisi käsitsimakse tüüp.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/fa/texts.php b/lang/fa/texts.php
index c565507b7940..4d0ee721d0e6 100644
--- a/lang/fa/texts.php
+++ b/lang/fa/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Edit Token',
'delete_token' => 'Delete Token',
'token' => 'Token',
- 'add_gateway' => 'Add Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Delete Gateway',
'edit_gateway' => 'Edit Gateway',
'updated_gateway' => 'Successfully updated gateway',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sets the default invoice due date',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/fi/texts.php b/lang/fi/texts.php
index a7e2351a4e1c..67325c4878a0 100644
--- a/lang/fi/texts.php
+++ b/lang/fi/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Muokkaa tokenia',
'delete_token' => 'Poista token',
'token' => 'Token',
- 'add_gateway' => 'Lisää maksunvälittäjä',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Poista maksunvälittäjä',
'edit_gateway' => 'Muokkaa maksunvälittäjää',
'updated_gateway' => 'Maksunvälittäjä päivitetty onnistuneesti',
@@ -3868,7 +3868,7 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'Lista maksutavoista',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ Kun saat summat, palaa tälle maksutapasivulle ja klikkaa "Saata loppuun todenta
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Asettaa eräpäivään vakioasetuksen',
+ 'payment_type_help' => 'Asettaa oletuksena manuaalisen maksutavan.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/fr/texts.php b/lang/fr/texts.php
index 177f2ff162e3..cfa4cf961d7e 100644
--- a/lang/fr/texts.php
+++ b/lang/fr/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Éditer ce jeton',
'delete_token' => 'Supprimer ce jeton',
'token' => 'Jeton',
- 'add_gateway' => 'Ajouter une passerelle',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Supprimer la passerelle',
'edit_gateway' => 'Éditer la passerelle',
'updated_gateway' => 'Passerelle mise à jour avec succès',
@@ -5201,7 +5201,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'nordigen_handler_error_heading_requisition_invalid_status' => 'Pas prêt',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Vous avez appelé ce site trop tôt. Veuillez terminer l'autorisation et actualiser cette page. Contactez le support pour obtenir de l'aide si ce problème persiste.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Aucun compte sélectionné',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'Le service n'a renvoyé aucun compte valide. Pensez à redémarrer le flux.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Redémarrez le flux.',
'nordigen_handler_return' => 'Retour à la candidature.',
'lang_Lao' => 'Laotien',
@@ -5241,7 +5241,19 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'test_email_sent' => 'E-mail envoyé avec succès',
'gateway_type' => 'Type de passerelle',
'save_template_body' => 'Souhaitez-vous enregistrer ce mappage d’importation en tant que modèle pour une utilisation future ?',
- 'save_as_template' => 'Enregistrer le mappage de modèle'
+ 'save_as_template' => 'Enregistrer le mappage de modèle',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Définit la date d\'échéance de la facture par défaut ',
+ 'payment_type_help' => 'Définit le type de paiement manuel par défaut.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/fr_CA/texts.php b/lang/fr_CA/texts.php
index 64d80216948c..9faef9cfe54c 100644
--- a/lang/fr_CA/texts.php
+++ b/lang/fr_CA/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Éditer le jeton',
'delete_token' => 'Supprimer le jeton',
'token' => 'Jeton',
- 'add_gateway' => 'Ajouter une passerelle',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Supprimer la passerelle',
'edit_gateway' => 'Éditer la passerelle',
'updated_gateway' => 'La passerelle a été mise à jour',
@@ -5198,7 +5198,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'nordigen_handler_error_heading_requisition_invalid_status' => 'Pas prêt',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Vous avez contacté ce site trop tôt. Veuillez terminer l\'autorisation et rafraîchir cette page. Contactez le support pour obtenir de l\'aide si ce problème persiste.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Aucun compte sélectionné',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'Le service n\'a retourné aucun compte valide. Veuillez redémarrer le processus.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'Le service n’a retourné aucun compte valide. Veuillez redémarrer le processus.',
'nordigen_handler_restart' => 'Redémarrer le processus',
'nordigen_handler_return' => 'Retour à l\'application',
'lang_Lao' => 'Lao',
@@ -5238,7 +5238,19 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'test_email_sent' => 'Le courriel a été envoyé',
'gateway_type' => 'Type de passerelle',
'save_template_body' => 'Souhaitez-vous enregistrer cette correspondance d\'importation en tant que modèle pour une utilisation future ?',
- 'save_as_template' => 'Enregistrer la correspondance de modèle'
+ 'save_as_template' => 'Enregistrer la correspondance de modèle',
+ 'auto_bill_standard_invoices_help' => 'Facturer automatiquement les factures régulières à la date d\'échéance',
+ 'auto_bill_on_help' => 'Facturation automatique à la date d\'envoi OU à la date d\'échéance (factures récurrentes)',
+ 'use_available_credits_help' => 'Appliquer tout solde de crédit aux paiements avant de facturer une méthode de paiement',
+ 'use_unapplied_payments' => 'Utiliser les paiements non appliqués',
+ 'use_unapplied_payments_help' => 'Appliquer tout solde de paiement avant de facturer une méthode de paiement',
+ 'payment_terms_help' => 'Définit la date d\'échéance de la facture par défaut',
+ 'payment_type_help' => 'Définit le type de paiement manuel par défaut.',
+ 'quote_valid_until_help' => 'Le nombre de jours pour lesquels la soumission est valide',
+ 'expense_payment_type_help' => 'Le type de paiement de dépenses par défaut à utiliser',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/fr_CH/texts.php b/lang/fr_CH/texts.php
index ead25b634ea3..4b2c73a51f73 100644
--- a/lang/fr_CH/texts.php
+++ b/lang/fr_CH/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Éditer le jeton',
'delete_token' => 'Supprimer le jeton',
'token' => 'Jeton',
- 'add_gateway' => 'Ajouter une passerelle',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Supprimer la passerelle',
'edit_gateway' => 'Éditer la passerelle',
'updated_gateway' => 'La passerelle a été mise à jour avec succès',
@@ -5198,7 +5198,7 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'nordigen_handler_error_heading_requisition_invalid_status' => 'Pas prêt',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Vous avez appelé ce site trop tôt. Veuillez terminer l'autorisation et actualiser cette page. Contactez le support pour obtenir de l'aide si ce problème persiste.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Aucun compte sélectionné',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'Le service n'a renvoyé aucun compte valide. Pensez à redémarrer le flux.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Redémarrez le flux.',
'nordigen_handler_return' => 'Retour à la candidature.',
'lang_Lao' => 'Laotien',
@@ -5238,7 +5238,19 @@ Lorsque les montant apparaîtront sur votre relevé, veuillez revenir sur cette
'test_email_sent' => 'E-mail envoyé avec succès',
'gateway_type' => 'Type de passerelle',
'save_template_body' => 'Souhaitez-vous enregistrer ce mappage d’importation en tant que modèle pour une utilisation future ?',
- 'save_as_template' => 'Enregistrer le mappage de modèle'
+ 'save_as_template' => 'Enregistrer le mappage de modèle',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Définit la date d\'échéance de la facture par défaut',
+ 'payment_type_help' => 'Définit le type de paiement manuel par défaut.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/he/texts.php b/lang/he/texts.php
index 2ed88859dd69..7784de5f58ff 100644
--- a/lang/he/texts.php
+++ b/lang/he/texts.php
@@ -458,7 +458,7 @@ $lang = array(
'edit_token' => 'עריכת טוקן',
'delete_token' => 'מחיקת טוקן',
'token' => 'טוקן',
- 'add_gateway' => 'הוספת Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'מחיקת Gateway',
'edit_gateway' => 'עריכת Gateway',
'updated_gateway' => 'Gateway עודכן בהצלחה',
@@ -5199,7 +5199,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'לא מוכן',
'nordigen_handler_error_contents_requisition_invalid_status' => 'התקשרת לאתר הזה מוקדם מדי. אנא סיים את ההרשאה ורענן דף זה. פנה לתמיכה לקבלת עזרה, אם הבעיה נמשכת.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'לא נבחרו חשבונות',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'השירות לא החזיר חשבונות תקפים. שקול להפעיל מחדש את הזרימה.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'הפעל מחדש את הזרימה.',
'nordigen_handler_return' => 'חזור ליישום.',
'lang_Lao' => 'לאו',
@@ -5239,7 +5239,19 @@ $lang = array(
'test_email_sent' => 'דוא"ל נשלח בהצלחה',
'gateway_type' => 'סוג שער',
'save_template_body' => 'האם תרצה לשמור את מיפוי הייבוא הזה כתבנית לשימוש עתידי?',
- 'save_as_template' => 'שמור מיפוי תבניות'
+ 'save_as_template' => 'שמור מיפוי תבניות',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'מגדיר את ברית המחדל תאריך לתשלום ',
+ 'payment_type_help' => 'הגדר כברירת מחדל manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/hr/texts.php b/lang/hr/texts.php
index 3541836ba370..b9f99ba8e62b 100644
--- a/lang/hr/texts.php
+++ b/lang/hr/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Uredi token',
'delete_token' => 'Obriši token',
'token' => 'Token',
- 'add_gateway' => 'Dodaj usmjernik',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Obriši usmjernik',
'edit_gateway' => 'Uredi usmjernik',
'updated_gateway' => 'Uspješno ažuriran usmjernik',
@@ -3869,7 +3869,7 @@ Nevažeći kontakt email',
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ Nevažeći kontakt email',
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ Nevažeći kontakt email',
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ Nevažeći kontakt email',
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ Nevažeći kontakt email',
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sets the default invoice due date',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/hu/texts.php b/lang/hu/texts.php
index 0f59042e02b1..ab5cdcff9fd0 100644
--- a/lang/hu/texts.php
+++ b/lang/hu/texts.php
@@ -453,7 +453,7 @@ $lang = array(
'edit_token' => 'Token szerkesztése',
'delete_token' => 'Token törlése',
'token' => 'Token',
- 'add_gateway' => 'Szolgáltató hozzáadása',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Szolgáltató törlése',
'edit_gateway' => 'Szolgáltató szerkesztése',
'updated_gateway' => 'Szolgáltató sikeresen frissítve',
@@ -5185,7 +5185,7 @@ adva :date',
'nordigen_handler_error_heading_requisition_invalid_status' => 'Nem áll készen',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Túl korán hívta fel ezt az oldalt. Kérjük, fejezze be az engedélyezést, és frissítse ezt az oldalt. Ha a probléma továbbra is fennáll, forduljon az ügyfélszolgálathoz.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Nincsenek kiválasztott fiókok',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'A szolgáltatás nem adott vissza egyetlen érvényes fiókot sem. Fontolja meg az áramlás újraindítását.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Folyamat újraindítása.',
'nordigen_handler_return' => 'Vissza az alkalmazáshoz.',
'lang_Lao' => 'Lao',
@@ -5225,7 +5225,19 @@ adva :date',
'test_email_sent' => 'E-mail sikeresen elküldve',
'gateway_type' => 'Átjáró típusa',
'save_template_body' => 'Szeretné menteni ezt az importleképezést sablonként későbbi használatra?',
- 'save_as_template' => 'Sablonleképezés mentése'
+ 'save_as_template' => 'Sablonleképezés mentése',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Alapértelmezett fizetési határidő beállítása',
+ 'payment_type_help' => 'Segítség a fizetési típusokhoz',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/it/texts.php b/lang/it/texts.php
index 5161891bc11e..57ae919439b6 100644
--- a/lang/it/texts.php
+++ b/lang/it/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Modifica token',
'delete_token' => 'Elimina Token',
'token' => 'Token',
- 'add_gateway' => 'Aggiungi Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Elimina Gateway',
'edit_gateway' => 'Modifica Gateway',
'updated_gateway' => 'Piattaforma aggiornata con successo',
@@ -5192,7 +5192,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5228,6 +5228,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Imposta la scadenza fatturapredefinita',
+ 'payment_type_help' => 'Imposta il tipo di pagamento predefinito.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/ja/texts.php b/lang/ja/texts.php
index e91cccdee005..54800d9c46dc 100644
--- a/lang/ja/texts.php
+++ b/lang/ja/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'トークンを編集',
'delete_token' => 'トークンを削除',
'token' => 'トークン',
- 'add_gateway' => 'ゲートウェイを追加',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'ゲートウェイを削除',
'edit_gateway' => 'ゲートウェイを編集',
'updated_gateway' => 'ゲートウェイを更新しました。',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5237,6 +5237,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sets the default invoice due date',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/km_KH/texts.php b/lang/km_KH/texts.php
index c7c501a6965c..548193b62bf3 100644
--- a/lang/km_KH/texts.php
+++ b/lang/km_KH/texts.php
@@ -453,7 +453,7 @@ $lang = array(
'edit_token' => 'កែសម្រួលនិមិត្តសញ្ញា',
'delete_token' => 'លុបថូខឹន',
'token' => 'សញ្ញាសម្ងាត់',
- 'add_gateway' => 'បន្ថែមច្រកផ្លូវ',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'លុបច្រកផ្លូវ',
'edit_gateway' => 'កែសម្រួលច្រកផ្លូវ',
'updated_gateway' => 'បានធ្វើបច្ចុប្បន្នភាពច្រកផ្លូវដោយជោគជ័យ',
@@ -5181,7 +5181,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5217,6 +5217,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'កំណត់ កាលបរិច្ឆេទកំណត់វិក្កយបត្រ លំនាំដើម',
+ 'payment_type_help' => 'កំណត់ ប្រភេទការទូទាត់ដោយដៃ លំនាំដើម។',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/lo_LA/texts.php b/lang/lo_LA/texts.php
index 09ff1e1cdc43..f9af2c86b552 100644
--- a/lang/lo_LA/texts.php
+++ b/lang/lo_LA/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'ແກ້ໄຂ Token',
'delete_token' => 'ລຶບໂທເຄັນ',
'token' => 'ໂທເຄັນ',
- 'add_gateway' => 'ເພີ່ມປະຕູ',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'ລຶບປະຕູທາງອອກ',
'edit_gateway' => 'ແກ້ໄຂປະຕູ',
'updated_gateway' => 'ປັບປຸງປະຕູທາງສຳເລັດແລ້ວ',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'ບໍ່ພ້ອມ',
'nordigen_handler_error_contents_requisition_invalid_status' => 'ເຈົ້າເອີ້ນເວັບໄຊນີ້ໄວເກີນໄປ. ກະລຸນາສຳເລັດການອະນຸຍາດ ແລະໂຫຼດໜ້ານີ້ຄືນໃໝ່. ຕິດຕໍ່ຝ່າຍຊ່ວຍເຫຼືອເພື່ອຂໍຄວາມຊ່ວຍເຫຼືອ, ຖ້າບັນຫານີ້ຍັງຄົງຢູ່.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'ບໍ່ໄດ້ເລືອກບັນຊີໃດ',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'ການບໍລິການບໍ່ໄດ້ສົ່ງຄືນບັນຊີທີ່ຖືກຕ້ອງໃດໆ. ພິຈາລະນາເລີ່ມການໄຫຼເຂົ້າໃໝ່.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'ເລີ່ມການໄຫຼເຂົ້າໃໝ່.',
'nordigen_handler_return' => 'ກັບຄືນໄປຫາແອັບພລິເຄຊັນ.',
'lang_Lao' => 'ລາວ',
@@ -5241,7 +5241,19 @@ $lang = array(
'test_email_sent' => 'ສົ່ງອີເມວສຳເລັດແລ້ວ',
'gateway_type' => 'ປະເພດປະຕູ',
'save_template_body' => 'ທ່ານຕ້ອງການບັນທຶກແຜນທີ່ການນໍາເຂົ້ານີ້ເປັນແມ່ແບບສໍາລັບການນໍາໃຊ້ໃນອະນາຄົດບໍ?',
- 'save_as_template' => 'ບັນທຶກການສ້າງແຜນທີ່ແມ່ແບບ'
+ 'save_as_template' => 'ບັນທຶກການສ້າງແຜນທີ່ແມ່ແບບ',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'ກຳນົດຄ່າເລີ່ມຕົ້ນ ວັນທີຄົບກຳນົດໃບແຈ້ງໜີ້',
+ 'payment_type_help' => 'ຕັ້ງ ປະເພດການຈ່າຍເງິນດ້ວຍມື ເລີ່ມຕົ້ນ.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/lt/texts.php b/lang/lt/texts.php
index cfdbf49a7d0a..e37511eae7ed 100644
--- a/lang/lt/texts.php
+++ b/lang/lt/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Edit Token',
'delete_token' => 'Delete Token',
'token' => 'Token',
- 'add_gateway' => 'Add Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Delete Gateway',
'edit_gateway' => 'Edit Gateway',
'updated_gateway' => 'Successfully updated gateway',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Nustato pagal nutylėjimą sąskaitos terminas',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/lv_LV/texts.php b/lang/lv_LV/texts.php
index b1a039c5f60d..d516957a466e 100644
--- a/lang/lv_LV/texts.php
+++ b/lang/lv_LV/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Edit Token',
'delete_token' => 'Delete Token',
'token' => 'Token',
- 'add_gateway' => 'Add Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Delete Gateway',
'edit_gateway' => 'Edit Gateway',
'updated_gateway' => 'Successfully updated gateway',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sets the default invoice due date',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/mk_MK/texts.php b/lang/mk_MK/texts.php
index 72e690453e76..fb3e46001d08 100644
--- a/lang/mk_MK/texts.php
+++ b/lang/mk_MK/texts.php
@@ -461,7 +461,7 @@ $lang = array(
'edit_token' => 'Измени токен',
'delete_token' => 'Избриши токен',
'token' => 'Токен',
- 'add_gateway' => 'Додади Платен портал',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Избриши Платен портал',
'edit_gateway' => 'Уреди Платен портал',
'updated_gateway' => 'Успешно ажурирање на платен портал',
@@ -3869,7 +3869,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Го поставува стандардниот датум на достасување на фактура ',
+ 'payment_type_help' => 'Постави стандарден тип на рачно плаќање ',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/nb_NO/texts.php b/lang/nb_NO/texts.php
index 04795573c679..22fab897421f 100644
--- a/lang/nb_NO/texts.php
+++ b/lang/nb_NO/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Rediger Token',
'delete_token' => 'Slett Token',
'token' => 'Token',
- 'add_gateway' => 'Legg til Tilbyder',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Slett Tilbyder',
'edit_gateway' => 'Rediger Tilbyder',
'updated_gateway' => 'Suksessfullt oppdatert tilbyder',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Angir standard fakturaforfall',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/nl/texts.php b/lang/nl/texts.php
index 4bee1efe97ad..822aeb33bce8 100644
--- a/lang/nl/texts.php
+++ b/lang/nl/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Wijzig token',
'delete_token' => 'Verwijder token',
'token' => 'Token',
- 'add_gateway' => 'Gateway toevoegen',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Gateway verwijderen',
'edit_gateway' => 'Wijzig gateway',
'updated_gateway' => 'De gateway is gewijzigd',
@@ -5201,7 +5201,7 @@ Email: :email
',
'nordigen_handler_error_heading_requisition_invalid_status' => 'Niet klaar',
'nordigen_handler_error_contents_requisition_invalid_status' => 'Je hebt deze site te vroeg gebeld. Voltooi de autorisatie en vernieuw deze pagina. Neem contact op met de ondersteuning voor hulp als dit probleem zich blijft voordoen.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'Geen accounts geselecteerd',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'De service heeft geen geldige accounts geretourneerd. Overweeg om de stroom opnieuw te starten.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Start de stroom opnieuw.',
'nordigen_handler_return' => 'Terug naar applicatie.',
'lang_Lao' => 'Laos',
@@ -5241,7 +5241,19 @@ Email: :email
',
'test_email_sent' => 'E-mail succesvol verzonden',
'gateway_type' => 'Gatewaytype',
'save_template_body' => 'Wilt u deze importtoewijzing opslaan als sjabloon voor toekomstig gebruik?',
- 'save_as_template' => 'Sjabloontoewijzing opslaan'
+ 'save_as_template' => 'Sjabloontoewijzing opslaan',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Stel de standaard factuurvervaldatum in.',
+ 'payment_type_help' => 'Stel de standaard manuele betalingsmethode in.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/pl/texts.php b/lang/pl/texts.php
index 4db2dab2df10..9e41e03dd1e8 100644
--- a/lang/pl/texts.php
+++ b/lang/pl/texts.php
@@ -458,7 +458,7 @@ Przykłady dynamicznych zmiennych:
'edit_token' => 'Edytuj token',
'delete_token' => 'Usuń token',
'token' => 'Token',
- 'add_gateway' => 'Dodaj dostawcę płatności',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Usuń dostawcę płatności',
'edit_gateway' => 'Edytuj dostawcę płatności',
'updated_gateway' => 'Dostawca płatności został zaktualizowany.',
@@ -5199,7 +5199,7 @@ Gdy przelewy zostaną zaksięgowane na Twoim koncie, wróć do tej strony i klik
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5235,6 +5235,23 @@ Gdy przelewy zostaną zaksięgowane na Twoim koncie, wróć do tej strony i klik
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Ustaw domyślny termin zapłaty faktury',
+ 'payment_type_help' => 'Ustaw jako domyślny rodzaj płatności',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/pt_BR/texts.php b/lang/pt_BR/texts.php
index 3c2ef7ce4906..e282ea1cb492 100644
--- a/lang/pt_BR/texts.php
+++ b/lang/pt_BR/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Editar Token',
'delete_token' => 'Excluir Token',
'token' => 'Token',
- 'add_gateway' => 'Adicionar Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Excluir Gateway',
'edit_gateway' => 'Editar Gateway',
'updated_gateway' => 'Gateway atualizado com sucesso',
@@ -5198,7 +5198,7 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5234,6 +5234,23 @@ Quando tiver as quantias, volte a esta página de formas de pagamento e clique "
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Define a data de vencimento padrão da fatura',
+ 'payment_type_help' => 'Define o tipo de pagamento manual padrão.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/pt_PT/texts.php b/lang/pt_PT/texts.php
index b64f874782a7..27924519e8bc 100644
--- a/lang/pt_PT/texts.php
+++ b/lang/pt_PT/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Editar Símbolo',
'delete_token' => 'Apagar Símbolo',
'token' => 'Símbolo',
- 'add_gateway' => 'Adicionar Terminal',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Apagar Terminal',
'edit_gateway' => 'Editar Terminal',
'updated_gateway' => 'Terminal atualizado',
@@ -5201,7 +5201,7 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.',
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5237,6 +5237,23 @@ O envio de E-mails foi suspenso. Será retomado às 23:00 UTC.',
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Definir data de vencimento padrão ',
+ 'payment_type_help' => 'Definir como padrão Tipo de pagamento manual.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/ro/texts.php b/lang/ro/texts.php
index 98419a4861e6..687e16dc7ca9 100644
--- a/lang/ro/texts.php
+++ b/lang/ro/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Modifica token',
'delete_token' => 'Șterge Token',
'token' => 'Token',
- 'add_gateway' => 'Adaugă Gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Șterge Gateway',
'edit_gateway' => 'Modifică Gateway',
'updated_gateway' => 'Gateway actualizat',
@@ -5202,7 +5202,7 @@ Odată ce sumele au ajuns la dumneavoastră, reveniți la pagina cu metode de pl
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5238,6 +5238,23 @@ Odată ce sumele au ajuns la dumneavoastră, reveniți la pagina cu metode de pl
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Setați invoice due date implicită',
+ 'payment_type_help' => 'Setează tipul de plată manual implicit.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/ru_RU/texts.php b/lang/ru_RU/texts.php
index 185351838ebc..91aecb736390 100644
--- a/lang/ru_RU/texts.php
+++ b/lang/ru_RU/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Изменить права',
'delete_token' => 'Удалить права',
'token' => 'Права',
- 'add_gateway' => 'Добавить платёжный шлюз',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Удалить платежный шлюз',
'edit_gateway' => 'Изменить платёжный шлюз',
'updated_gateway' => 'Платёжный шлюз успешно обновлён',
@@ -3869,7 +3869,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Устанавливает дату выставления счета по умолчанию',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/sk/texts.php b/lang/sk/texts.php
index 47f41dd49fa0..c6f611f971af 100644
--- a/lang/sk/texts.php
+++ b/lang/sk/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Upraviť token',
'delete_token' => 'Zmazať token',
'token' => 'Token',
- 'add_gateway' => 'Pridať bránu',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Odstrániť bránu',
'edit_gateway' => 'Upraviť bránu',
'updated_gateway' => 'Brána úspešne upravená',
@@ -5188,7 +5188,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5224,6 +5224,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Nastavuje predvolený dátum splatnosti ',
+ 'payment_type_help' => 'Nastaví predvolený manuálny typ platby.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/sl/texts.php b/lang/sl/texts.php
index e18aff446639..1b7fb9ad2e1c 100644
--- a/lang/sl/texts.php
+++ b/lang/sl/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Uredi žeton',
'delete_token' => 'Odstrani žeton',
'token' => 'Žeton',
- 'add_gateway' => 'Dodaj prehod',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Odstrani prehod',
'edit_gateway' => 'Uredi prehod',
'updated_gateway' => 'Prehod uspešno obnovljen',
@@ -3869,7 +3869,7 @@ Ko imate zneske, se vrnite na to stran plačilnega sredstva in kliknite na "Comp
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ Ko imate zneske, se vrnite na to stran plačilnega sredstva in kliknite na "Comp
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ Ko imate zneske, se vrnite na to stran plačilnega sredstva in kliknite na "Comp
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ Ko imate zneske, se vrnite na to stran plačilnega sredstva in kliknite na "Comp
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ Ko imate zneske, se vrnite na to stran plačilnega sredstva in kliknite na "Comp
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Privzeto bo izbran ta rok plačila.',
+ 'payment_type_help' => 'Privzeto bo izbran ta način ročnega plačila.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/sq/texts.php b/lang/sq/texts.php
index a9f5f71fcd9e..140633365e0c 100644
--- a/lang/sq/texts.php
+++ b/lang/sq/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Edito Tokenin',
'delete_token' => 'Fshi Tokenin',
'token' => 'Token',
- 'add_gateway' => 'Shto kanalin e pagesës',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Fshi kanalin e pagesës',
'edit_gateway' => 'Edito kanalin e pagesës',
'updated_gateway' => 'Kanali i pagesës është perditesuar me sukses',
@@ -3869,7 +3869,7 @@ Pasi të keni pranuar shumat, kthehuni në faqen e metodave të pagesës dhe kli
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ Pasi të keni pranuar shumat, kthehuni në faqen e metodave të pagesës dhe kli
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ Pasi të keni pranuar shumat, kthehuni në faqen e metodave të pagesës dhe kli
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ Pasi të keni pranuar shumat, kthehuni në faqen e metodave të pagesës dhe kli
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ Pasi të keni pranuar shumat, kthehuni në faqen e metodave të pagesës dhe kli
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Sets the default invoice due date',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/sr/texts.php b/lang/sr/texts.php
index 9a6d73bb8619..d2d5cdb6324d 100644
--- a/lang/sr/texts.php
+++ b/lang/sr/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Izmeni token',
'delete_token' => 'Obriši token',
'token' => 'Token',
- 'add_gateway' => 'Dodaj kanal plaćanja',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Obriši kanal plaćanja',
'edit_gateway' => 'Uredi kanal plaćanja',
'updated_gateway' => 'Uspešno ažuriran kanal',
@@ -5201,7 +5201,7 @@ Kada budete imali iznose, vratite se na ovu stranicu sa načinima plaćanja i k
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5237,6 +5237,23 @@ Kada budete imali iznose, vratite se na ovu stranicu sa načinima plaćanja i k
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Podesi podrazumevani datum dospeća računa',
+ 'payment_type_help' => 'Postavlja podrazumevaniručni način plaćanja.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/sv/texts.php b/lang/sv/texts.php
index 46d114e622eb..6bacb054ee12 100644
--- a/lang/sv/texts.php
+++ b/lang/sv/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Ändra token',
'delete_token' => 'Ta bort token',
'token' => 'Token',
- 'add_gateway' => 'Lägg till gateway',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Ta bort gateway',
'edit_gateway' => 'Ändra gateway',
'updated_gateway' => 'Gateway uppdaterad',
@@ -5209,7 +5209,7 @@ Den här funktionen kräver att en produkt skapas och en betalningsgateway är k
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5245,6 +5245,23 @@ Den här funktionen kräver att en produkt skapas och en betalningsgateway är k
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Ställ in standard faktura förfallodatum',
+ 'payment_type_help' => 'Sätt standard betalsätt.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/lang/th/texts.php b/lang/th/texts.php
index 09b7fcefbc62..a5f3188567af 100644
--- a/lang/th/texts.php
+++ b/lang/th/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'แก้ไข Token',
'delete_token' => 'ลบ Token',
'token' => 'Token',
- 'add_gateway' => 'เพิ่มช่องทางการชำระเงิน',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'ลบช่องทางการชำระเงิน',
'edit_gateway' => 'แก้ไขช่องทางการชำระเงิน',
'updated_gateway' => 'อัปเดทช่องทางการชำระเงินเรียบร้อย',
@@ -3869,7 +3869,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4926,7 +4926,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5121,7 +5121,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5202,7 +5202,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5222,6 +5222,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'ตั้งค่าเริ่มต้นวันครบกำหนดของใบแจ้งหนี้',
+ 'payment_type_help' => 'ตั้งค่าเริ่มต้น ประเภทการชำระเงินด้วยตนเอง.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/tr_TR/texts.php b/lang/tr_TR/texts.php
index a1b2d80083e5..c64ff1cee7cf 100644
--- a/lang/tr_TR/texts.php
+++ b/lang/tr_TR/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => 'Token düzenle',
'delete_token' => 'Token Sil',
'token' => 'Token',
- 'add_gateway' => 'Ödeme Sistemi Ekle',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => 'Ödeme Sistemi Sil',
'edit_gateway' => 'Ödeme Sistemi Düzenle',
'updated_gateway' => 'Ödeme Sistemi başarıyla güncellendi',
@@ -3868,7 +3868,7 @@ $lang = array(
'cancellation_pending' => 'Cancellation pending, we\'ll be in touch!',
'list_of_payments' => 'List of payments',
'payment_details' => 'Details of the payment',
- 'list_of_payment_invoices' => 'List of invoices affected by the payment',
+ 'list_of_payment_invoices' => 'Associate invoices',
'list_of_payment_methods' => 'List of payment methods',
'payment_method_details' => 'Details of payment method',
'permanently_remove_payment_method' => 'Permanently remove this payment method.',
@@ -4925,7 +4925,7 @@ $lang = array(
'no_assigned_tasks' => 'No billable tasks for this project',
'authorization_failure' => 'Insufficient permissions to perform this action',
'authorization_sms_failure' => 'Please verify your account to send emails.',
- 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key',
+ 'white_label_body' => 'Thank you for purchasing a white label license.
Your license key is:
:license_key
You can manage your license here: https://invoiceninja.invoicing.co/client/login',
'payment_type_Klarna' => 'Klarna',
'payment_type_Interac E Transfer' => 'Interac E Transfer',
'xinvoice_payable' => 'Payable within :payeddue days net until :paydate',
@@ -5120,7 +5120,7 @@ $lang = array(
'set_private' => 'Set private',
'individual' => 'Individual',
'business' => 'Business',
- 'partnership' => 'partnership',
+ 'partnership' => 'Partnership',
'trust' => 'Trust',
'charity' => 'Charity',
'government' => 'Government',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5221,6 +5221,38 @@ $lang = array(
'unsubscribe_help' => 'You are currently not subscribed, and therefore, will not receive emails at this time.',
'notification_purchase_order_bounced' => 'We were unable to deliver Purchase Order :invoice to :contact.
:error',
'notification_purchase_order_bounced_subject' => 'Unable to deliver Purchase Order :invoice',
+ 'show_pdfhtml_on_mobile' => 'Display HTML version of entity when viewing on mobile',
+ 'show_pdfhtml_on_mobile_help' => 'For improved visualization, displays a HTML version of the invoice/quote when viewing on mobile.',
+ 'please_select_an_invoice_or_credit' => 'Please select an invoice or credit',
+ 'mobile_version' => 'Mobile Version',
+ 'venmo' => 'Venmo',
+ 'my_bank' => 'MyBank',
+ 'pay_later' => 'Pay Later',
+ 'local_domain' => 'Local Domain',
+ 'verify_peer' => 'Verify Peer',
+ 'nordigen_help' => 'Note: connecting an account requires a GoCardless/Nordigen API key',
+ 'ar_detailed' => 'Accounts Receivable Detailed',
+ 'ar_summary' => 'Accounts Receivable Summary',
+ 'client_sales' => 'Client Sales',
+ 'user_sales' => 'User Sales',
+ 'iframe_url' => 'iFrame URL',
+ 'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => 'Varsayılan fatura ödeme tarihini ayarlar',
+ 'payment_type_help' => 'Sets the default manual payment type.',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
);
diff --git a/lang/zh_TW/texts.php b/lang/zh_TW/texts.php
index e35d3f1125a7..66367ad3a9f1 100644
--- a/lang/zh_TW/texts.php
+++ b/lang/zh_TW/texts.php
@@ -460,7 +460,7 @@ $lang = array(
'edit_token' => '編輯安全代碼',
'delete_token' => '刪除安全代碼',
'token' => '安全代碼',
- 'add_gateway' => '新增閘道',
+ 'add_gateway' => 'Add Payment Gateway',
'delete_gateway' => '刪除閘道資料',
'edit_gateway' => '編輯閘道',
'updated_gateway' => '更新閘道資料成功',
@@ -5201,7 +5201,7 @@ $lang = array(
'nordigen_handler_error_heading_requisition_invalid_status' => 'Not Ready',
'nordigen_handler_error_contents_requisition_invalid_status' => 'You called this site too early. Please finish authorization and refresh this page. Contact support for help, if this issue persists.',
'nordigen_handler_error_heading_requisition_no_accounts' => 'No Accounts selected',
- 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Considder restarting the flow.',
+ 'nordigen_handler_error_contents_requisition_no_accounts' => 'The service has not returned any valid accounts. Consider restarting the flow.',
'nordigen_handler_restart' => 'Restart flow.',
'nordigen_handler_return' => 'Return to application.',
'lang_Lao' => 'Lao',
@@ -5237,6 +5237,23 @@ $lang = array(
'user_sales' => 'User Sales',
'iframe_url' => 'iFrame URL',
'user_unsubscribed' => 'User unsubscribed from emails :link',
+ 'use_available_payments' => 'Use Available Payments',
+ 'test_email_sent' => 'Successfully sent email',
+ 'gateway_type' => 'Gateway Type',
+ 'save_template_body' => 'Would you like to save this import mapping as a template for future use?',
+ 'save_as_template' => 'Save Template Mapping',
+ 'auto_bill_standard_invoices_help' => 'Auto bill standard invoices on the due date',
+ 'auto_bill_on_help' => 'Auto bill on send date OR due date (recurring invoices)',
+ 'use_available_credits_help' => 'Apply any credit balances to payments prior to charging a payment method',
+ 'use_unapplied_payments' => 'Use unapplied payments',
+ 'use_unapplied_payments_help' => 'Apply any payment balances prior to charging a payment method',
+ 'payment_terms_help' => '設定預設的 發票日期',
+ 'payment_type_help' => '設定預設的人工付款方式。',
+ 'quote_valid_until_help' => 'The number of days that the quote is valid for',
+ 'expense_payment_type_help' => 'The default expense payment type to be used',
+ 'paylater' => 'Pay in 4',
+ 'payment_provider' => 'Payment Provider',
+
);
return $lang;
diff --git a/openapi/api-docs.yaml b/openapi/api-docs.yaml
index 31cbeb2a07dc..3d95b07ea714 100644
--- a/openapi/api-docs.yaml
+++ b/openapi/api-docs.yaml
@@ -8507,409 +8507,6 @@ paths:
default:
$ref: "#/components/responses/default"
- /api/v1/vendors:
- get:
- tags:
- - vendors
- summary: "List vendors"
- description: "Lists vendors, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the vendors, these are handled by the VendorFilters class which defines the methods available"
- operationId: getVendors
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/index"
- responses:
- 200:
- description: "A list of vendors"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- type: object
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/Vendor'
- meta:
- type: object
- $ref: '#/components/schemas/Meta'
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- post:
- tags:
- - vendors
- summary: "Create vendor"
- description: "Adds a vendor to a company"
- operationId: storeVendor
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns the saved clivendorent object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/vendors/{id}":
- get:
- tags:
- - vendors
- summary: "Show vendor"
- description: "Displays a vendor by id"
- operationId: showVendor
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The vendor Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the vendor object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- put:
- tags:
- - vendors
- summary: "Update vendor"
- description: "Handles the updating of a vendor by id"
- operationId: updateVendor
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Vendor Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the vendor object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- delete:
- tags:
- - vendors
- summary: "Delete vendor"
- description: "Handles the deletion of a vendor by id"
- operationId: deleteVendor
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Vendor Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns a HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/vendors/{id}/edit":
- get:
- tags:
- - vendors
- summary: "Edit vendor"
- description: "Displays a vendor by id"
- operationId: editVendor
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Vendor Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the vendor object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/vendors/create:
- get:
- tags:
- - vendors
- summary: "Blank vendor"
- description: "Returns a blank vendor with default values"
- operationId: getVendorsCreate
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "A blank vendor object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/vendors/bulk:
- post:
- tags:
- - vendors
- summary: "Bulk vendor actions"
- description: ""
- operationId: bulkVendors
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/index"
- requestBody:
- description: "User credentials"
- required: true
- content:
- application/json:
- schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
- responses:
- 200:
- description: "The Vendor User response"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/vendors/{id}/upload":
- post:
- tags:
- - vendors
- summary: "Uploads a vendor document"
- description: "Handles the uploading of a document to a vendor"
- operationId: uploadVendor
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Vendor Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- requestBody:
- description: "File Upload Body"
- required: true
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- _method:
- type: string
- example: PUT
- documents:
- type: array
- items:
- description: "Array of binary documents for upload"
- type: string
- format: binary
- responses:
- 200:
- description: "Returns the Vendor object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Vendor"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
/api/v1/products:
get:
tags:
@@ -9353,59 +8950,21 @@ paths:
default:
$ref: '#/components/responses/default'
- /api/v1/recurring_invoices:
+ /api/v1/tasks:
get:
tags:
- - Recurring Invoices
- summary: "List recurring invoices"
- description: |
- Lists invoices with the option to chain multiple query parameters allowing fine grained filtering of the list.
-
- operationId: getRecurringInvoices
+ - tasks
+ summary: "List tasks"
+ description: "Lists tasks, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the tasks, these are handled by the TaskFilters class which defines the methods available"
+ operationId: getTasks
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/client_id"
- - $ref: "#/components/parameters/created_at"
- - $ref: "#/components/parameters/updated_at"
- - $ref: "#/components/parameters/is_deleted"
- - $ref: "#/components/parameters/filter_deleted_clients"
- - $ref: "#/components/parameters/vendor_id"
- - name: filter
- in: query
- description: |
- Searches across a range of columns including:
- - custom_value1
- - custom_value2
- - custom_value3
- - custom_value4
- required: false
- schema:
- type: string
- example: ?filter=bob
- - name: client_status
- in: query
- description: |
- A comma separated list of invoice status strings. Valid options include:
- - all
- - active
- - paused
- - completed
- required: false
- schema:
- type: string
- example: ?client_status=active,paused
- - name: sort
- in: query
- description: Returns the list sorted by column in ascending or descending order.
- required: false
- schema:
- type: string
- example: id|desc number|desc balance|asc
+ - $ref: "#/components/parameters/index"
responses:
200:
- description: "A list of recurring_invoices"
+ description: "A list of tasks"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9421,7 +8980,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/RecurringInvoice'
+ $ref: '#/components/schemas/Task'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -9439,17 +8998,17 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - Recurring Invoices
- summary: "Create recurring invoice"
- description: "Adds a Recurring Invoice to the system"
- operationId: storeRecurringInvoice
+ - tasks
+ summary: "Create task"
+ description: "Adds an task to a company"
+ operationId: storeTask
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "Returns the saved RecurringInvoice object"
+ description: "Returns the saved task object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9460,7 +9019,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
401:
$ref: "#/components/responses/401"
403:
@@ -9473,21 +9032,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
-
- "/api/v1/recurring_invoices/{id}":
+ "/api/v1/tasks/{id}":
get:
tags:
- - Recurring Invoices
- summary: "Show recurring invoice"
- description: "Displays an RecurringInvoice by id"
- operationId: showRecurringInvoice
+ - tasks
+ summary: "Show task"
+ description: "Displays a task by id"
+ operationId: showTask
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The RecurringInvoice Hashed ID"
+ description: "The Task Hashed ID"
required: true
schema:
type: string
@@ -9495,7 +9053,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the RecurringInvoice object"
+ description: "Returns the task object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9506,7 +9064,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
401:
$ref: "#/components/responses/401"
403:
@@ -9521,17 +9079,17 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- - Recurring Invoices
- summary: "Update recurring invoice"
- description: "Handles the updating of an RecurringInvoice by id"
- operationId: updateRecurringInvoice
+ - tasks
+ summary: "Update task"
+ description: "Handles the updating of a task by id"
+ operationId: updateTask
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The RecurringInvoice Hashed ID"
+ description: "The task Hashed ID"
required: true
schema:
type: string
@@ -9539,7 +9097,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the RecurringInvoice object"
+ description: "Returns the task object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9550,7 +9108,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
401:
$ref: "#/components/responses/401"
403:
@@ -9565,17 +9123,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - Recurring Invoices
- summary: "Delete recurring invoice"
- description: "Handles the deletion of an RecurringInvoice by id"
- operationId: deleteRecurringInvoice
+ - tasks
+ summary: "Delete task"
+ description: "Handles the deletion of a task by id"
+ operationId: deleteTask
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The RecurringInvoice Hashed ID"
+ description: "The Task Hashed ID"
required: true
schema:
type: string
@@ -9603,20 +9161,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/recurring_invoices/{id}/edit":
+ "/api/v1/tasks/{id}/edit":
get:
tags:
- - Recurring Invoices
- summary: "Edit recurring invoice"
- description: "Displays an RecurringInvoice by id"
- operationId: editRecurringInvoice
+ - tasks
+ summary: "Edit task"
+ description: "Displays a task by id"
+ operationId: editTask
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The RecurringInvoice Hashed ID"
+ description: "The Task Hashed ID"
required: true
schema:
type: string
@@ -9624,7 +9182,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the RecurringInvoice object"
+ description: "Returns the client object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9635,7 +9193,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
401:
$ref: "#/components/responses/401"
403:
@@ -9648,21 +9206,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
-
- /api/v1/recurring_invoices/create:
+ /api/v1/tasks/create:
get:
tags:
- - Recurring Invoices
- summary: "Blank recurring invoice"
- description: "Returns a blank object with default values"
- operationId: getRecurringInvoicesCreate
+ - tasks
+ summary: "Blank task"
+ description: "Returns a blank task with default values"
+ operationId: getTasksCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank RecurringInvoice object"
+ description: "A blank task object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9673,7 +9230,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
401:
$ref: "#/components/responses/401"
403:
@@ -9686,55 +9243,31 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/recurring_invoices/bulk:
+ /api/v1/tasks/bulk:
post:
tags:
- - Recurring Invoices
- summary: "Bulk recurring invoice actions"
- description: |
- There are multiple actions that are available including:
-
- operationId: bulkRecurringInvoices
+ - tasks
+ summary: "Bulk task actions"
+ description: ""
+ operationId: bulkTasks
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
- description: "Bulk action details"
+ description: "User credentials"
required: true
content:
application/json:
schema:
- type: object
- properties:
- action:
- type: string
- description: |
- The action to be performed, options include:
- - `start`
- Starts (or restarts) the recurring invoice. **note** if the recurring invoice has been stopped for a long time, it will attempt to catch back up firing a new Invoice every hour per interval that has been missed.
- If you do not wish to have the recurring invoice catch up, you should set the next_send_date to the correct date you wish the recurring invoice to commence from.
- - `stop`
- Stops the recurring invoice.
- - `send_now`
- Force sends the recurring invoice - this option is only available when the recurring invoice is in a draft state.
- - `restore`
- Restores the recurring invoice from an archived or deleted state.
- - `archive`
- Archives the recurring invoice. The recurring invoice will not fire in this state.
- - `delete`
- Deletes a recurring invoice.
- ids:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned - ['D2J234DFA','D2J234DFA','D2J234DFA']"
- type: string
- example:
- action: start
- ids: "['D2J234DFA','D2J234DFA','D2J234DFA']"
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: integer
+ example: "[0,1,2,3]"
responses:
200:
- description: "The RecurringInvoice response"
+ description: "The Task User response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9745,7 +9278,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
401:
$ref: "#/components/responses/401"
403:
@@ -9758,115 +9291,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/recurring_invoices/{id}/{action}":
- get:
- deprecated: true
- tags:
- - Recurring Invoices
- summary: "Custom recurring invoice action"
- description: "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
- operationId: actionRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The RecurringInvoice Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- - name: action
- in: path
- description: "The action string to be performed"
- required: true
- schema:
- type: string
- format: string
- example: clone_to_quote
- responses:
- 200:
- description: "Returns the RecurringInvoice object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/RecurringInvoice"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/recurring_invoice/{invitation_key}/download":
- get:
- tags:
- - Recurring Invoices
- summary: "Download recurring invoice PDF"
- description: "Downloads a specific invoice"
- operationId: downloadRecurringInvoice
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: invitation_key
- in: path
- description: "The Recurring Invoice Invitation Key"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the recurring invoice pdf"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/recurring_invoices/{id}/upload":
+ "/api/v1/tasks/{id}/upload":
post:
tags:
- - Recurring Invoices
- summary: "Add recurring invoice document"
- description: "Handles the uploading of a document to a recurring_invoice"
- operationId: uploadRecurringInvoice
+ - tasks
+ summary: "Uploads a task document"
+ description: "Handles the uploading of a document to a task"
+ operationId: uploadTask
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The RecurringInvoice Hashed ID"
+ description: "The Task Hashed ID"
required: true
schema:
type: string
@@ -9891,7 +9329,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the RecurringInvoice object"
+ description: "Returns the Task object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -9902,7 +9340,443 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/RecurringInvoice"
+ $ref: "#/components/schemas/Task"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/tasks/sort:
+ post:
+ tags:
+ - tasks
+ summary: "Sort tasks on KanBan"
+ description: "Sorts tasks after drag and drop on the KanBan."
+ operationId: sortTasks
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns an Ok, 200 HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/projects:
+ get:
+ tags:
+ - projects
+ summary: "List projects"
+ description: "Lists projects"
+ operationId: getProjects
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - $ref: "#/components/parameters/index"
+ responses:
+ 200:
+ description: "A list of projects"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/Project'
+ meta:
+ type: object
+ $ref: '#/components/schemas/Meta'
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ post:
+ tags:
+ - projects
+ summary: "Create project"
+ description: "Adds an project to a company"
+ operationId: storeProject
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns the saved project object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/projects/{id}":
+ get:
+ tags:
+ - projects
+ summary: "Show project"
+ description: "Displays a project by id"
+ operationId: showProject
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Project Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the expense object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ put:
+ tags:
+ - projects
+ summary: "Update project"
+ description: "Handles the updating of a project by id"
+ operationId: updateProject
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Project Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the project object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ delete:
+ tags:
+ - projects
+ summary: "Delete project"
+ description: "Handles the deletion of a project by id"
+ operationId: deleteProject
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Project Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns a HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/projects/{id}/edit":
+ get:
+ tags:
+ - projects
+ summary: "Edit project"
+ description: "Displays a project by id"
+ operationId: editProject
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Project Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the project object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/projects/create:
+ get:
+ tags:
+ - projects
+ summary: "Blank project"
+ description: "Returns a blank object with default values"
+ operationId: getProjectsCreate
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "A blank project object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/projects/bulk:
+ post:
+ tags:
+ - projects
+ summary: "Bulk project actions"
+ description: ""
+ operationId: bulkProjects
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/index"
+ requestBody:
+ description: "User credentials"
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: integer
+ example: "[0,1,2,3]"
+ responses:
+ 200:
+ description: "The Project User response"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/projects/{id}/upload":
+ post:
+ tags:
+ - projects
+ summary: "Uploads a project document"
+ description: "Handles the uploading of a document to a project"
+ operationId: uploadProject
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Project Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ requestBody:
+ description: "File Upload Body"
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ _method:
+ type: string
+ example: PUT
+ documents:
+ type: array
+ items:
+ description: "Array of binary documents for upload"
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "Returns the Project object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Project"
401:
$ref: "#/components/responses/401"
403:
@@ -11106,21 +10980,56 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/projects:
+ /api/v1/payments:
get:
tags:
- - projects
- summary: "List projects"
- description: "Lists projects"
- operationId: getProjects
+ - payments
+ summary: "List payments"
+ description: "Lists payments, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the payments, these are handled by the PaymentFilters class which defines the methods available"
+ operationId: getPayments
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/index"
+ - $ref: "#/components/parameters/status"
+ - $ref: "#/components/parameters/client_id"
+ - $ref: "#/components/parameters/created_at"
+ - $ref: "#/components/parameters/updated_at"
+ - $ref: "#/components/parameters/is_deleted"
+ - $ref: "#/components/parameters/filter_deleted_clients"
+ - $ref: "#/components/parameters/vendor_id"
+ - name: filter
+ in: query
+ description: |
+ Searches across a range of columns including:
+ - amount
+ - date
+ - custom_value1
+ - custom_value2
+ - custom_value3
+ - custom_value4
+ required: false
+ schema:
+ type: string
+ example: ?filter=10
+ - name: number
+ in: query
+ description: |
+ Search payments by payment number
+ required: false
+ schema:
+ type: string
+ example: ?number=0001
+ - name: sort
+ in: query
+ description: Returns the list sorted by column in ascending or descending order.
+ required: false
+ schema:
+ type: string
+ example: id|desc number|desc balance|asc
responses:
200:
- description: "A list of projects"
+ description: "A list of payments"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11136,7 +11045,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Project'
+ $ref: '#/components/schemas/Payment'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -11154,17 +11063,24 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - projects
- summary: "Create project"
- description: "Adds an project to a company"
- operationId: storeProject
+ - payments
+ summary: "Create payment"
+ description: "Adds an Payment to the system"
+ operationId: storePayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
+ requestBody:
+ description: "The payment request"
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Payment"
responses:
200:
- description: "Returns the saved project object"
+ description: "Returns the saved Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11175,7 +11091,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11188,20 +11104,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/projects/{id}":
+
+ "/api/v1/payments/{id}":
get:
tags:
- - projects
- summary: "Show project"
- description: "Displays a project by id"
- operationId: showProject
+ - payments
+ summary: "Show payment"
+ description: "Displays an Payment by id"
+ operationId: showPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11209,7 +11126,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the expense object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11220,7 +11137,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11235,17 +11152,17 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- - projects
- summary: "Update project"
- description: "Handles the updating of a project by id"
- operationId: updateProject
+ - payments
+ summary: "Update payment"
+ description: "Handles the updating of an Payment by id"
+ operationId: updatePayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11253,7 +11170,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the project object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11264,7 +11181,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11279,17 +11196,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - projects
- summary: "Delete project"
- description: "Handles the deletion of a project by id"
- operationId: deleteProject
+ - payments
+ summary: "Delete payment"
+ description: "Handles the deletion of an Payment by id"
+ operationId: deletePayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11317,20 +11234,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/projects/{id}/edit":
+ "/api/v1/payments/{id}/edit":
get:
tags:
- - projects
- summary: "Edit project"
- description: "Displays a project by id"
- operationId: editProject
+ - payments
+ summary: "Edit payment"
+ description: "Displays an Payment by id"
+ operationId: editPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Project Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11338,7 +11255,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the project object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11349,7 +11266,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11362,20 +11279,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/projects/create:
+ /api/v1/payments/create:
get:
tags:
- - projects
- summary: "Blank project"
+ - payments
+ summary: "Blank payment"
description: "Returns a blank object with default values"
- operationId: getProjectsCreate
+ operationId: getPaymentsCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank project object"
+ description: "A blank Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11386,7 +11303,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11399,13 +11316,57 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/projects/bulk:
+ /api/v1/payments/refund:
post:
tags:
- - projects
- summary: "Bulk project actions"
+ - payments
+ summary: "Refund payment"
+ description: "Adds an Refund to the system"
+ operationId: storeRefund
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ requestBody:
+ description: "The refund request"
+ required: true
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Payment"
+ responses:
+ 200:
+ description: "Returns the saved Payment object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Payment"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/payments/bulk:
+ post:
+ tags:
+ - payments
+ summary: "Bulk payment actions"
description: ""
- operationId: bulkProjects
+ operationId: bulkPayments
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -11423,7 +11384,7 @@ paths:
example: "[0,1,2,3]"
responses:
200:
- description: "The Project User response"
+ description: "The Payment response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11434,7 +11395,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Project"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11447,472 +11408,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/projects/{id}/upload":
- post:
- tags:
- - projects
- summary: "Uploads a project document"
- description: "Handles the uploading of a document to a project"
- operationId: uploadProject
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Project Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- requestBody:
- description: "File Upload Body"
- required: true
- content:
- multipart/form-data:
- schema:
- type: object
- properties:
- _method:
- type: string
- example: PUT
- documents:
- type: array
- items:
- description: "Array of binary documents for upload"
- type: string
- format: binary
- responses:
- 200:
- description: "Returns the Project object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Project"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/quotes:
- get:
- tags:
- - quotes
- summary: "List quotes"
- description: "Lists quotes, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the quotes, these are handled by the QuoteFilters class which defines the methods available"
- operationId: getQuotes
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/status"
- - $ref: "#/components/parameters/client_id"
- - $ref: "#/components/parameters/created_at"
- - $ref: "#/components/parameters/updated_at"
- - $ref: "#/components/parameters/is_deleted"
- - $ref: "#/components/parameters/filter_deleted_clients"
- - $ref: "#/components/parameters/vendor_id"
- - name: filter
- in: query
- description: |
- Searches across a range of columns including:
- - number
- - custom_value1
- - custom_value2
- - custom_value3
- - custom_value4
- required: false
- schema:
- type: string
- example: ?filter=bob
- - name: client_status
- in: query
- description: |
- A comma separated list of quote status strings. Valid options include:
- - all
- - draft
- - sent
- - approved
- - expired
- - upcoming
- required: false
- schema:
- type: string
- example: ?client_status=paid,unpaid
- - name: number
- in: query
- description: |
- Search quote by quote number
- required: false
- schema:
- type: string
- example: ?number=Q-001
- - name: sort
- in: query
- description: Returns the list sorted by column in ascending or descending order.
- required: false
- schema:
- type: string
- example: id|desc number|desc balance|asc
- responses:
- 200:
- description: "A list of quotes"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- type: object
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/Quote'
- meta:
- type: object
- $ref: '#/components/schemas/Meta'
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- post:
- tags:
- - quotes
- summary: "Create quote"
- description: "Adds an Quote to the system"
- operationId: storeQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns the saved Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}":
- get:
- tags:
- - quotes
- summary: "Show quote"
- description: "Displays an Quote by id"
- operationId: showQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- put:
- tags:
- - quotes
- summary: "Update quote"
- description: "Handles the updating of an Quote by id"
- operationId: updateQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- delete:
- tags:
- - quotes
- summary: "Delete quote"
- description: "Handles the deletion of an Quote by id"
- operationId: deleteQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns a HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}/edit":
- get:
- tags:
- - quotes
- summary: "Edit quote"
- description: "Displays an Quote by id"
- operationId: editQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: id
- in: path
- description: "The Quote Hashed ID"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/quotes/create:
- get:
- tags:
- - quotes
- summary: "Blank quote"
- description: "Returns a blank object with default values"
- operationId: getQuotesCreate
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "A blank Quote object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/quotes/bulk:
- post:
- tags:
- - quotes
- summary: "Bulk quote actions"
- description: ""
- operationId: bulkQuotes
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/index"
- requestBody:
- description: "Hashed ids"
- required: true
- content:
- application/json:
- schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
- responses:
- 200:
- description: "The Quote response"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Quote"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}/{action}":
+ "/api/v1/payments/{id}/{action}":
get:
deprecated: true
tags:
- - quotes
- summary: "Performs a custom action on an Quote"
- description: "Performs a custom action on an Quote.\n\n The current range of actions are as follows\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - convert\n - convert_to_invoice\n - email"
- operationId: actionQuote
+ - payments
+ summary: "Custom payment actions"
+ description: "Performs a custom action on an Payment.\n\n The current range of actions are as follows\n - clone_to_Payment\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
+ operationId: actionPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Quote Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -11928,7 +11438,7 @@ paths:
example: clone_to_quote
responses:
200:
- description: "Returns the Quote object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -11939,7 +11449,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Quote"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -11952,61 +11462,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/quote/{invitation_key}/download":
- get:
- tags:
- - quotes
- summary: "Download quote PDF"
- description: "Downloads a specific quote"
- operationId: downloadQuote
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- - name: invitation_key
- in: path
- description: "The Quote Invitation Key"
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: "Returns the quote pdf"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- "/api/v1/quotes/{id}/upload":
+
+ "/api/v1/payments/{id}/upload":
post:
tags:
- - quotes
- summary: "Upload a quote document"
- description: "Handles the uploading of a document to a quote"
- operationId: uploadQuote
+ - payments
+ summary: "Upload a payment document"
+ description: "Handles the uploading of a document to a payment"
+ operationId: uploadPayment
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Quote Hashed ID"
+ description: "The Payment Hashed ID"
required: true
schema:
type: string
@@ -12031,7 +11501,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Quote object"
+ description: "Returns the Payment object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12042,7 +11512,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Quote"
+ $ref: "#/components/schemas/Payment"
401:
$ref: "#/components/responses/401"
403:
@@ -12766,18 +12236,19 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/payments:
+ /api/v1/recurring_invoices:
get:
tags:
- - payments
- summary: "List payments"
- description: "Lists payments, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the payments, these are handled by the PaymentFilters class which defines the methods available"
- operationId: getPayments
+ - Recurring Invoices
+ summary: "List recurring invoices"
+ description: |
+ Lists invoices with the option to chain multiple query parameters allowing fine grained filtering of the list.
+
+ operationId: getRecurringInvoices
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- - $ref: "#/components/parameters/status"
- $ref: "#/components/parameters/client_id"
- $ref: "#/components/parameters/created_at"
- $ref: "#/components/parameters/updated_at"
@@ -12788,8 +12259,6 @@ paths:
in: query
description: |
Searches across a range of columns including:
- - amount
- - date
- custom_value1
- custom_value2
- custom_value3
@@ -12797,15 +12266,19 @@ paths:
required: false
schema:
type: string
- example: ?filter=10
- - name: number
+ example: ?filter=bob
+ - name: client_status
in: query
description: |
- Search payments by payment number
+ A comma separated list of invoice status strings. Valid options include:
+ - all
+ - active
+ - paused
+ - completed
required: false
schema:
type: string
- example: ?number=0001
+ example: ?client_status=active,paused
- name: sort
in: query
description: Returns the list sorted by column in ascending or descending order.
@@ -12815,7 +12288,7 @@ paths:
example: id|desc number|desc balance|asc
responses:
200:
- description: "A list of payments"
+ description: "A list of recurring_invoices"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12831,7 +12304,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Payment'
+ $ref: '#/components/schemas/RecurringInvoice'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -12849,24 +12322,17 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - payments
- summary: "Create payment"
- description: "Adds an Payment to the system"
- operationId: storePayment
+ - Recurring Invoices
+ summary: "Create recurring invoice"
+ description: "Adds a Recurring Invoice to the system"
+ operationId: storeRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- requestBody:
- description: "The payment request"
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Payment"
responses:
200:
- description: "Returns the saved Payment object"
+ description: "Returns the saved RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12877,7 +12343,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -12891,20 +12357,20 @@ paths:
default:
$ref: "#/components/responses/default"
- "/api/v1/payments/{id}":
+ "/api/v1/recurring_invoices/{id}":
get:
tags:
- - payments
- summary: "Show payment"
- description: "Displays an Payment by id"
- operationId: showPayment
+ - Recurring Invoices
+ summary: "Show recurring invoice"
+ description: "Displays an RecurringInvoice by id"
+ operationId: showRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -12912,7 +12378,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12923,7 +12389,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -12938,17 +12404,17 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- - payments
- summary: "Update payment"
- description: "Handles the updating of an Payment by id"
- operationId: updatePayment
+ - Recurring Invoices
+ summary: "Update recurring invoice"
+ description: "Handles the updating of an RecurringInvoice by id"
+ operationId: updateRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -12956,7 +12422,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -12967,7 +12433,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -12982,17 +12448,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - payments
- summary: "Delete payment"
- description: "Handles the deletion of an Payment by id"
- operationId: deletePayment
+ - Recurring Invoices
+ summary: "Delete recurring invoice"
+ description: "Handles the deletion of an RecurringInvoice by id"
+ operationId: deleteRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -13020,20 +12486,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/payments/{id}/edit":
+ "/api/v1/recurring_invoices/{id}/edit":
get:
tags:
- - payments
- summary: "Edit payment"
- description: "Displays an Payment by id"
- operationId: editPayment
+ - Recurring Invoices
+ summary: "Edit recurring invoice"
+ description: "Displays an RecurringInvoice by id"
+ operationId: editRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -13041,7 +12507,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13052,7 +12518,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -13065,20 +12531,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/payments/create:
+
+ /api/v1/recurring_invoices/create:
get:
tags:
- - payments
- summary: "Blank payment"
+ - Recurring Invoices
+ summary: "Blank recurring invoice"
description: "Returns a blank object with default values"
- operationId: getPaymentsCreate
+ operationId: getRecurringInvoicesCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank Payment object"
+ description: "A blank RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13089,7 +12556,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -13102,75 +12569,55 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/payments/refund:
+ /api/v1/recurring_invoices/bulk:
post:
tags:
- - payments
- summary: "Refund payment"
- description: "Adds an Refund to the system"
- operationId: storeRefund
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- requestBody:
- description: "The refund request"
- required: true
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Payment"
- responses:
- 200:
- description: "Returns the saved Payment object"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
- content:
- application/json:
- schema:
- $ref: "#/components/schemas/Payment"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/payments/bulk:
- post:
- tags:
- - payments
- summary: "Bulk payment actions"
- description: ""
- operationId: bulkPayments
+ - Recurring Invoices
+ summary: "Bulk recurring invoice actions"
+ description: |
+ There are multiple actions that are available including:
+
+ operationId: bulkRecurringInvoices
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/index"
requestBody:
- description: "User credentials"
+ description: "Bulk action details"
required: true
content:
application/json:
schema:
- type: array
- items:
- description: "Array of hashed IDs to be bulk 'actioned"
- type: integer
- example: "[0,1,2,3]"
+ type: object
+ properties:
+ action:
+ type: string
+ description: |
+ The action to be performed, options include:
+ - `start`
+ Starts (or restarts) the recurring invoice. **note** if the recurring invoice has been stopped for a long time, it will attempt to catch back up firing a new Invoice every hour per interval that has been missed.
+ If you do not wish to have the recurring invoice catch up, you should set the next_send_date to the correct date you wish the recurring invoice to commence from.
+ - `stop`
+ Stops the recurring invoice.
+ - `send_now`
+ Force sends the recurring invoice - this option is only available when the recurring invoice is in a draft state.
+ - `restore`
+ Restores the recurring invoice from an archived or deleted state.
+ - `archive`
+ Archives the recurring invoice. The recurring invoice will not fire in this state.
+ - `delete`
+ Deletes a recurring invoice.
+ ids:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned - ['D2J234DFA','D2J234DFA','D2J234DFA']"
+ type: string
+ example:
+ action: start
+ ids: "['D2J234DFA','D2J234DFA','D2J234DFA']"
responses:
200:
- description: "The Payment response"
+ description: "The RecurringInvoice response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13181,7 +12628,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -13194,21 +12641,21 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/payments/{id}/{action}":
+ "/api/v1/recurring_invoices/{id}/{action}":
get:
deprecated: true
tags:
- - payments
- summary: "Custom payment actions"
- description: "Performs a custom action on an Payment.\n\n The current range of actions are as follows\n - clone_to_Payment\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
- operationId: actionPayment
+ - Recurring Invoices
+ summary: "Custom recurring invoice action"
+ description: "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email"
+ operationId: actionRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -13224,7 +12671,7 @@ paths:
example: clone_to_quote
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13235,7 +12682,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
401:
$ref: "#/components/responses/401"
403:
@@ -13248,21 +12695,61 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
-
- "/api/v1/payments/{id}/upload":
+ "/api/v1/recurring_invoice/{invitation_key}/download":
+ get:
+ tags:
+ - Recurring Invoices
+ summary: "Download recurring invoice PDF"
+ description: "Downloads a specific invoice"
+ operationId: downloadRecurringInvoice
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: invitation_key
+ in: path
+ description: "The Recurring Invoice Invitation Key"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the recurring invoice pdf"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/recurring_invoices/{id}/upload":
post:
tags:
- - payments
- summary: "Upload a payment document"
- description: "Handles the uploading of a document to a payment"
- operationId: uploadPayment
+ - Recurring Invoices
+ summary: "Add recurring invoice document"
+ description: "Handles the uploading of a document to a recurring_invoice"
+ operationId: uploadRecurringInvoice
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Payment Hashed ID"
+ description: "The RecurringInvoice Hashed ID"
required: true
schema:
type: string
@@ -13287,7 +12774,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Payment object"
+ description: "Returns the RecurringInvoice object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13298,7 +12785,553 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Payment"
+ $ref: "#/components/schemas/RecurringInvoice"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/quotes:
+ get:
+ tags:
+ - quotes
+ summary: "List quotes"
+ description: "Lists quotes, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the quotes, these are handled by the QuoteFilters class which defines the methods available"
+ operationId: getQuotes
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - $ref: "#/components/parameters/status"
+ - $ref: "#/components/parameters/client_id"
+ - $ref: "#/components/parameters/created_at"
+ - $ref: "#/components/parameters/updated_at"
+ - $ref: "#/components/parameters/is_deleted"
+ - $ref: "#/components/parameters/filter_deleted_clients"
+ - $ref: "#/components/parameters/vendor_id"
+ - name: filter
+ in: query
+ description: |
+ Searches across a range of columns including:
+ - number
+ - custom_value1
+ - custom_value2
+ - custom_value3
+ - custom_value4
+ required: false
+ schema:
+ type: string
+ example: ?filter=bob
+ - name: client_status
+ in: query
+ description: |
+ A comma separated list of quote status strings. Valid options include:
+ - all
+ - draft
+ - sent
+ - approved
+ - expired
+ - upcoming
+ required: false
+ schema:
+ type: string
+ example: ?client_status=paid,unpaid
+ - name: number
+ in: query
+ description: |
+ Search quote by quote number
+ required: false
+ schema:
+ type: string
+ example: ?number=Q-001
+ - name: sort
+ in: query
+ description: Returns the list sorted by column in ascending or descending order.
+ required: false
+ schema:
+ type: string
+ example: id|desc number|desc balance|asc
+ responses:
+ 200:
+ description: "A list of quotes"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ data:
+ type: array
+ items:
+ $ref: '#/components/schemas/Quote'
+ meta:
+ type: object
+ $ref: '#/components/schemas/Meta'
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ post:
+ tags:
+ - quotes
+ summary: "Create quote"
+ description: "Adds an Quote to the system"
+ operationId: storeQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "Returns the saved Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}":
+ get:
+ tags:
+ - quotes
+ summary: "Show quote"
+ description: "Displays an Quote by id"
+ operationId: showQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ put:
+ tags:
+ - quotes
+ summary: "Update quote"
+ description: "Handles the updating of an Quote by id"
+ operationId: updateQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ delete:
+ tags:
+ - quotes
+ summary: "Delete quote"
+ description: "Handles the deletion of an Quote by id"
+ operationId: deleteQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns a HTTP status"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}/edit":
+ get:
+ tags:
+ - quotes
+ summary: "Edit quote"
+ description: "Displays an Quote by id"
+ operationId: editQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/quotes/create:
+ get:
+ tags:
+ - quotes
+ summary: "Blank quote"
+ description: "Returns a blank object with default values"
+ operationId: getQuotesCreate
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ responses:
+ 200:
+ description: "A blank Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ /api/v1/quotes/bulk:
+ post:
+ tags:
+ - quotes
+ summary: "Bulk quote actions"
+ description: ""
+ operationId: bulkQuotes
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/index"
+ requestBody:
+ description: "Hashed ids"
+ required: true
+ content:
+ application/json:
+ schema:
+ type: array
+ items:
+ description: "Array of hashed IDs to be bulk 'actioned"
+ type: integer
+ example: "[0,1,2,3]"
+ responses:
+ 200:
+ description: "The Quote response"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}/{action}":
+ get:
+ deprecated: true
+ tags:
+ - quotes
+ summary: "Performs a custom action on an Quote"
+ description: "Performs a custom action on an Quote.\n\n The current range of actions are as follows\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - convert\n - convert_to_invoice\n - email"
+ operationId: actionQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ - name: action
+ in: path
+ description: "The action string to be performed"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: clone_to_quote
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quote/{invitation_key}/download":
+ get:
+ tags:
+ - quotes
+ summary: "Download quote PDF"
+ description: "Downloads a specific quote"
+ operationId: downloadQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: invitation_key
+ in: path
+ description: "The Quote Invitation Key"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: "Returns the quote pdf"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ 401:
+ $ref: "#/components/responses/401"
+ 403:
+ $ref: "#/components/responses/403"
+ 422:
+ $ref: '#/components/responses/422'
+ 429:
+ $ref: '#/components/responses/429'
+ 5XX:
+ description: 'Server error'
+ default:
+ $ref: "#/components/responses/default"
+ "/api/v1/quotes/{id}/upload":
+ post:
+ tags:
+ - quotes
+ summary: "Upload a quote document"
+ description: "Handles the uploading of a document to a quote"
+ operationId: uploadQuote
+ parameters:
+ - $ref: "#/components/parameters/X-API-TOKEN"
+ - $ref: "#/components/parameters/X-Requested-With"
+ - $ref: "#/components/parameters/include"
+ - name: id
+ in: path
+ description: "The Quote Hashed ID"
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ requestBody:
+ description: "File Upload Body"
+ required: true
+ content:
+ multipart/form-data:
+ schema:
+ type: object
+ properties:
+ _method:
+ type: string
+ example: PUT
+ documents:
+ type: array
+ items:
+ description: "Array of binary documents for upload"
+ type: string
+ format: binary
+ responses:
+ 200:
+ description: "Returns the Quote object"
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
+ X-RateLimit-Remaining:
+ $ref: "#/components/headers/X-RateLimit-Remaining"
+ X-RateLimit-Limit:
+ $ref: "#/components/headers/X-RateLimit-Limit"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Quote"
401:
$ref: "#/components/responses/401"
403:
@@ -13807,13 +13840,13 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/tasks:
+ /api/v1/vendors:
get:
tags:
- - tasks
- summary: "List tasks"
- description: "Lists tasks, search and filters allow fine grained lists to be generated.\n *\n * Query parameters can be added to performed more fine grained filtering of the tasks, these are handled by the TaskFilters class which defines the methods available"
- operationId: getTasks
+ - vendors
+ summary: "List vendors"
+ description: "Lists vendors, search and filters allow fine grained lists to be generated.\n\n Query parameters can be added to performed more fine grained filtering of the vendors, these are handled by the VendorFilters class which defines the methods available"
+ operationId: getVendors
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -13821,7 +13854,7 @@ paths:
- $ref: "#/components/parameters/index"
responses:
200:
- description: "A list of tasks"
+ description: "A list of vendors"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13837,7 +13870,7 @@ paths:
data:
type: array
items:
- $ref: '#/components/schemas/Task'
+ $ref: '#/components/schemas/Vendor'
meta:
type: object
$ref: '#/components/schemas/Meta'
@@ -13855,17 +13888,17 @@ paths:
$ref: "#/components/responses/default"
post:
tags:
- - tasks
- summary: "Create task"
- description: "Adds an task to a company"
- operationId: storeTask
+ - vendors
+ summary: "Create vendor"
+ description: "Adds a vendor to a company"
+ operationId: storeVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "Returns the saved task object"
+ description: "Returns the saved clivendorent object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13876,7 +13909,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -13889,20 +13922,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/tasks/{id}":
+ "/api/v1/vendors/{id}":
get:
tags:
- - tasks
- summary: "Show task"
- description: "Displays a task by id"
- operationId: showTask
+ - vendors
+ summary: "Show vendor"
+ description: "Displays a vendor by id"
+ operationId: showVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Task Hashed ID"
+ description: "The vendor Hashed ID"
required: true
schema:
type: string
@@ -13910,7 +13943,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the task object"
+ description: "Returns the vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13921,7 +13954,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -13936,17 +13969,17 @@ paths:
$ref: "#/components/responses/default"
put:
tags:
- - tasks
- summary: "Update task"
- description: "Handles the updating of a task by id"
- operationId: updateTask
+ - vendors
+ summary: "Update vendor"
+ description: "Handles the updating of a vendor by id"
+ operationId: updateVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The task Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
@@ -13954,7 +13987,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the task object"
+ description: "Returns the vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -13965,7 +13998,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -13980,17 +14013,17 @@ paths:
$ref: "#/components/responses/default"
delete:
tags:
- - tasks
- summary: "Delete task"
- description: "Handles the deletion of a task by id"
- operationId: deleteTask
+ - vendors
+ summary: "Delete vendor"
+ description: "Handles the deletion of a vendor by id"
+ operationId: deleteVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Task Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
@@ -14018,20 +14051,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/tasks/{id}/edit":
+ "/api/v1/vendors/{id}/edit":
get:
tags:
- - tasks
- summary: "Edit task"
- description: "Displays a task by id"
- operationId: editTask
+ - vendors
+ summary: "Edit vendor"
+ description: "Displays a vendor by id"
+ operationId: editVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Task Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
@@ -14039,7 +14072,7 @@ paths:
example: D2J234DFA
responses:
200:
- description: "Returns the client object"
+ description: "Returns the vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -14050,7 +14083,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -14063,20 +14096,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/tasks/create:
+ /api/v1/vendors/create:
get:
tags:
- - tasks
- summary: "Blank task"
- description: "Returns a blank task with default values"
- operationId: getTasksCreate
+ - vendors
+ summary: "Blank vendor"
+ description: "Returns a blank vendor with default values"
+ operationId: getVendorsCreate
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
responses:
200:
- description: "A blank task object"
+ description: "A blank vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -14087,7 +14120,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -14100,13 +14133,13 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- /api/v1/tasks/bulk:
+ /api/v1/vendors/bulk:
post:
tags:
- - tasks
- summary: "Bulk task actions"
+ - vendors
+ summary: "Bulk vendor actions"
description: ""
- operationId: bulkTasks
+ operationId: bulkVendors
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
@@ -14124,7 +14157,7 @@ paths:
example: "[0,1,2,3]"
responses:
200:
- description: "The Task User response"
+ description: "The Vendor User response"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -14135,7 +14168,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -14148,20 +14181,20 @@ paths:
description: 'Server error'
default:
$ref: "#/components/responses/default"
- "/api/v1/tasks/{id}/upload":
+ "/api/v1/vendors/{id}/upload":
post:
tags:
- - tasks
- summary: "Uploads a task document"
- description: "Handles the uploading of a document to a task"
- operationId: uploadTask
+ - vendors
+ summary: "Uploads a vendor document"
+ description: "Handles the uploading of a document to a vendor"
+ operationId: uploadVendor
parameters:
- $ref: "#/components/parameters/X-API-TOKEN"
- $ref: "#/components/parameters/X-Requested-With"
- $ref: "#/components/parameters/include"
- name: id
in: path
- description: "The Task Hashed ID"
+ description: "The Vendor Hashed ID"
required: true
schema:
type: string
@@ -14186,7 +14219,7 @@ paths:
format: binary
responses:
200:
- description: "Returns the Task object"
+ description: "Returns the Vendor object"
headers:
X-MINIMUM-CLIENT-VERSION:
$ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
@@ -14197,40 +14230,7 @@ paths:
content:
application/json:
schema:
- $ref: "#/components/schemas/Task"
- 401:
- $ref: "#/components/responses/401"
- 403:
- $ref: "#/components/responses/403"
- 422:
- $ref: '#/components/responses/422'
- 429:
- $ref: '#/components/responses/429'
- 5XX:
- description: 'Server error'
- default:
- $ref: "#/components/responses/default"
- /api/v1/tasks/sort:
- post:
- tags:
- - tasks
- summary: "Sort tasks on KanBan"
- description: "Sorts tasks after drag and drop on the KanBan."
- operationId: sortTasks
- parameters:
- - $ref: "#/components/parameters/X-API-TOKEN"
- - $ref: "#/components/parameters/X-Requested-With"
- - $ref: "#/components/parameters/include"
- responses:
- 200:
- description: "Returns an Ok, 200 HTTP status"
- headers:
- X-MINIMUM-CLIENT-VERSION:
- $ref: "#/components/headers/X-MINIMUM-CLIENT-VERSION"
- X-RateLimit-Remaining:
- $ref: "#/components/headers/X-RateLimit-Remaining"
- X-RateLimit-Limit:
- $ref: "#/components/headers/X-RateLimit-Limit"
+ $ref: "#/components/schemas/Vendor"
401:
$ref: "#/components/responses/401"
403:
@@ -14337,49 +14337,43 @@ components:
# - prev: null
# - next: null
responses:
- 500:
- description: 'Gateway Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- 403:
- description: 'Authorization error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/AuthorizationError'
-
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
429:
description: 'Rate Limit Exceeded'
content:
application/json:
schema:
$ref: '#/components/schemas/RateLimiterError'
+
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AuthorizationError'
422:
description: 'Validation error'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationError'
- 401:
- description: 'Authentication error'
+ default:
+ description: 'Unexpected Error'
content:
application/json:
schema:
- $ref: '#/components/schemas/AuthenticationError'
+ $ref: '#/components/schemas/Error'
400:
description: 'Invalid user input'
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidInputError'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/AuthenticationError'
parameters:
X-API-SECRET:
name: X-API-SECRET
@@ -14951,239 +14945,189 @@ components:
type: string
example: JSON
type: object
- Credit:
+ Product:
+ type: object
properties:
id:
- description: "The unique hashed ID of the credit"
+ type: string
+ description: 'The hashed product ID.'
+ example: eP01N
+ readOnly: true
+ user_id:
+ type: string
+ description: 'The hashed ID of the user that created this product.'
+ example: n30m4
+ readOnly: true
+ assigned_user_id:
+ type: string
+ description: 'The hashed ID of the user assigned to this product.'
+ example: pR0j3
+ project_id:
+ type: string
+ description: 'The hashed ID of the project that this product is associated with.'
+ example: pR0j3
+ vendor_id:
+ type: string
+ description: 'The hashed ID of the vendor that this product is associated with.'
+ example: pR0j3
+ custom_value1:
+ type: string
+ description: 'Custom value field 1.'
+ example: 'Custom value 1'
+ custom_value2:
+ type: string
+ description: 'Custom value field 2.'
+ example: 'Custom value 2'
+ custom_value3:
+ type: string
+ description: 'Custom value field 3.'
+ example: 'Custom value 3'
+ custom_value4:
+ type: string
+ description: 'Custom value field 4.'
+ example: 'Custom value 4'
+ product_key:
+ type: string
+ description: 'The product key.'
+ example: '1234'
+ notes:
+ type: string
+ description: 'Notes about the product.'
+ example: 'These are some notes about the product.'
+ cost:
+ type: number
+ format: double
+ description: 'The cost of the product. (Your purchase price for this product)'
+ example: 10.0
+ price:
+ type: number
+ format: double
+ description: 'The price of the product that you are charging.'
+ example: 20.0
+ quantity:
+ type: number
+ format: double
+ description: 'The quantity of the product. (used as a default)'
+ example: 5.0
+ tax_name1:
+ type: string
+ description: 'The name of tax 1.'
+ example: 'Tax 1'
+ tax_rate1:
+ type: number
+ format: double
+ description: 'The rate of tax 1.'
+ example: 10.0
+ tax_name2:
+ type: string
+ description: 'The name of tax 2.'
+ example: 'Tax 2'
+ tax_rate2:
+ type: number
+ format: double
+ description: 'The rate of tax 2.'
+ example: 5.0
+ tax_name3:
+ type: string
+ description: 'The name of tax 3.'
+ example: 'Tax 3'
+ tax_rate3:
+ type: number
+ format: double
+ description: 'The rate of tax 3.'
+ example: 0.0
+ archived_at:
+ type: integer
+ format: timestamp
+ description: 'The timestamp when the product was archived.'
+ example: '2022-03-18T15:00:00Z'
+ readOnly: true
+ created_at:
+ type: integer
+ format: timestamp
+ description: 'The timestamp when the product was created.'
+ example: '2022-03-18T15:00:00Z'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: integer
+ format: timestamp
+ example: '2022-03-18T12:34:56.789Z'
+ readOnly: true
+ is_deleted:
+ type: boolean
+ description: 'Boolean flag determining if the product has been deleted'
+ example: false
+ readOnly: true
+ in_stock_quantity:
+ type: integer
+ format: int32
+ description: The quantity of the product that is currently in stock
+ default: 0
+ stock_notification:
+ type: boolean
+ description: Indicates whether stock notifications are enabled for this product
+ default: true
+ stock_notification_threshold:
+ type: integer
+ format: int32
+ description: The minimum quantity threshold for which stock notifications will be triggered
+ default: 0
+ max_quantity:
+ type: integer
+ format: int32
+ description: The maximum quantity that can be ordered for this product
+ product_image:
+ type: string
+ description: The URL of the product image
+ format: uri-reference
+ tax_id:
+ type: string
+ default: '1'
+ description: |
+ The tax category id for this product.'
+
+ The following constants are available (default = '1')
+
+ ```
+ PRODUCT_TYPE_PHYSICAL = '1'
+ PRODUCT_TYPE_SERVICE = '2'
+ PRODUCT_TYPE_DIGITAL = '3'
+ PRODUCT_TYPE_SHIPPING = '4'
+ PRODUCT_TYPE_EXEMPT = '5'
+ PRODUCT_TYPE_REDUCED_TAX = '6'
+ PRODUCT_TYPE_OVERRIDE_TAX = '7'
+ PRODUCT_TYPE_ZERO_RATED = '8'
+ PRODUCT_TYPE_REVERSE_TAX = '9'
+ ```
+ example: '1'
+
+ ExpenseCategory:
+ properties:
+ id:
+ description: 'The expense hashed id'
type: string
example: Opnel5aKBz
+ name:
+ description: 'The expense category name'
+ type: string
+ example: Accounting
user_id:
- description: "The unique hashed ID of the user associated with the credit"
+ description: 'The user hashed id'
type: string
- example: 1a2b3c4d5e
- assigned_user_id:
- description: "The unique hashed ID of the assigned user responsible for the credit"
- type: string
- example: 6f7g8h9i0j
- client_id:
- description: "The unique hashed ID of the client associated with the credit"
- type: string
- example: p1q2r3s4t5
- status_id:
- description: "The ID representing the current status of the credit"
- type: string
- example: 3
- invoice_id:
- description: "The unique hashed ID of the linked invoice to which the credit is applied"
- type: string
- example: u1v2w3x4y5
- number:
- description: "The unique alphanumeric credit number per company"
- type: string
- example: QUOTE_101
- po_number:
- description: "The purchase order number referred to by the credit"
- type: string
- example: PO_12345
- terms:
- description: "The terms associated with the credit"
- type: string
- example: "Net 30"
- public_notes:
- description: "Public notes for the credit"
- type: string
- example: "Thank you for your business."
- private_notes:
- description: "Private notes for internal use, not visible to the client"
- type: string
- example: "Client is requesting a discount."
- footer:
- description: "The footer text for the credit"
- type: string
- example: "Footer text goes here."
- custom_value1:
- description: "Custom value 1 for additional credit information"
- type: string
- example: "Custom data 1"
- custom_value2:
- description: "Custom value 2 for additional credit information"
- type: string
- example: "Custom data 2"
- custom_value3:
- description: "Custom value 3 for additional credit information"
- type: string
- example: "Custom data 3"
- custom_value4:
- description: "Custom value 4 for additional credit information"
- type: string
- example: "Custom data 4"
- tax_name1:
- description: "The name of the first tax applied to the credit"
- type: string
- example: "VAT"
- tax_name2:
- description: "The name of the second tax applied to the credit"
- type: string
- example: "GST"
- tax_rate1:
- description: "The rate of the first tax applied to the credit"
- type: number
- format: float
- example: 10.00
- tax_rate2:
- description: "The rate of the second tax applied to the credit"
- type: number
- format: float
- example: 5.00
- tax_name3:
- description: "The name of the third tax applied to the credit"
- type: string
- example: "PST"
- tax_rate3:
- description: "The rate of the third tax applied to the credit"
- type: number
- format: float
- example: 8.00
- total_taxes:
- description: "The total amount of taxes for the credit"
- type: number
- format: float
- example: 23.00
- line_items:
- type: array
- description: 'An array of objects which define the line items of the credit'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- amount:
- description: "The total amount of the credit"
- type: number
- format: float
- example: 100.00
- balance:
- description: "The outstanding balance of the credit"
- type: number
- format: float
- example: 50.00
- paid_to_date:
- description: "The total amount paid to date for the credit"
- type: number
- format: float
- example: 50.00
- discount:
- description: "The discount applied to the credit"
- type: number
- format: float
- example: 10.00
- partial:
- description: "The partial amount applied to the credit"
- type: number
- format: float
- example: 20.00
- is_amount_discount:
- description: "Indicates whether the discount applied is a fixed amount or a percentage"
- type: boolean
- example: true
+ example: XS987sD
is_deleted:
- description: "Indicates whether the credit has been deleted"
- type: boolean
- example: false
- uses_inclusive_taxes:
- description: "Indicates whether the tax rates applied to the credit are inclusive or exclusive"
+ description: 'Flag determining whether the expense category has been deleted'
type: boolean
example: true
- date:
- description: "The date the credit was issued"
- type: string
- format: date
- example: "1994-07-30"
- last_sent_date:
- description: "The date the credit was last sent out"
- type: string
- format: date
- example: "1994-07-30"
- next_send_date:
- description: "The next scheduled date for sending a credit reminder"
- type: string
- format: date
- example: "1994-07-30"
- partial_due_date:
- description: "The due date for the partial amount of the credit"
- type: string
- format: date
- example: "1994-07-30"
- due_date:
- description: "The due date for the total amount of the credit"
- type: string
- format: date
- example: "1994-07-30"
- settings:
- $ref: "#/components/schemas/CompanySettings"
- last_viewed:
- description: "The timestamp of the last time the credit was viewed"
- type: number
- format: integer
- example: 1434342123
updated_at:
- description: "The timestamp of the last time the credit was updated"
- type: number
- format: integer
- example: 1434342123
- archived_at:
- description: "The timestamp of the last time the credit was archived"
- type: number
- format: integer
- example: 1434342123
- custom_surcharge1:
- description: "First custom surcharge amount"
- type: number
- format: float
- example: 10.00
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- type: object
-
- GenericBulkAction:
- properties:
- action:
- type: string
- example: archive
- description: 'The action to perform ie. archive / restore / delete'
- ids:
- type: array
- items:
- format: string
- type: string
- example: 2J234DFA,D2J234DFA,D2J234DFA
- description: string array of client hashed ids
+ description: 'The updated at timestamp'
+ type: integer
+ example: '2'
+ created_at:
+ description: 'The created at timestamp'
+ type: integer
+ example: '2'
type: object
ProductRequest:
type: object
@@ -15345,1389 +15289,224 @@ components:
```
example: '1'
- CompanyLedger:
+ CompanyToken:
properties:
- entity_id:
- description: 'This field will reference one of the following entity hashed ID payment_id, invoice_id or credit_id'
+ name:
+ description: 'The token name'
+ type: string
+ example: 'Token Name'
+ token:
+ description: 'The token value'
+ type: string
+ example: AS3df3jUUH765fhfd9KJuidj3JShjA
+ is_system:
+ description: 'Determines whether the token is created by the system rather than a user'
+ type: boolean
+ example: 'true'
+ type: object
+ Document:
+ properties:
+ id:
+ description: 'The document hashed id'
type: string
example: AS3df3A
- notes:
- description: 'The notes which reference this entry of the ledger'
+ user_id:
+ description: 'The user hashed id'
type: string
- example: 'Credit note for invoice #3212'
- balance:
- description: 'The client balance'
- type: number
- format: float
- example: '10.00'
- adjustment:
- description: 'The amount the client balance is adjusted by'
- type: number
- format: float
- example: '10.00'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
+ example: ''
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: ''
+ project_id:
+ description: 'The project associated with this document'
+ type: string
+ example: ''
+ vendor_id:
+ description: 'The vendor associated with this documents'
+ type: string
+ example: ''
+ name:
+ description: 'The document name'
+ type: string
+ example: Beauty
+ url:
+ description: 'The document url'
+ type: string
+ example: Beauty
+ preview:
+ description: 'The document preview url'
+ type: string
+ example: Beauty
+ type:
+ description: 'The document type'
+ type: string
+ example: Beauty
+ disk:
+ description: 'The document disk'
+ type: string
+ example: Beauty
+ hash:
+ description: 'The document hashed'
+ type: string
+ example: Beauty
+ is_deleted:
+ description: 'Flag to determine if the document is deleted'
+ type: boolean
+ example: true
+ is_default:
+ description: 'Flag to determine if the document is a default doc'
+ type: boolean
+ example: true
created_at:
description: Timestamp
type: number
format: integer
- example: '1434342123'
+ example: '134341234234'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ deleted_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
type: object
- Invoice:
+ Payment:
properties:
id:
- description: 'The invoice hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- assigned_user_id:
- description: 'The assigned user hashed id'
+ description: 'The payment hashed id'
type: string
example: Opnel5aKBz
client_id:
description: 'The client hashed id'
type: string
example: Opnel5aKBz
- status_id:
- description: 'The invoice status variable'
- type: string
- example: '4'
- number:
- description: 'The invoice number - is a unique alpha numeric number per invoice per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this invoice'
- type: string
- example: PO-1234
- terms:
- description: 'The invoice terms'
- type: string
- example: 'These are invoice terms'
- public_notes:
- description: 'The public notes of the invoice'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the invoice'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The invoice footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the invoice'
- type: number
- format: float
- example: '10.00'
- line_items:
- type: array
- description: 'An array of objects which define the line items of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- invitations:
- type: array
- description: 'An array of objects which define the invitations of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceInvitation'
- amount:
- description: 'The invoice amount'
- type: number
- format: float
- example: '10.00'
- balance:
- description: 'The invoice balance'
- type: number
- format: float
- example: '10.00'
- paid_to_date:
- description: 'The amount paid on the invoice to date'
- type: number
- format: float
- example: '10.00'
- discount:
- description: 'The invoice discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the invoice has been deleted'
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The Invoice Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the invoice was sent out'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the invoice'
- type: string
- format: date
- example: '1994-07-30'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- project_id:
- description: 'The project associated with this invoice'
+ invitation_id:
+ description: 'The invitation hashed id'
type: string
example: Opnel5aKBz
- auto_bill_tries:
- description: 'The number of times the invoice has attempted to be auto billed'
- type: integer
- example: '1'
- readOnly: true
- auto_bill_enabled:
- description: 'Boolean flag determining if the invoice is set to auto bill'
- type: boolean
- example: true
- subscription_id:
- description: 'The subscription associated with this invoice'
+ client_contact_id:
+ description: 'The client contact hashed id'
type: string
example: Opnel5aKBz
-
- type: object
- Company:
- properties:
- id:
- description: "The unique hashed identifier for the company"
- type: string
- example: WJxbojagwO
- size_id:
- description: "The unique identifier representing the company's size category"
- type: string
- example: '2'
- industry_id:
- description: "The unique identifier representing the company's industry category"
- type: string
- example: '5'
- slack_webhook_url:
- description: "The URL for the company's Slack webhook notifications"
- type: string
- example: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
- google_analytics_key:
- description: "The company's Google Analytics tracking ID"
- type: string
- example: 'UA-123456789-1'
- portal_mode:
- description: "The mode determining how client-facing URLs are structured (e.g., subdomain, domain, or iframe)"
- type: string
- example: subdomain
- subdomain:
- description: "The subdomain prefix for the company's domain (e.g., 'acme' in acme.domain.com)"
- type: string
- example: acme
- portal_domain:
- description: "The fully qualified domain used for client-facing URLs"
- type: string
- example: 'https://subdomain.invoicing.co'
- enabled_tax_rates:
- description: "The number of tax rates used per entity"
- type: integer
- example: '2'
- fill_products:
- description: "A flag determining whether to auto-fill product descriptions based on the product key"
- type: boolean
- example: true
- convert_products:
- description: "A flag determining whether to convert products between different types or units"
- type: boolean
- example: true
- update_products:
- description: "A flag determining whether to update product descriptions when the description changes"
- type: boolean
- example: true
- show_product_details:
- description: "A flag determining whether to display product details in the user interface"
- type: boolean
- example: true
- show_product_cost:
- description: "A flag determining whether to display product cost is shown in the user interface"
- type: boolean
- example: true
- custom_fields:
- description: "A mapping of custom fields for various objects within the company"
- type: object
- enable_product_cost:
- description: "A flag determining whether to show or hide the product cost field in the user interface"
- type: boolean
- example: true
- enable_product_quantity:
- description: "A flag determining whether to show or hide the product quantity field in the user interface"
- type: boolean
- example: true
- default_quantity:
- description: "A flag determining whether to use a default quantity for products"
- type: boolean
- example: true
- custom_surcharge_taxes1:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the first custom surcharge field"
- type: boolean
- example: true
- custom_surcharge_taxes2:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the second custom surcharge field"
- type: boolean
- example: true
- custom_surcharge_taxes3:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the third custom surcharge field"
- type: boolean
- example: true
- custom_surcharge_taxes4:
- description: "A flag determining whether to apply taxes on custom surcharge amounts for the fourth custom"
- logo:
- description: "The company logo file in binary format"
- type: string
- format: binary
- example: logo.png
- company_key:
- description: "The static company key hash used to identify the Company"
- readOnly: true
- type: string
- example: "Vnb14bRlwiFjc5ckte6cfbygTRkn5IMQ"
- client_can_register:
- description: "A flag determining whether clients can register for the client portal"
- type: boolean
- example: true
- enabled_modules:
- type: integer
- description: |
- Bitmask representation of the modules that are enabled in the application
-
- ```
- self::ENTITY_RECURRING_INVOICE => 1,
- self::ENTITY_CREDIT => 2,
- self::ENTITY_QUOTE => 4,
- self::ENTITY_TASK => 8,
- self::ENTITY_EXPENSE => 16,
- self::ENTITY_PROJECT => 32,
- self::ENTITY_VENDOR => 64,
- self::ENTITY_TICKET => 128,
- self::ENTITY_PROPOSAL => 256,
- self::ENTITY_RECURRING_EXPENSE => 512,
- self::ENTITY_RECURRING_TASK => 1024,
- self::ENTITY_RECURRING_QUOTE => 2048,
- ```
-
- The default per_page value is 20.
-
- example: 2048
- db:
- readOnly: true
- type: string
- example: 'db-ninja-01'
- first_day_of_week:
- description: "The first day of the week for the company"
- type: string
- example: '1'
- first_month_of_year:
- description: "The first month for the company financial year"
- type: string
- example: '1'
- enabled_item_tax_rates:
- description: "The number of tax rates used per item"
- type: integer
- example: 2
- is_large:
- description: "A flag determining whether the company is considered large"
- type: boolean
- example: true
- default_auto_bill:
- type: string
- example: 'always'
- description: |
- A flag determining whether to auto-bill clients by default
-
- values:
-
- - always - Always auto bill
- - disabled - Never auto bill
- - optin - Allow the client to select their auto bill status with the default being disabled
- - optout -Allow the client to select their auto bill status with the default being enabled
- mark_expenses_invoiceable:
- description: "A flag determining whether to mark expenses as invoiceable by default"
- type: boolean
- example: true
- mark_expenses_paid:
- description: "A flag determining whether to mark expenses as paid by default"
- type: boolean
- example: true
- invoice_expense_documents:
- description: "A flag determining whether to include expense documents on invoices by default"
- type: boolean
- example: true
- auto_start_tasks:
- description: "A flag determining whether to auto-start tasks by default"
- type: boolean
- example: true
- invoice_task_timelog:
- description: "A flag determining whether to include task time logs on invoices by default"
- type: boolean
- example: true
- invoice_task_documents:
- description: "A flag determining whether to include task documents on invoices by default"
- type: boolean
- example: true
- show_tasks_table:
- description: "A flag determining whether to show the tasks table on invoices by default"
- type: boolean
- example: true
- is_disabled:
- description: "A flag determining whether the company is disabled"
- type: boolean
- example: true
- default_task_is_date_based:
- description: "A flag determining whether to default tasks to be date-based"
- type: boolean
- example: true
- enable_product_discount:
- description: "A flag determining whether to show or hide the product discount field in the user interface"
- type: boolean
- example: true
- calculate_expense_tax_by_amount:
- description: "A flag determining whether to calculate expense taxes by amount"
- type: boolean
- example: true
- expense_inclusive_taxes:
- description: "A flag determining whether to include taxes in the expense amount"
- type: boolean
- example: true
- session_timeout:
- description: "The session timeout for the company"
- type: integer
- example: 60
- oauth_password_required:
- description: "A flag determining whether to require a password for `dangerous` actions when using OAuth"
- type: boolean
- example: true
- invoice_task_datelog:
- description: "A flag determining whether to include task date logs on invoices by default"
- type: boolean
- example: true
- default_password_timeout:
- description: "The default password timeout for the company"
- type: integer
- example: 60
- show_task_end_date:
- description: "A flag determining whether to show the task end date on invoices by default"
- type: boolean
- example: true
- markdown_enabled:
- description: "A flag determining whether markdown is enabled for the company"
- type: boolean
- example: true
- report_include_drafts:
- description: "A flag determining whether to include draft invoices in reports"
- type: boolean
- example: true
- client_registration_fields:
- description: "The client registration fields for the company"
- type: object
- stop_on_unpaid_recurring:
- description: "A flag determining whether to stop recurring invoices when they are unpaid"
- type: boolean
- example: true
- use_quote_terms_on_conversion:
- description: "A flag determining whether to use quote terms on conversion to an invoice"
- type: boolean
- example: true
- enable_applying_payments:
- description: "A flag determining whether to enable applying payments to invoices"
- type: boolean
- example: true
- track_inventory:
- description: "A flag determining whether to track inventory for the company"
- type: boolean
- example: true
- inventory_notification_threshold:
- description: "The inventory notification threshold for the company"
- type: integer
- example: 60
- stock_notification:
- description: "A flag determining whether to send stock notifications for the company"
- type: boolean
- example: true
- matomo_url:
- description: "The Matomo URL for the company"
- type: string
- example: 'https://matomo.example.com'
- matomo_id:
- description: "The Matomo ID for the company"
- type: string
- example: '1'
- enabled_expense_tax_rates:
- description: "The number of tax rates used per expense"
- type: integer
- example: 2
- invoice_task_project:
- description: "A flag determining whether to include the project on invoices by default"
- type: boolean
- example: true
- report_include_deleted:
- description: "A flag determining whether to include deleted invoices in reports"
- type: boolean
- example: true
- invoice_task_lock:
- description: "A flag determining whether to lock tasks when invoiced"
- type: boolean
- example: true
- convert_payment_currency:
- description: "A flag determining whether to convert the payment currency"
- type: boolean
- example: true
- convert_expense_currency:
- description: "A flag determining whether to convert the expense currency"
- type: boolean
- example: true
- notify_vendor_when_paid:
- description: "A flag determining whether to notify the vendor when an expense is paid"
- type: boolean
- example: true
- invoice_task_hours:
- description: "A flag determining whether to include the task hours on invoices by default"
- type: boolean
- example: true
- calculate_taxes:
- description: "A flag determining whether to calculate taxes for the company"
- type: boolean
- example: true
- tax_data:
- description: "The tax data for the company"
- type: object
- e_invoice_certificate:
- description: "The e-invoice certificate for the company"
- type: string
- example: '-----BEGIN CERTIFICATE-----'
- e_invoice_certificate_passphrase:
- description: "The e-invoice certificate passphrase for the company"
- type: string
- example: 'secret'
- origin_tax_data:
- description: "The origin tax data for the company"
- type: object
- invoice_task_project_header:
- description: "A flag determining whether to include the project header on invoices by default"
- type: boolean
- example: true
- invoice_task_item_description:
- description: "A flag determining whether to include the item description on invoices by default"
- type: boolean
- example: true
-
- settings:
- $ref: '#/components/schemas/CompanySettings'
- type: object
- InvoiceRequest:
- required:
- - client_id
- properties:
- id:
- description: 'The invoice hashed id'
- type: string
- example: Opnel5aKBz
- readOnly: true
user_id:
description: 'The user hashed id'
type: string
example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- status_id:
- description: 'The invoice status variable'
- type: string
- example: '4'
- readOnly: true
- number:
- description: 'The invoice number - is a unique alpha numeric number per invoice per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this invoice'
- type: string
- example: PO-1234
- terms:
- description: 'The invoice terms'
- type: string
- example: 'These are invoice terms'
- public_notes:
- description: 'The public notes of the invoice'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the invoice'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The invoice footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the invoice'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- line_items:
- type: array
- description: 'An array of objects which define the line items of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- invitations:
- type: array
- description: 'An array of objects which define the invitations of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceInvitationRequest'
- amount:
- description: 'The invoice amount'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- balance:
- description: 'The invoice balance'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- paid_to_date:
- description: 'The amount paid on the invoice to date'
- type: number
- format: float
- example: '10.00'
- readOnly: true
- discount:
- description: 'The invoice discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the invoice has been deleted'
- type: boolean
- example: true
- readOnly: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The Invoice Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the invoice was sent out'
- type: string
- format: date
- example: '1994-07-30'
- readOnly: true
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- readOnly: true
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the invoice'
- type: string
- format: date
- example: '1994-07-30'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- project_id:
- description: 'The project associated with this invoice'
- type: string
- example: Opnel5aKBz
- type: object
- SystemLog:
- properties:
- id:
- description: 'The account hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user_id hashed id'
- type: string
- example: AS3df3A
- client_id:
- description: 'The client_id hashed id'
- type: string
- example: AS3df3A
- event_id:
- description: 'The Log Type ID'
- type: integer
- example: 1
- category_id:
- description: 'The Category Type ID'
- type: integer
- example: 1
type_id:
- description: 'The Type Type ID'
- type: integer
- example: 1
- log:
- description: 'The json object of the error'
- type: object
- example: '{''key'':''value''}'
- updated_at:
- description: Timestamp
+ description: 'The Payment Type ID'
type: string
- example: '2'
- created_at:
- description: Timestamp
+ example: '1'
+ date:
+ description: 'The Payment date'
type: string
- example: '2'
- type: object
- Expense:
- properties:
- id:
- description: 'The expense hashed id'
+ example: 1-1-2014
+ transaction_reference:
+ description: 'The transaction reference as defined by the payment gateway'
type: string
- example: 'Opnel5aKBz'
- user_id:
- description: 'The user hashed id'
- type: string
- example: 'Opnel5aKBz'
+ example: xcsSxcs124asd
assigned_user_id:
description: 'The assigned user hashed id'
type: string
- example: 'Opnel5aKBz'
- project_id:
- description: 'The associated project_id'
- type: string
- example: 'Opnel5aKBz'
- client_id:
- description: 'The client hashed id'
- type: string
- example: 'Opnel5aKBz'
- invoice_id:
- description: 'The related invoice hashed id'
- type: string
- example: 'Opnel5aKBz'
- bank_id:
- description: 'The bank id related to this expense'
- type: string
- example: ''
- invoice_currency_id:
- description: 'The currency id of the related invoice'
- type: string
- example: '1'
- currency_id:
- description: 'The currency id of the expense'
- type: string
- example: '2'
- invoice_category_id:
- description: 'The invoice category id'
- type: string
- example: 'Opnel5aKBz'
- payment_type_id:
- description: 'The payment type id'
- type: string
- example: ''
- recurring_expense_id:
- description: 'The related recurring expense this expense was created from'
- type: string
- example: 'Opnel5aKBz'
+ example: Opnel5aKBz
private_notes:
- description: 'The private notes of the expense'
+ description: 'The private notes of the payment'
type: string
- example: ''
- public_notes:
- description: 'The public notes of the expense'
- type: string
- example: ''
- transaction_reference:
- description: 'The transaction references of the expense'
- type: string
- example: ''
- transcation_id:
- description: 'The transaction id of the expense'
- type: string
- example: ''
- custom_value1:
- description: 'A custom value'
- type: string
- example: ''
- custom_value2:
- description: 'A custom value'
- type: string
- example: ''
- custom_value3:
- description: 'A custom value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom value'
- type: string
- example: ''
- tax_amount:
- description: 'The tax amount'
- type: number
- example: 10.00
- tax_name1:
- description: 'Tax Name 1'
- type: string
- example: 'GST'
- tax_name2:
- description: 'Tax Name 2'
- type: string
- example: 'VAT'
- tax_name3:
- description: 'Tax Name 3'
- type: string
- example: 'IVA'
- tax_rate1:
- description: 'Tax rate 1'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'Tax rate 2'
- type: number
- format: float
- example: '10.00'
- tax_rate3:
- description: 'Tax rate 3'
- type: number
- format: float
- example: '10.00'
- amount:
- description: 'The total expense amont'
- type: number
- format: float
- example: '10.00'
- foreign_amount:
- description: 'The total foreign amount of the expense'
- type: number
- format: float
- example: '10.00'
- exchange_rate:
- description: 'The exchange rate at the time of the expense'
- type: number
- format: float
- example: '0.80'
- date:
- description: 'The expense date format Y-m-d'
- type: string
- example: '2022-12-01'
- payment_date:
- description: 'The date of payment for the expense, format Y-m-d'
- type: string
- example: '2022-12-01'
- should_be_invoiced:
- description: 'Flag whether the expense should be invoiced'
+ example: 'The payment was refunded due to error'
+ is_manual:
+ description: 'Flags whether the payment was made manually or processed via a gateway'
type: boolean
example: true
is_deleted:
- description: 'Boolean determining whether the expense has been deleted'
+ description: 'Defines if the payment has been deleted'
type: boolean
example: true
- invoice_documents:
- description: 'Passing the expense documents over to the invoice'
- type: boolean
- example: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
- BankTransaction:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user hashed id'
- type: string
- example: AS3df3A
- transaction_id:
- description: 'The id of the transaction rule'
- type: integer
- example: 343434
amount:
- description: 'The transaction amount'
+ description: 'The amount of this payment'
type: number
example: 10
- currency_id:
- description: 'The currency ID of the currency'
+ refunded:
+ description: 'The refunded amount of this payment'
+ type: number
+ example: 10
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ company_gateway_id:
+ description: 'The company gateway id'
type: string
- example: '1'
- account_type:
- description: 'The account type'
+ example: '3'
+ paymentables:
+ $ref: '#/components/schemas/Paymentable'
+ invoices:
+ description: ''
+ type: array
+ items:
+ $ref: '#/components/schemas/InvoicePaymentable'
+ credits:
+ description: ''
+ type: array
+ items:
+ $ref: '#/components/schemas/CreditPaymentable'
+ number:
+ description: 'The payment number - is a unique alpha numeric number per payment per company'
type: string
- example: creditCard
- description:
- description: 'The description of the transaction'
+ example: PAY_101
+ type: object
+
+ BankTransactionRule:
+ properties:
+ id:
+ description: 'The bank transaction rules hashed id'
type: string
- example: 'Potato purchases for kevin'
- category_id:
- description: 'The category id'
- type: integer
- example: 1
- category_type:
- description: 'The category description'
+ example: AS3df3A
+ user_id:
+ description: 'The user hashed id'
type: string
- example: Expenses
- base_type:
- description: 'Either CREDIT or DEBIT'
+ example: AS3df3A
+ name:
+ description: 'The name of the transaction'
+ type: string
+ example: 'Rule 1'
+ rules:
+ description: 'A mapped collection of the sub rules for the BankTransactionRule'
+ type: array
+ items:
+ $ref: '#/components/schemas/BTRules'
+ auto_convert:
+ description: 'Flags whether the rule converts the transaction automatically'
+ type: boolean
+ example: true
+ matches_on_all:
+ description: 'Flags whether all subrules are required for the match'
+ type: boolean
+ example: true
+ applies_to:
+ description: 'Flags whether the rule applies to a CREDIT or DEBIT'
type: string
example: CREDIT
- date:
- description: 'The date of the transaction'
- type: string
- example: '2022-09-01'
- bank_account_id:
- description: 'The ID number of the bank account'
- type: integer
- example: '1'
- type: object
- ExpenseCategory:
- properties:
- id:
- description: 'The expense hashed id'
- type: string
- example: Opnel5aKBz
- name:
- description: 'The expense category name'
- type: string
- example: Accounting
- user_id:
- description: 'The user hashed id'
- type: string
- example: XS987sD
- is_deleted:
- description: 'Flag determining whether the expense category has been deleted'
- type: boolean
- example: true
- updated_at:
- description: 'The updated at timestamp'
- type: integer
- example: '2'
- created_at:
- description: 'The created at timestamp'
- type: integer
- example: '2'
- type: object
- BankIntegration:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user hashed id'
- type: string
- example: AS3df3A
- provider_bank_name:
- description: 'The providers bank name'
- type: string
- example: 'Chase Bank'
- bank_account_id:
- description: 'The bank account id'
- type: integer
- example: '1233434'
- bank_account_name:
- description: 'The name of the account'
- type: string
- example: 'My Checking Acc'
- bank_account_number:
- description: 'The account number'
- type: string
- example: '111 234 2332'
- bank_account_status:
- description: 'The status of the bank account'
- type: string
- example: ACTIVE
- bank_account_type:
- description: 'The type of account'
- type: string
- example: CREDITCARD
- balance:
- description: 'The current bank balance if available'
- type: number
- example: '1000000'
- currency:
- description: 'iso_3166_3 code'
- type: string
- example: USD
- type: object
- Subscription:
- properties:
- id:
- description: Unique identifier for the subscription
- type: string
- example: Opnel5aKBz
- user_id:
- description: Unique identifier for the user associated with the subscription
- type: string
- example: Ua6Rw4pVbS
- product_id:
- description: Unique identifier for the product associated with the subscription
- type: string
- example: Pr5Ft7yBmC
- recurring_invoice_id:
- description: Unique identifier for the recurring invoice associated with the subscription
- type: string
- example: Ri2Yt8zJkP
- is_recurring:
- description: Indicates whether the subscription is recurring
- type: boolean
- example: 'true'
- frequency_id:
- description: 'integer const representation of the frequency'
- type: string
- example: '1'
- auto_bill:
- description: 'enum setting'
- type: string
- example: always
- promo_code:
- description: Promotional code applied to the subscription
- type: string
- example: PROMOCODE4U
- promo_discount:
- description: Discount percentage or amount applied to the subscription
- type: number
- example: 10
- is_amount_discount:
- description: Indicates whether the discount is a fixed amount
- type: boolean
- example: 'true'
- allow_cancellation:
- description: Indicates whether the subscription can be cancelled
- type: boolean
- example: 'true'
- per_seat_enabled:
- description: Indicates whether the subscription pricing is per seat
- type: boolean
- example: 'true'
- currency_id:
- description: Unique identifier for the currency used in the subscription
- type: integer
- example: '1'
- max_seats_limit:
- description: Maximum number of seats allowed for the subscription
- type: integer
- example: '100'
- trial_enabled:
- description: Indicates whether the subscription has a trial period
- type: boolean
- example: 'true'
- trial_duration:
- description: Duration of the trial period in days
- type: integer
- example: '14'
- allow_query_overrides:
- description: Indicates whether query overrides are allowed for the subscription
- type: boolean
- example: 'true'
- allow_plan_changes:
- description: Indicates whether plan changes are allowed for the subscription
- type: boolean
- example: 'true'
- refund_period:
- description: Number of days within which refunds can be requested
- type: integer
- example: '30'
- webhook_configuration:
- description: Webhook configuration for the subscription
- type: string
- example: 'expand reference for this'
- is_deleted:
- description: Indicates whether the subscription has been deleted
- type: boolean
- example: 'false'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- type: object
- BulkAction:
- type: array
- items:
- type: integer
- example: '[0,1,2,3,]'
- FillableInvoice:
- properties:
- assigned_user_id:
- description: "The assigned user's hashed ID"
- type: string
- example: 'a1b2c3d4'
client_id:
- description: "The client's hashed ID"
+ description: 'The client hashed id'
type: string
- example: 'x1y2z3a4'
- number:
- description: "The unique alphanumeric invoice number for each invoice per company"
+ example: AS3df3A
+ vendor_id:
+ description: 'The vendor hashed id'
type: string
- example: INV_101
- po_number:
- description: "The purchase order number associated with the invoice"
+ example: AS3df3A
+ category_id:
+ description: 'The category hashed id'
type: string
- example: 'PO12345'
- terms:
- description: "The terms and conditions for the invoice"
- type: string
- example: 'Net 30'
- public_notes:
- description: "Public notes visible to the client on the invoice"
- type: string
- example: 'Thank you for your business.'
- private_notes:
- description: "Private notes for internal use only"
- type: string
- example: 'Client is a slow payer.'
- footer:
- description: "The footer text displayed on the invoice"
- type: string
- example: 'Authorized Signature'
- custom_value1:
- description: "First custom value for additional information"
- type: string
- example: 'Project ABC'
- custom_value2:
- description: "Second custom value for additional information"
- type: string
- example: 'Department XYZ'
- custom_value3:
- description: "Third custom value for additional information"
- type: string
- example: 'Location 123'
- custom_value4:
- description: "Fourth custom value for additional information"
- type: string
- example: 'Currency USD'
- tax_name1:
- description: "Name of the first tax applied to the invoice"
- type: string
- example: 'VAT'
- tax_name2:
- description: "Name of the second tax applied to the invoice"
- type: string
- example: 'GST'
- tax_rate1:
- description: "Rate of the first tax applied to the invoice"
- type: number
- example: 10.00
- tax_rate2:
- description: "Rate of the second tax applied to the invoice"
- type: number
- example: 5.00
- tax_name3:
- description: "Name of the third tax applied to the invoice"
- type: string
- example: 'PST'
- tax_rate3:
- description: "Rate of the third tax applied to the invoice"
- type: number
- example: 8.00
- line_items:
- type: array
- description: 'An array of objects which define the line items of the invoice'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- discount:
- description: "The discount applied to the invoice"
- type: number
- example: 10.00
- partial:
- description: "The partial amount applied to the invoice"
- type: number
- example: 20.00
- is_amount_discount:
- description: "Indicates whether the discount applied is a fixed amount or a percentage"
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: "Indicates whether the tax rates applied to the invoice are inclusive or exclusive"
- type: boolean
- example: true
- date:
- description: "The date the invoice was issued"
- type: string
- example: '1994-07-30'
- partial_due_date:
- description: "The due date for the partial payment"
- type: string
- example: '1994-08-15'
- due_date:
- description: "The due date for the invoice"
- type: string
- example: '1994-08-30'
- custom_surcharge1:
- description: "First custom surcharge applied to the invoice"
- type: number
- example: 10.00
- custom_surcharge2:
- description: "Second custom surcharge applied to the invoice"
- type: number
- example: 15.00
- custom_surcharge3:
- description: "Third custom surcharge applied to the invoice"
- type: number
- example: 5.00
- custom_surcharge4:
- description: "Fourth custom surcharge applied to the invoice"
- type: number
- example: 20.00
+ example: AS3df3A
type: object
RecurringQuote:
properties:
@@ -16951,1802 +15730,6 @@ components:
type: boolean
example: true
type: object
- Paymentable:
- properties:
- id:
- description: 'The paymentable hashed id'
- type: string
- example: AS3df3A
- invoice_id:
- description: 'The invoice hashed id'
- type: string
- example: AS3df3A
- credit_id:
- description: 'The credit hashed id'
- type: string
- example: AS3df3A
- refunded:
- description: 'The amount that has been refunded for this payment'
- type: number
- format: float
- example: '10.00'
- amount:
- description: 'The amount that has been applied to the payment'
- type: number
- format: float
- example: '10.00'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
- Meta:
- properties:
- pagination:
- $ref: '#/components/schemas/Pagination'
- Pagination:
- type: object
- properties:
- total:
- type: integer
- description: 'The total number of items'
- example: 1
- readOnly: true
- count:
- type: integer
- description: 'The number of items per page'
- example: 1
- readOnly: true
- per_page:
- type: integer
- description: 'The number of items per page'
- example: 1
- readOnly: true
- current_page:
- type: integer
- description: 'The current page number'
- example: 1
- readOnly: true
- total_pages:
- type: integer
- description: 'The total number of pages'
- example: 1
- readOnly: true
- links:
- type: object
- description: 'The pagination links'
- readOnly: true
- Project:
- type: object
- properties:
- id:
- description: 'The project hashed id'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: The assigned user identifier associated with the project
- type: string
- example: Opnel5aKBz
- client_id:
- type: string
- example: Opnel5aKBz
- description: The client identifier associated with the project
- name:
- type: string
- description: The name of the project
- example: 'New Project'
- task_rate:
- type: number
- format: float
- example: 10
- description: The default rate per task for the project
- due_date:
- type: string
- format: date
- example: '2019-01-01'
- description: The due date for the project
- private_notes:
- type: string
- description: Private notes associated with the project
- budgeted_hours:
- type: number
- format: float
- description: The number of budgeted hours for the project
- custom_value1:
- type: string
- description: Custom value field 1
- custom_value2:
- type: string
- description: Custom value field 2
- custom_value3:
- type: string
- description: Custom value field 3
- custom_value4:
- type: string
- description: Custom value field 4
- created_at:
- type: number
- format: integer
- example: 134341234234
- description: The timestamp of the project creation
- updated_at:
- type: number
- format: integer
- example: 134341234234
- description: The timestamp of the last project update
- archived_at:
- type: number
- format: integer
- example: 134341234234
- description: The timestamp of the project deletion
- public_notes:
- type: string
- description: Public notes associated with the project
- is_deleted:
- type: boolean
- description: A flag indicating if the project is deleted
- number:
- type: string
- description: The project number
- color:
- type: string
- description: The color associated with the project
- required:
- - id
- - user_id
- - name
- - task_rate
- - budgeted_hours
- - is_deleted
- - color
-
- Client:
- properties:
- id:
- description: 'The unique identifier of the client'
- type: string
- example: Opnel5aKBz
- readOnly: true
- contacts:
- type: array
- items:
- $ref: '#/components/schemas/ClientContact'
- user_id:
- description: 'The unique identifier of the user who created the client'
- type: string
- example: Ua6Rw4pVbS
- readOnly: true
- assigned_user_id:
- description: 'The unique identifier of the user who has been assigned the client'
- type: string
- example: Ua6Rw4pVbS
- name:
- description: 'The name of the client company or organization'
- type: string
- example: "Jim's Housekeeping"
- website:
- description: 'The website URL of the client company or organization'
- type: string
- example: 'https://www.jims-housekeeping.com'
- private_notes:
- description: 'Notes that are only visible to the user who created the client'
- type: string
- example: 'Client prefers email communication over phone calls'
- client_hash:
- description: 'A unique hash value for the client'
- type: string
- example: asdfkjhk342hjhbfdvmnfb1
- readOnly: true
- industry_id:
- description: 'The unique identifier of the industry the client operates in'
- type: number
- example: '5'
- size_id:
- description: 'The unique identifier for the size category of the client company or organization'
- type: number
- example: '2'
- address1:
- description: "First line of the client's address"
- type: string
- example: '123 Main St'
- address2:
- description: "Second line of the client's address, if needed"
- type: string
- example: 'Apt 4B'
- city:
- description: 'The city the client is located in'
- type: string
- example: 'Beverly Hills'
- state:
- description: 'The state, province, or locality the client is located in'
- type: string
- example: 'California'
- postal_code:
- description: 'The postal code or ZIP code of the client'
- type: string
- example: '90210'
- phone:
- description: "The client's phone number"
- type: string
- example: '555-3434-3434'
- country_id:
- description: "The unique identifier of the client's country"
- type: number
- format: integer
- example: '1'
- custom_value1:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Preferred contact: Email'
- custom_value2:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Account manager: John Doe'
- custom_value3:
- description: 'A custom field for storing additional information'
- type: string
- example: 'VIP client: Yes'
- custom_value4:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Annual contract value: $50,000'
- vat_number:
- description: "The client's VAT (Value Added Tax) number, if applicable"
- type: string
- example: 'VAT123456'
- id_number:
- description: 'A unique identification number for the client, such as a tax ID or business registration number'
- type: string
- number:
- description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
- type: string
- example: 'CL-0001'
- shipping_address1:
- description: "First line of the client's shipping address"
- type: string
- example: '5 Wallaby Way'
- shipping_address2:
- description: "Second line of the client's shipping address, if needed"
- type: string
- example: 'Suite 5'
- shipping_city:
- description: "The city of the client's shipping address"
- type: string
- example: 'Perth'
- shipping_state:
- description: "The state, province, or locality of the client's shipping address"
- type: string
- example: 'Western Australia'
- shipping_postal_code:
- description: "The postal code or ZIP code of the client's shipping address"
- type: string
- example: '6110'
- shipping_country_id:
- description: "The unique identifier of the country for the client's shipping address"
- type: number
- format: integer
- example: '4'
- is_deleted:
- description: 'A boolean value indicating whether the client has been deleted or not'
- type: boolean
- example: false
- readOnly: true
- balance:
- description: 'The outstanding balance the client owes'
- type: number
- format: float
- example: '500.00'
- readOnly: true
- paid_to_date:
- description: 'The total amount the client has paid to date'
- type: number
- format: float
- example: '2000.00'
- readOnly: true
- credit_balance:
- description: 'The available credit balance for the client to use on future purchases'
- type: number
- format: float
- example: '100.00'
- readOnly: true
- last_login:
- description: "The timestamp of the client's last login"
- type: number
- format: integer
- example: '1628686031'
- readOnly: true
- created_at:
- description: 'The timestamp when the client was created'
- type: number
- format: integer
- example: '1617629031'
- readOnly: true
- updated_at:
- description: 'The timestamp when the client was last updated'
- type: number
- format: integer
- example: '1628445631'
- readOnly: true
- group_settings_id:
- description: 'The group settings assigned to the client'
- type: string
- example: Opnel5aKBz
- routing_id:
- description: 'The routing address id for e-invoicing for this client'
- type: string
- example: Opnel5aKBz3489-dfkiu-2239-sdsd
- is_tax_exempt:
- description: 'Flag which defines if the client is exempt from taxes'
- type: boolean
- example: false
- has_valid_vat_number:
- description: 'Flag which defines if the client has a valid VAT number'
- type: boolean
- example: false
- readOnly: true
- payment_balance:
- description: 'Defines the payment balance the client has on file (pre payments / over payments / unapplied amounts)'
- type: number
- example: 100
- readOnly: true
- settings:
- $ref: '#/components/schemas/ClientSettings'
- type: object
- Vendor:
- properties:
- id:
- description: 'The hashed id of the vendor. This is a unique identifier for the vendor.'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The hashed id of the user who created the vendor. This is a unique identifier for the user.'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The hashed id of the assigned user to this vendor. This is a unique identifier for the user.'
- type: string
- example: Opnel5aKBz
- contacts:
- type: array
- items:
- $ref: '#/components/schemas/VendorContact'
- description: 'An array of contacts associated with the vendor.'
- name:
- description: 'The name of the vendor.'
- type: string
- example: 'Harry cafe de wheels'
- classification:
- description: 'The classification of the vendor.'
- type: string
- example: 'individual'
- website:
- description: 'The website of the vendor.'
- type: string
- example: www.harry.com
- private_notes:
- description: 'The private notes of the vendor. These notes are only visible to users with appropriate permissions.'
- type: string
- example: 'Shhh, do not tell the vendor'
- industry_id:
- description: 'The industry id of the vendor. This is a unique identifier for the industry.'
- type: string
- example: '1'
- size_id:
- description: 'The size id of the vendor. This is a unique identifier for the size of the vendor.'
- type: string
- example: ''
- address1:
- description: 'The first line of the vendor''s address.'
- type: string
- example: ''
- address2:
- description: 'The second line of the vendor''s address.'
- type: string
- example: ''
- city:
- description: 'The city of the vendor''s address.'
- type: string
- example: ''
- state:
- description: 'The state of the vendor''s address.'
- type: string
- example: ''
- postal_code:
- description: 'The postal code of the vendor''s address.'
- type: string
- example: ''
- phone:
- description: 'The phone number of the vendor.'
- type: string
- example: 555-3434-3434
- country_id:
- description: 'The country id of the vendor. This is a unique identifier for the country.'
- type: string
- example: ''
- currency_id:
- description: 'The currency id of the vendor. This is a unique identifier for the currency.'
- type: string
- example: '4'
- custom_value1:
- description: 'The value of the first custom field for the vendor.'
- type: string
- example: ''
- custom_value2:
- description: 'The value of the second custom field for the vendor.'
- type: string
- example: ''
- custom_value3:
- description: 'The value of the third custom field for the vendor.'
- type: string
- example: ''
- custom_value4:
- description: 'The value of the fourth custom field for the vendor.'
- type: string
- example: ''
- vat_number:
- description: 'The VAT number of the vendor.'
- type: string
- example: ''
- id_number:
- description: 'The ID number of the vendor.'
- type: string
- example: ''
- number:
- description: 'The number of the vendor'
- type: string
- example: '11234'
- is_deleted:
- description: 'Boolean flag determining if the vendor has been deleted'
- type: boolean
- example: true
- language_id:
- description: 'The language id of the vendor. This is a unique identifier for the language.'
- type: string
- example: '1'
- vendor_hash:
- description: 'The vendor hash of the vendor. This is a unique identifier for the vendor.'
- type: string
- example: 'aaa-sss-www'
- readOnly: true
- transaction_name:
- description: 'The transaction name of the vendor.'
- type: string
- example: 'aaa-sss-www'
- last_login:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- display_name:
- description: 'The display name of the vendor.'
- type: string
- example: 'Bob the vendor'
- readOnly: true
- type: object
- VendorContact:
- properties:
- id:
- description: 'The hashed id of the vendor contact'
- type: string
- example: Opnel5aKBz
- readOnly: true
- user_id:
- description: 'The hashed id of the user id'
- type: string
- example: Opnel5aKBz
- readOnly: true
- vendor_id:
- description: 'The hashed id of the vendor'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the contact'
- type: string
- example: Harry
- last_name:
- description: 'The last name of the contact'
- type: string
- example: Windsor
- contact_key:
- description: 'A unique identifier for the contact'
- type: string
- example: JD0X52bkfZlJRiroCJ0tcSiAjsJTntZ5uqKdiZ0a
- readOnly: true
- confirmation_code:
- description: 'The confirmation code used to authenticate the contacts email address'
- type: string
- example: 333-sdjkh34gbasd
- readOnly: true
- phone:
- description: 'The contacts phone number'
- type: string
- example: 555-123-1234
- custom_value1:
- description: 'A custom value'
- type: string
- example: '2022-10-10'
- custom_value2:
- description: 'A custom value'
- type: string
- example: $1000
- custom_value3:
- description: 'A custom value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom value'
- type: string
- example: ''
- email:
- description: 'The contact email address'
- type: string
- example: harry@windsor.com
- email_verified_at:
- description: 'The date which the contact confirmed their email'
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- password:
- description: 'The hashed password of the contact'
- type: string
- example: '*****'
- is_primary:
- description: 'Boolean flag determining if the contact is the primary contact for the vendor'
- type: boolean
- example: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- deleted_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- readOnly: true
- type: object
- Quote:
- properties:
- id:
- description: 'The unique hashed identifier for the quote'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The unique hashed identifier for the user who created the quote'
- type: string
- example: ''
- assigned_user_id:
- description: 'The unique hashed identifier for the user assigned to the quote'
- type: string
- example: ''
- client_id:
- description: 'The unique hashed identifier for the client associated with the quote'
- type: string
- example: ''
- status_id:
- description: 'The status of the quote represented by a unique identifier'
- type: string
- example: ''
- number:
- description: 'The unique alpha-numeric quote number for the quote per company'
- type: string
- example: QUOTE_101
- po_number:
- description: 'The purchase order number associated with the quote'
- type: string
- example: PO-1234
- terms:
- description: 'The terms and conditions for the quote'
- type: string
- example: 'These are some quote terms. Valid for 14 days.'
- public_notes:
- description: 'Publicly visible notes associated with the quote'
- type: string
- example: 'These are public notes which the client may see'
- private_notes:
- description: 'Privately visible notes associated with the quote, not disclosed to the client'
- type: string
- example: 'These are private notes, not to be disclosed to the client'
- footer:
- description: 'The footer text of the quote'
- type: string
- example: 'The text goes in the footer of the quote'
- custom_value1:
- description: 'First custom value field for additional information'
- type: string
- example: 'A custom value'
- custom_value2:
- description: 'Second custom value field for additional information'
- type: string
- example: 'A custom value'
- custom_value3:
- description: 'Third custom value field for additional information'
- type: string
- example: 'A custom value'
- custom_value4:
- description: 'Fourth custom value field for additional information'
- type: string
- example: 'A custom value'
- tax_name1:
- description: 'The name of the first tax applied to the quote'
- type: string
- example: GST
- tax_name2:
- description: 'The name of the second tax applied to the quote'
- type: string
- example: VAT
- tax_rate1:
- description: 'The rate of the first tax applied to the quote'
- type: number
- format: float
- example: 10.00
- tax_rate2:
- description: 'The rate of the second tax applied to the quote'
- type: number
- format: float
- example: 10.00
- tax_name3:
- description: 'The name of the third tax applied to the quote'
- type: string
- example: ''
- tax_rate3:
- description: 'The rate of the third tax applied to the quote'
- type: number
- format: float
- example: 10.00
- total_taxes:
- description: 'The total amount of taxes for the quote'
- type: number
- format: float
- example: 10.00
- line_items:
- type: array
- description: 'An array of objects which define the line items of the quote'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- amount:
- description: 'The total amount of the quote before taxes and discounts'
- type: number
- format: float
- example: 10.00
- balance:
- description: 'The balance due for the quote after accounting for payments'
- type: number
- format: float
- example: 10.00
- paid_to_date:
- description: 'The total amount paid on the quote so far'
- type: number
- format: float
- example: 10.00
- discount:
- description: 'The discount amount or percentage applied to the quote'
- type: number
- format: float
- example: 10.00
- partial:
- description: 'The partial or deposit amount for the quote'
- type: number
- format: float
- example: 10.00
- is_amount_discount:
- description: 'Boolean flag indicating if the discount is a fixed amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean flag indicating if the quote has been deleted'
- type: boolean
- example: false
- uses_inclusive_taxes:
- description: 'Boolean flag indicating if the taxes used are inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The date the quote was created'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the quote was sent to the client'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The next scheduled date for sending a reminder for the quote'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the partial or deposit amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date for the total amount of the quote'
- type: string
- format: date
- example: '1994-07-30'
- settings:
- $ref: '#/components/schemas/CompanySettings'
- last_viewed:
- description: 'The timestamp of the last time the quote was viewed'
- type: number
- format: integer
- example: 1434342123
- updated_at:
- description: 'The timestamp of the last update to the quote'
- type: number
- format: integer
- example: 1434342123
- archived_at:
- description: 'The timestamp of when the quote was archived'
- type: number
- format: integer
- example: 1434342123
- custom_surcharge1:
- description: 'First custom surcharge amount for the quote'
- type: number
- format: float
- example: 10.00
- custom_surcharge2:
- description: 'Second custom surcharge amount for the quote'
- type: number
- format: float
- example: 10.00
- custom_surcharge3:
- description: 'Third custom surcharge amount for the quote'
- type: number
- format: float
- example: 10.00
- custom_surcharge4:
- description: 'Fourth custom surcharge amount for the quote'
- type: number
- format: float
- example: 10.00
- custom_surcharge_tax1:
- description: 'Boolean flag indicating if taxes are charged on the first custom surcharge amount'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Boolean flag indicating if taxes are charged on the second custom surcharge amount'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Boolean flag indicating if taxes are charged on the third custom surcharge amount'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Boolean flag indicating if taxes are charged on the fourth custom surcharge amount'
- type: boolean
- example: true
- type: object
- Payment:
- properties:
- id:
- description: 'The payment hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- invitation_id:
- description: 'The invitation hashed id'
- type: string
- example: Opnel5aKBz
- client_contact_id:
- description: 'The client contact hashed id'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- type_id:
- description: 'The Payment Type ID'
- type: string
- example: '1'
- date:
- description: 'The Payment date'
- type: string
- example: 1-1-2014
- transaction_reference:
- description: 'The transaction reference as defined by the payment gateway'
- type: string
- example: xcsSxcs124asd
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- private_notes:
- description: 'The private notes of the payment'
- type: string
- example: 'The payment was refunded due to error'
- is_manual:
- description: 'Flags whether the payment was made manually or processed via a gateway'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the payment has been deleted'
- type: boolean
- example: true
- amount:
- description: 'The amount of this payment'
- type: number
- example: 10
- refunded:
- description: 'The refunded amount of this payment'
- type: number
- example: 10
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- company_gateway_id:
- description: 'The company gateway id'
- type: string
- example: '3'
- paymentables:
- $ref: '#/components/schemas/Paymentable'
- invoices:
- description: ''
- type: array
- items:
- $ref: '#/components/schemas/InvoicePaymentable'
- credits:
- description: ''
- type: array
- items:
- $ref: '#/components/schemas/CreditPaymentable'
- number:
- description: 'The payment number - is a unique alpha numeric number per payment per company'
- type: string
- example: PAY_101
- type: object
-
- Task:
- properties:
- id:
- description: 'The hashed id of the task'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The hashed id of the user who created the task'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user of the task'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The hashed if of the client'
- type: string
- example: Opnel5aKBz
- invoice_id:
- description: 'The hashed id of the invoice associated with the task'
- type: string
- example: Opnel5aKBz
- project_id:
- description: 'The hashed id of the project associated with the task'
- type: string
- example: Opnel5aKBz
- number:
- description: 'The number of the task'
- type: string
- example: TASK-123
- time_log:
- description: 'An array of unix time stamps defining the start and end times of the task'
- type: string
- example: '[[1,2],[3,4]]'
- is_running:
- description: 'Determines if the task is still running'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean flag determining if the task has been deleted'
- type: boolean
- example: true
- task_status_id:
- description: 'The hashed id of the task status'
- type: string
- example: Opnel5aKBz
- description:
- description: 'The task description'
- type: string
- example: 'A wonder task to work on'
- duration:
- description: 'The task duration in seconds'
- type: integer
- example: '3600'
- task_status_order:
- description: 'The order of the task'
- type: integer
- example: '4'
- rate:
- description: 'The task rate'
- type: number
- example: 10.00
- custom_value1:
- description: 'A custom value'
- type: string
- example: '2022-10-10'
- custom_value2:
- description: 'A custom value'
- type: string
- example: $1100
- custom_value3:
- description: 'A custom value'
- type: string
- example: 'I need help'
- custom_value4:
- description: 'A custom value'
- type: string
- example: INV-3343
- is_date_based:
- description: 'Boolean flag determining if the task is date based'
- type: boolean
- example: true
- calculated_start_date:
- description: 'The calculated start date of the task'
- type: string
- example: '2022-10-10'
- readOnly: true
- invoice_documents:
- description: "Boolean flags which determines whether to include the task documents on the invoice"
- type: boolean
- example: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- readOnly: true
- type: object
- RecurringInvoice:
- properties:
- id:
- description: 'The hashed id of the recurring invoice'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- status_id:
- description: 'The invoice status variable'
- type: string
- example: '4'
- frequency_id:
- description: 'The recurring invoice frequency'
- type: number
- example: '4'
- remaining_cycles:
- description: 'The number of invoices left to be generated'
- type: number
- example: '4'
- number:
- description: 'The recurringinvoice number - is a unique alpha numeric number per invoice per company'
- type: string
- example: INV_101
- po_number:
- description: 'The purchase order associated with this recurring invoice'
- type: string
- example: PO-1234
- terms:
- description: 'The invoice terms'
- type: string
- example: 'These are invoice terms'
- public_notes:
- description: 'The public notes of the invoice'
- type: string
- example: 'These are some public notes'
- private_notes:
- description: 'The private notes of the invoice'
- type: string
- example: 'These are some private notes'
- footer:
- description: 'The invoice footer notes'
- type: string
- example: ''
- custom_value1:
- description: 'A custom field value'
- type: string
- example: '2022-10-01'
- custom_value2:
- description: 'A custom field value'
- type: string
- example: 'Something custom'
- custom_value3:
- description: 'A custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A custom field value'
- type: string
- example: ''
- tax_name1:
- description: 'The tax name'
- type: string
- example: ''
- tax_name2:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- total_taxes:
- description: 'The total taxes for the invoice'
- type: number
- format: float
- example: '10.00'
- line_items:
- description: 'An array of objects which define the line items of the invoice'
- type: object
- example: ''
- amount:
- description: 'The invoice amount'
- type: number
- format: float
- example: '10.00'
- balance:
- description: 'The invoice balance'
- type: number
- format: float
- example: '10.00'
- paid_to_date:
- description: 'The amount paid on the invoice to date'
- type: number
- format: float
- example: '10.00'
- discount:
- description: 'The invoice discount, can be an amount or a percentage'
- type: number
- format: float
- example: '10.00'
- partial:
- description: 'The deposit/partial amount'
- type: number
- format: float
- example: '10.00'
- is_amount_discount:
- description: 'Flag determining if the discount is an amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Defines if the invoice has been deleted'
- type: boolean
- example: true
- uses_inclusive_taxes:
- description: 'Defines the type of taxes used as either inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The Invoice Date'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the invoice was sent out'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The Next date for a reminder to be sent'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the deposit/partial amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date of the invoice'
- type: string
- format: date
- example: '1994-07-30'
- settings:
- $ref: '#/components/schemas/CompanySettings'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- custom_surcharge1:
- description: 'First Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge2:
- description: 'Second Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge3:
- description: 'Third Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge4:
- description: 'Fourth Custom Surcharge'
- type: number
- format: float
- example: '10.00'
- custom_surcharge_tax1:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Toggles charging taxes on custom surcharge amounts'
- type: boolean
- example: true
- type: object
-
- InvoiceItem:
- type: object
- properties:
- quantity:
- type: number
- example: 1
- description: 'The quantity of the product offered for this line item'
- cost:
- type: number
- format: float
- example: 10.00
- description: 'The cost of the product offered for this line item'
- product_key:
- type: string
- example: 'Product key'
- description: 'The product key of the product offered for this line item (Referred to as Product in the product tab)'
- product_cost:
- type: number
- format: float
- example: 10.00
- description: 'The cost of the product offered for this line item (Referred to as Cost in the product tab)'
- notes:
- type: string
- example: 'Item notes'
- description: 'The notes/description for the product offered for this line item'
- discount:
- type: number
- format: float
- example: 5.00
- description: 'The discount applied to the product offered for this line item'
- is_amount_discount:
- type: boolean
- example: false
- description: 'Indicates whether the discount applied to the product offered for this line item is a fixed amount or a percentage'
- tax_name1:
- type: string
- example: 'GST'
- description: 'The name of the first tax applied to the product offered for this line item'
- tax_rate1:
- type: number
- format: float
- example: 10.00
- description: 'The rate of the first tax applied to the product offered for this line item'
- tax_name2:
- type: string
- example: 'VAT'
- description: 'The name of the second tax applied to the product offered for this line item'
- tax_rate2:
- type: number
- format: float
- example: 5.00
- description: 'The rate of the second tax applied to the product offered for this line item'
- tax_name3:
- type: string
- example: 'CA Sales Tax'
- description: 'The name of the third tax applied to the product offered for this line item'
- tax_rate3:
- type: number
- format: float
- example: 3.00
- description: 'The rate of the third tax applied to the product offered for this line item'
- sort_id:
- type: string
- example: '0'
- description: 'Deprecated'
- deprecated: true
- line_total:
- type: number
- format: float
- example: 10.00
- description: 'The total amount of the product offered for this line item'
- readOnly: true
- gross_line_total:
- type: number
- format: float
- example: 15.00
- description: 'The total amount of the product offered for this line item before discounts'
- readOnly: true
- tax_amount:
- type: number
- format: float
- example: 1.00
- description: 'The total amount of tax applied to the product offered for this line item'
- readOnly: true
- date:
- type: string
- format: date-time
- example: '2023-03-19T00:00:00Z'
- description: 'Deprecated'
- deprecated: true
- custom_value1:
- type: string
- example: 'Custom value 1'
- description: 'The first custom value of the product offered for this line item'
- custom_value2:
- type: string
- example: 'Custom value 2'
- description: 'The second custom value of the product offered for this line item'
- custom_value3:
- type: string
- example: 'Custom value 3'
- description: 'The third custom value of the product offered for this line item'
- custom_value4:
- type: string
- example: 'Custom value 4'
- description: 'The fourth custom value of the product offered for this line item'
- type_id:
- type: string
- example: '1'
- description: '1 = product, 2 = service, 3 unpaid gateway fee, 4 paid gateway fee, 5 late fee, 6 expense'
- default: '1'
- tax_id:
- type: string
- example: '1'
- default: '1'
- description: 'The tax ID of the product: 1 product, 2 service, 3 digital, 4 shipping, 5 exempt, 5 reduced tax, 7 override, 8 zero rate, 9 reverse tax'
- Activity:
- properties:
- id:
- description: 'The id field of the activity'
- type: string
- example: Opnel5aKBz
- activity_type_id:
- description: 'The activity type id'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The client hashed id'
- type: string
- example: Opnel5aKBz
- company_id:
- description: 'The company hashed id'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The user hashed id'
- type: string
- example: Opnel5aKBz
- invoice_id:
- description: 'The invoice hashed id'
- type: string
- example: Opnel5aKBz
- payment_id:
- description: 'The payment hashed id'
- type: string
- example: Opnel5aKBz
- credit_id:
- description: 'The credit hashed id'
- type: string
- example: Opnel5aKBz
- updated_at:
- description: 'Unixtimestamp the last time the record was updated'
- type: integer
- example: '343421434'
- expense_id:
- description: 'The expense hashed id'
- type: string
- example: Opnel5aKBz
- is_system:
- description: 'Defines is the activity was performed by the system'
- type: boolean
- example: true
- contact_id:
- description: 'The contact hashed id'
- type: string
- example: Opnel5aKBz
- task_id:
- description: 'The task hashed id'
- type: string
- example: Opnel5aKBz
- notes:
- description: 'Activity Notes'
- type: string
- example: Opnel5aKBz
- token_id:
- description: 'The hashed ID of the token who performed the action'
- type: string
- example: Opnel5aKBz
- ip:
- description: 'The IP Address of the user who performed the action'
- type: string
- example: 192.168.1.252
- user:
- $ref: '#/components/schemas/User'
- client:
- $ref: '#/components/schemas/Client'
- contact:
- $ref: '#/components/schemas/ClientContact'
- recurring_invoice:
- $ref: '#/components/schemas/RecurringInvoice'
- invoice:
- $ref: '#/components/schemas/Invoice'
- credit:
- $ref: '#/components/schemas/Credit'
- quote:
- $ref: '#/components/schemas/Quote'
- payment:
- $ref: '#/components/schemas/Payment'
- expense:
- $ref: '#/components/schemas/Expense'
- task:
- $ref: '#/components/schemas/Task'
- purchase_order:
- $ref: '#/components/schemas/PurchaseOrder'
- vendor:
- $ref: '#/components/schemas/Vendor'
- vendor_contact:
- $ref: '#/components/schemas/VendorContact'
- type: object
-
- ProductBulkAction:
- required:
- - action
- - ids
- properties:
- action:
- type: string
- example: archive
- description: 'The action to perform ie. archive / restore / delete / set_tax_id'
- ids:
- type: array
- items:
- format: string
- type: string
- example: 2J234DFA,D2J234DFA,D2J234DFA
- description: string array of client hashed ids
- tax_id:
- type: string
- example: '1'
- description: |
- The tax rate id to set on the list of products
-
- The following constants are available (default = '1')
-
- ```
- PRODUCT_TYPE_PHYSICAL = '1'
- PRODUCT_TYPE_SERVICE = '2'
- PRODUCT_TYPE_DIGITAL = '3'
- PRODUCT_TYPE_SHIPPING = '4'
- PRODUCT_TYPE_EXEMPT = '5'
- PRODUCT_TYPE_REDUCED_TAX = '6'
- PRODUCT_TYPE_OVERRIDE_TAX = '7'
- PRODUCT_TYPE_ZERO_RATED = '8'
- PRODUCT_TYPE_REVERSE_TAX = '9'
- ```
- type: object
- RecurringExpense:
- properties:
- id:
- description: 'The hashed id of the recurring expense'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The hashed id of the user who created the recurring expense'
- type: string
- example: Opnel5aKBz
- assigned_user_id:
- description: 'The hashed id of the user assigned to this recurring expense'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The hashed id of the client'
- type: string
- example: Opnel5aKBz
- invoice_id:
- description: 'The hashed id of the invoice'
- type: string
- example: Opnel5aKBz
- bank_id:
- description: 'The id of the bank associated with this recurring expense'
- type: string
- example: '22'
- invoice_currency_id:
- description: 'The currency id of the invoice associated with this recurring expense'
- type: string
- example: '1'
- expense_currency_id:
- description: 'The currency id of the expense associated with this recurring expense'
- type: string
- example: '1'
- invoice_category_id:
- description: 'The category id of the invoice'
- type: string
- example: '1'
- payment_type_id:
- description: 'The payment type id'
- type: string
- example: '1'
- private_notes:
- description: 'The recurring expense private notes'
- type: string
- example: 'Private and confidential'
- public_notes:
- description: 'The recurring expense public notes'
- type: string
- example: 'This is the best client in the world'
- transaction_reference:
- description: 'The recurring expense transaction reference'
- type: string
- example: EXP-1223-2333
- transcation_id:
- description: 'The transaction id of the recurring expense'
- type: string
- example: '1233312312'
- custom_value1:
- description: 'Custom value field'
- type: string
- example: $1000
- custom_value2:
- description: 'Custom value field'
- type: string
- example: '2022-10-10'
- custom_value3:
- description: 'Custom value field'
- type: string
- example: 'short text'
- custom_value4:
- description: 'Custom value field'
- type: string
- example: 'very long text'
- tax_name1:
- description: 'The tax name'
- type: string
- example: GST
- tax_name2:
- description: 'The tax name'
- type: string
- example: VAT
- tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- tax_name3:
- description: 'The tax name'
- type: string
- example: ''
- tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.00'
- amount:
- description: 'The total amount of the recurring expense'
- type: number
- format: float
- example: '10.00'
- frequency_id:
- description: 'The frequency this recurring expense fires'
- type: number
- format: int
- example: '1'
- remaining_cycles:
- description: 'The number of remaining cycles for this recurring expense'
- type: number
- format: int
- example: '1'
- foreign_amount:
- description: 'The foreign currency amount of the recurring expense'
- type: number
- format: float
- example: '10.00'
- exchange_rate:
- description: 'The exchange rate for the expernse'
- type: number
- format: float
- example: '0.80'
- date:
- description: 'The date of the expense'
- type: string
- example: ''
- payment_date:
- description: 'The date the expense was paid'
- type: string
- example: ''
- should_be_invoiced:
- description: 'Boolean flag determining if the expense should be invoiced'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean flag determining if the recurring expense is deleted'
- type: boolean
- example: true
- last_sent_date:
- description: 'The Date it was sent last'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The next send date'
- type: string
- format: date
- example: '1994-07-30'
- invoice_documents:
- description: 'Boolean flag determining if the documents associated with this expense should be passed onto the invoice if it is converted to an invoice'
- type: boolean
- example: true
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '1434342123'
- type: object
- PaymentTerm:
- properties:
- num_days:
- description: 'The payment term length in days'
- type: integer
- example: '1'
- name:
- description: 'The payment term length in string format'
- type: string
- example: 'NET 1'
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- type: object
- ClientGatewayToken:
- properties:
- id:
- description: 'The hashed id of the client gateway token'
- type: string
- example: Opnel5aKBz
- client_id:
- description: 'The hashed_id of the client'
- type: string
- example: '2'
- token:
- description: 'The payment token'
- type: string
- example: '2'
- routing_number:
- description: 'THe bank account routing number'
- type: string
- example: '2'
- company_gateway_id:
- description: 'The hashed id of the company gateway'
- type: string
- example: '2'
- is_default:
- description: 'Flag determining if the token is the default payment method'
- type: boolean
- example: 'true'
- type: object
- User:
- properties:
- id:
- description: 'The hashed id of the user'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the user'
- type: string
- example: Brad
- last_name:
- description: 'The last name of the user'
- type: string
- example: Pitt
- email:
- description: 'The users email address'
- type: string
- example: brad@pitt.com
- phone:
- description: 'The users phone number'
- type: string
- example: 555-1233-23232
- signature:
- description: 'The users sign off signature'
- type: string
- example: 'Have a nice day!'
- avatar:
- description: 'The users avatar'
- type: string
- example: 'https://url.to.your/avatar.png'
- accepted_terms_version:
- description: 'The version of the invoice ninja terms that has been accepted by the user'
- type: string
- example: 1.0.1
- readOnly: true
- oauth_user_id:
- description: 'The provider id of the oauth entity'
- type: string
- example: jkhasdf789as6f675sdf768sdfs
- readOnly: true
- oauth_provider_id:
- description: 'The oauth entity id'
- type: string
- example: google
- readOnly: true
- language_id:
- description: 'The language id of the user'
- type: string
- example: 1
- verified_phone_number:
- description: 'Boolean flag if the user has their phone verified. Required to settings up 2FA'
- type: boolean
- example: true
- readOnly: true
- sms_verification_code:
- description: 'The sms verification code for the user. Required to settings up 2FA'
- type: string
- example: '123456'
- readOnly: true
- oauth_user_token_expiry:
- description: 'The expiry date of the oauth token'
- type: string
- example: '2022-10-10'
- readOnly: true
- has_password:
- description: 'Boolean flag determining if the user has a password'
- type: boolean
- example: true
- readOnly: true
- last_confirmed_email_address:
- description: 'The last confirmed email address of the user'
- type: string
- example: 'bob@gmail.com'
- readOnly: true
- custom_value1:
- description: 'A custom value'
- type: string
- example: 'Custom value 1'
- custom_value2:
- description: 'A custom value'
- type: string
- example: '$1000'
- custom_value3:
- description: 'A custom value'
- type: string
- example: 'Custom value 3'
- custom_value4:
- description: 'A custom value'
- type: string
- example: 'Custom value 4'
- is_deleted:
- description: 'Boolean flag determining if the user has been deleted'
- type: boolean
- example: true
- readOnly: true
- google_2fa_secret:
- description: 'The google 2fa secret for the user'
- type: string
- example: '123456'
- readOnly: true
- company_user:
- $ref: '#/components/schemas/CompanyUser'
- type: object
CompanyGateway:
properties:
id:
@@ -18785,1503 +15768,6 @@ components:
type: object
- Document:
- properties:
- id:
- description: 'The document hashed id'
- type: string
- example: AS3df3A
- user_id:
- description: 'The user hashed id'
- type: string
- example: ''
- assigned_user_id:
- description: 'The assigned user hashed id'
- type: string
- example: ''
- project_id:
- description: 'The project associated with this document'
- type: string
- example: ''
- vendor_id:
- description: 'The vendor associated with this documents'
- type: string
- example: ''
- name:
- description: 'The document name'
- type: string
- example: Beauty
- url:
- description: 'The document url'
- type: string
- example: Beauty
- preview:
- description: 'The document preview url'
- type: string
- example: Beauty
- type:
- description: 'The document type'
- type: string
- example: Beauty
- disk:
- description: 'The document disk'
- type: string
- example: Beauty
- hash:
- description: 'The document hashed'
- type: string
- example: Beauty
- is_deleted:
- description: 'Flag to determine if the document is deleted'
- type: boolean
- example: true
- is_default:
- description: 'Flag to determine if the document is a default doc'
- type: boolean
- example: true
- created_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- deleted_at:
- description: Timestamp
- type: number
- format: integer
- example: '134341234234'
- type: object
- PurchaseOrder:
- properties:
- id:
- description: 'The unique hashed identifier for the purchase order'
- type: string
- example: Opnel5aKBz
- user_id:
- description: 'The unique hashed identifier for the user who created the purchase order'
- type: string
- example: ''
- assigned_user_id:
- description: 'The unique hashed identifier for the user assigned to the purchase order'
- type: string
- example: ''
- vendor_id:
- description: 'The unique hashed identifier for the vendor associated with the purchase order'
- type: string
- example: ''
- status_id:
- description: 'The status of the purchase order represented by a unique identifier'
- type: string
- example: ''
- number:
- description: 'The unique alpha-numeric purchase order number per company'
- type: string
- example: PO_101
- quote_number:
- description: 'The quote number associated with this purchase order'
- type: string
- example: QUOTE_101
- terms:
- description: 'The terms and conditions for the purchase order'
- type: string
- example: 'These are some purchase order terms. Valid for 14 days.'
- public_notes:
- description: 'Publicly visible notes associated with the purchase order'
- type: string
- example: 'These are public notes which the vendor may see'
- private_notes:
- description: 'Privately visible notes associated with the purchase order, not disclosed to the vendor'
- type: string
- example: 'These are private notes, not to be disclosed to the vendor'
- footer:
- description: 'The footer text of the purchase order'
- type: string
- example: 'The text goes in the footer of the purchase order'
- custom_value1:
- description: 'First custom value field for additional information'
- type: string
- example: 'A custom value'
- custom_value2:
- description: 'Second custom value field for additional information'
- type: string
- example: 'A custom value'
- custom_value3:
- description: 'Third custom value field for additional information'
- type: string
- example: 'A custom value'
- custom_value4:
- description: 'Fourth custom value field for additional information'
- type: string
- example: 'A custom value'
- tax_name1:
- description: 'The name of the first tax applied to the purchase order'
- type: string
- example: GST
- tax_name2:
- description: 'The name of the second tax applied to the purchase order'
- type: string
- example: VAT
- tax_rate1:
- description: 'The rate of the first tax applied to the purchase order'
- type: number
- format: float
- example: 10.00
- tax_rate2:
- description: 'The rate of the second tax applied to the purchase order'
- type: number
- format: float
- example: 10.00
- tax_name3:
- description: 'The name of the third tax applied to the purchase order'
- type: string
- example: ''
- tax_rate3:
- description: 'The rate of the third tax applied to the purchase order'
- type: number
- format: float
- example: 10.00
- total_taxes:
- description: 'The total amount of taxes applied to the purchase order'
- type: number
- format: float
- example: 10.00
- line_items:
- type: array
- description: 'An array of objects which define the line items of the purchase order'
- items:
- $ref: '#/components/schemas/InvoiceItem'
- amount:
- description: 'The total amount of the purchase order before taxes and discounts'
- type: number
- format: float
- example: 10.00
- balance:
- description: 'The balance due for the purchase order after accounting for payments'
- type: number
- format: float
- example: 10.00
- paid_to_date:
- description: 'The total amount paid on the purchase order so far'
- type: number
- format: float
- example: 10.00
- discount:
- description: 'The discount amount or percentage applied to the purchase order'
- type: number
- format: float
- example: 10.00
- partial:
- description: 'The partial or deposit amount for the purchase order'
- type: number
- format: float
- example: 10.00
- is_amount_discount:
- description: 'Boolean flag indicating if the discount is a fixed amount or a percentage'
- type: boolean
- example: true
- is_deleted:
- description: 'Boolean flag indicating if the purchase order has been deleted'
- type: boolean
- example: false
- uses_inclusive_taxes:
- description: 'Boolean flag indicating if the taxes used are inclusive or exclusive'
- type: boolean
- example: true
- date:
- description: 'The date the purchase order was created'
- type: string
- format: date
- example: '1994-07-30'
- last_sent_date:
- description: 'The last date the purchase order was sent to the vendor'
- type: string
- format: date
- example: '1994-07-30'
- next_send_date:
- description: 'The next scheduled date for sending a reminder for the purchase order'
- type: string
- format: date
- example: '1994-07-30'
- partial_due_date:
- description: 'The due date for the partial or deposit amount'
- type: string
- format: date
- example: '1994-07-30'
- due_date:
- description: 'The due date for the total amount of the purchase order'
- type: string
- format: date
- example: '1994-07-30'
- settings:
- $ref: '#/components/schemas/CompanySettings'
- last_viewed:
- description: Timestamp
- type: number
- format: integer
- example: 1434342123
- updated_at:
- description: Timestamp
- type: number
- format: integer
- example: 1434342123
- archived_at:
- description: Timestamp
- type: number
- format: integer
- example: 1434342123
- custom_surcharge1:
- description: 'First custom surcharge amount for the purchase order'
- type: number
- format: float
- example: 10.00
- custom_surcharge2:
- description: 'Second custom surcharge amount for the purchase order'
- type: number
- format: float
- example: 10.00
- custom_surcharge3:
- description: 'Third custom surcharge amount for the purchase order'
- type: number
- format: float
- example: 10.00
- custom_surcharge4:
- description: 'Fourth custom surcharge amount for the purchase order'
- type: number
- format: float
- example: 10.00
- custom_surcharge_tax1:
- description: 'Boolean flag indicating if taxes are charged on the first custom surcharge amount'
- type: boolean
- example: true
- custom_surcharge_tax2:
- description: 'Boolean flag indicating if taxes are charged on the second custom surcharge amount'
- type: boolean
- example: true
- custom_surcharge_tax3:
- description: 'Boolean flag indicating if taxes are charged on the third custom surcharge amount'
- type: boolean
- example: true
- custom_surcharge_tax4:
- description: 'Boolean flag indicating if taxes are charged on the fourth custom surcharge amount'
- type: boolean
- example: true
- type: object
-
-
- ClientSettings:
- required:
- - currency_id
- properties:
- currency_id:
- description: 'The default currency id'
- type: string
- example: true
- timezone_id:
- description: 'The timezone id'
- type: string
- example: '15'
- date_format_id:
- description: 'The date format id'
- type: string
- example: '15'
- military_time:
- description: 'Toggles 12/24 hour time'
- type: boolean
- example: true
- language_id:
- description: 'The language id'
- type: string
- example: '1'
- show_currency_code:
- description: 'Toggles whether the currency symbol or code is shown'
- type: boolean
- example: true
- payment_terms:
- description: '-1 sets no payment term, 0 sets payment due immediately, positive integers indicates payment terms in days'
- type: integer
- example: '1'
- company_gateway_ids:
- description: 'A commad separate list of available gateways'
- type: string
- example: '1,2,3,4'
- custom_value1:
- description: 'A Custom Label'
- type: string
- example: 'Custom Label'
- custom_value2:
- description: 'A Custom Label'
- type: string
- example: 'Custom Label'
- custom_value3:
- description: 'A Custom Label'
- type: string
- example: 'Custom Label'
- custom_value4:
- description: 'A Custom Label'
- type: string
- example: 'Custom Label'
- default_task_rate:
- description: 'The default task rate'
- type: number
- format: float
- example: '10.00'
- send_reminders:
- description: 'Toggles whether reminders are sent'
- type: boolean
- example: true
- enable_client_portal_tasks:
- description: 'Show/hide the tasks panel in the client portal'
- type: boolean
- example: true
- email_style:
- description: 'options include plain,light,dark,custom'
- type: string
- example: light
- reply_to_email:
- description: 'The reply to email address'
- type: string
- example: email@gmail.com
- bcc_email:
- description: 'A comma separate list of BCC emails'
- type: string
- example: 'email@gmail.com, contact@gmail.com'
- pdf_email_attachment:
- description: 'Toggles whether to attach PDF as attachment'
- type: boolean
- example: true
- ubl_email_attachment:
- description: 'Toggles whether to attach UBL as attachment'
- type: boolean
- example: true
- email_style_custom:
- description: 'The custom template'
- type: string
- example: ''
- counter_number_applied:
- description: 'enum when the invoice number counter is set, ie when_saved, when_sent, when_paid'
- type: string
- example: when_sent
- quote_number_applied:
- description: 'enum when the quote number counter is set, ie when_saved, when_sent'
- type: string
- example: when_sent
- custom_message_dashboard:
- description: 'A custom message which is displayed on the dashboard'
- type: string
- example: 'Please pay invoices immediately'
- custom_message_unpaid_invoice:
- description: 'A custom message which is displayed in the client portal when a client is viewing a unpaid invoice.'
- type: string
- example: 'Please pay invoices immediately'
- custom_message_paid_invoice:
- description: 'A custom message which is displayed in the client portal when a client is viewing a paid invoice.'
- type: string
- example: 'Thanks for paying this invoice!'
- custom_message_unapproved_quote:
- description: 'A custom message which is displayed in the client portal when a client is viewing a unapproved quote.'
- type: string
- example: 'Please approve quote'
- lock_invoices:
- description: 'Toggles whether invoices are locked once sent and cannot be modified further'
- type: boolean
- example: true
- auto_archive_invoice:
- description: 'Toggles whether a invoice is archived immediately following payment'
- type: boolean
- example: true
- auto_archive_quote:
- description: 'Toggles whether a quote is archived after being converted to a invoice'
- type: boolean
- example: true
- auto_convert_quote:
- description: 'Toggles whether a quote is converted to a invoice when approved'
- type: boolean
- example: true
- inclusive_taxes:
- description: 'Boolean flag determining whether inclusive or exclusive taxes are used'
- type: boolean
- example: true
- task_number_pattern:
- description: 'Allows customisation of the task number pattern'
- type: string
- example: '{$year}-{$counter}'
- task_number_counter:
- description: 'The incrementing counter for tasks'
- type: integer
- example: '1'
- reminder_send_time:
- description: 'Time from UTC +0 when the email will be sent to the client'
- type: integer
- example: '32400'
- expense_number_pattern:
- description: 'Allows customisation of the expense number pattern'
- type: string
- example: '{$year}-{$counter}'
- expense_number_counter:
- description: 'The incrementing counter for expenses'
- type: integer
- example: '1'
- vendor_number_pattern:
- description: 'Allows customisation of the vendor number pattern'
- type: string
- example: '{$year}-{$counter}'
- vendor_number_counter:
- description: 'The incrementing counter for vendors'
- type: integer
- example: '1'
- ticket_number_pattern:
- description: 'Allows customisation of the ticket number pattern'
- type: string
- example: '{$year}-{$counter}'
- ticket_number_counter:
- description: 'The incrementing counter for tickets'
- type: integer
- example: '1'
- payment_number_pattern:
- description: 'Allows customisation of the payment number pattern'
- type: string
- example: '{$year}-{$counter}'
- payment_number_counter:
- description: 'The incrementing counter for payments'
- type: integer
- example: '1'
- invoice_number_pattern:
- description: 'Allows customisation of the invoice number pattern'
- type: string
- example: '{$year}-{$counter}'
- invoice_number_counter:
- description: 'The incrementing counter for invoices'
- type: integer
- example: '1'
- quote_number_pattern:
- description: 'Allows customisation of the quote number pattern'
- type: string
- example: '{$year}-{$counter}'
- quote_number_counter:
- description: 'The incrementing counter for quotes'
- type: integer
- example: '1'
- client_number_pattern:
- description: 'Allows customisation of the client number pattern'
- type: string
- example: '{$year}-{$counter}'
- client_number_counter:
- description: 'The incrementing counter for clients'
- type: integer
- example: '1'
- credit_number_pattern:
- description: 'Allows customisation of the credit number pattern'
- type: string
- example: '{$year}-{$counter}'
- credit_number_counter:
- description: 'The incrementing counter for credits'
- type: integer
- example: '1'
- recurring_invoice_number_prefix:
- description: 'This string is prepended to the recurring invoice number'
- type: string
- example: R
- reset_counter_frequency_id:
- description: 'CONSTANT which is used to apply the frequency which the counters are reset'
- type: integer
- example: '1'
- reset_counter_date:
- description: 'The explicit date which is used to reset counters'
- type: string
- example: '2019-01-01'
- counter_padding:
- description: 'Pads the counter with leading zeros'
- type: integer
- example: '1'
- shared_invoice_quote_counter:
- description: 'Flags whether to share the counter for invoices and quotes'
- type: boolean
- example: true
- update_products:
- description: 'Determines if client fields are updated from third party APIs'
- type: boolean
- example: true
- convert_products:
- description: ''
- type: boolean
- example: true
- fill_products:
- description: 'Automatically fill products based on product_key'
- type: boolean
- example: true
- invoice_terms:
- description: 'The default invoice terms'
- type: string
- example: 'Invoice Terms are...'
- quote_terms:
- description: 'The default quote terms'
- type: string
- example: 'Quote Terms are...'
- invoice_taxes:
- description: 'Taxes can be applied to the invoice'
- type: number
- example: '1'
- invoice_design_id:
- description: 'The default design id (invoice, quote etc)'
- type: string
- example: '1'
- quote_design_id:
- description: 'The default design id (invoice, quote etc)'
- type: string
- example: '1'
- invoice_footer:
- description: 'The default invoice footer'
- type: string
- example: '1'
- invoice_labels:
- description: 'JSON string of invoice labels'
- type: string
- example: '1'
- tax_rate1:
- description: 'The tax rate (float)'
- type: number
- example: '10'
- tax_name1:
- description: 'The tax name'
- type: string
- example: GST
- tax_rate2:
- description: 'The tax rate (float)'
- type: number
- example: '10'
- tax_name2:
- description: 'The tax name'
- type: string
- example: GST
- tax_rate3:
- description: 'The tax rate (float)'
- type: number
- example: '10'
- tax_name3:
- description: 'The tax name'
- type: string
- example: GST
- payment_type_id:
- description: 'The default payment type id'
- type: string
- example: '1'
- custom_fields:
- description: 'JSON string of custom fields'
- type: string
- example: '{}'
- email_footer:
- description: 'The default email footer'
- type: string
- example: 'A default email footer'
- email_sending_method:
- description: 'The email driver to use to send email, options include default, gmail'
- type: string
- example: default
- gmail_sending_user_id:
- description: 'The hashed_id of the user account to send email from'
- type: string
- example: F76sd34D
- email_subject_invoice:
- description: ''
- type: string
- example: 'Your Invoice Subject'
- email_subject_quote:
- description: ''
- type: string
- example: 'Your Quote Subject'
- email_subject_payment:
- description: ''
- type: string
- example: 'Your Payment Subject'
- email_template_invoice:
- description: 'The full template for invoice emails'
- type: string
- example: ''
- email_template_quote:
- description: 'The full template for quote emails'
- type: string
- example: ''
- email_template_payment:
- description: 'The full template for payment emails'
- type: string
- example: ''
- email_subject_reminder1:
- description: 'Email subject for Reminder'
- type: string
- example: ''
- email_subject_reminder2:
- description: 'Email subject for Reminder'
- type: string
- example: ''
- email_subject_reminder3:
- description: 'Email subject for Reminder'
- type: string
- example: ''
- email_subject_reminder_endless:
- description: 'Email subject for endless reminders'
- type: string
- example: ''
- email_template_reminder1:
- description: 'The full template for Reminder 1'
- type: string
- example: ''
- email_template_reminder2:
- description: 'The full template for Reminder 2'
- type: string
- example: ''
- email_template_reminder3:
- description: 'The full template for Reminder 3'
- type: string
- example: ''
- email_template_reminder_endless:
- description: 'The full template for enless reminders'
- type: string
- example: ''
- enable_portal_password:
- description: 'Toggles whether a password is required to log into the client portal'
- type: boolean
- example: true
- show_accept_invoice_terms:
- description: 'Toggles whether the terms dialogue is shown to the client'
- type: boolean
- example: true
- show_accept_quote_terms:
- description: 'Toggles whether the terms dialogue is shown to the client'
- type: boolean
- example: true
- require_invoice_signature:
- description: 'Toggles whether a invoice signature is required'
- type: boolean
- example: true
- require_quote_signature:
- description: 'Toggles whether a quote signature is required'
- type: boolean
- example: true
- name:
- description: 'The company name'
- type: string
- example: 'Acme Co'
- company_logo:
- description: 'The company logo file'
- type: object
- example: logo.png
- website:
- description: 'The company website URL'
- type: string
- example: www.acme.com
- address1:
- description: 'The company address line 1'
- type: string
- example: 'Suite 888'
- address2:
- description: 'The company address line 2'
- type: string
- example: '5 Jimbo Way'
- city:
- description: 'The company city'
- type: string
- example: Sydney
- state:
- description: 'The company state'
- type: string
- example: Florisa
- postal_code:
- description: 'The company zip/postal code'
- type: string
- example: '90210'
- phone:
- description: 'The company phone'
- type: string
- example: 555-213-3948
- email:
- description: 'The company email'
- type: string
- example: joe@acme.co
- country_id:
- description: 'The country ID'
- type: string
- example: '1'
- vat_number:
- description: 'The company VAT/TAX ID number'
- type: string
- example: '32 120 377 720'
- page_size:
- description: 'The default page size'
- type: string
- example: A4
- font_size:
- description: 'The font size'
- type: number
- example: '9'
- primary_font:
- description: 'The primary font'
- type: string
- example: roboto
- secondary_font:
- description: 'The secondary font'
- type: string
- example: roboto
- hide_paid_to_date:
- description: 'Flags whether to hide the paid to date field'
- type: boolean
- example: false
- embed_documents:
- description: 'Toggled whether to embed documents in the PDF'
- type: boolean
- example: false
- all_pages_header:
- description: 'The header for the PDF'
- type: boolean
- example: false
- all_pages_footer:
- description: 'The footer for the PDF'
- type: boolean
- example: false
- document_email_attachment:
- description: 'Toggles whether to attach documents in the email'
- type: boolean
- example: false
- enable_client_portal_password:
- description: 'Toggles password protection of the client portal'
- type: boolean
- example: false
- enable_email_markup:
- description: 'Toggles the use of markdown in emails'
- type: boolean
- example: false
- enable_client_portal_dashboard:
- description: 'Toggles whether the client dashboard is shown in the client portal'
- type: boolean
- example: false
- enable_client_portal:
- description: 'Toggles whether the entire client portal is displayed to the client, or only the context'
- type: boolean
- example: false
- email_template_statement:
- description: 'The body of the email for statements'
- type: string
- example: 'template matter'
- email_subject_statement:
- description: 'The subject of the email for statements'
- type: string
- example: 'subject matter'
- signature_on_pdf:
- description: 'Toggles whether the signature (if available) is displayed on the PDF'
- type: boolean
- example: false
- quote_footer:
- description: 'The default quote footer'
- type: string
- example: 'the quote footer'
- email_subject_custom1:
- description: 'Custom reminder template subject'
- type: string
- example: 'Custom Subject 1'
- email_subject_custom2:
- description: 'Custom reminder template subject'
- type: string
- example: 'Custom Subject 2'
- email_subject_custom3:
- description: 'Custom reminder template subject'
- type: string
- example: 'Custom Subject 3'
- email_template_custom1:
- description: 'Custom reminder template body'
- type: string
- example: ''
- email_template_custom2:
- description: 'Custom reminder template body'
- type: string
- example: ''
- email_template_custom3:
- description: 'Custom reminder template body'
- type: string
- example: ''
- enable_reminder1:
- description: 'Toggles whether this reminder is enabled'
- type: boolean
- example: false
- enable_reminder2:
- description: 'Toggles whether this reminder is enabled'
- type: boolean
- example: false
- enable_reminder3:
- description: 'Toggles whether this reminder is enabled'
- type: boolean
- example: false
- num_days_reminder1:
- description: 'The Reminder interval'
- type: number
- example: '9'
- num_days_reminder2:
- description: 'The Reminder interval'
- type: number
- example: '9'
- num_days_reminder3:
- description: 'The Reminder interval'
- type: number
- example: '9'
- schedule_reminder1:
- description: '(enum: after_invoice_date, before_due_date, after_due_date)'
- type: string
- example: after_invoice_date
- schedule_reminder2:
- description: '(enum: after_invoice_date, before_due_date, after_due_date)'
- type: string
- example: after_invoice_date
- schedule_reminder3:
- description: '(enum: after_invoice_date, before_due_date, after_due_date)'
- type: string
- example: after_invoice_date
- late_fee_amount1:
- description: 'The late fee amount for reminder 1'
- type: number
- example: 10
- late_fee_amount2:
- description: 'The late fee amount for reminder 2'
- type: number
- example: 20
- late_fee_amount3:
- description: 'The late fee amount for reminder 2'
- type: number
- example: 100
- endless_reminder_frequency_id:
- description: 'The frequency id of the endless reminder'
- type: string
- example: '1'
- client_online_payment_notification:
- description: 'Determines if a client should receive the notification for a online payment'
- type: boolean
- example: false
- client_manual_payment_notification:
- description: 'Determines if a client should receive the notification for a manually entered payment'
- type: boolean
- example: false
- enable_e_invoice:
- description: 'Determines if e-invoicing is enabled'
- type: boolean
- example: false
- default_expense_payment_type_id:
- description: 'The default payment type for expenses'
- type: string
- example: '0'
- e_invoice_type:
- description: 'The e-invoice type'
- type: string
- example: 'EN16931'
- mailgun_endpoint:
- description: 'The mailgun endpoint - used to determine whether US or EU endpoints are used'
- type: string
- example: 'api.mailgun.net or api.eu.mailgun.net'
- client_initiated_payments:
- description: 'Determines if clients can initiate payments directly from the client portal'
- type: boolean
- example: false
- client_initiated_payments_minimum:
- description: 'The minimum amount a client can pay'
- type: number
- example: 10
- sync_invoice_quote_columns:
- description: 'Determines if invoice and quote columns are synced for the PDF rendering, or if they use their own columns'
- type: boolean
- example: false
- show_task_item_description:
- description: 'Determines if the task item description is shown on the invoice'
- type: boolean
- example: false
- allow_billable_task_items:
- description: 'Determines if task items can be marked as billable'
- type: boolean
- example: false
- accept_client_input_quote_approval:
- description: 'Determines if clients can approve quotes and also pass through a PO Number reference'
- type: boolean
- example: false
- custom_sending_email:
- description: 'When using Mailgun or Postmark, the FROM email address can be customized using this setting.'
- type: string
- example: 'bob@gmail.com'
- show_paid_stamp:
- description: 'Determines if the PAID stamp is shown on the invoice'
- type: boolean
- example: false
- show_shipping_address:
- description: 'Determines if the shipping address is shown on the invoice'
- type: boolean
- example: false
- company_logo_size:
- description: 'The size of the company logo on the PDF - percentage value between 0 and 100'
- type: number
- example: 100
- show_email_footer:
- description: 'Determines if the email footer is shown on emails'
- type: boolean
- example: false
- email_alignment:
- description: 'The alignment of the email body text, options include left / center / right'
- type: string
- example: 'left'
- auto_bill_standard_invoices:
- description: 'Determines if standard invoices are automatically billed when they are created or due'
- type: boolean
- example: false
- postmark_secret:
- description: 'The Postmark secret API key'
- type: string
- example: '123456'
- mailgun_secret:
- description: 'The Mailgun secret API key'
- type: string
- example: '123456'
- mailgun_domain:
- description: 'The Mailgun domain'
- type: string
- example: 'sandbox123456.mailgun.org'
- send_email_on_mark_paid:
- description: 'Determines if an email is sent when an invoice is marked as paid'
- type: boolean
- example: false
- vendor_portal_enable_uploads:
- description: 'Determines if vendors can upload files to the portal'
- type: boolean
- example: false
- besr_id:
- description: 'The BESR ID'
- type: string
- example: '123456'
- qr_iban:
- description: 'The IBAN for the QR code'
- type: string
- example: 'CH123456'
- email_subject_purchase_order:
- description: 'The email subject for purchase orders'
- type: string
- example: 'Purchase Order'
- email_template_purchase_order:
- description: 'The email template for purchase orders'
- type: string
- example: 'Please see attached your purchase order.'
- require_purchase_order_signature:
- description: 'Determines if a signature is required on purchase orders'
- type: boolean
- example: false
- purchase_order_public_notes:
- description: 'The public notes for purchase orders'
- type: string
- example: 'Please see attached your purchase order.'
- purchase_order_terms:
- description: 'The terms for purchase orders'
- type: string
- example: 'Please see attached your purchase order.'
- purchase_order_footer:
- description: 'The footer for purchase orders'
- type: string
- example: 'Please see attached your purchase order.'
- purchase_order_design_id:
- description: 'The design id for purchase orders'
- type: string
- example: 'hd677df'
- purchase_order_number_pattern:
- description: 'The pattern for purchase order numbers'
- type: string
- example: 'PO-000000'
- purchase_order_number_counter:
- description: 'The counter for purchase order numbers'
- type: number
- example: 1
- page_numbering_alignment:
- description: 'The alignment for page numbering: options include left / center / right'
- type: string
- example: 'left'
- page_numbering:
- description: 'Determines if page numbering is enabled on Document PDFs'
- type: boolean
- example: false
- auto_archive_invoice_cancelled:
- description: 'Determines if invoices are automatically archived when they are cancelled'
- type: boolean
- example: false
- email_from_name:
- description: 'The FROM name for emails when using Custom emailers'
- type: string
- example: 'Bob Smith'
- show_all_tasks_client_portal:
- description: 'Determines if all tasks are shown on the client portal'
- type: boolean
- example: false
- entity_send_time:
- description: 'The time that emails are sent. The time is localized to the clients locale, integer values from 1 - 24'
- type: integer
- example: 9
- shared_invoice_credit_counter:
- description: 'Determines if the invoice and credit counter are shared'
- type: boolean
- example: false
- reply_to_name:
- description: 'The reply to name for emails'
- type: string
- example: 'Bob Smith'
- hide_empty_columns_on_pdf:
- description: 'Determines if empty columns are hidden on PDFs'
- type: boolean
- example: false
- enable_reminder_endless:
- description: 'Determines if endless reminders are enabled'
- type: boolean
- example: false
- use_credits_payment:
- description: 'Determines if credits can be used as a payment method'
- type: boolean
- example: false
- recurring_invoice_number_pattern:
- description: 'The pattern for recurring invoice numbers'
- type: string
- example: 'R-000000'
- recurring_invoice_number_counter:
- description: 'The counter for recurring invoice numbers'
- type: number
- example: 1
- client_portal_under_payment_minimum:
- description: 'The minimum payment payment'
- type: number
- example: 10
- auto_bill_date:
- description: 'Determines when the invoices are auto billed, options are on_send_date (when the invoice is sent) or on_due_date (when the invoice is due))'
- type: string
- example: 'on_send_date'
- primary_color:
- description: 'The primary color for the client portal / document highlights'
- type: string
- example: '#ffffff'
- secondary_color:
- description: 'The secondary color for the client portal / document highlights'
- type: string
- example: '#ffffff'
- client_portal_allow_under_payment:
- description: 'Determines if clients can pay invoices under the invoice amount due'
- type: boolean
- example: false
- client_portal_allow_over_payment:
- description: 'Determines if clients can pay invoices over the invoice amount'
- type: boolean
- example: false
- auto_bill:
- description: 'Determines how autobilling is applied for recurring invoices. off (no auto billed), always (always auto bill), optin (The user must opt in to auto billing), optout (The user must opt out of auto billing'
- type: string
- example: 'off'
- client_portal_terms:
- description: 'The terms which are displayed on the client portal'
- type: string
- example: 'Please see attached your invoice.'
- client_portal_privacy_policy:
- description: 'The privacy policy which is displayed on the client portal'
- type: string
- example: 'These are the terms of use for using the client portal.'
- client_can_register:
- description: 'Determines if clients can register on the client portal'
- type: boolean
- example: false
- portal_design_id:
- description: 'The design id for the client portal'
- type: string
- example: 'hd677df'
- late_fee_endless_percent:
- description: 'The late fee percentage for endless late fees'
- type: number
- example: 10
- late_fee_endless_amount:
- description: 'The late fee amount for endless late fees'
- type: number
- example: 10
- auto_email_invoice:
- description: 'Determines if invoices are automatically emailed when they are created'
- type: boolean
- example: false
- email_signature:
- description: 'The email signature for emails'
- type: string
- example: 'Bob Smith'
- type: object
- Product:
- type: object
- properties:
- id:
- type: string
- description: 'The hashed product ID.'
- example: eP01N
- readOnly: true
- user_id:
- type: string
- description: 'The hashed ID of the user that created this product.'
- example: n30m4
- readOnly: true
- assigned_user_id:
- type: string
- description: 'The hashed ID of the user assigned to this product.'
- example: pR0j3
- project_id:
- type: string
- description: 'The hashed ID of the project that this product is associated with.'
- example: pR0j3
- vendor_id:
- type: string
- description: 'The hashed ID of the vendor that this product is associated with.'
- example: pR0j3
- custom_value1:
- type: string
- description: 'Custom value field 1.'
- example: 'Custom value 1'
- custom_value2:
- type: string
- description: 'Custom value field 2.'
- example: 'Custom value 2'
- custom_value3:
- type: string
- description: 'Custom value field 3.'
- example: 'Custom value 3'
- custom_value4:
- type: string
- description: 'Custom value field 4.'
- example: 'Custom value 4'
- product_key:
- type: string
- description: 'The product key.'
- example: '1234'
- notes:
- type: string
- description: 'Notes about the product.'
- example: 'These are some notes about the product.'
- cost:
- type: number
- format: double
- description: 'The cost of the product. (Your purchase price for this product)'
- example: 10.0
- price:
- type: number
- format: double
- description: 'The price of the product that you are charging.'
- example: 20.0
- quantity:
- type: number
- format: double
- description: 'The quantity of the product. (used as a default)'
- example: 5.0
- tax_name1:
- type: string
- description: 'The name of tax 1.'
- example: 'Tax 1'
- tax_rate1:
- type: number
- format: double
- description: 'The rate of tax 1.'
- example: 10.0
- tax_name2:
- type: string
- description: 'The name of tax 2.'
- example: 'Tax 2'
- tax_rate2:
- type: number
- format: double
- description: 'The rate of tax 2.'
- example: 5.0
- tax_name3:
- type: string
- description: 'The name of tax 3.'
- example: 'Tax 3'
- tax_rate3:
- type: number
- format: double
- description: 'The rate of tax 3.'
- example: 0.0
- archived_at:
- type: integer
- format: timestamp
- description: 'The timestamp when the product was archived.'
- example: '2022-03-18T15:00:00Z'
- readOnly: true
- created_at:
- type: integer
- format: timestamp
- description: 'The timestamp when the product was created.'
- example: '2022-03-18T15:00:00Z'
- readOnly: true
- updated_at:
- description: Timestamp
- type: integer
- format: timestamp
- example: '2022-03-18T12:34:56.789Z'
- readOnly: true
- is_deleted:
- type: boolean
- description: 'Boolean flag determining if the product has been deleted'
- example: false
- readOnly: true
- in_stock_quantity:
- type: integer
- format: int32
- description: The quantity of the product that is currently in stock
- default: 0
- stock_notification:
- type: boolean
- description: Indicates whether stock notifications are enabled for this product
- default: true
- stock_notification_threshold:
- type: integer
- format: int32
- description: The minimum quantity threshold for which stock notifications will be triggered
- default: 0
- max_quantity:
- type: integer
- format: int32
- description: The maximum quantity that can be ordered for this product
- product_image:
- type: string
- description: The URL of the product image
- format: uri-reference
- tax_id:
- type: string
- default: '1'
- description: |
- The tax category id for this product.'
-
- The following constants are available (default = '1')
-
- ```
- PRODUCT_TYPE_PHYSICAL = '1'
- PRODUCT_TYPE_SERVICE = '2'
- PRODUCT_TYPE_DIGITAL = '3'
- PRODUCT_TYPE_SHIPPING = '4'
- PRODUCT_TYPE_EXEMPT = '5'
- PRODUCT_TYPE_REDUCED_TAX = '6'
- PRODUCT_TYPE_OVERRIDE_TAX = '7'
- PRODUCT_TYPE_ZERO_RATED = '8'
- PRODUCT_TYPE_REVERSE_TAX = '9'
- ```
- example: '1'
-
- ClientContactRequest:
- properties:
- id:
- description: 'The hashed if of the contact'
- type: string
- example: Opnel5aKBz
- readOnly: true
- first_name:
- description: 'The first name of the contact'
- type: string
- example: John
- last_name:
- description: 'The last name of the contact'
- type: string
- example: Doe
- phone:
- description: 'The phone number of the contact'
- type: string
- example: 555-152-4524
- custom_value1:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value2:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value3:
- description: 'A Custom field value'
- type: string
- example: ''
- custom_value4:
- description: 'A Custom field value'
- type: string
- example: ''
- email:
- description: 'The email of the contact'
- type: string
- example: ''
- password:
- description: 'The hashed password of the contact'
- type: string
- example: '*****'
- send_email:
- description: 'Boolean value determines is this contact should receive emails'
- type: boolean
- example: true
- type: object
- ClientRequest:
- required:
- - contacts
- - country_id
- properties:
- id:
- description: 'The unique identifier of the client'
- type: string
- example: Opnel5aKBz
- readOnly: true
- contacts:
- type: array
- description: 'A list of contacts associated with the client'
- items:
- $ref: '#/components/schemas/ClientContactRequest'
- name:
- description: 'The name of the client company or organization'
- type: string
- example: "Jim's Housekeeping"
- website:
- description: 'The website URL of the client company or organization'
- type: string
- example: 'https://www.jims-housekeeping.com'
- private_notes:
- description: 'Notes that are only visible to the user who created the client'
- type: string
- example: 'Client prefers email communication over phone calls'
- industry_id:
- description: 'The unique identifier of the industry the client operates in'
- type: number
- example: '5'
- size_id:
- description: 'The unique identifier for the size category of the client company or organization'
- type: number
- example: '2'
- address1:
- description: "First line of the client's address"
- type: string
- example: '123 Main St'
- address2:
- description: "Second line of the client's address, if needed"
- type: string
- example: 'Apt 4B'
- city:
- description: 'The city the client is located in'
- type: string
- example: 'Beverly Hills'
- state:
- description: 'The state, province, or locality the client is located in'
- type: string
- example: 'California'
- postal_code:
- description: 'The postal code or ZIP code of the client'
- type: string
- example: '90210'
- phone:
- description: "The client's phone number"
- type: string
- example: '555-3434-3434'
- country_id:
- description: "The unique identifier of the client's country"
- type: number
- format: integer
- example: '1'
- custom_value1:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Preferred contact: Email'
- custom_value2:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Account manager: John Doe'
- custom_value3:
- description: 'A custom field for storing additional information'
- type: string
- example: 'VIP client: Yes'
- custom_value4:
- description: 'A custom field for storing additional information'
- type: string
- example: 'Annual contract value: $50,000'
- vat_number:
- description: "The client's VAT (Value Added Tax) number, if applicable"
- type: string
- example: 'VAT123456'
- id_number:
- description: 'A unique identification number for the client, such as a tax ID or business registration number'
- type: string
- number:
- description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
- type: string
- example: 'CL-0001'
- shipping_address1:
- description: "First line of the client's shipping address"
- type: string
- example: '5 Wallaby Way'
- shipping_address2:
- description: "Second line of the client's shipping address, if needed"
- type: string
- example: 'Suite 5'
- shipping_city:
- description: "The city of the client's shipping address"
- type: string
- example: 'Perth'
- shipping_state:
- description: "The state, province, or locality of the client's shipping address"
- type: string
- example: 'Western Australia'
- shipping_postal_code:
- description: "The postal code or ZIP code of the client's shipping address"
- type: string
- example: '6110'
- shipping_country_id:
- description: "The unique identifier of the country for the client's shipping address"
- type: number
- format: integer
- example: '4'
- is_deleted:
- description: 'A boolean value indicating whether the client has been deleted or not'
- type: boolean
- example: false
- readOnly: true
- group_settings_id:
- description: 'The group settings assigned to the client'
- type: string
- example: Opnel5aKBz
- routing_id:
- description: 'The routing address id for e-invoicing for this client'
- type: string
- example: Opnel5aKBz3489-dfkiu-2239-sdsd
- is_tax_exempt:
- description: 'Flag which defines if the client is exempt from taxes'
- type: boolean
- example: false
- has_valid_vat_number:
- description: 'Flag which defines if the client has a valid VAT number'
- type: boolean
- example: false
- readOnly: true
- classification:
- description: 'The classification of the client'
- type: string
- example: 'individual'
- settings:
- $ref: '#/components/schemas/ClientSettings'
- type: object
- Error:
- properties:
- message:
- description: 'Something terrible went wrong'
- type: string
- example: 'Unexpected error'
- code:
- description: 'The HTTP error code, ie 5xx 4xx'
- type: integer
- example: '500'
- type: object
- BTRules:
- properties:
- data_key:
- description: 'The key to search'
- type: string
- example: 'description,amount'
- operator:
- description: 'The operator flag of the search'
- type: string
- example: '>'
- value:
- description: 'The value to search for'
- type: string
- example: bob
- type: object
CompanySettings:
required:
- currency_id
@@ -21124,6 +16610,1598 @@ components:
type: string
example: 'individual'
type: object
+ SystemLog:
+ properties:
+ id:
+ description: 'The account hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user_id hashed id'
+ type: string
+ example: AS3df3A
+ client_id:
+ description: 'The client_id hashed id'
+ type: string
+ example: AS3df3A
+ event_id:
+ description: 'The Log Type ID'
+ type: integer
+ example: 1
+ category_id:
+ description: 'The Category Type ID'
+ type: integer
+ example: 1
+ type_id:
+ description: 'The Type Type ID'
+ type: integer
+ example: 1
+ log:
+ description: 'The json object of the error'
+ type: object
+ example: '{''key'':''value''}'
+ updated_at:
+ description: Timestamp
+ type: string
+ example: '2'
+ created_at:
+ description: Timestamp
+ type: string
+ example: '2'
+ type: object
+ ClientGatewayToken:
+ properties:
+ id:
+ description: 'The hashed id of the client gateway token'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The hashed_id of the client'
+ type: string
+ example: '2'
+ token:
+ description: 'The payment token'
+ type: string
+ example: '2'
+ routing_number:
+ description: 'THe bank account routing number'
+ type: string
+ example: '2'
+ company_gateway_id:
+ description: 'The hashed id of the company gateway'
+ type: string
+ example: '2'
+ is_default:
+ description: 'Flag determining if the token is the default payment method'
+ type: boolean
+ example: 'true'
+ type: object
+
+ GenericBulkAction:
+ properties:
+ action:
+ type: string
+ example: archive
+ description: 'The action to perform ie. archive / restore / delete'
+ ids:
+ type: array
+ items:
+ format: string
+ type: string
+ example: 2J234DFA,D2J234DFA,D2J234DFA
+ description: string array of client hashed ids
+ type: object
+ InvoiceInvitationRequest:
+ required:
+ - client_contact_id
+ properties:
+ id:
+ description: 'The entity invitation hashed id'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ client_contact_id:
+ description: 'The client contact hashed id'
+ type: string
+ example: Opnel5aKBz
+ key:
+ description: 'The invitation key'
+ type: string
+ example: Opnel5aKBz4343343566236gvbb
+ readOnly: true
+ link:
+ description: 'The invitation link'
+ type: string
+ example: 'https://www.example.com/invitations/Opnel5aKBz4343343566236gvbb'
+ readOnly: true
+ sent_date:
+ description: 'The invitation sent date'
+ type: string
+ format: date-time
+ readOnly: true
+ viewed_date:
+ description: 'The invitation viewed date'
+ type: string
+ format: date-time
+ readOnly: true
+ opened_date:
+ description: 'The invitation opened date'
+ type: string
+ format: date-time
+ readOnly: true
+ updated_at:
+ description: 'Timestamp'
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: 'Timestamp'
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ email_error:
+ description: 'The email error'
+ type: string
+ example: 'The email error'
+ readOnly: true
+ email_status:
+ description: 'The email status'
+ type: string
+ readOnly: true
+
+ Client:
+ properties:
+ id:
+ description: 'The unique identifier of the client'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ contacts:
+ type: array
+ items:
+ $ref: '#/components/schemas/ClientContact'
+ user_id:
+ description: 'The unique identifier of the user who created the client'
+ type: string
+ example: Ua6Rw4pVbS
+ readOnly: true
+ assigned_user_id:
+ description: 'The unique identifier of the user who has been assigned the client'
+ type: string
+ example: Ua6Rw4pVbS
+ name:
+ description: 'The name of the client company or organization'
+ type: string
+ example: "Jim's Housekeeping"
+ website:
+ description: 'The website URL of the client company or organization'
+ type: string
+ example: 'https://www.jims-housekeeping.com'
+ private_notes:
+ description: 'Notes that are only visible to the user who created the client'
+ type: string
+ example: 'Client prefers email communication over phone calls'
+ client_hash:
+ description: 'A unique hash value for the client'
+ type: string
+ example: asdfkjhk342hjhbfdvmnfb1
+ readOnly: true
+ industry_id:
+ description: 'The unique identifier of the industry the client operates in'
+ type: number
+ example: '5'
+ size_id:
+ description: 'The unique identifier for the size category of the client company or organization'
+ type: number
+ example: '2'
+ address1:
+ description: "First line of the client's address"
+ type: string
+ example: '123 Main St'
+ address2:
+ description: "Second line of the client's address, if needed"
+ type: string
+ example: 'Apt 4B'
+ city:
+ description: 'The city the client is located in'
+ type: string
+ example: 'Beverly Hills'
+ state:
+ description: 'The state, province, or locality the client is located in'
+ type: string
+ example: 'California'
+ postal_code:
+ description: 'The postal code or ZIP code of the client'
+ type: string
+ example: '90210'
+ phone:
+ description: "The client's phone number"
+ type: string
+ example: '555-3434-3434'
+ country_id:
+ description: "The unique identifier of the client's country"
+ type: number
+ format: integer
+ example: '1'
+ custom_value1:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Preferred contact: Email'
+ custom_value2:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Account manager: John Doe'
+ custom_value3:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'VIP client: Yes'
+ custom_value4:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Annual contract value: $50,000'
+ vat_number:
+ description: "The client's VAT (Value Added Tax) number, if applicable"
+ type: string
+ example: 'VAT123456'
+ id_number:
+ description: 'A unique identification number for the client, such as a tax ID or business registration number'
+ type: string
+ number:
+ description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
+ type: string
+ example: 'CL-0001'
+ shipping_address1:
+ description: "First line of the client's shipping address"
+ type: string
+ example: '5 Wallaby Way'
+ shipping_address2:
+ description: "Second line of the client's shipping address, if needed"
+ type: string
+ example: 'Suite 5'
+ shipping_city:
+ description: "The city of the client's shipping address"
+ type: string
+ example: 'Perth'
+ shipping_state:
+ description: "The state, province, or locality of the client's shipping address"
+ type: string
+ example: 'Western Australia'
+ shipping_postal_code:
+ description: "The postal code or ZIP code of the client's shipping address"
+ type: string
+ example: '6110'
+ shipping_country_id:
+ description: "The unique identifier of the country for the client's shipping address"
+ type: number
+ format: integer
+ example: '4'
+ is_deleted:
+ description: 'A boolean value indicating whether the client has been deleted or not'
+ type: boolean
+ example: false
+ readOnly: true
+ balance:
+ description: 'The outstanding balance the client owes'
+ type: number
+ format: float
+ example: '500.00'
+ readOnly: true
+ paid_to_date:
+ description: 'The total amount the client has paid to date'
+ type: number
+ format: float
+ example: '2000.00'
+ readOnly: true
+ credit_balance:
+ description: 'The available credit balance for the client to use on future purchases'
+ type: number
+ format: float
+ example: '100.00'
+ readOnly: true
+ last_login:
+ description: "The timestamp of the client's last login"
+ type: number
+ format: integer
+ example: '1628686031'
+ readOnly: true
+ created_at:
+ description: 'The timestamp when the client was created'
+ type: number
+ format: integer
+ example: '1617629031'
+ readOnly: true
+ updated_at:
+ description: 'The timestamp when the client was last updated'
+ type: number
+ format: integer
+ example: '1628445631'
+ readOnly: true
+ group_settings_id:
+ description: 'The group settings assigned to the client'
+ type: string
+ example: Opnel5aKBz
+ routing_id:
+ description: 'The routing address id for e-invoicing for this client'
+ type: string
+ example: Opnel5aKBz3489-dfkiu-2239-sdsd
+ is_tax_exempt:
+ description: 'Flag which defines if the client is exempt from taxes'
+ type: boolean
+ example: false
+ has_valid_vat_number:
+ description: 'Flag which defines if the client has a valid VAT number'
+ type: boolean
+ example: false
+ readOnly: true
+ payment_balance:
+ description: 'Defines the payment balance the client has on file (pre payments / over payments / unapplied amounts)'
+ type: number
+ example: 100
+ readOnly: true
+ settings:
+ $ref: '#/components/schemas/ClientSettings'
+ type: object
+ CompanyUser:
+ properties:
+ permissions:
+ description: 'The user permissionsfor this company in a comma separated list'
+ type: string
+ example: 'create_invoice,create_client,view_client'
+ settings:
+ description: 'Settings that are used for the flutter applications to store user preferences / metadata'
+ type: object
+ readOnly: true
+ react_settings:
+ description: 'Dedicated settings object for the react web application'
+ type: object
+ readOnly: true
+ is_owner:
+ description: 'Determines whether the user owns this company'
+ type: boolean
+ example: true
+ readOnly: true
+ is_admin:
+ description: 'Determines whether the user is the admin of this company'
+ type: boolean
+ example: true
+ readOnly: true
+ is_locked:
+ description: 'Determines whether the users access to this company has been locked'
+ type: boolean
+ example: true
+ readOnly: true
+ updated_at:
+ description: 'The last time the record was modified, format Unix Timestamp'
+ type: integer
+ example: '1231232312321'
+ deleted_at:
+ description: 'Timestamp when the user was archived, format Unix Timestamp'
+ type: integer
+ example: '12312312321'
+ account:
+ $ref: '#/components/schemas/Account'
+ company:
+ $ref: '#/components/schemas/Company'
+ user:
+ $ref: '#/components/schemas/User'
+ token:
+ $ref: '#/components/schemas/CompanyToken'
+ type: object
+ Design:
+ properties:
+ id:
+ description: 'The design hashed id'
+ type: string
+ example: AS3df3A
+ name:
+ description: 'The design name'
+ type: string
+ example: Beauty
+ design:
+ description: 'The design HTML'
+ type: string
+ example: ''
+ is_custom:
+ description: 'Flag to determine if the design is a custom user design'
+ type: boolean
+ example: true
+ is_active:
+ description: 'Flag to determine if the design is available for use'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Flag to determine if the design is deleted'
+ type: boolean
+ example: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ deleted_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ type: object
+ InvoiceRequest:
+ required:
+ - client_id
+ properties:
+ id:
+ description: 'The invoice hashed id'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ status_id:
+ description: 'The invoice status variable'
+ type: string
+ example: '4'
+ readOnly: true
+ number:
+ description: 'The invoice number - is a unique alpha numeric number per invoice per company'
+ type: string
+ example: INV_101
+ po_number:
+ description: 'The purchase order associated with this invoice'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The invoice terms'
+ type: string
+ example: 'These are invoice terms'
+ public_notes:
+ description: 'The public notes of the invoice'
+ type: string
+ example: 'These are some public notes'
+ private_notes:
+ description: 'The private notes of the invoice'
+ type: string
+ example: 'These are some private notes'
+ footer:
+ description: 'The invoice footer notes'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom field value'
+ type: string
+ example: '2022-10-01'
+ custom_value2:
+ description: 'A custom field value'
+ type: string
+ example: 'Something custom'
+ custom_value3:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ total_taxes:
+ description: 'The total taxes for the invoice'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ invitations:
+ type: array
+ description: 'An array of objects which define the invitations of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceInvitationRequest'
+ amount:
+ description: 'The invoice amount'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ balance:
+ description: 'The invoice balance'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ paid_to_date:
+ description: 'The amount paid on the invoice to date'
+ type: number
+ format: float
+ example: '10.00'
+ readOnly: true
+ discount:
+ description: 'The invoice discount, can be an amount or a percentage'
+ type: number
+ format: float
+ example: '10.00'
+ partial:
+ description: 'The deposit/partial amount'
+ type: number
+ format: float
+ example: '10.00'
+ is_amount_discount:
+ description: 'Flag determining if the discount is an amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Defines if the invoice has been deleted'
+ type: boolean
+ example: true
+ readOnly: true
+ uses_inclusive_taxes:
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The Invoice Date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the invoice was sent out'
+ type: string
+ format: date
+ example: '1994-07-30'
+ readOnly: true
+ next_send_date:
+ description: 'The Next date for a reminder to be sent'
+ type: string
+ format: date
+ example: '1994-07-30'
+ readOnly: true
+ partial_due_date:
+ description: 'The due date for the deposit/partial amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date of the invoice'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ custom_surcharge1:
+ description: 'First Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ project_id:
+ description: 'The project associated with this invoice'
+ type: string
+ example: Opnel5aKBz
+ type: object
+ FillableInvoice:
+ properties:
+ assigned_user_id:
+ description: "The assigned user's hashed ID"
+ type: string
+ example: 'a1b2c3d4'
+ client_id:
+ description: "The client's hashed ID"
+ type: string
+ example: 'x1y2z3a4'
+ number:
+ description: "The unique alphanumeric invoice number for each invoice per company"
+ type: string
+ example: INV_101
+ po_number:
+ description: "The purchase order number associated with the invoice"
+ type: string
+ example: 'PO12345'
+ terms:
+ description: "The terms and conditions for the invoice"
+ type: string
+ example: 'Net 30'
+ public_notes:
+ description: "Public notes visible to the client on the invoice"
+ type: string
+ example: 'Thank you for your business.'
+ private_notes:
+ description: "Private notes for internal use only"
+ type: string
+ example: 'Client is a slow payer.'
+ footer:
+ description: "The footer text displayed on the invoice"
+ type: string
+ example: 'Authorized Signature'
+ custom_value1:
+ description: "First custom value for additional information"
+ type: string
+ example: 'Project ABC'
+ custom_value2:
+ description: "Second custom value for additional information"
+ type: string
+ example: 'Department XYZ'
+ custom_value3:
+ description: "Third custom value for additional information"
+ type: string
+ example: 'Location 123'
+ custom_value4:
+ description: "Fourth custom value for additional information"
+ type: string
+ example: 'Currency USD'
+ tax_name1:
+ description: "Name of the first tax applied to the invoice"
+ type: string
+ example: 'VAT'
+ tax_name2:
+ description: "Name of the second tax applied to the invoice"
+ type: string
+ example: 'GST'
+ tax_rate1:
+ description: "Rate of the first tax applied to the invoice"
+ type: number
+ example: 10.00
+ tax_rate2:
+ description: "Rate of the second tax applied to the invoice"
+ type: number
+ example: 5.00
+ tax_name3:
+ description: "Name of the third tax applied to the invoice"
+ type: string
+ example: 'PST'
+ tax_rate3:
+ description: "Rate of the third tax applied to the invoice"
+ type: number
+ example: 8.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ discount:
+ description: "The discount applied to the invoice"
+ type: number
+ example: 10.00
+ partial:
+ description: "The partial amount applied to the invoice"
+ type: number
+ example: 20.00
+ is_amount_discount:
+ description: "Indicates whether the discount applied is a fixed amount or a percentage"
+ type: boolean
+ example: true
+ uses_inclusive_taxes:
+ description: "Indicates whether the tax rates applied to the invoice are inclusive or exclusive"
+ type: boolean
+ example: true
+ date:
+ description: "The date the invoice was issued"
+ type: string
+ example: '1994-07-30'
+ partial_due_date:
+ description: "The due date for the partial payment"
+ type: string
+ example: '1994-08-15'
+ due_date:
+ description: "The due date for the invoice"
+ type: string
+ example: '1994-08-30'
+ custom_surcharge1:
+ description: "First custom surcharge applied to the invoice"
+ type: number
+ example: 10.00
+ custom_surcharge2:
+ description: "Second custom surcharge applied to the invoice"
+ type: number
+ example: 15.00
+ custom_surcharge3:
+ description: "Third custom surcharge applied to the invoice"
+ type: number
+ example: 5.00
+ custom_surcharge4:
+ description: "Fourth custom surcharge applied to the invoice"
+ type: number
+ example: 20.00
+ type: object
+ Paymentable:
+ properties:
+ id:
+ description: 'The paymentable hashed id'
+ type: string
+ example: AS3df3A
+ invoice_id:
+ description: 'The invoice hashed id'
+ type: string
+ example: AS3df3A
+ credit_id:
+ description: 'The credit hashed id'
+ type: string
+ example: AS3df3A
+ refunded:
+ description: 'The amount that has been refunded for this payment'
+ type: number
+ format: float
+ example: '10.00'
+ amount:
+ description: 'The amount that has been applied to the payment'
+ type: number
+ format: float
+ example: '10.00'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ BankTransaction:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: AS3df3A
+ transaction_id:
+ description: 'The id of the transaction rule'
+ type: integer
+ example: 343434
+ amount:
+ description: 'The transaction amount'
+ type: number
+ example: 10
+ currency_id:
+ description: 'The currency ID of the currency'
+ type: string
+ example: '1'
+ account_type:
+ description: 'The account type'
+ type: string
+ example: creditCard
+ description:
+ description: 'The description of the transaction'
+ type: string
+ example: 'Potato purchases for kevin'
+ category_id:
+ description: 'The category id'
+ type: integer
+ example: 1
+ category_type:
+ description: 'The category description'
+ type: string
+ example: Expenses
+ base_type:
+ description: 'Either CREDIT or DEBIT'
+ type: string
+ example: CREDIT
+ date:
+ description: 'The date of the transaction'
+ type: string
+ example: '2022-09-01'
+ bank_account_id:
+ description: 'The ID number of the bank account'
+ type: integer
+ example: '1'
+ type: object
+ Meta:
+ properties:
+ pagination:
+ $ref: '#/components/schemas/Pagination'
+ Pagination:
+ type: object
+ properties:
+ total:
+ type: integer
+ description: 'The total number of items'
+ example: 1
+ readOnly: true
+ count:
+ type: integer
+ description: 'The number of items per page'
+ example: 1
+ readOnly: true
+ per_page:
+ type: integer
+ description: 'The number of items per page'
+ example: 1
+ readOnly: true
+ current_page:
+ type: integer
+ description: 'The current page number'
+ example: 1
+ readOnly: true
+ total_pages:
+ type: integer
+ description: 'The total number of pages'
+ example: 1
+ readOnly: true
+ links:
+ type: object
+ description: 'The pagination links'
+ readOnly: true
+
+ FeesAndLimits:
+ properties:
+ min_limit:
+ description: 'The minimum amount accepted for this gateway'
+ type: string
+ example: '2'
+ max_limit:
+ description: 'The maximum amount accepted for this gateway'
+ type: string
+ example: '2'
+ fee_amount:
+ description: 'The gateway fee amount'
+ type: number
+ format: float
+ example: '2.0'
+ fee_percent:
+ description: 'The gateway fee percentage'
+ type: number
+ format: float
+ example: '2.0'
+ fee_tax_name1:
+ description: 'Fee tax name'
+ type: string
+ example: GST
+ fee_tax_name2:
+ description: 'Fee tax name'
+ type: string
+ example: VAT
+ fee_tax_name3:
+ description: 'Fee tax name'
+ type: string
+ example: 'CA Sales Tax'
+ fee_tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.0'
+ fee_tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '17.5'
+ fee_tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '25.0'
+ fee_cap:
+ description: 'If set the fee amount will be no higher than this amount'
+ type: number
+ format: float
+ example: '2.0'
+ adjust_fee_percent:
+ description: 'Adjusts the fee to match the exact gateway fee.'
+ type: boolean
+ example: true
+ type: object
+ InvoiceItem:
+ type: object
+ properties:
+ quantity:
+ type: number
+ example: 1
+ description: 'The quantity of the product offered for this line item'
+ cost:
+ type: number
+ format: float
+ example: 10.00
+ description: 'The cost of the product offered for this line item'
+ product_key:
+ type: string
+ example: 'Product key'
+ description: 'The product key of the product offered for this line item (Referred to as Product in the product tab)'
+ product_cost:
+ type: number
+ format: float
+ example: 10.00
+ description: 'The cost of the product offered for this line item (Referred to as Cost in the product tab)'
+ notes:
+ type: string
+ example: 'Item notes'
+ description: 'The notes/description for the product offered for this line item'
+ discount:
+ type: number
+ format: float
+ example: 5.00
+ description: 'The discount applied to the product offered for this line item'
+ is_amount_discount:
+ type: boolean
+ example: false
+ description: 'Indicates whether the discount applied to the product offered for this line item is a fixed amount or a percentage'
+ tax_name1:
+ type: string
+ example: 'GST'
+ description: 'The name of the first tax applied to the product offered for this line item'
+ tax_rate1:
+ type: number
+ format: float
+ example: 10.00
+ description: 'The rate of the first tax applied to the product offered for this line item'
+ tax_name2:
+ type: string
+ example: 'VAT'
+ description: 'The name of the second tax applied to the product offered for this line item'
+ tax_rate2:
+ type: number
+ format: float
+ example: 5.00
+ description: 'The rate of the second tax applied to the product offered for this line item'
+ tax_name3:
+ type: string
+ example: 'CA Sales Tax'
+ description: 'The name of the third tax applied to the product offered for this line item'
+ tax_rate3:
+ type: number
+ format: float
+ example: 3.00
+ description: 'The rate of the third tax applied to the product offered for this line item'
+ sort_id:
+ type: string
+ example: '0'
+ description: 'Deprecated'
+ deprecated: true
+ line_total:
+ type: number
+ format: float
+ example: 10.00
+ description: 'The total amount of the product offered for this line item'
+ readOnly: true
+ gross_line_total:
+ type: number
+ format: float
+ example: 15.00
+ description: 'The total amount of the product offered for this line item before discounts'
+ readOnly: true
+ tax_amount:
+ type: number
+ format: float
+ example: 1.00
+ description: 'The total amount of tax applied to the product offered for this line item'
+ readOnly: true
+ date:
+ type: string
+ format: date-time
+ example: '2023-03-19T00:00:00Z'
+ description: 'Deprecated'
+ deprecated: true
+ custom_value1:
+ type: string
+ example: 'Custom value 1'
+ description: 'The first custom value of the product offered for this line item'
+ custom_value2:
+ type: string
+ example: 'Custom value 2'
+ description: 'The second custom value of the product offered for this line item'
+ custom_value3:
+ type: string
+ example: 'Custom value 3'
+ description: 'The third custom value of the product offered for this line item'
+ custom_value4:
+ type: string
+ example: 'Custom value 4'
+ description: 'The fourth custom value of the product offered for this line item'
+ type_id:
+ type: string
+ example: '1'
+ description: '1 = product, 2 = service, 3 unpaid gateway fee, 4 paid gateway fee, 5 late fee, 6 expense'
+ default: '1'
+ tax_id:
+ type: string
+ example: '1'
+ default: '1'
+ description: 'The tax ID of the product: 1 product, 2 service, 3 digital, 4 shipping, 5 exempt, 5 reduced tax, 7 override, 8 zero rate, 9 reverse tax'
+ Project:
+ type: object
+ properties:
+ id:
+ description: 'The project hashed id'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: The assigned user identifier associated with the project
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ type: string
+ example: Opnel5aKBz
+ description: The client identifier associated with the project
+ name:
+ type: string
+ description: The name of the project
+ example: 'New Project'
+ task_rate:
+ type: number
+ format: float
+ example: 10
+ description: The default rate per task for the project
+ due_date:
+ type: string
+ format: date
+ example: '2019-01-01'
+ description: The due date for the project
+ private_notes:
+ type: string
+ description: Private notes associated with the project
+ budgeted_hours:
+ type: number
+ format: float
+ description: The number of budgeted hours for the project
+ custom_value1:
+ type: string
+ description: Custom value field 1
+ custom_value2:
+ type: string
+ description: Custom value field 2
+ custom_value3:
+ type: string
+ description: Custom value field 3
+ custom_value4:
+ type: string
+ description: Custom value field 4
+ created_at:
+ type: number
+ format: integer
+ example: 134341234234
+ description: The timestamp of the project creation
+ updated_at:
+ type: number
+ format: integer
+ example: 134341234234
+ description: The timestamp of the last project update
+ archived_at:
+ type: number
+ format: integer
+ example: 134341234234
+ description: The timestamp of the project deletion
+ public_notes:
+ type: string
+ description: Public notes associated with the project
+ is_deleted:
+ type: boolean
+ description: A flag indicating if the project is deleted
+ number:
+ type: string
+ description: The project number
+ color:
+ type: string
+ description: The color associated with the project
+ required:
+ - id
+ - user_id
+ - name
+ - task_rate
+ - budgeted_hours
+ - is_deleted
+ - color
+
+ PaymentTerm:
+ properties:
+ num_days:
+ description: 'The payment term length in days'
+ type: integer
+ example: '1'
+ name:
+ description: 'The payment term length in string format'
+ type: string
+ example: 'NET 1'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ type: object
+ BankIntegration:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: AS3df3A
+ provider_bank_name:
+ description: 'The providers bank name'
+ type: string
+ example: 'Chase Bank'
+ bank_account_id:
+ description: 'The bank account id'
+ type: integer
+ example: '1233434'
+ bank_account_name:
+ description: 'The name of the account'
+ type: string
+ example: 'My Checking Acc'
+ bank_account_number:
+ description: 'The account number'
+ type: string
+ example: '111 234 2332'
+ bank_account_status:
+ description: 'The status of the bank account'
+ type: string
+ example: ACTIVE
+ bank_account_type:
+ description: 'The type of account'
+ type: string
+ example: CREDITCARD
+ balance:
+ description: 'The current bank balance if available'
+ type: number
+ example: '1000000'
+ currency:
+ description: 'iso_3166_3 code'
+ type: string
+ example: USD
+ type: object
+ PurchaseOrder:
+ properties:
+ id:
+ description: 'The unique hashed identifier for the purchase order'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The unique hashed identifier for the user who created the purchase order'
+ type: string
+ example: ''
+ assigned_user_id:
+ description: 'The unique hashed identifier for the user assigned to the purchase order'
+ type: string
+ example: ''
+ vendor_id:
+ description: 'The unique hashed identifier for the vendor associated with the purchase order'
+ type: string
+ example: ''
+ status_id:
+ description: 'The status of the purchase order represented by a unique identifier'
+ type: string
+ example: ''
+ number:
+ description: 'The unique alpha-numeric purchase order number per company'
+ type: string
+ example: PO_101
+ quote_number:
+ description: 'The quote number associated with this purchase order'
+ type: string
+ example: QUOTE_101
+ terms:
+ description: 'The terms and conditions for the purchase order'
+ type: string
+ example: 'These are some purchase order terms. Valid for 14 days.'
+ public_notes:
+ description: 'Publicly visible notes associated with the purchase order'
+ type: string
+ example: 'These are public notes which the vendor may see'
+ private_notes:
+ description: 'Privately visible notes associated with the purchase order, not disclosed to the vendor'
+ type: string
+ example: 'These are private notes, not to be disclosed to the vendor'
+ footer:
+ description: 'The footer text of the purchase order'
+ type: string
+ example: 'The text goes in the footer of the purchase order'
+ custom_value1:
+ description: 'First custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value2:
+ description: 'Second custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value3:
+ description: 'Third custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value4:
+ description: 'Fourth custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ tax_name1:
+ description: 'The name of the first tax applied to the purchase order'
+ type: string
+ example: GST
+ tax_name2:
+ description: 'The name of the second tax applied to the purchase order'
+ type: string
+ example: VAT
+ tax_rate1:
+ description: 'The rate of the first tax applied to the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ tax_rate2:
+ description: 'The rate of the second tax applied to the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ tax_name3:
+ description: 'The name of the third tax applied to the purchase order'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The rate of the third tax applied to the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ total_taxes:
+ description: 'The total amount of taxes applied to the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the purchase order'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ amount:
+ description: 'The total amount of the purchase order before taxes and discounts'
+ type: number
+ format: float
+ example: 10.00
+ balance:
+ description: 'The balance due for the purchase order after accounting for payments'
+ type: number
+ format: float
+ example: 10.00
+ paid_to_date:
+ description: 'The total amount paid on the purchase order so far'
+ type: number
+ format: float
+ example: 10.00
+ discount:
+ description: 'The discount amount or percentage applied to the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ partial:
+ description: 'The partial or deposit amount for the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ is_amount_discount:
+ description: 'Boolean flag indicating if the discount is a fixed amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag indicating if the purchase order has been deleted'
+ type: boolean
+ example: false
+ uses_inclusive_taxes:
+ description: 'Boolean flag indicating if the taxes used are inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The date the purchase order was created'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the purchase order was sent to the vendor'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The next scheduled date for sending a reminder for the purchase order'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the partial or deposit amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date for the total amount of the purchase order'
+ type: string
+ format: date
+ example: '1994-07-30'
+ settings:
+ $ref: '#/components/schemas/CompanySettings'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: 1434342123
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: 1434342123
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: 1434342123
+ custom_surcharge1:
+ description: 'First custom surcharge amount for the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge2:
+ description: 'Second custom surcharge amount for the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge3:
+ description: 'Third custom surcharge amount for the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge4:
+ description: 'Fourth custom surcharge amount for the purchase order'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge_tax1:
+ description: 'Boolean flag indicating if taxes are charged on the first custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Boolean flag indicating if taxes are charged on the second custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Boolean flag indicating if taxes are charged on the third custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Boolean flag indicating if taxes are charged on the fourth custom surcharge amount'
+ type: boolean
+ example: true
+ type: object
+
+
+ CompanyLedger:
+ properties:
+ entity_id:
+ description: 'This field will reference one of the following entity hashed ID payment_id, invoice_id or credit_id'
+ type: string
+ example: AS3df3A
+ notes:
+ description: 'The notes which reference this entry of the ledger'
+ type: string
+ example: 'Credit note for invoice #3212'
+ balance:
+ description: 'The client balance'
+ type: number
+ format: float
+ example: '10.00'
+ adjustment:
+ description: 'The amount the client balance is adjusted by'
+ type: number
+ format: float
+ example: '10.00'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ Task:
+ properties:
+ id:
+ description: 'The hashed id of the task'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The hashed id of the user who created the task'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user of the task'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The hashed if of the client'
+ type: string
+ example: Opnel5aKBz
+ invoice_id:
+ description: 'The hashed id of the invoice associated with the task'
+ type: string
+ example: Opnel5aKBz
+ project_id:
+ description: 'The hashed id of the project associated with the task'
+ type: string
+ example: Opnel5aKBz
+ number:
+ description: 'The number of the task'
+ type: string
+ example: TASK-123
+ time_log:
+ description: 'An array of unix time stamps defining the start and end times of the task'
+ type: string
+ example: '[[1,2],[3,4]]'
+ is_running:
+ description: 'Determines if the task is still running'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag determining if the task has been deleted'
+ type: boolean
+ example: true
+ task_status_id:
+ description: 'The hashed id of the task status'
+ type: string
+ example: Opnel5aKBz
+ description:
+ description: 'The task description'
+ type: string
+ example: 'A wonder task to work on'
+ duration:
+ description: 'The task duration in seconds'
+ type: integer
+ example: '3600'
+ task_status_order:
+ description: 'The order of the task'
+ type: integer
+ example: '4'
+ rate:
+ description: 'The task rate'
+ type: number
+ example: 10.00
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: '2022-10-10'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: $1100
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: 'I need help'
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: INV-3343
+ is_date_based:
+ description: 'Boolean flag determining if the task is date based'
+ type: boolean
+ example: true
+ calculated_start_date:
+ description: 'The calculated start date of the task'
+ type: string
+ example: '2022-10-10'
+ readOnly: true
+ invoice_documents:
+ description: "Boolean flags which determines whether to include the task documents on the invoice"
+ type: boolean
+ example: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ readOnly: true
+ type: object
ClientContact:
properties:
id:
@@ -21250,240 +18328,2827 @@ components:
example: '134341234234'
readOnly: true
type: object
-
- FeesAndLimits:
+ ClientContactRequest:
properties:
- min_limit:
- description: 'The minimum amount accepted for this gateway'
+ id:
+ description: 'The hashed if of the contact'
type: string
- example: '2'
- max_limit:
- description: 'The maximum amount accepted for this gateway'
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the contact'
type: string
- example: '2'
- fee_amount:
- description: 'The gateway fee amount'
- type: number
- format: float
- example: '2.0'
- fee_percent:
- description: 'The gateway fee percentage'
- type: number
- format: float
- example: '2.0'
- fee_tax_name1:
- description: 'Fee tax name'
+ example: John
+ last_name:
+ description: 'The last name of the contact'
type: string
- example: GST
- fee_tax_name2:
- description: 'Fee tax name'
+ example: Doe
+ phone:
+ description: 'The phone number of the contact'
type: string
- example: VAT
- fee_tax_name3:
- description: 'Fee tax name'
+ example: 555-152-4524
+ custom_value1:
+ description: 'A Custom field value'
type: string
- example: 'CA Sales Tax'
- fee_tax_rate1:
- description: 'The tax rate'
- type: number
- format: float
- example: '10.0'
- fee_tax_rate2:
- description: 'The tax rate'
- type: number
- format: float
- example: '17.5'
- fee_tax_rate3:
- description: 'The tax rate'
- type: number
- format: float
- example: '25.0'
- fee_cap:
- description: 'If set the fee amount will be no higher than this amount'
- type: number
- format: float
- example: '2.0'
- adjust_fee_percent:
- description: 'Adjusts the fee to match the exact gateway fee.'
+ example: ''
+ custom_value2:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A Custom field value'
+ type: string
+ example: ''
+ email:
+ description: 'The email of the contact'
+ type: string
+ example: ''
+ password:
+ description: 'The hashed password of the contact'
+ type: string
+ example: '*****'
+ send_email:
+ description: 'Boolean value determines is this contact should receive emails'
type: boolean
example: true
type: object
- Account:
+ VendorContact:
properties:
id:
- description: 'The account hashed id'
+ description: 'The hashed id of the vendor contact'
type: string
- example: AS3df3A
- account_sms_verified:
- description: 'Boolean flag if the account has been verified by sms'
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The hashed id of the user id'
type: string
+ example: Opnel5aKBz
+ readOnly: true
+ vendor_id:
+ description: 'The hashed id of the vendor'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the contact'
+ type: string
+ example: Harry
+ last_name:
+ description: 'The last name of the contact'
+ type: string
+ example: Windsor
+ contact_key:
+ description: 'A unique identifier for the contact'
+ type: string
+ example: JD0X52bkfZlJRiroCJ0tcSiAjsJTntZ5uqKdiZ0a
+ readOnly: true
+ confirmation_code:
+ description: 'The confirmation code used to authenticate the contacts email address'
+ type: string
+ example: 333-sdjkh34gbasd
+ readOnly: true
+ phone:
+ description: 'The contacts phone number'
+ type: string
+ example: 555-123-1234
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: '2022-10-10'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: $1000
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: ''
+ email:
+ description: 'The contact email address'
+ type: string
+ example: harry@windsor.com
+ email_verified_at:
+ description: 'The date which the contact confirmed their email'
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ password:
+ description: 'The hashed password of the contact'
+ type: string
+ example: '*****'
+ is_primary:
+ description: 'Boolean flag determining if the contact is the primary contact for the vendor'
+ type: boolean
example: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ deleted_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
type: object
- BankTransactionRule:
+ Subscription:
properties:
id:
- description: 'The bank transaction rules hashed id'
+ description: Unique identifier for the subscription
type: string
- example: AS3df3A
+ example: Opnel5aKBz
+ user_id:
+ description: Unique identifier for the user associated with the subscription
+ type: string
+ example: Ua6Rw4pVbS
+ product_id:
+ description: Unique identifier for the product associated with the subscription
+ type: string
+ example: Pr5Ft7yBmC
+ recurring_invoice_id:
+ description: Unique identifier for the recurring invoice associated with the subscription
+ type: string
+ example: Ri2Yt8zJkP
+ is_recurring:
+ description: Indicates whether the subscription is recurring
+ type: boolean
+ example: 'true'
+ frequency_id:
+ description: 'integer const representation of the frequency'
+ type: string
+ example: '1'
+ auto_bill:
+ description: 'enum setting'
+ type: string
+ example: always
+ promo_code:
+ description: Promotional code applied to the subscription
+ type: string
+ example: PROMOCODE4U
+ promo_discount:
+ description: Discount percentage or amount applied to the subscription
+ type: number
+ example: 10
+ is_amount_discount:
+ description: Indicates whether the discount is a fixed amount
+ type: boolean
+ example: 'true'
+ allow_cancellation:
+ description: Indicates whether the subscription can be cancelled
+ type: boolean
+ example: 'true'
+ per_seat_enabled:
+ description: Indicates whether the subscription pricing is per seat
+ type: boolean
+ example: 'true'
+ currency_id:
+ description: Unique identifier for the currency used in the subscription
+ type: integer
+ example: '1'
+ max_seats_limit:
+ description: Maximum number of seats allowed for the subscription
+ type: integer
+ example: '100'
+ trial_enabled:
+ description: Indicates whether the subscription has a trial period
+ type: boolean
+ example: 'true'
+ trial_duration:
+ description: Duration of the trial period in days
+ type: integer
+ example: '14'
+ allow_query_overrides:
+ description: Indicates whether query overrides are allowed for the subscription
+ type: boolean
+ example: 'true'
+ allow_plan_changes:
+ description: Indicates whether plan changes are allowed for the subscription
+ type: boolean
+ example: 'true'
+ refund_period:
+ description: Number of days within which refunds can be requested
+ type: integer
+ example: '30'
+ webhook_configuration:
+ description: Webhook configuration for the subscription
+ type: string
+ example: 'expand reference for this'
+ is_deleted:
+ description: Indicates whether the subscription has been deleted
+ type: boolean
+ example: 'false'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ type: object
+ BulkAction:
+ type: array
+ items:
+ type: integer
+ example: '[0,1,2,3,]'
+ BTRules:
+ properties:
+ data_key:
+ description: 'The key to search'
+ type: string
+ example: 'description,amount'
+ operator:
+ description: 'The operator flag of the search'
+ type: string
+ example: '>'
+ value:
+ description: 'The value to search for'
+ type: string
+ example: bob
+ type: object
+ Company:
+ properties:
+ id:
+ description: "The unique hashed identifier for the company"
+ type: string
+ example: WJxbojagwO
+ size_id:
+ description: "The unique identifier representing the company's size category"
+ type: string
+ example: '2'
+ industry_id:
+ description: "The unique identifier representing the company's industry category"
+ type: string
+ example: '5'
+ slack_webhook_url:
+ description: "The URL for the company's Slack webhook notifications"
+ type: string
+ example: 'https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX'
+ google_analytics_key:
+ description: "The company's Google Analytics tracking ID"
+ type: string
+ example: 'UA-123456789-1'
+ portal_mode:
+ description: "The mode determining how client-facing URLs are structured (e.g., subdomain, domain, or iframe)"
+ type: string
+ example: subdomain
+ subdomain:
+ description: "The subdomain prefix for the company's domain (e.g., 'acme' in acme.domain.com)"
+ type: string
+ example: acme
+ portal_domain:
+ description: "The fully qualified domain used for client-facing URLs"
+ type: string
+ example: 'https://subdomain.invoicing.co'
+ enabled_tax_rates:
+ description: "The number of tax rates used per entity"
+ type: integer
+ example: '2'
+ fill_products:
+ description: "A flag determining whether to auto-fill product descriptions based on the product key"
+ type: boolean
+ example: true
+ convert_products:
+ description: "A flag determining whether to convert products between different types or units"
+ type: boolean
+ example: true
+ update_products:
+ description: "A flag determining whether to update product descriptions when the description changes"
+ type: boolean
+ example: true
+ show_product_details:
+ description: "A flag determining whether to display product details in the user interface"
+ type: boolean
+ example: true
+ show_product_cost:
+ description: "A flag determining whether to display product cost is shown in the user interface"
+ type: boolean
+ example: true
+ custom_fields:
+ description: "A mapping of custom fields for various objects within the company"
+ type: object
+ enable_product_cost:
+ description: "A flag determining whether to show or hide the product cost field in the user interface"
+ type: boolean
+ example: true
+ enable_product_quantity:
+ description: "A flag determining whether to show or hide the product quantity field in the user interface"
+ type: boolean
+ example: true
+ default_quantity:
+ description: "A flag determining whether to use a default quantity for products"
+ type: boolean
+ example: true
+ custom_surcharge_taxes1:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the first custom surcharge field"
+ type: boolean
+ example: true
+ custom_surcharge_taxes2:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the second custom surcharge field"
+ type: boolean
+ example: true
+ custom_surcharge_taxes3:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the third custom surcharge field"
+ type: boolean
+ example: true
+ custom_surcharge_taxes4:
+ description: "A flag determining whether to apply taxes on custom surcharge amounts for the fourth custom"
+ logo:
+ description: "The company logo file in binary format"
+ type: string
+ format: binary
+ example: logo.png
+ company_key:
+ description: "The static company key hash used to identify the Company"
+ readOnly: true
+ type: string
+ example: "Vnb14bRlwiFjc5ckte6cfbygTRkn5IMQ"
+ client_can_register:
+ description: "A flag determining whether clients can register for the client portal"
+ type: boolean
+ example: true
+ enabled_modules:
+ type: integer
+ description: |
+ Bitmask representation of the modules that are enabled in the application
+
+ ```
+ self::ENTITY_RECURRING_INVOICE => 1,
+ self::ENTITY_CREDIT => 2,
+ self::ENTITY_QUOTE => 4,
+ self::ENTITY_TASK => 8,
+ self::ENTITY_EXPENSE => 16,
+ self::ENTITY_PROJECT => 32,
+ self::ENTITY_VENDOR => 64,
+ self::ENTITY_TICKET => 128,
+ self::ENTITY_PROPOSAL => 256,
+ self::ENTITY_RECURRING_EXPENSE => 512,
+ self::ENTITY_RECURRING_TASK => 1024,
+ self::ENTITY_RECURRING_QUOTE => 2048,
+ ```
+
+ The default per_page value is 20.
+
+ example: 2048
+ db:
+ readOnly: true
+ type: string
+ example: 'db-ninja-01'
+ first_day_of_week:
+ description: "The first day of the week for the company"
+ type: string
+ example: '1'
+ first_month_of_year:
+ description: "The first month for the company financial year"
+ type: string
+ example: '1'
+ enabled_item_tax_rates:
+ description: "The number of tax rates used per item"
+ type: integer
+ example: 2
+ is_large:
+ description: "A flag determining whether the company is considered large"
+ type: boolean
+ example: true
+ default_auto_bill:
+ type: string
+ example: 'always'
+ description: |
+ A flag determining whether to auto-bill clients by default
+
+ values:
+
+ - always - Always auto bill
+ - disabled - Never auto bill
+ - optin - Allow the client to select their auto bill status with the default being disabled
+ - optout -Allow the client to select their auto bill status with the default being enabled
+ mark_expenses_invoiceable:
+ description: "A flag determining whether to mark expenses as invoiceable by default"
+ type: boolean
+ example: true
+ mark_expenses_paid:
+ description: "A flag determining whether to mark expenses as paid by default"
+ type: boolean
+ example: true
+ invoice_expense_documents:
+ description: "A flag determining whether to include expense documents on invoices by default"
+ type: boolean
+ example: true
+ auto_start_tasks:
+ description: "A flag determining whether to auto-start tasks by default"
+ type: boolean
+ example: true
+ invoice_task_timelog:
+ description: "A flag determining whether to include task time logs on invoices by default"
+ type: boolean
+ example: true
+ invoice_task_documents:
+ description: "A flag determining whether to include task documents on invoices by default"
+ type: boolean
+ example: true
+ show_tasks_table:
+ description: "A flag determining whether to show the tasks table on invoices by default"
+ type: boolean
+ example: true
+ is_disabled:
+ description: "A flag determining whether the company is disabled"
+ type: boolean
+ example: true
+ default_task_is_date_based:
+ description: "A flag determining whether to default tasks to be date-based"
+ type: boolean
+ example: true
+ enable_product_discount:
+ description: "A flag determining whether to show or hide the product discount field in the user interface"
+ type: boolean
+ example: true
+ calculate_expense_tax_by_amount:
+ description: "A flag determining whether to calculate expense taxes by amount"
+ type: boolean
+ example: true
+ expense_inclusive_taxes:
+ description: "A flag determining whether to include taxes in the expense amount"
+ type: boolean
+ example: true
+ session_timeout:
+ description: "The session timeout for the company"
+ type: integer
+ example: 60
+ oauth_password_required:
+ description: "A flag determining whether to require a password for `dangerous` actions when using OAuth"
+ type: boolean
+ example: true
+ invoice_task_datelog:
+ description: "A flag determining whether to include task date logs on invoices by default"
+ type: boolean
+ example: true
+ default_password_timeout:
+ description: "The default password timeout for the company"
+ type: integer
+ example: 60
+ show_task_end_date:
+ description: "A flag determining whether to show the task end date on invoices by default"
+ type: boolean
+ example: true
+ markdown_enabled:
+ description: "A flag determining whether markdown is enabled for the company"
+ type: boolean
+ example: true
+ report_include_drafts:
+ description: "A flag determining whether to include draft invoices in reports"
+ type: boolean
+ example: true
+ client_registration_fields:
+ description: "The client registration fields for the company"
+ type: object
+ stop_on_unpaid_recurring:
+ description: "A flag determining whether to stop recurring invoices when they are unpaid"
+ type: boolean
+ example: true
+ use_quote_terms_on_conversion:
+ description: "A flag determining whether to use quote terms on conversion to an invoice"
+ type: boolean
+ example: true
+ enable_applying_payments:
+ description: "A flag determining whether to enable applying payments to invoices"
+ type: boolean
+ example: true
+ track_inventory:
+ description: "A flag determining whether to track inventory for the company"
+ type: boolean
+ example: true
+ inventory_notification_threshold:
+ description: "The inventory notification threshold for the company"
+ type: integer
+ example: 60
+ stock_notification:
+ description: "A flag determining whether to send stock notifications for the company"
+ type: boolean
+ example: true
+ matomo_url:
+ description: "The Matomo URL for the company"
+ type: string
+ example: 'https://matomo.example.com'
+ matomo_id:
+ description: "The Matomo ID for the company"
+ type: string
+ example: '1'
+ enabled_expense_tax_rates:
+ description: "The number of tax rates used per expense"
+ type: integer
+ example: 2
+ invoice_task_project:
+ description: "A flag determining whether to include the project on invoices by default"
+ type: boolean
+ example: true
+ report_include_deleted:
+ description: "A flag determining whether to include deleted invoices in reports"
+ type: boolean
+ example: true
+ invoice_task_lock:
+ description: "A flag determining whether to lock tasks when invoiced"
+ type: boolean
+ example: true
+ convert_payment_currency:
+ description: "A flag determining whether to convert the payment currency"
+ type: boolean
+ example: true
+ convert_expense_currency:
+ description: "A flag determining whether to convert the expense currency"
+ type: boolean
+ example: true
+ notify_vendor_when_paid:
+ description: "A flag determining whether to notify the vendor when an expense is paid"
+ type: boolean
+ example: true
+ invoice_task_hours:
+ description: "A flag determining whether to include the task hours on invoices by default"
+ type: boolean
+ example: true
+ calculate_taxes:
+ description: "A flag determining whether to calculate taxes for the company"
+ type: boolean
+ example: true
+ tax_data:
+ description: "The tax data for the company"
+ type: object
+ e_invoice_certificate:
+ description: "The e-invoice certificate for the company"
+ type: string
+ example: '-----BEGIN CERTIFICATE-----'
+ e_invoice_certificate_passphrase:
+ description: "The e-invoice certificate passphrase for the company"
+ type: string
+ example: 'secret'
+ origin_tax_data:
+ description: "The origin tax data for the company"
+ type: object
+ invoice_task_project_header:
+ description: "A flag determining whether to include the project header on invoices by default"
+ type: boolean
+ example: true
+ invoice_task_item_description:
+ description: "A flag determining whether to include the item description on invoices by default"
+ type: boolean
+ example: true
+
+ settings:
+ $ref: '#/components/schemas/CompanySettings'
+ type: object
+ RecurringInvoice:
+ properties:
+ id:
+ description: 'The hashed id of the recurring invoice'
+ type: string
+ example: Opnel5aKBz
user_id:
description: 'The user hashed id'
type: string
- example: AS3df3A
- name:
- description: 'The name of the transaction'
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The assigned user hashed id'
type: string
- example: 'Rule 1'
- rules:
- description: 'A mapped collection of the sub rules for the BankTransactionRule'
- type: array
- items:
- $ref: '#/components/schemas/BTRules'
- auto_convert:
- description: 'Flags whether the rule converts the transaction automatically'
- type: boolean
- example: true
- matches_on_all:
- description: 'Flags whether all subrules are required for the match'
- type: boolean
- example: true
- applies_to:
- description: 'Flags whether the rule applies to a CREDIT or DEBIT'
- type: string
- example: CREDIT
+ example: Opnel5aKBz
client_id:
description: 'The client hashed id'
type: string
- example: AS3df3A
- vendor_id:
- description: 'The vendor hashed id'
+ example: Opnel5aKBz
+ status_id:
+ description: 'The invoice status variable'
type: string
- example: AS3df3A
- category_id:
- description: 'The category hashed id'
+ example: '4'
+ frequency_id:
+ description: 'The recurring invoice frequency'
+ type: number
+ example: '4'
+ remaining_cycles:
+ description: 'The number of invoices left to be generated'
+ type: number
+ example: '4'
+ number:
+ description: 'The recurringinvoice number - is a unique alpha numeric number per invoice per company'
type: string
- example: AS3df3A
- type: object
- CompanyToken:
- properties:
- name:
- description: 'The token name'
+ example: INV_101
+ po_number:
+ description: 'The purchase order associated with this recurring invoice'
type: string
- example: 'Token Name'
- token:
- description: 'The token value'
+ example: PO-1234
+ terms:
+ description: 'The invoice terms'
type: string
- example: AS3df3jUUH765fhfd9KJuidj3JShjA
- is_system:
- description: 'Determines whether the token is created by the system rather than a user'
+ example: 'These are invoice terms'
+ public_notes:
+ description: 'The public notes of the invoice'
+ type: string
+ example: 'These are some public notes'
+ private_notes:
+ description: 'The private notes of the invoice'
+ type: string
+ example: 'These are some private notes'
+ footer:
+ description: 'The invoice footer notes'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom field value'
+ type: string
+ example: '2022-10-01'
+ custom_value2:
+ description: 'A custom field value'
+ type: string
+ example: 'Something custom'
+ custom_value3:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ total_taxes:
+ description: 'The total taxes for the invoice'
+ type: number
+ format: float
+ example: '10.00'
+ line_items:
+ description: 'An array of objects which define the line items of the invoice'
+ type: object
+ example: ''
+ amount:
+ description: 'The invoice amount'
+ type: number
+ format: float
+ example: '10.00'
+ balance:
+ description: 'The invoice balance'
+ type: number
+ format: float
+ example: '10.00'
+ paid_to_date:
+ description: 'The amount paid on the invoice to date'
+ type: number
+ format: float
+ example: '10.00'
+ discount:
+ description: 'The invoice discount, can be an amount or a percentage'
+ type: number
+ format: float
+ example: '10.00'
+ partial:
+ description: 'The deposit/partial amount'
+ type: number
+ format: float
+ example: '10.00'
+ is_amount_discount:
+ description: 'Flag determining if the discount is an amount or a percentage'
type: boolean
- example: 'true'
- type: object
- CompanyUser:
- properties:
- permissions:
- description: 'The user permissionsfor this company in a comma separated list'
+ example: true
+ is_deleted:
+ description: 'Defines if the invoice has been deleted'
+ type: boolean
+ example: true
+ uses_inclusive_taxes:
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The Invoice Date'
type: string
- example: 'create_invoice,create_client,view_client'
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the invoice was sent out'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The Next date for a reminder to be sent'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the deposit/partial amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date of the invoice'
+ type: string
+ format: date
+ example: '1994-07-30'
settings:
- description: 'Settings that are used for the flutter applications to store user preferences / metadata'
- type: object
- readOnly: true
- react_settings:
- description: 'Dedicated settings object for the react web application'
- type: object
- readOnly: true
- is_owner:
- description: 'Determines whether the user owns this company'
- type: boolean
- example: true
- readOnly: true
- is_admin:
- description: 'Determines whether the user is the admin of this company'
- type: boolean
- example: true
- readOnly: true
- is_locked:
- description: 'Determines whether the users access to this company has been locked'
- type: boolean
- example: true
- readOnly: true
+ $ref: '#/components/schemas/CompanySettings'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
updated_at:
- description: 'The last time the record was modified, format Unix Timestamp'
- type: integer
- example: '1231232312321'
- deleted_at:
- description: 'Timestamp when the user was archived, format Unix Timestamp'
- type: integer
- example: '12312312321'
- account:
- $ref: '#/components/schemas/Account'
- company:
- $ref: '#/components/schemas/Company'
- user:
- $ref: '#/components/schemas/User'
- token:
- $ref: '#/components/schemas/CompanyToken'
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ custom_surcharge1:
+ description: 'First Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
type: object
- InvoiceInvitationRequest:
- required:
- - client_contact_id
+
+ Quote:
properties:
id:
- description: 'The entity invitation hashed id'
+ description: 'The unique hashed identifier for the quote'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The unique hashed identifier for the user who created the quote'
+ type: string
+ example: ''
+ assigned_user_id:
+ description: 'The unique hashed identifier for the user assigned to the quote'
+ type: string
+ example: ''
+ client_id:
+ description: 'The unique hashed identifier for the client associated with the quote'
+ type: string
+ example: ''
+ status_id:
+ description: 'The status of the quote represented by a unique identifier'
+ type: string
+ example: ''
+ number:
+ description: 'The unique alpha-numeric quote number for the quote per company'
+ type: string
+ example: QUOTE_101
+ po_number:
+ description: 'The purchase order number associated with the quote'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The terms and conditions for the quote'
+ type: string
+ example: 'These are some quote terms. Valid for 14 days.'
+ public_notes:
+ description: 'Publicly visible notes associated with the quote'
+ type: string
+ example: 'These are public notes which the client may see'
+ private_notes:
+ description: 'Privately visible notes associated with the quote, not disclosed to the client'
+ type: string
+ example: 'These are private notes, not to be disclosed to the client'
+ footer:
+ description: 'The footer text of the quote'
+ type: string
+ example: 'The text goes in the footer of the quote'
+ custom_value1:
+ description: 'First custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value2:
+ description: 'Second custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value3:
+ description: 'Third custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ custom_value4:
+ description: 'Fourth custom value field for additional information'
+ type: string
+ example: 'A custom value'
+ tax_name1:
+ description: 'The name of the first tax applied to the quote'
+ type: string
+ example: GST
+ tax_name2:
+ description: 'The name of the second tax applied to the quote'
+ type: string
+ example: VAT
+ tax_rate1:
+ description: 'The rate of the first tax applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ tax_rate2:
+ description: 'The rate of the second tax applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ tax_name3:
+ description: 'The name of the third tax applied to the quote'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The rate of the third tax applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ total_taxes:
+ description: 'The total amount of taxes for the quote'
+ type: number
+ format: float
+ example: 10.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the quote'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ amount:
+ description: 'The total amount of the quote before taxes and discounts'
+ type: number
+ format: float
+ example: 10.00
+ balance:
+ description: 'The balance due for the quote after accounting for payments'
+ type: number
+ format: float
+ example: 10.00
+ paid_to_date:
+ description: 'The total amount paid on the quote so far'
+ type: number
+ format: float
+ example: 10.00
+ discount:
+ description: 'The discount amount or percentage applied to the quote'
+ type: number
+ format: float
+ example: 10.00
+ partial:
+ description: 'The partial or deposit amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ is_amount_discount:
+ description: 'Boolean flag indicating if the discount is a fixed amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag indicating if the quote has been deleted'
+ type: boolean
+ example: false
+ uses_inclusive_taxes:
+ description: 'Boolean flag indicating if the taxes used are inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The date the quote was created'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the quote was sent to the client'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The next scheduled date for sending a reminder for the quote'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the partial or deposit amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date for the total amount of the quote'
+ type: string
+ format: date
+ example: '1994-07-30'
+ settings:
+ $ref: '#/components/schemas/CompanySettings'
+ last_viewed:
+ description: 'The timestamp of the last time the quote was viewed'
+ type: number
+ format: integer
+ example: 1434342123
+ updated_at:
+ description: 'The timestamp of the last update to the quote'
+ type: number
+ format: integer
+ example: 1434342123
+ archived_at:
+ description: 'The timestamp of when the quote was archived'
+ type: number
+ format: integer
+ example: 1434342123
+ custom_surcharge1:
+ description: 'First custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge2:
+ description: 'Second custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge3:
+ description: 'Third custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge4:
+ description: 'Fourth custom surcharge amount for the quote'
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge_tax1:
+ description: 'Boolean flag indicating if taxes are charged on the first custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Boolean flag indicating if taxes are charged on the second custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Boolean flag indicating if taxes are charged on the third custom surcharge amount'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Boolean flag indicating if taxes are charged on the fourth custom surcharge amount'
+ type: boolean
+ example: true
+ type: object
+ Invoice:
+ properties:
+ id:
+ description: 'The invoice hashed id'
type: string
example: Opnel5aKBz
readOnly: true
- client_contact_id:
- description: 'The client contact hashed id'
+ user_id:
+ description: 'The user hashed id'
type: string
example: Opnel5aKBz
- key:
- description: 'The invitation key'
- type: string
- example: Opnel5aKBz4343343566236gvbb
readOnly: true
- link:
- description: 'The invitation link'
+ assigned_user_id:
+ description: 'The assigned user hashed id'
type: string
- example: 'https://www.example.com/invitations/Opnel5aKBz4343343566236gvbb'
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ status_id:
+ description: 'The invoice status variable'
+ type: string
+ example: '4'
+ number:
+ description: 'The invoice number - is a unique alpha numeric number per invoice per company'
+ type: string
+ example: INV_101
+ po_number:
+ description: 'The purchase order associated with this invoice'
+ type: string
+ example: PO-1234
+ terms:
+ description: 'The invoice terms'
+ type: string
+ example: 'These are invoice terms'
+ public_notes:
+ description: 'The public notes of the invoice'
+ type: string
+ example: 'These are some public notes'
+ private_notes:
+ description: 'The private notes of the invoice'
+ type: string
+ example: 'These are some private notes'
+ footer:
+ description: 'The invoice footer notes'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom field value'
+ type: string
+ example: '2022-10-01'
+ custom_value2:
+ description: 'A custom field value'
+ type: string
+ example: 'Something custom'
+ custom_value3:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom field value'
+ type: string
+ example: ''
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ total_taxes:
+ description: 'The total taxes for the invoice'
+ type: number
+ format: float
+ example: '10.00'
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ invitations:
+ type: array
+ description: 'An array of objects which define the invitations of the invoice'
+ items:
+ $ref: '#/components/schemas/InvoiceInvitation'
+ amount:
+ description: 'The invoice amount'
+ type: number
+ format: float
+ example: '10.00'
+ balance:
+ description: 'The invoice balance'
+ type: number
+ format: float
+ example: '10.00'
+ paid_to_date:
+ description: 'The amount paid on the invoice to date'
+ type: number
+ format: float
+ example: '10.00'
+ discount:
+ description: 'The invoice discount, can be an amount or a percentage'
+ type: number
+ format: float
+ example: '10.00'
+ partial:
+ description: 'The deposit/partial amount'
+ type: number
+ format: float
+ example: '10.00'
+ is_amount_discount:
+ description: 'Flag determining if the discount is an amount or a percentage'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Defines if the invoice has been deleted'
+ type: boolean
+ example: true
+ uses_inclusive_taxes:
+ description: 'Defines the type of taxes used as either inclusive or exclusive'
+ type: boolean
+ example: true
+ date:
+ description: 'The Invoice Date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_sent_date:
+ description: 'The last date the invoice was sent out'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The Next date for a reminder to be sent'
+ type: string
+ format: date
+ example: '1994-07-30'
+ partial_due_date:
+ description: 'The due date for the deposit/partial amount'
+ type: string
+ format: date
+ example: '1994-07-30'
+ due_date:
+ description: 'The due date of the invoice'
+ type: string
+ format: date
+ example: '1994-07-30'
+ last_viewed:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ custom_surcharge1:
+ description: 'First Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ project_id:
+ description: 'The project associated with this invoice'
+ type: string
+ example: Opnel5aKBz
+ auto_bill_tries:
+ description: 'The number of times the invoice has attempted to be auto billed'
+ type: integer
+ example: '1'
readOnly: true
- sent_date:
- description: 'The invitation sent date'
+ auto_bill_enabled:
+ description: 'Boolean flag determining if the invoice is set to auto bill'
+ type: boolean
+ example: true
+ subscription_id:
+ description: 'The subscription associated with this invoice'
type: string
- format: date-time
+ example: Opnel5aKBz
+
+ type: object
+ ClientRequest:
+ required:
+ - contacts
+ - country_id
+ properties:
+ id:
+ description: 'The unique identifier of the client'
+ type: string
+ example: Opnel5aKBz
readOnly: true
- viewed_date:
- description: 'The invitation viewed date'
+ contacts:
+ type: array
+ description: 'A list of contacts associated with the client'
+ items:
+ $ref: '#/components/schemas/ClientContactRequest'
+ name:
+ description: 'The name of the client company or organization'
type: string
- format: date-time
+ example: "Jim's Housekeeping"
+ website:
+ description: 'The website URL of the client company or organization'
+ type: string
+ example: 'https://www.jims-housekeeping.com'
+ private_notes:
+ description: 'Notes that are only visible to the user who created the client'
+ type: string
+ example: 'Client prefers email communication over phone calls'
+ industry_id:
+ description: 'The unique identifier of the industry the client operates in'
+ type: number
+ example: '5'
+ size_id:
+ description: 'The unique identifier for the size category of the client company or organization'
+ type: number
+ example: '2'
+ address1:
+ description: "First line of the client's address"
+ type: string
+ example: '123 Main St'
+ address2:
+ description: "Second line of the client's address, if needed"
+ type: string
+ example: 'Apt 4B'
+ city:
+ description: 'The city the client is located in'
+ type: string
+ example: 'Beverly Hills'
+ state:
+ description: 'The state, province, or locality the client is located in'
+ type: string
+ example: 'California'
+ postal_code:
+ description: 'The postal code or ZIP code of the client'
+ type: string
+ example: '90210'
+ phone:
+ description: "The client's phone number"
+ type: string
+ example: '555-3434-3434'
+ country_id:
+ description: "The unique identifier of the client's country"
+ type: number
+ format: integer
+ example: '1'
+ custom_value1:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Preferred contact: Email'
+ custom_value2:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Account manager: John Doe'
+ custom_value3:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'VIP client: Yes'
+ custom_value4:
+ description: 'A custom field for storing additional information'
+ type: string
+ example: 'Annual contract value: $50,000'
+ vat_number:
+ description: "The client's VAT (Value Added Tax) number, if applicable"
+ type: string
+ example: 'VAT123456'
+ id_number:
+ description: 'A unique identification number for the client, such as a tax ID or business registration number'
+ type: string
+ number:
+ description: 'A system-assigned unique number for the client, typically used for invoicing purposes'
+ type: string
+ example: 'CL-0001'
+ shipping_address1:
+ description: "First line of the client's shipping address"
+ type: string
+ example: '5 Wallaby Way'
+ shipping_address2:
+ description: "Second line of the client's shipping address, if needed"
+ type: string
+ example: 'Suite 5'
+ shipping_city:
+ description: "The city of the client's shipping address"
+ type: string
+ example: 'Perth'
+ shipping_state:
+ description: "The state, province, or locality of the client's shipping address"
+ type: string
+ example: 'Western Australia'
+ shipping_postal_code:
+ description: "The postal code or ZIP code of the client's shipping address"
+ type: string
+ example: '6110'
+ shipping_country_id:
+ description: "The unique identifier of the country for the client's shipping address"
+ type: number
+ format: integer
+ example: '4'
+ is_deleted:
+ description: 'A boolean value indicating whether the client has been deleted or not'
+ type: boolean
+ example: false
readOnly: true
- opened_date:
- description: 'The invitation opened date'
+ group_settings_id:
+ description: 'The group settings assigned to the client'
type: string
- format: date-time
+ example: Opnel5aKBz
+ routing_id:
+ description: 'The routing address id for e-invoicing for this client'
+ type: string
+ example: Opnel5aKBz3489-dfkiu-2239-sdsd
+ is_tax_exempt:
+ description: 'Flag which defines if the client is exempt from taxes'
+ type: boolean
+ example: false
+ has_valid_vat_number:
+ description: 'Flag which defines if the client has a valid VAT number'
+ type: boolean
+ example: false
+ readOnly: true
+ classification:
+ description: 'The classification of the client'
+ type: string
+ example: 'individual'
+ settings:
+ $ref: '#/components/schemas/ClientSettings'
+ type: object
+ Vendor:
+ properties:
+ id:
+ description: 'The hashed id of the vendor. This is a unique identifier for the vendor.'
+ type: string
+ example: Opnel5aKBz
+ readOnly: true
+ user_id:
+ description: 'The hashed id of the user who created the vendor. This is a unique identifier for the user.'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The hashed id of the assigned user to this vendor. This is a unique identifier for the user.'
+ type: string
+ example: Opnel5aKBz
+ contacts:
+ type: array
+ items:
+ $ref: '#/components/schemas/VendorContact'
+ description: 'An array of contacts associated with the vendor.'
+ name:
+ description: 'The name of the vendor.'
+ type: string
+ example: 'Harry cafe de wheels'
+ classification:
+ description: 'The classification of the vendor.'
+ type: string
+ example: 'individual'
+ website:
+ description: 'The website of the vendor.'
+ type: string
+ example: www.harry.com
+ private_notes:
+ description: 'The private notes of the vendor. These notes are only visible to users with appropriate permissions.'
+ type: string
+ example: 'Shhh, do not tell the vendor'
+ industry_id:
+ description: 'The industry id of the vendor. This is a unique identifier for the industry.'
+ type: string
+ example: '1'
+ size_id:
+ description: 'The size id of the vendor. This is a unique identifier for the size of the vendor.'
+ type: string
+ example: ''
+ address1:
+ description: 'The first line of the vendor''s address.'
+ type: string
+ example: ''
+ address2:
+ description: 'The second line of the vendor''s address.'
+ type: string
+ example: ''
+ city:
+ description: 'The city of the vendor''s address.'
+ type: string
+ example: ''
+ state:
+ description: 'The state of the vendor''s address.'
+ type: string
+ example: ''
+ postal_code:
+ description: 'The postal code of the vendor''s address.'
+ type: string
+ example: ''
+ phone:
+ description: 'The phone number of the vendor.'
+ type: string
+ example: 555-3434-3434
+ country_id:
+ description: 'The country id of the vendor. This is a unique identifier for the country.'
+ type: string
+ example: ''
+ currency_id:
+ description: 'The currency id of the vendor. This is a unique identifier for the currency.'
+ type: string
+ example: '4'
+ custom_value1:
+ description: 'The value of the first custom field for the vendor.'
+ type: string
+ example: ''
+ custom_value2:
+ description: 'The value of the second custom field for the vendor.'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'The value of the third custom field for the vendor.'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'The value of the fourth custom field for the vendor.'
+ type: string
+ example: ''
+ vat_number:
+ description: 'The VAT number of the vendor.'
+ type: string
+ example: ''
+ id_number:
+ description: 'The ID number of the vendor.'
+ type: string
+ example: ''
+ number:
+ description: 'The number of the vendor'
+ type: string
+ example: '11234'
+ is_deleted:
+ description: 'Boolean flag determining if the vendor has been deleted'
+ type: boolean
+ example: true
+ language_id:
+ description: 'The language id of the vendor. This is a unique identifier for the language.'
+ type: string
+ example: '1'
+ vendor_hash:
+ description: 'The vendor hash of the vendor. This is a unique identifier for the vendor.'
+ type: string
+ example: 'aaa-sss-www'
+ readOnly: true
+ transaction_name:
+ description: 'The transaction name of the vendor.'
+ type: string
+ example: 'aaa-sss-www'
+ last_login:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ created_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
readOnly: true
updated_at:
- description: 'Timestamp'
+ description: Timestamp
+ type: number
+ format: integer
+ example: '134341234234'
+ readOnly: true
+ display_name:
+ description: 'The display name of the vendor.'
+ type: string
+ example: 'Bob the vendor'
+ readOnly: true
+ type: object
+ ClientSettings:
+ required:
+ - currency_id
+ properties:
+ currency_id:
+ description: 'The default currency id'
+ type: string
+ example: true
+ timezone_id:
+ description: 'The timezone id'
+ type: string
+ example: '15'
+ date_format_id:
+ description: 'The date format id'
+ type: string
+ example: '15'
+ military_time:
+ description: 'Toggles 12/24 hour time'
+ type: boolean
+ example: true
+ language_id:
+ description: 'The language id'
+ type: string
+ example: '1'
+ show_currency_code:
+ description: 'Toggles whether the currency symbol or code is shown'
+ type: boolean
+ example: true
+ payment_terms:
+ description: '-1 sets no payment term, 0 sets payment due immediately, positive integers indicates payment terms in days'
+ type: integer
+ example: '1'
+ company_gateway_ids:
+ description: 'A commad separate list of available gateways'
+ type: string
+ example: '1,2,3,4'
+ custom_value1:
+ description: 'A Custom Label'
+ type: string
+ example: 'Custom Label'
+ custom_value2:
+ description: 'A Custom Label'
+ type: string
+ example: 'Custom Label'
+ custom_value3:
+ description: 'A Custom Label'
+ type: string
+ example: 'Custom Label'
+ custom_value4:
+ description: 'A Custom Label'
+ type: string
+ example: 'Custom Label'
+ default_task_rate:
+ description: 'The default task rate'
+ type: number
+ format: float
+ example: '10.00'
+ send_reminders:
+ description: 'Toggles whether reminders are sent'
+ type: boolean
+ example: true
+ enable_client_portal_tasks:
+ description: 'Show/hide the tasks panel in the client portal'
+ type: boolean
+ example: true
+ email_style:
+ description: 'options include plain,light,dark,custom'
+ type: string
+ example: light
+ reply_to_email:
+ description: 'The reply to email address'
+ type: string
+ example: email@gmail.com
+ bcc_email:
+ description: 'A comma separate list of BCC emails'
+ type: string
+ example: 'email@gmail.com, contact@gmail.com'
+ pdf_email_attachment:
+ description: 'Toggles whether to attach PDF as attachment'
+ type: boolean
+ example: true
+ ubl_email_attachment:
+ description: 'Toggles whether to attach UBL as attachment'
+ type: boolean
+ example: true
+ email_style_custom:
+ description: 'The custom template'
+ type: string
+ example: ''
+ counter_number_applied:
+ description: 'enum when the invoice number counter is set, ie when_saved, when_sent, when_paid'
+ type: string
+ example: when_sent
+ quote_number_applied:
+ description: 'enum when the quote number counter is set, ie when_saved, when_sent'
+ type: string
+ example: when_sent
+ custom_message_dashboard:
+ description: 'A custom message which is displayed on the dashboard'
+ type: string
+ example: 'Please pay invoices immediately'
+ custom_message_unpaid_invoice:
+ description: 'A custom message which is displayed in the client portal when a client is viewing a unpaid invoice.'
+ type: string
+ example: 'Please pay invoices immediately'
+ custom_message_paid_invoice:
+ description: 'A custom message which is displayed in the client portal when a client is viewing a paid invoice.'
+ type: string
+ example: 'Thanks for paying this invoice!'
+ custom_message_unapproved_quote:
+ description: 'A custom message which is displayed in the client portal when a client is viewing a unapproved quote.'
+ type: string
+ example: 'Please approve quote'
+ lock_invoices:
+ description: 'Toggles whether invoices are locked once sent and cannot be modified further'
+ type: boolean
+ example: true
+ auto_archive_invoice:
+ description: 'Toggles whether a invoice is archived immediately following payment'
+ type: boolean
+ example: true
+ auto_archive_quote:
+ description: 'Toggles whether a quote is archived after being converted to a invoice'
+ type: boolean
+ example: true
+ auto_convert_quote:
+ description: 'Toggles whether a quote is converted to a invoice when approved'
+ type: boolean
+ example: true
+ inclusive_taxes:
+ description: 'Boolean flag determining whether inclusive or exclusive taxes are used'
+ type: boolean
+ example: true
+ task_number_pattern:
+ description: 'Allows customisation of the task number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ task_number_counter:
+ description: 'The incrementing counter for tasks'
+ type: integer
+ example: '1'
+ reminder_send_time:
+ description: 'Time from UTC +0 when the email will be sent to the client'
+ type: integer
+ example: '32400'
+ expense_number_pattern:
+ description: 'Allows customisation of the expense number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ expense_number_counter:
+ description: 'The incrementing counter for expenses'
+ type: integer
+ example: '1'
+ vendor_number_pattern:
+ description: 'Allows customisation of the vendor number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ vendor_number_counter:
+ description: 'The incrementing counter for vendors'
+ type: integer
+ example: '1'
+ ticket_number_pattern:
+ description: 'Allows customisation of the ticket number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ ticket_number_counter:
+ description: 'The incrementing counter for tickets'
+ type: integer
+ example: '1'
+ payment_number_pattern:
+ description: 'Allows customisation of the payment number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ payment_number_counter:
+ description: 'The incrementing counter for payments'
+ type: integer
+ example: '1'
+ invoice_number_pattern:
+ description: 'Allows customisation of the invoice number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ invoice_number_counter:
+ description: 'The incrementing counter for invoices'
+ type: integer
+ example: '1'
+ quote_number_pattern:
+ description: 'Allows customisation of the quote number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ quote_number_counter:
+ description: 'The incrementing counter for quotes'
+ type: integer
+ example: '1'
+ client_number_pattern:
+ description: 'Allows customisation of the client number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ client_number_counter:
+ description: 'The incrementing counter for clients'
+ type: integer
+ example: '1'
+ credit_number_pattern:
+ description: 'Allows customisation of the credit number pattern'
+ type: string
+ example: '{$year}-{$counter}'
+ credit_number_counter:
+ description: 'The incrementing counter for credits'
+ type: integer
+ example: '1'
+ recurring_invoice_number_prefix:
+ description: 'This string is prepended to the recurring invoice number'
+ type: string
+ example: R
+ reset_counter_frequency_id:
+ description: 'CONSTANT which is used to apply the frequency which the counters are reset'
+ type: integer
+ example: '1'
+ reset_counter_date:
+ description: 'The explicit date which is used to reset counters'
+ type: string
+ example: '2019-01-01'
+ counter_padding:
+ description: 'Pads the counter with leading zeros'
+ type: integer
+ example: '1'
+ shared_invoice_quote_counter:
+ description: 'Flags whether to share the counter for invoices and quotes'
+ type: boolean
+ example: true
+ update_products:
+ description: 'Determines if client fields are updated from third party APIs'
+ type: boolean
+ example: true
+ convert_products:
+ description: ''
+ type: boolean
+ example: true
+ fill_products:
+ description: 'Automatically fill products based on product_key'
+ type: boolean
+ example: true
+ invoice_terms:
+ description: 'The default invoice terms'
+ type: string
+ example: 'Invoice Terms are...'
+ quote_terms:
+ description: 'The default quote terms'
+ type: string
+ example: 'Quote Terms are...'
+ invoice_taxes:
+ description: 'Taxes can be applied to the invoice'
+ type: number
+ example: '1'
+ invoice_design_id:
+ description: 'The default design id (invoice, quote etc)'
+ type: string
+ example: '1'
+ quote_design_id:
+ description: 'The default design id (invoice, quote etc)'
+ type: string
+ example: '1'
+ invoice_footer:
+ description: 'The default invoice footer'
+ type: string
+ example: '1'
+ invoice_labels:
+ description: 'JSON string of invoice labels'
+ type: string
+ example: '1'
+ tax_rate1:
+ description: 'The tax rate (float)'
+ type: number
+ example: '10'
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: GST
+ tax_rate2:
+ description: 'The tax rate (float)'
+ type: number
+ example: '10'
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: GST
+ tax_rate3:
+ description: 'The tax rate (float)'
+ type: number
+ example: '10'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: GST
+ payment_type_id:
+ description: 'The default payment type id'
+ type: string
+ example: '1'
+ custom_fields:
+ description: 'JSON string of custom fields'
+ type: string
+ example: '{}'
+ email_footer:
+ description: 'The default email footer'
+ type: string
+ example: 'A default email footer'
+ email_sending_method:
+ description: 'The email driver to use to send email, options include default, gmail'
+ type: string
+ example: default
+ gmail_sending_user_id:
+ description: 'The hashed_id of the user account to send email from'
+ type: string
+ example: F76sd34D
+ email_subject_invoice:
+ description: ''
+ type: string
+ example: 'Your Invoice Subject'
+ email_subject_quote:
+ description: ''
+ type: string
+ example: 'Your Quote Subject'
+ email_subject_payment:
+ description: ''
+ type: string
+ example: 'Your Payment Subject'
+ email_template_invoice:
+ description: 'The full template for invoice emails'
+ type: string
+ example: ''
+ email_template_quote:
+ description: 'The full template for quote emails'
+ type: string
+ example: ''
+ email_template_payment:
+ description: 'The full template for payment emails'
+ type: string
+ example: ''
+ email_subject_reminder1:
+ description: 'Email subject for Reminder'
+ type: string
+ example: ''
+ email_subject_reminder2:
+ description: 'Email subject for Reminder'
+ type: string
+ example: ''
+ email_subject_reminder3:
+ description: 'Email subject for Reminder'
+ type: string
+ example: ''
+ email_subject_reminder_endless:
+ description: 'Email subject for endless reminders'
+ type: string
+ example: ''
+ email_template_reminder1:
+ description: 'The full template for Reminder 1'
+ type: string
+ example: ''
+ email_template_reminder2:
+ description: 'The full template for Reminder 2'
+ type: string
+ example: ''
+ email_template_reminder3:
+ description: 'The full template for Reminder 3'
+ type: string
+ example: ''
+ email_template_reminder_endless:
+ description: 'The full template for enless reminders'
+ type: string
+ example: ''
+ enable_portal_password:
+ description: 'Toggles whether a password is required to log into the client portal'
+ type: boolean
+ example: true
+ show_accept_invoice_terms:
+ description: 'Toggles whether the terms dialogue is shown to the client'
+ type: boolean
+ example: true
+ show_accept_quote_terms:
+ description: 'Toggles whether the terms dialogue is shown to the client'
+ type: boolean
+ example: true
+ require_invoice_signature:
+ description: 'Toggles whether a invoice signature is required'
+ type: boolean
+ example: true
+ require_quote_signature:
+ description: 'Toggles whether a quote signature is required'
+ type: boolean
+ example: true
+ name:
+ description: 'The company name'
+ type: string
+ example: 'Acme Co'
+ company_logo:
+ description: 'The company logo file'
+ type: object
+ example: logo.png
+ website:
+ description: 'The company website URL'
+ type: string
+ example: www.acme.com
+ address1:
+ description: 'The company address line 1'
+ type: string
+ example: 'Suite 888'
+ address2:
+ description: 'The company address line 2'
+ type: string
+ example: '5 Jimbo Way'
+ city:
+ description: 'The company city'
+ type: string
+ example: Sydney
+ state:
+ description: 'The company state'
+ type: string
+ example: Florisa
+ postal_code:
+ description: 'The company zip/postal code'
+ type: string
+ example: '90210'
+ phone:
+ description: 'The company phone'
+ type: string
+ example: 555-213-3948
+ email:
+ description: 'The company email'
+ type: string
+ example: joe@acme.co
+ country_id:
+ description: 'The country ID'
+ type: string
+ example: '1'
+ vat_number:
+ description: 'The company VAT/TAX ID number'
+ type: string
+ example: '32 120 377 720'
+ page_size:
+ description: 'The default page size'
+ type: string
+ example: A4
+ font_size:
+ description: 'The font size'
+ type: number
+ example: '9'
+ primary_font:
+ description: 'The primary font'
+ type: string
+ example: roboto
+ secondary_font:
+ description: 'The secondary font'
+ type: string
+ example: roboto
+ hide_paid_to_date:
+ description: 'Flags whether to hide the paid to date field'
+ type: boolean
+ example: false
+ embed_documents:
+ description: 'Toggled whether to embed documents in the PDF'
+ type: boolean
+ example: false
+ all_pages_header:
+ description: 'The header for the PDF'
+ type: boolean
+ example: false
+ all_pages_footer:
+ description: 'The footer for the PDF'
+ type: boolean
+ example: false
+ document_email_attachment:
+ description: 'Toggles whether to attach documents in the email'
+ type: boolean
+ example: false
+ enable_client_portal_password:
+ description: 'Toggles password protection of the client portal'
+ type: boolean
+ example: false
+ enable_email_markup:
+ description: 'Toggles the use of markdown in emails'
+ type: boolean
+ example: false
+ enable_client_portal_dashboard:
+ description: 'Toggles whether the client dashboard is shown in the client portal'
+ type: boolean
+ example: false
+ enable_client_portal:
+ description: 'Toggles whether the entire client portal is displayed to the client, or only the context'
+ type: boolean
+ example: false
+ email_template_statement:
+ description: 'The body of the email for statements'
+ type: string
+ example: 'template matter'
+ email_subject_statement:
+ description: 'The subject of the email for statements'
+ type: string
+ example: 'subject matter'
+ signature_on_pdf:
+ description: 'Toggles whether the signature (if available) is displayed on the PDF'
+ type: boolean
+ example: false
+ quote_footer:
+ description: 'The default quote footer'
+ type: string
+ example: 'the quote footer'
+ email_subject_custom1:
+ description: 'Custom reminder template subject'
+ type: string
+ example: 'Custom Subject 1'
+ email_subject_custom2:
+ description: 'Custom reminder template subject'
+ type: string
+ example: 'Custom Subject 2'
+ email_subject_custom3:
+ description: 'Custom reminder template subject'
+ type: string
+ example: 'Custom Subject 3'
+ email_template_custom1:
+ description: 'Custom reminder template body'
+ type: string
+ example: ''
+ email_template_custom2:
+ description: 'Custom reminder template body'
+ type: string
+ example: ''
+ email_template_custom3:
+ description: 'Custom reminder template body'
+ type: string
+ example: ''
+ enable_reminder1:
+ description: 'Toggles whether this reminder is enabled'
+ type: boolean
+ example: false
+ enable_reminder2:
+ description: 'Toggles whether this reminder is enabled'
+ type: boolean
+ example: false
+ enable_reminder3:
+ description: 'Toggles whether this reminder is enabled'
+ type: boolean
+ example: false
+ num_days_reminder1:
+ description: 'The Reminder interval'
+ type: number
+ example: '9'
+ num_days_reminder2:
+ description: 'The Reminder interval'
+ type: number
+ example: '9'
+ num_days_reminder3:
+ description: 'The Reminder interval'
+ type: number
+ example: '9'
+ schedule_reminder1:
+ description: '(enum: after_invoice_date, before_due_date, after_due_date)'
+ type: string
+ example: after_invoice_date
+ schedule_reminder2:
+ description: '(enum: after_invoice_date, before_due_date, after_due_date)'
+ type: string
+ example: after_invoice_date
+ schedule_reminder3:
+ description: '(enum: after_invoice_date, before_due_date, after_due_date)'
+ type: string
+ example: after_invoice_date
+ late_fee_amount1:
+ description: 'The late fee amount for reminder 1'
+ type: number
+ example: 10
+ late_fee_amount2:
+ description: 'The late fee amount for reminder 2'
+ type: number
+ example: 20
+ late_fee_amount3:
+ description: 'The late fee amount for reminder 2'
+ type: number
+ example: 100
+ endless_reminder_frequency_id:
+ description: 'The frequency id of the endless reminder'
+ type: string
+ example: '1'
+ client_online_payment_notification:
+ description: 'Determines if a client should receive the notification for a online payment'
+ type: boolean
+ example: false
+ client_manual_payment_notification:
+ description: 'Determines if a client should receive the notification for a manually entered payment'
+ type: boolean
+ example: false
+ enable_e_invoice:
+ description: 'Determines if e-invoicing is enabled'
+ type: boolean
+ example: false
+ default_expense_payment_type_id:
+ description: 'The default payment type for expenses'
+ type: string
+ example: '0'
+ e_invoice_type:
+ description: 'The e-invoice type'
+ type: string
+ example: 'EN16931'
+ mailgun_endpoint:
+ description: 'The mailgun endpoint - used to determine whether US or EU endpoints are used'
+ type: string
+ example: 'api.mailgun.net or api.eu.mailgun.net'
+ client_initiated_payments:
+ description: 'Determines if clients can initiate payments directly from the client portal'
+ type: boolean
+ example: false
+ client_initiated_payments_minimum:
+ description: 'The minimum amount a client can pay'
+ type: number
+ example: 10
+ sync_invoice_quote_columns:
+ description: 'Determines if invoice and quote columns are synced for the PDF rendering, or if they use their own columns'
+ type: boolean
+ example: false
+ show_task_item_description:
+ description: 'Determines if the task item description is shown on the invoice'
+ type: boolean
+ example: false
+ allow_billable_task_items:
+ description: 'Determines if task items can be marked as billable'
+ type: boolean
+ example: false
+ accept_client_input_quote_approval:
+ description: 'Determines if clients can approve quotes and also pass through a PO Number reference'
+ type: boolean
+ example: false
+ custom_sending_email:
+ description: 'When using Mailgun or Postmark, the FROM email address can be customized using this setting.'
+ type: string
+ example: 'bob@gmail.com'
+ show_paid_stamp:
+ description: 'Determines if the PAID stamp is shown on the invoice'
+ type: boolean
+ example: false
+ show_shipping_address:
+ description: 'Determines if the shipping address is shown on the invoice'
+ type: boolean
+ example: false
+ company_logo_size:
+ description: 'The size of the company logo on the PDF - percentage value between 0 and 100'
+ type: number
+ example: 100
+ show_email_footer:
+ description: 'Determines if the email footer is shown on emails'
+ type: boolean
+ example: false
+ email_alignment:
+ description: 'The alignment of the email body text, options include left / center / right'
+ type: string
+ example: 'left'
+ auto_bill_standard_invoices:
+ description: 'Determines if standard invoices are automatically billed when they are created or due'
+ type: boolean
+ example: false
+ postmark_secret:
+ description: 'The Postmark secret API key'
+ type: string
+ example: '123456'
+ mailgun_secret:
+ description: 'The Mailgun secret API key'
+ type: string
+ example: '123456'
+ mailgun_domain:
+ description: 'The Mailgun domain'
+ type: string
+ example: 'sandbox123456.mailgun.org'
+ send_email_on_mark_paid:
+ description: 'Determines if an email is sent when an invoice is marked as paid'
+ type: boolean
+ example: false
+ vendor_portal_enable_uploads:
+ description: 'Determines if vendors can upload files to the portal'
+ type: boolean
+ example: false
+ besr_id:
+ description: 'The BESR ID'
+ type: string
+ example: '123456'
+ qr_iban:
+ description: 'The IBAN for the QR code'
+ type: string
+ example: 'CH123456'
+ email_subject_purchase_order:
+ description: 'The email subject for purchase orders'
+ type: string
+ example: 'Purchase Order'
+ email_template_purchase_order:
+ description: 'The email template for purchase orders'
+ type: string
+ example: 'Please see attached your purchase order.'
+ require_purchase_order_signature:
+ description: 'Determines if a signature is required on purchase orders'
+ type: boolean
+ example: false
+ purchase_order_public_notes:
+ description: 'The public notes for purchase orders'
+ type: string
+ example: 'Please see attached your purchase order.'
+ purchase_order_terms:
+ description: 'The terms for purchase orders'
+ type: string
+ example: 'Please see attached your purchase order.'
+ purchase_order_footer:
+ description: 'The footer for purchase orders'
+ type: string
+ example: 'Please see attached your purchase order.'
+ purchase_order_design_id:
+ description: 'The design id for purchase orders'
+ type: string
+ example: 'hd677df'
+ purchase_order_number_pattern:
+ description: 'The pattern for purchase order numbers'
+ type: string
+ example: 'PO-000000'
+ purchase_order_number_counter:
+ description: 'The counter for purchase order numbers'
+ type: number
+ example: 1
+ page_numbering_alignment:
+ description: 'The alignment for page numbering: options include left / center / right'
+ type: string
+ example: 'left'
+ page_numbering:
+ description: 'Determines if page numbering is enabled on Document PDFs'
+ type: boolean
+ example: false
+ auto_archive_invoice_cancelled:
+ description: 'Determines if invoices are automatically archived when they are cancelled'
+ type: boolean
+ example: false
+ email_from_name:
+ description: 'The FROM name for emails when using Custom emailers'
+ type: string
+ example: 'Bob Smith'
+ show_all_tasks_client_portal:
+ description: 'Determines if all tasks are shown on the client portal'
+ type: boolean
+ example: false
+ entity_send_time:
+ description: 'The time that emails are sent. The time is localized to the clients locale, integer values from 1 - 24'
+ type: integer
+ example: 9
+ shared_invoice_credit_counter:
+ description: 'Determines if the invoice and credit counter are shared'
+ type: boolean
+ example: false
+ reply_to_name:
+ description: 'The reply to name for emails'
+ type: string
+ example: 'Bob Smith'
+ hide_empty_columns_on_pdf:
+ description: 'Determines if empty columns are hidden on PDFs'
+ type: boolean
+ example: false
+ enable_reminder_endless:
+ description: 'Determines if endless reminders are enabled'
+ type: boolean
+ example: false
+ use_credits_payment:
+ description: 'Determines if credits can be used as a payment method'
+ type: boolean
+ example: false
+ recurring_invoice_number_pattern:
+ description: 'The pattern for recurring invoice numbers'
+ type: string
+ example: 'R-000000'
+ recurring_invoice_number_counter:
+ description: 'The counter for recurring invoice numbers'
+ type: number
+ example: 1
+ client_portal_under_payment_minimum:
+ description: 'The minimum payment payment'
+ type: number
+ example: 10
+ auto_bill_date:
+ description: 'Determines when the invoices are auto billed, options are on_send_date (when the invoice is sent) or on_due_date (when the invoice is due))'
+ type: string
+ example: 'on_send_date'
+ primary_color:
+ description: 'The primary color for the client portal / document highlights'
+ type: string
+ example: '#ffffff'
+ secondary_color:
+ description: 'The secondary color for the client portal / document highlights'
+ type: string
+ example: '#ffffff'
+ client_portal_allow_under_payment:
+ description: 'Determines if clients can pay invoices under the invoice amount due'
+ type: boolean
+ example: false
+ client_portal_allow_over_payment:
+ description: 'Determines if clients can pay invoices over the invoice amount'
+ type: boolean
+ example: false
+ auto_bill:
+ description: 'Determines how autobilling is applied for recurring invoices. off (no auto billed), always (always auto bill), optin (The user must opt in to auto billing), optout (The user must opt out of auto billing'
+ type: string
+ example: 'off'
+ client_portal_terms:
+ description: 'The terms which are displayed on the client portal'
+ type: string
+ example: 'Please see attached your invoice.'
+ client_portal_privacy_policy:
+ description: 'The privacy policy which is displayed on the client portal'
+ type: string
+ example: 'These are the terms of use for using the client portal.'
+ client_can_register:
+ description: 'Determines if clients can register on the client portal'
+ type: boolean
+ example: false
+ portal_design_id:
+ description: 'The design id for the client portal'
+ type: string
+ example: 'hd677df'
+ late_fee_endless_percent:
+ description: 'The late fee percentage for endless late fees'
+ type: number
+ example: 10
+ late_fee_endless_amount:
+ description: 'The late fee amount for endless late fees'
+ type: number
+ example: 10
+ auto_email_invoice:
+ description: 'Determines if invoices are automatically emailed when they are created'
+ type: boolean
+ example: false
+ email_signature:
+ description: 'The email signature for emails'
+ type: string
+ example: 'Bob Smith'
+ type: object
+ RecurringExpense:
+ properties:
+ id:
+ description: 'The hashed id of the recurring expense'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The hashed id of the user who created the recurring expense'
+ type: string
+ example: Opnel5aKBz
+ assigned_user_id:
+ description: 'The hashed id of the user assigned to this recurring expense'
+ type: string
+ example: Opnel5aKBz
+ client_id:
+ description: 'The hashed id of the client'
+ type: string
+ example: Opnel5aKBz
+ invoice_id:
+ description: 'The hashed id of the invoice'
+ type: string
+ example: Opnel5aKBz
+ bank_id:
+ description: 'The id of the bank associated with this recurring expense'
+ type: string
+ example: '22'
+ invoice_currency_id:
+ description: 'The currency id of the invoice associated with this recurring expense'
+ type: string
+ example: '1'
+ expense_currency_id:
+ description: 'The currency id of the expense associated with this recurring expense'
+ type: string
+ example: '1'
+ invoice_category_id:
+ description: 'The category id of the invoice'
+ type: string
+ example: '1'
+ payment_type_id:
+ description: 'The payment type id'
+ type: string
+ example: '1'
+ private_notes:
+ description: 'The recurring expense private notes'
+ type: string
+ example: 'Private and confidential'
+ public_notes:
+ description: 'The recurring expense public notes'
+ type: string
+ example: 'This is the best client in the world'
+ transaction_reference:
+ description: 'The recurring expense transaction reference'
+ type: string
+ example: EXP-1223-2333
+ transcation_id:
+ description: 'The transaction id of the recurring expense'
+ type: string
+ example: '1233312312'
+ custom_value1:
+ description: 'Custom value field'
+ type: string
+ example: $1000
+ custom_value2:
+ description: 'Custom value field'
+ type: string
+ example: '2022-10-10'
+ custom_value3:
+ description: 'Custom value field'
+ type: string
+ example: 'short text'
+ custom_value4:
+ description: 'Custom value field'
+ type: string
+ example: 'very long text'
+ tax_name1:
+ description: 'The tax name'
+ type: string
+ example: GST
+ tax_name2:
+ description: 'The tax name'
+ type: string
+ example: VAT
+ tax_rate1:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ tax_name3:
+ description: 'The tax name'
+ type: string
+ example: ''
+ tax_rate3:
+ description: 'The tax rate'
+ type: number
+ format: float
+ example: '10.00'
+ amount:
+ description: 'The total amount of the recurring expense'
+ type: number
+ format: float
+ example: '10.00'
+ frequency_id:
+ description: 'The frequency this recurring expense fires'
+ type: number
+ format: int
+ example: '1'
+ remaining_cycles:
+ description: 'The number of remaining cycles for this recurring expense'
+ type: number
+ format: int
+ example: '1'
+ foreign_amount:
+ description: 'The foreign currency amount of the recurring expense'
+ type: number
+ format: float
+ example: '10.00'
+ exchange_rate:
+ description: 'The exchange rate for the expernse'
+ type: number
+ format: float
+ example: '0.80'
+ date:
+ description: 'The date of the expense'
+ type: string
+ example: ''
+ payment_date:
+ description: 'The date the expense was paid'
+ type: string
+ example: ''
+ should_be_invoiced:
+ description: 'Boolean flag determining if the expense should be invoiced'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean flag determining if the recurring expense is deleted'
+ type: boolean
+ example: true
+ last_sent_date:
+ description: 'The Date it was sent last'
+ type: string
+ format: date
+ example: '1994-07-30'
+ next_send_date:
+ description: 'The next send date'
+ type: string
+ format: date
+ example: '1994-07-30'
+ invoice_documents:
+ description: 'Boolean flag determining if the documents associated with this expense should be passed onto the invoice if it is converted to an invoice'
+ type: boolean
+ example: true
+ updated_at:
+ description: Timestamp
type: number
format: integer
example: '1434342123'
- readOnly: true
archived_at:
- description: 'Timestamp'
+ description: Timestamp
type: number
format: integer
example: '1434342123'
- readOnly: true
- email_error:
- description: 'The email error'
+ type: object
+ Activity:
+ properties:
+ id:
+ description: 'The id field of the activity'
type: string
- example: 'The email error'
- readOnly: true
- email_status:
- description: 'The email status'
+ example: Opnel5aKBz
+ activity_type_id:
+ description: 'The activity type id'
type: string
- readOnly: true
-
+ example: Opnel5aKBz
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: Opnel5aKBz
+ company_id:
+ description: 'The company hashed id'
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: Opnel5aKBz
+ invoice_id:
+ description: 'The invoice hashed id'
+ type: string
+ example: Opnel5aKBz
+ payment_id:
+ description: 'The payment hashed id'
+ type: string
+ example: Opnel5aKBz
+ credit_id:
+ description: 'The credit hashed id'
+ type: string
+ example: Opnel5aKBz
+ updated_at:
+ description: 'Unixtimestamp the last time the record was updated'
+ type: integer
+ example: '343421434'
+ expense_id:
+ description: 'The expense hashed id'
+ type: string
+ example: Opnel5aKBz
+ is_system:
+ description: 'Defines is the activity was performed by the system'
+ type: boolean
+ example: true
+ contact_id:
+ description: 'The contact hashed id'
+ type: string
+ example: Opnel5aKBz
+ task_id:
+ description: 'The task hashed id'
+ type: string
+ example: Opnel5aKBz
+ notes:
+ description: 'Activity Notes'
+ type: string
+ example: Opnel5aKBz
+ token_id:
+ description: 'The hashed ID of the token who performed the action'
+ type: string
+ example: Opnel5aKBz
+ ip:
+ description: 'The IP Address of the user who performed the action'
+ type: string
+ example: 192.168.1.252
+ user:
+ $ref: '#/components/schemas/User'
+ client:
+ $ref: '#/components/schemas/Client'
+ contact:
+ $ref: '#/components/schemas/ClientContact'
+ recurring_invoice:
+ $ref: '#/components/schemas/RecurringInvoice'
+ invoice:
+ $ref: '#/components/schemas/Invoice'
+ credit:
+ $ref: '#/components/schemas/Credit'
+ quote:
+ $ref: '#/components/schemas/Quote'
+ payment:
+ $ref: '#/components/schemas/Payment'
+ expense:
+ $ref: '#/components/schemas/Expense'
+ task:
+ $ref: '#/components/schemas/Task'
+ purchase_order:
+ $ref: '#/components/schemas/PurchaseOrder'
+ vendor:
+ $ref: '#/components/schemas/Vendor'
+ vendor_contact:
+ $ref: '#/components/schemas/VendorContact'
+ type: object
+ Expense:
+ properties:
+ id:
+ description: 'The expense hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ user_id:
+ description: 'The user hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ assigned_user_id:
+ description: 'The assigned user hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ project_id:
+ description: 'The associated project_id'
+ type: string
+ example: 'Opnel5aKBz'
+ client_id:
+ description: 'The client hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ invoice_id:
+ description: 'The related invoice hashed id'
+ type: string
+ example: 'Opnel5aKBz'
+ bank_id:
+ description: 'The bank id related to this expense'
+ type: string
+ example: ''
+ invoice_currency_id:
+ description: 'The currency id of the related invoice'
+ type: string
+ example: '1'
+ currency_id:
+ description: 'The currency id of the expense'
+ type: string
+ example: '2'
+ invoice_category_id:
+ description: 'The invoice category id'
+ type: string
+ example: 'Opnel5aKBz'
+ payment_type_id:
+ description: 'The payment type id'
+ type: string
+ example: ''
+ recurring_expense_id:
+ description: 'The related recurring expense this expense was created from'
+ type: string
+ example: 'Opnel5aKBz'
+ private_notes:
+ description: 'The private notes of the expense'
+ type: string
+ example: ''
+ public_notes:
+ description: 'The public notes of the expense'
+ type: string
+ example: ''
+ transaction_reference:
+ description: 'The transaction references of the expense'
+ type: string
+ example: ''
+ transcation_id:
+ description: 'The transaction id of the expense'
+ type: string
+ example: ''
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: ''
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: ''
+ tax_amount:
+ description: 'The tax amount'
+ type: number
+ example: 10.00
+ tax_name1:
+ description: 'Tax Name 1'
+ type: string
+ example: 'GST'
+ tax_name2:
+ description: 'Tax Name 2'
+ type: string
+ example: 'VAT'
+ tax_name3:
+ description: 'Tax Name 3'
+ type: string
+ example: 'IVA'
+ tax_rate1:
+ description: 'Tax rate 1'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate2:
+ description: 'Tax rate 2'
+ type: number
+ format: float
+ example: '10.00'
+ tax_rate3:
+ description: 'Tax rate 3'
+ type: number
+ format: float
+ example: '10.00'
+ amount:
+ description: 'The total expense amont'
+ type: number
+ format: float
+ example: '10.00'
+ foreign_amount:
+ description: 'The total foreign amount of the expense'
+ type: number
+ format: float
+ example: '10.00'
+ exchange_rate:
+ description: 'The exchange rate at the time of the expense'
+ type: number
+ format: float
+ example: '0.80'
+ date:
+ description: 'The expense date format Y-m-d'
+ type: string
+ example: '2022-12-01'
+ payment_date:
+ description: 'The date of payment for the expense, format Y-m-d'
+ type: string
+ example: '2022-12-01'
+ should_be_invoiced:
+ description: 'Flag whether the expense should be invoiced'
+ type: boolean
+ example: true
+ is_deleted:
+ description: 'Boolean determining whether the expense has been deleted'
+ type: boolean
+ example: true
+ invoice_documents:
+ description: 'Passing the expense documents over to the invoice'
+ type: boolean
+ example: true
+ updated_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ archived_at:
+ description: Timestamp
+ type: number
+ format: integer
+ example: '1434342123'
+ type: object
+ Error:
+ properties:
+ message:
+ description: 'Something terrible went wrong'
+ type: string
+ example: 'Unexpected error'
+ code:
+ description: 'The HTTP error code, ie 5xx 4xx'
+ type: integer
+ example: '500'
+ type: object
InvoiceInvitation:
properties:
id:
@@ -21542,47 +21207,376 @@ components:
type: string
readOnly: true
- Design:
+
+ ProductBulkAction:
+ required:
+ - action
+ - ids
+ properties:
+ action:
+ type: string
+ example: archive
+ description: 'The action to perform ie. archive / restore / delete / set_tax_id'
+ ids:
+ type: array
+ items:
+ format: string
+ type: string
+ example: 2J234DFA,D2J234DFA,D2J234DFA
+ description: string array of client hashed ids
+ tax_id:
+ type: string
+ example: '1'
+ description: |
+ The tax rate id to set on the list of products
+
+ The following constants are available (default = '1')
+
+ ```
+ PRODUCT_TYPE_PHYSICAL = '1'
+ PRODUCT_TYPE_SERVICE = '2'
+ PRODUCT_TYPE_DIGITAL = '3'
+ PRODUCT_TYPE_SHIPPING = '4'
+ PRODUCT_TYPE_EXEMPT = '5'
+ PRODUCT_TYPE_REDUCED_TAX = '6'
+ PRODUCT_TYPE_OVERRIDE_TAX = '7'
+ PRODUCT_TYPE_ZERO_RATED = '8'
+ PRODUCT_TYPE_REVERSE_TAX = '9'
+ ```
+ type: object
+ User:
properties:
id:
- description: 'The design hashed id'
+ description: 'The hashed id of the user'
type: string
- example: AS3df3A
- name:
- description: 'The design name'
+ example: Opnel5aKBz
+ readOnly: true
+ first_name:
+ description: 'The first name of the user'
type: string
- example: Beauty
- design:
- description: 'The design HTML'
+ example: Brad
+ last_name:
+ description: 'The last name of the user'
type: string
- example: ''
- is_custom:
- description: 'Flag to determine if the design is a custom user design'
+ example: Pitt
+ email:
+ description: 'The users email address'
+ type: string
+ example: brad@pitt.com
+ phone:
+ description: 'The users phone number'
+ type: string
+ example: 555-1233-23232
+ signature:
+ description: 'The users sign off signature'
+ type: string
+ example: 'Have a nice day!'
+ avatar:
+ description: 'The users avatar'
+ type: string
+ example: 'https://url.to.your/avatar.png'
+ accepted_terms_version:
+ description: 'The version of the invoice ninja terms that has been accepted by the user'
+ type: string
+ example: 1.0.1
+ readOnly: true
+ oauth_user_id:
+ description: 'The provider id of the oauth entity'
+ type: string
+ example: jkhasdf789as6f675sdf768sdfs
+ readOnly: true
+ oauth_provider_id:
+ description: 'The oauth entity id'
+ type: string
+ example: google
+ readOnly: true
+ language_id:
+ description: 'The language id of the user'
+ type: string
+ example: 1
+ verified_phone_number:
+ description: 'Boolean flag if the user has their phone verified. Required to settings up 2FA'
type: boolean
example: true
- is_active:
- description: 'Flag to determine if the design is available for use'
+ readOnly: true
+ sms_verification_code:
+ description: 'The sms verification code for the user. Required to settings up 2FA'
+ type: string
+ example: '123456'
+ readOnly: true
+ oauth_user_token_expiry:
+ description: 'The expiry date of the oauth token'
+ type: string
+ example: '2022-10-10'
+ readOnly: true
+ has_password:
+ description: 'Boolean flag determining if the user has a password'
+ type: boolean
+ example: true
+ readOnly: true
+ last_confirmed_email_address:
+ description: 'The last confirmed email address of the user'
+ type: string
+ example: 'bob@gmail.com'
+ readOnly: true
+ custom_value1:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 1'
+ custom_value2:
+ description: 'A custom value'
+ type: string
+ example: '$1000'
+ custom_value3:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 3'
+ custom_value4:
+ description: 'A custom value'
+ type: string
+ example: 'Custom value 4'
+ is_deleted:
+ description: 'Boolean flag determining if the user has been deleted'
+ type: boolean
+ example: true
+ readOnly: true
+ google_2fa_secret:
+ description: 'The google 2fa secret for the user'
+ type: string
+ example: '123456'
+ readOnly: true
+ company_user:
+ $ref: '#/components/schemas/CompanyUser'
+ type: object
+ Account:
+ properties:
+ id:
+ description: 'The account hashed id'
+ type: string
+ example: AS3df3A
+ account_sms_verified:
+ description: 'Boolean flag if the account has been verified by sms'
+ type: string
+ example: true
+ type: object
+ Credit:
+ properties:
+ id:
+ description: "The unique hashed ID of the credit"
+ type: string
+ example: Opnel5aKBz
+ user_id:
+ description: "The unique hashed ID of the user associated with the credit"
+ type: string
+ example: 1a2b3c4d5e
+ assigned_user_id:
+ description: "The unique hashed ID of the assigned user responsible for the credit"
+ type: string
+ example: 6f7g8h9i0j
+ client_id:
+ description: "The unique hashed ID of the client associated with the credit"
+ type: string
+ example: p1q2r3s4t5
+ status_id:
+ description: "The ID representing the current status of the credit"
+ type: string
+ example: 3
+ invoice_id:
+ description: "The unique hashed ID of the linked invoice to which the credit is applied"
+ type: string
+ example: u1v2w3x4y5
+ number:
+ description: "The unique alphanumeric credit number per company"
+ type: string
+ example: QUOTE_101
+ po_number:
+ description: "The purchase order number referred to by the credit"
+ type: string
+ example: PO_12345
+ terms:
+ description: "The terms associated with the credit"
+ type: string
+ example: "Net 30"
+ public_notes:
+ description: "Public notes for the credit"
+ type: string
+ example: "Thank you for your business."
+ private_notes:
+ description: "Private notes for internal use, not visible to the client"
+ type: string
+ example: "Client is requesting a discount."
+ footer:
+ description: "The footer text for the credit"
+ type: string
+ example: "Footer text goes here."
+ custom_value1:
+ description: "Custom value 1 for additional credit information"
+ type: string
+ example: "Custom data 1"
+ custom_value2:
+ description: "Custom value 2 for additional credit information"
+ type: string
+ example: "Custom data 2"
+ custom_value3:
+ description: "Custom value 3 for additional credit information"
+ type: string
+ example: "Custom data 3"
+ custom_value4:
+ description: "Custom value 4 for additional credit information"
+ type: string
+ example: "Custom data 4"
+ tax_name1:
+ description: "The name of the first tax applied to the credit"
+ type: string
+ example: "VAT"
+ tax_name2:
+ description: "The name of the second tax applied to the credit"
+ type: string
+ example: "GST"
+ tax_rate1:
+ description: "The rate of the first tax applied to the credit"
+ type: number
+ format: float
+ example: 10.00
+ tax_rate2:
+ description: "The rate of the second tax applied to the credit"
+ type: number
+ format: float
+ example: 5.00
+ tax_name3:
+ description: "The name of the third tax applied to the credit"
+ type: string
+ example: "PST"
+ tax_rate3:
+ description: "The rate of the third tax applied to the credit"
+ type: number
+ format: float
+ example: 8.00
+ total_taxes:
+ description: "The total amount of taxes for the credit"
+ type: number
+ format: float
+ example: 23.00
+ line_items:
+ type: array
+ description: 'An array of objects which define the line items of the credit'
+ items:
+ $ref: '#/components/schemas/InvoiceItem'
+ amount:
+ description: "The total amount of the credit"
+ type: number
+ format: float
+ example: 100.00
+ balance:
+ description: "The outstanding balance of the credit"
+ type: number
+ format: float
+ example: 50.00
+ paid_to_date:
+ description: "The total amount paid to date for the credit"
+ type: number
+ format: float
+ example: 50.00
+ discount:
+ description: "The discount applied to the credit"
+ type: number
+ format: float
+ example: 10.00
+ partial:
+ description: "The partial amount applied to the credit"
+ type: number
+ format: float
+ example: 20.00
+ is_amount_discount:
+ description: "Indicates whether the discount applied is a fixed amount or a percentage"
type: boolean
example: true
is_deleted:
- description: 'Flag to determine if the design is deleted'
+ description: "Indicates whether the credit has been deleted"
+ type: boolean
+ example: false
+ uses_inclusive_taxes:
+ description: "Indicates whether the tax rates applied to the credit are inclusive or exclusive"
type: boolean
example: true
- created_at:
- description: Timestamp
+ date:
+ description: "The date the credit was issued"
+ type: string
+ format: date
+ example: "1994-07-30"
+ last_sent_date:
+ description: "The date the credit was last sent out"
+ type: string
+ format: date
+ example: "1994-07-30"
+ next_send_date:
+ description: "The next scheduled date for sending a credit reminder"
+ type: string
+ format: date
+ example: "1994-07-30"
+ partial_due_date:
+ description: "The due date for the partial amount of the credit"
+ type: string
+ format: date
+ example: "1994-07-30"
+ due_date:
+ description: "The due date for the total amount of the credit"
+ type: string
+ format: date
+ example: "1994-07-30"
+ settings:
+ $ref: "#/components/schemas/CompanySettings"
+ last_viewed:
+ description: "The timestamp of the last time the credit was viewed"
type: number
format: integer
- example: '134341234234'
+ example: 1434342123
updated_at:
- description: Timestamp
+ description: "The timestamp of the last time the credit was updated"
type: number
format: integer
- example: '134341234234'
- deleted_at:
- description: Timestamp
+ example: 1434342123
+ archived_at:
+ description: "The timestamp of the last time the credit was archived"
type: number
format: integer
- example: '134341234234'
+ example: 1434342123
+ custom_surcharge1:
+ description: "First custom surcharge amount"
+ type: number
+ format: float
+ example: 10.00
+ custom_surcharge2:
+ description: 'Second Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge3:
+ description: 'Third Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge4:
+ description: 'Fourth Custom Surcharge'
+ type: number
+ format: float
+ example: '10.00'
+ custom_surcharge_tax1:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax2:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax3:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
+ custom_surcharge_tax4:
+ description: 'Toggles charging taxes on custom surcharge amounts'
+ type: boolean
+ example: true
type: object
tags:
- name: login
diff --git a/public/vendor/livewire/livewire.js b/public/vendor/livewire/livewire.js
index c28a26b9f00d..ad88768f3c4e 100644
--- a/public/vendor/livewire/livewire.js
+++ b/public/vendor/livewire/livewire.js
@@ -1,14 +1,9664 @@
-!function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global="undefined"!=typeof globalThis?globalThis:global||self).Livewire=factory()}(this,(function(){"use strict";function _iterableToArrayLimit(arr,i){var _i=null==arr?null:"undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"];if(null!=_i){var _s,_e,_x,_r,_arr=[],_n=!0,_d=!1;try{if(_x=(_i=_i.call(arr)).next,0===i){if(Object(_i)!==_i)return;_n=!1}else for(;!(_n=(_s=_x.call(_i)).done)&&(_arr.push(_s.value),_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{if(!_n&&null!=_i.return&&(_r=_i.return(),Object(_r)!==_r))return}finally{if(_d)throw _e}}return _arr}}function ownKeys$1(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}function _objectSpread2(target){for(var i=1;iarr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i0&&void 0!==arguments[0]?arguments[0]:"right";return this.modifiers.includes("up")?"up":this.modifiers.includes("down")?"down":this.modifiers.includes("left")?"left":this.modifiers.includes("right")?"right":fallback}}]),Directive}();function walk(root,callback){if(!1!==callback(root))for(var node=root.firstElementChild;node;)walk(node,callback),node=node.nextElementSibling}function dispatch(eventName){var event=document.createEvent("Events");return event.initEvent(eventName,!0,!0),document.dispatchEvent(event),event}function getCsrfToken(){var _window$livewire_toke,tokenTag=document.head.querySelector('meta[name="csrf-token"]');return tokenTag?tokenTag.content:null!==(_window$livewire_toke=window.livewire_token)&&void 0!==_window$livewire_toke?_window$livewire_toke:void 0}function kebabCase(subject){return subject.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/[_\s]/,"-").toLowerCase()}
-/*!
- * isobject
- *
- * Copyright (c) 2014-2017, Jon Schlinkert.
- * Released under the MIT License.
- */var isobject=function(val){return null!=val&&"object"==typeof val&&!1===Array.isArray(val)},getValue=function(target,path,options){if(isobject(options)||(options={default:options}),!isValidObject(target))return void 0!==options.default?options.default:target;"number"==typeof path&&(path=String(path));const isArray=Array.isArray(path),isString="string"==typeof path,splitChar=options.separator||".",joinChar=options.joinChar||("string"==typeof splitChar?splitChar:".");if(!isString&&!isArray)return target;if(isString&&path in target)return isValid(path,target,options)?target[path]:options.default;let segs=isArray?path:split$1(path,splitChar,options),len=segs.length,idx=0;do{let prop=segs[idx];for("number"==typeof prop&&(prop=String(prop));prop&&"\\"===prop.slice(-1);)prop=join([prop.slice(0,-1),segs[++idx]||""],joinChar,options);if(prop in target){if(!isValid(prop,target,options))return options.default;target=target[prop]}else{let hasProp=!1,n=idx+1;for(;n
- *
- * Copyright (c) 2014-2018, Jon Schlinkert.
- * Released under the MIT License.
- */function join(segs,joinChar,options){return"function"==typeof options.join?options.join(segs):segs[0]+joinChar+segs[1]}function split$1(path,splitChar,options){return"function"==typeof options.split?options.split(path):path.split(splitChar)}function isValid(key,target,options){return"function"!=typeof options.isValid||options.isValid(key,target)}function isValidObject(val){return isobject(val)||Array.isArray(val)||"function"==typeof val}var _default$6=function(){function _default(el){var skipWatcher=arguments.length>1&&void 0!==arguments[1]&&arguments[1];_classCallCheck(this,_default),this.el=el,this.skipWatcher=skipWatcher,this.resolveCallback=function(){},this.rejectCallback=function(){},this.signature=(Math.random()+1).toString(36).substring(8)}return _createClass(_default,[{key:"toId",value:function(){return btoa(encodeURIComponent(this.el.outerHTML))}},{key:"onResolve",value:function(callback){this.resolveCallback=callback}},{key:"onReject",value:function(callback){this.rejectCallback=callback}},{key:"resolve",value:function(thing){this.resolveCallback(thing)}},{key:"reject",value:function(thing){this.rejectCallback(thing)}}]),_default}(),_default$5=function(_Action){_inherits(_default,_Action);var _super=_createSuper(_default);function _default(event,params,el){var _this;return _classCallCheck(this,_default),(_this=_super.call(this,el)).type="fireEvent",_this.payload={id:_this.signature,event:event,params:params},_this}return _createClass(_default,[{key:"toId",value:function(){return btoa(encodeURIComponent(this.type,this.payload.event,JSON.stringify(this.payload.params)))}}]),_default}(_default$6),MessageBus=function(){function MessageBus(){_classCallCheck(this,MessageBus),this.listeners={}}return _createClass(MessageBus,[{key:"register",value:function(name,callback){this.listeners[name]||(this.listeners[name]=[]),this.listeners[name].push(callback)}},{key:"call",value:function(name){for(var _len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(this.listeners[name]||[]).forEach((function(callback){callback.apply(void 0,params)}))}},{key:"has",value:function(name){return Object.keys(this.listeners).includes(name)}}]),MessageBus}(),HookManager={availableHooks:["component.initialized","element.initialized","element.updating","element.updated","element.removed","message.sent","message.failed","message.received","message.processed","interceptWireModelSetValue","interceptWireModelAttachListener","beforeReplaceState","beforePushState"],bus:new MessageBus,register:function(name,callback){if(!this.availableHooks.includes(name))throw"Livewire: Referencing unknown hook: [".concat(name,"]");this.bus.register(name,callback)},call:function(name){for(var _this$bus,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$bus=this.bus).call.apply(_this$bus,[name].concat(params))}},DirectiveManager={directives:new MessageBus,register:function(name,callback){if(this.has(name))throw"Livewire: Directive already registered: [".concat(name,"]");this.directives.register(name,callback)},call:function(name,el,directive,component){this.directives.call(name,el,directive,component)},has:function(name){return this.directives.has(name)}},store$2={componentsById:{},listeners:new MessageBus,initialRenderIsFinished:!1,livewireIsInBackground:!1,livewireIsOffline:!1,sessionHasExpired:!1,sessionHasExpiredCallback:void 0,directives:DirectiveManager,hooks:HookManager,onErrorCallback:function(){},components:function(){var _this=this;return Object.keys(this.componentsById).map((function(key){return _this.componentsById[key]}))},addComponent:function(component){return this.componentsById[component.id]=component},findComponent:function(id){return this.componentsById[id]},getComponentsByName:function(name){return this.components().filter((function(component){return component.name===name}))},hasComponent:function(id){return!!this.componentsById[id]},tearDownComponents:function(){var _this2=this;this.components().forEach((function(component){_this2.removeComponent(component)}))},on:function(event,callback){this.listeners.register(event,callback)},emit:function(event){for(var _this$listeners,_len=arguments.length,params=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++)params[_key-1]=arguments[_key];(_this$listeners=this.listeners).call.apply(_this$listeners,[event].concat(params)),this.componentsListeningForEvent(event).forEach((function(component){return component.addAction(new _default$5(event,params))}))},emitUp:function(el,event){for(var _len2=arguments.length,params=new Array(_len2>2?_len2-2:0),_key2=2;_key2<_len2;_key2++)params[_key2-2]=arguments[_key2];this.componentsListeningForEventThatAreTreeAncestors(el,event).forEach((function(component){return component.addAction(new _default$5(event,params))}))},emitSelf:function(componentId,event){var component=this.findComponent(componentId);if(component.listeners.includes(event)){for(var _len3=arguments.length,params=new Array(_len3>2?_len3-2:0),_key3=2;_key3<_len3;_key3++)params[_key3-2]=arguments[_key3];component.addAction(new _default$5(event,params))}},emitTo:function(componentName,event){for(var _len4=arguments.length,params=new Array(_len4>2?_len4-2:0),_key4=2;_key4<_len4;_key4++)params[_key4-2]=arguments[_key4];var components=this.getComponentsByName(componentName);components.forEach((function(component){component.listeners.includes(event)&&component.addAction(new _default$5(event,params))}))},componentsListeningForEventThatAreTreeAncestors:function(el,event){for(var parentIds=[],parent=el.parentElement.closest("[wire\\:id]");parent;)parentIds.push(parent.getAttribute("wire:id")),parent=parent.parentElement.closest("[wire\\:id]");return this.components().filter((function(component){return component.listeners.includes(event)&&parentIds.includes(component.id)}))},componentsListeningForEvent:function(event){return this.components().filter((function(component){return component.listeners.includes(event)}))},registerDirective:function(name,callback){this.directives.register(name,callback)},registerHook:function(name,callback){this.hooks.register(name,callback)},callHook:function(name){for(var _this$hooks,_len5=arguments.length,params=new Array(_len5>1?_len5-1:0),_key5=1;_key5<_len5;_key5++)params[_key5-1]=arguments[_key5];(_this$hooks=this.hooks).call.apply(_this$hooks,[name].concat(params))},changeComponentId:function(component,newId){var oldId=component.id;component.id=newId,component.fingerprint.id=newId,this.componentsById[newId]=component,delete this.componentsById[oldId],this.components().forEach((function(component){var children=component.serverMemo.children||{};Object.entries(children).forEach((function(_ref){var _ref2=_slicedToArray(_ref,2),key=_ref2[0],_ref2$=_ref2[1],id=_ref2$.id;_ref2$.tagName,id===oldId&&(children[key].id=newId)}))}))},removeComponent:function(component){component.tearDown(),delete this.componentsById[component.id]},onError:function(callback){this.onErrorCallback=callback},getClosestParentId:function(childId,subsetOfParentIds){var _this3=this,distancesByParentId={};subsetOfParentIds.forEach((function(parentId){var distance=_this3.getDistanceToChild(parentId,childId);distance&&(distancesByParentId[parentId]=distance)}));var closestParentId,smallestDistance=Math.min.apply(Math,_toConsumableArray(Object.values(distancesByParentId)));return Object.entries(distancesByParentId).forEach((function(_ref3){var _ref4=_slicedToArray(_ref3,2),parentId=_ref4[0];_ref4[1]===smallestDistance&&(closestParentId=parentId)})),closestParentId},getDistanceToChild:function(parentId,childId){var distanceMemo=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,parentComponent=this.findComponent(parentId);if(parentComponent){var childIds=parentComponent.childIds;if(childIds.includes(childId))return distanceMemo;for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:null;null===node&&(node=document);var allEls=Array.from(node.querySelectorAll("[wire\\:initial-data]")),onlyChildEls=Array.from(node.querySelectorAll("[wire\\:initial-data] [wire\\:initial-data]"));return allEls.filter((function(el){return!onlyChildEls.includes(el)}))},allModelElementsInside:function(root){return Array.from(root.querySelectorAll("[wire\\:model]"))},getByAttributeAndValue:function(attribute,value){return document.querySelector("[wire\\:".concat(attribute,'="').concat(value,'"]'))},nextFrame:function(fn){var _this=this;requestAnimationFrame((function(){requestAnimationFrame(fn.bind(_this))}))},closestRoot:function(el){return this.closestByAttribute(el,"id")},closestByAttribute:function(el,attribute){var closestEl=el.closest("[wire\\:".concat(attribute,"]"));if(!closestEl)throw"\nLivewire Error:\n\nCannot find parent element in DOM tree containing attribute: [wire:".concat(attribute,"].\n\nUsually this is caused by Livewire's DOM-differ not being able to properly track changes.\n\nReference the following guide for common causes: https://laravel-livewire.com/docs/troubleshooting \n\nReferenced element:\n\n").concat(el.outerHTML,"\n");return closestEl},isComponentRootEl:function(el){return this.hasAttribute(el,"id")},hasAttribute:function(el,attribute){return el.hasAttribute("wire:".concat(attribute))},getAttribute:function(el,attribute){return el.getAttribute("wire:".concat(attribute))},removeAttribute:function(el,attribute){return el.removeAttribute("wire:".concat(attribute))},setAttribute:function(el,attribute,value){return el.setAttribute("wire:".concat(attribute),value)},hasFocus:function(el){return el===document.activeElement},isInput:function(el){return["INPUT","TEXTAREA","SELECT"].includes(el.tagName.toUpperCase())},isTextInput:function(el){return["INPUT","TEXTAREA"].includes(el.tagName.toUpperCase())&&!["checkbox","radio"].includes(el.type)},valueFromInput:function(el,component){if("checkbox"===el.type){var modelName=wireDirectives(el).get("model").value,modelValue=component.deferredActions[modelName]?component.deferredActions[modelName].payload.value:getValue(component.data,modelName);return Array.isArray(modelValue)?this.mergeCheckboxValueIntoArray(el,modelValue):!!el.checked&&(el.getAttribute("value")||!0)}return"SELECT"===el.tagName&&el.multiple?this.getSelectValues(el):el.value},mergeCheckboxValueIntoArray:function(el,arrayValue){return el.checked?arrayValue.includes(el.value)?arrayValue:arrayValue.concat(el.value):arrayValue.filter((function(item){return item!=el.value}))},setInputValueFromModel:function(el,component){var modelString=wireDirectives(el).get("model").value,modelValue=getValue(component.data,modelString);"input"===el.tagName.toLowerCase()&&"file"===el.type||this.setInputValue(el,modelValue)},setInputValue:function(el,value){if(store$2.callHook("interceptWireModelSetValue",value,el),"radio"===el.type)el.checked=el.value==value;else if("checkbox"===el.type)if(Array.isArray(value)){var valueFound=!1;value.forEach((function(val){val==el.value&&(valueFound=!0)})),el.checked=valueFound}else el.checked=!!value;else"SELECT"===el.tagName?this.updateSelect(el,value):(value=void 0===value?"":value,el.value=value)},getSelectValues:function(el){return Array.from(el.options).filter((function(option){return option.selected})).map((function(option){return option.value||option.text}))},updateSelect:function(el,value){var arrayWrappedValue=[].concat(value).map((function(value){return value+""}));Array.from(el.options).forEach((function(option){option.selected=arrayWrappedValue.includes(option.value)}))}},fails=function(exec){try{return!!exec()}catch(error){return!0}},functionBindNative=!fails((function(){var test=function(){}.bind();return"function"!=typeof test||test.hasOwnProperty("prototype")})),FunctionPrototype$2=Function.prototype,call$2=FunctionPrototype$2.call,uncurryThisWithBind=functionBindNative&&FunctionPrototype$2.bind.bind(call$2,call$2),functionUncurryThis=functionBindNative?uncurryThisWithBind:function(fn){return function(){return call$2.apply(fn,arguments)}},ceil=Math.ceil,floor=Math.floor,mathTrunc=Math.trunc||function(x){var n=+x;return(n>0?floor:ceil)(n)},toIntegerOrInfinity=function(argument){var number=+argument;return number!=number||0===number?0:mathTrunc(number)},commonjsGlobal="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(fn,basedir,module){return module={path:basedir,exports:{},require:function(path,base){return commonjsRequire(path,null==base?module.path:base)}},fn(module,module.exports),module.exports}function commonjsRequire(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}var check=function(it){return it&&it.Math==Math&&it},global_1=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||function(){return this}()||Function("return this")(),defineProperty$4=Object.defineProperty,defineGlobalProperty=function(key,value){try{defineProperty$4(global_1,key,{value:value,configurable:!0,writable:!0})}catch(error){global_1[key]=value}return value},SHARED="__core-js_shared__",store$1=global_1[SHARED]||defineGlobalProperty(SHARED,{}),sharedStore=store$1,shared=createCommonjsModule((function(module){(module.exports=function(key,value){return sharedStore[key]||(sharedStore[key]=void 0!==value?value:{})})("versions",[]).push({version:"3.27.1",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.27.1/LICENSE",source:"https://github.com/zloirock/core-js"})})),isNullOrUndefined=function(it){return null==it},$TypeError$e=TypeError,requireObjectCoercible=function(it){if(isNullOrUndefined(it))throw $TypeError$e("Can't call method on "+it);return it},$Object$4=Object,toObject=function(argument){return $Object$4(requireObjectCoercible(argument))},hasOwnProperty=functionUncurryThis({}.hasOwnProperty),hasOwnProperty_1=Object.hasOwn||function(it,key){return hasOwnProperty(toObject(it),key)},id=0,postfix=Math.random(),toString$1=functionUncurryThis(1..toString),uid=function(key){return"Symbol("+(void 0===key?"":key)+")_"+toString$1(++id+postfix,36)},documentAll$2="object"==typeof document&&document.all,IS_HTMLDDA=void 0===documentAll$2&&void 0!==documentAll$2,documentAll_1={all:documentAll$2,IS_HTMLDDA:IS_HTMLDDA},documentAll$1=documentAll_1.all,isCallable=documentAll_1.IS_HTMLDDA?function(argument){return"function"==typeof argument||argument===documentAll$1}:function(argument){return"function"==typeof argument},aFunction=function(argument){return isCallable(argument)?argument:void 0},getBuiltIn=function(namespace,method){return arguments.length<2?aFunction(global_1[namespace]):global_1[namespace]&&global_1[namespace][method]},engineUserAgent=getBuiltIn("navigator","userAgent")||"",process$3=global_1.process,Deno$1=global_1.Deno,versions=process$3&&process$3.versions||Deno$1&&Deno$1.version,v8=versions&&versions.v8,match,version;v8&&(match=v8.split("."),version=match[0]>0&&match[0]<4?1:+(match[0]+match[1])),!version&&engineUserAgent&&(match=engineUserAgent.match(/Edge\/(\d+)/),(!match||match[1]>=74)&&(match=engineUserAgent.match(/Chrome\/(\d+)/),match&&(version=+match[1])));var engineV8Version=version,symbolConstructorDetection=!!Object.getOwnPropertySymbols&&!fails((function(){var symbol=Symbol();return!String(symbol)||!(Object(symbol)instanceof Symbol)||!Symbol.sham&&engineV8Version&&engineV8Version<41})),useSymbolAsUid=symbolConstructorDetection&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,WellKnownSymbolsStore=shared("wks"),Symbol$1=global_1.Symbol,symbolFor=Symbol$1&&Symbol$1.for,createWellKnownSymbol=useSymbolAsUid?Symbol$1:Symbol$1&&Symbol$1.withoutSetter||uid,wellKnownSymbol=function(name){if(!hasOwnProperty_1(WellKnownSymbolsStore,name)||!symbolConstructorDetection&&"string"!=typeof WellKnownSymbolsStore[name]){var description="Symbol."+name;symbolConstructorDetection&&hasOwnProperty_1(Symbol$1,name)?WellKnownSymbolsStore[name]=Symbol$1[name]:WellKnownSymbolsStore[name]=useSymbolAsUid&&symbolFor?symbolFor(description):createWellKnownSymbol(description)}return WellKnownSymbolsStore[name]},TO_STRING_TAG$4=wellKnownSymbol("toStringTag"),test={};test[TO_STRING_TAG$4]="z";var toStringTagSupport="[object z]"===String(test),toString=functionUncurryThis({}.toString),stringSlice$2=functionUncurryThis("".slice),classofRaw=function(it){return stringSlice$2(toString(it),8,-1)},TO_STRING_TAG$3=wellKnownSymbol("toStringTag"),$Object$3=Object,CORRECT_ARGUMENTS="Arguments"==classofRaw(function(){return arguments}()),tryGet=function(it,key){try{return it[key]}catch(error){}},classof=toStringTagSupport?classofRaw:function(it){var O,tag,result;return void 0===it?"Undefined":null===it?"Null":"string"==typeof(tag=tryGet(O=$Object$3(it),TO_STRING_TAG$3))?tag:CORRECT_ARGUMENTS?classofRaw(O):"Object"==(result=classofRaw(O))&&isCallable(O.callee)?"Arguments":result},$String$3=String,toString_1=function(argument){if("Symbol"===classof(argument))throw TypeError("Cannot convert a Symbol value to a string");return $String$3(argument)},charAt$1=functionUncurryThis("".charAt),charCodeAt=functionUncurryThis("".charCodeAt),stringSlice$1=functionUncurryThis("".slice),createMethod$3=function(CONVERT_TO_STRING){return function($this,pos){var first,second,S=toString_1(requireObjectCoercible($this)),position=toIntegerOrInfinity(pos),size=S.length;return position<0||position>=size?CONVERT_TO_STRING?"":void 0:(first=charCodeAt(S,position))<55296||first>56319||position+1===size||(second=charCodeAt(S,position+1))<56320||second>57343?CONVERT_TO_STRING?charAt$1(S,position):first:CONVERT_TO_STRING?stringSlice$1(S,position,position+2):second-56320+(first-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$3(!1),charAt:createMethod$3(!0)},WeakMap$1=global_1.WeakMap,weakMapBasicDetection=isCallable(WeakMap$1)&&/native code/.test(String(WeakMap$1)),documentAll=documentAll_1.all,isObject=documentAll_1.IS_HTMLDDA?function(it){return"object"==typeof it?null!==it:isCallable(it)||it===documentAll}:function(it){return"object"==typeof it?null!==it:isCallable(it)},descriptors=!fails((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),document$3=global_1.document,EXISTS$1=isObject(document$3)&&isObject(document$3.createElement),documentCreateElement=function(it){return EXISTS$1?document$3.createElement(it):{}},ie8DomDefine=!descriptors&&!fails((function(){return 7!=Object.defineProperty(documentCreateElement("div"),"a",{get:function(){return 7}}).a})),v8PrototypeDefineBug=descriptors&&fails((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),$String$2=String,$TypeError$d=TypeError,anObject=function(argument){if(isObject(argument))return argument;throw $TypeError$d($String$2(argument)+" is not an object")},call$1=Function.prototype.call,functionCall=functionBindNative?call$1.bind(call$1):function(){return call$1.apply(call$1,arguments)},objectIsPrototypeOf=functionUncurryThis({}.isPrototypeOf),$Object$2=Object,isSymbol=useSymbolAsUid?function(it){return"symbol"==typeof it}:function(it){var $Symbol=getBuiltIn("Symbol");return isCallable($Symbol)&&objectIsPrototypeOf($Symbol.prototype,$Object$2(it))},$String$1=String,tryToString=function(argument){try{return $String$1(argument)}catch(error){return"Object"}},$TypeError$c=TypeError,aCallable=function(argument){if(isCallable(argument))return argument;throw $TypeError$c(tryToString(argument)+" is not a function")},getMethod=function(V,P){var func=V[P];return isNullOrUndefined(func)?void 0:aCallable(func)},$TypeError$b=TypeError,ordinaryToPrimitive=function(input,pref){var fn,val;if("string"===pref&&isCallable(fn=input.toString)&&!isObject(val=functionCall(fn,input)))return val;if(isCallable(fn=input.valueOf)&&!isObject(val=functionCall(fn,input)))return val;if("string"!==pref&&isCallable(fn=input.toString)&&!isObject(val=functionCall(fn,input)))return val;throw $TypeError$b("Can't convert object to primitive value")},$TypeError$a=TypeError,TO_PRIMITIVE=wellKnownSymbol("toPrimitive"),toPrimitive=function(input,pref){if(!isObject(input)||isSymbol(input))return input;var result,exoticToPrim=getMethod(input,TO_PRIMITIVE);if(exoticToPrim){if(void 0===pref&&(pref="default"),result=functionCall(exoticToPrim,input,pref),!isObject(result)||isSymbol(result))return result;throw $TypeError$a("Can't convert object to primitive value")}return void 0===pref&&(pref="number"),ordinaryToPrimitive(input,pref)},toPropertyKey=function(argument){var key=toPrimitive(argument,"string");return isSymbol(key)?key:key+""},$TypeError$9=TypeError,$defineProperty=Object.defineProperty,$getOwnPropertyDescriptor$1=Object.getOwnPropertyDescriptor,ENUMERABLE="enumerable",CONFIGURABLE$1="configurable",WRITABLE="writable",f$6=descriptors?v8PrototypeDefineBug?function(O,P,Attributes){if(anObject(O),P=toPropertyKey(P),anObject(Attributes),"function"==typeof O&&"prototype"===P&&"value"in Attributes&&WRITABLE in Attributes&&!Attributes[WRITABLE]){var current=$getOwnPropertyDescriptor$1(O,P);current&¤t[WRITABLE]&&(O[P]=Attributes.value,Attributes={configurable:CONFIGURABLE$1 in Attributes?Attributes[CONFIGURABLE$1]:current[CONFIGURABLE$1],enumerable:ENUMERABLE in Attributes?Attributes[ENUMERABLE]:current[ENUMERABLE],writable:!1})}return $defineProperty(O,P,Attributes)}:$defineProperty:function(O,P,Attributes){if(anObject(O),P=toPropertyKey(P),anObject(Attributes),ie8DomDefine)try{return $defineProperty(O,P,Attributes)}catch(error){}if("get"in Attributes||"set"in Attributes)throw $TypeError$9("Accessors not supported");return"value"in Attributes&&(O[P]=Attributes.value),O},objectDefineProperty={f:f$6},createPropertyDescriptor=function(bitmap,value){return{enumerable:!(1&bitmap),configurable:!(2&bitmap),writable:!(4&bitmap),value:value}},createNonEnumerableProperty=descriptors?function(object,key,value){return objectDefineProperty.f(object,key,createPropertyDescriptor(1,value))}:function(object,key,value){return object[key]=value,object},keys=shared("keys"),sharedKey=function(key){return keys[key]||(keys[key]=uid(key))},hiddenKeys$1={},OBJECT_ALREADY_INITIALIZED="Object already initialized",TypeError$2=global_1.TypeError,WeakMap=global_1.WeakMap,set$1,get,has,enforce=function(it){return has(it)?get(it):set$1(it,{})},getterFor=function(TYPE){return function(it){var state;if(!isObject(it)||(state=get(it)).type!==TYPE)throw TypeError$2("Incompatible receiver, "+TYPE+" required");return state}};if(weakMapBasicDetection||sharedStore.state){var store=sharedStore.state||(sharedStore.state=new WeakMap);store.get=store.get,store.has=store.has,store.set=store.set,set$1=function(it,metadata){if(store.has(it))throw TypeError$2(OBJECT_ALREADY_INITIALIZED);return metadata.facade=it,store.set(it,metadata),metadata},get=function(it){return store.get(it)||{}},has=function(it){return store.has(it)}}else{var STATE=sharedKey("state");hiddenKeys$1[STATE]=!0,set$1=function(it,metadata){if(hasOwnProperty_1(it,STATE))throw TypeError$2(OBJECT_ALREADY_INITIALIZED);return metadata.facade=it,createNonEnumerableProperty(it,STATE,metadata),metadata},get=function(it){return hasOwnProperty_1(it,STATE)?it[STATE]:{}},has=function(it){return hasOwnProperty_1(it,STATE)}}var internalState={set:set$1,get:get,has:has,enforce:enforce,getterFor:getterFor},$propertyIsEnumerable$1={}.propertyIsEnumerable,getOwnPropertyDescriptor$3=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor$3&&!$propertyIsEnumerable$1.call({1:2},1),f$5=NASHORN_BUG?function(V){var descriptor=getOwnPropertyDescriptor$3(this,V);return!!descriptor&&descriptor.enumerable}:$propertyIsEnumerable$1,objectPropertyIsEnumerable={f:f$5},$Object$1=Object,split=functionUncurryThis("".split),indexedObject=fails((function(){return!$Object$1("z").propertyIsEnumerable(0)}))?function(it){return"String"==classofRaw(it)?split(it,""):$Object$1(it)}:$Object$1,toIndexedObject=function(it){return indexedObject(requireObjectCoercible(it))},$getOwnPropertyDescriptor=Object.getOwnPropertyDescriptor,f$4=descriptors?$getOwnPropertyDescriptor:function(O,P){if(O=toIndexedObject(O),P=toPropertyKey(P),ie8DomDefine)try{return $getOwnPropertyDescriptor(O,P)}catch(error){}if(hasOwnProperty_1(O,P))return createPropertyDescriptor(!functionCall(objectPropertyIsEnumerable.f,O,P),O[P])},objectGetOwnPropertyDescriptor={f:f$4},FunctionPrototype$1=Function.prototype,getDescriptor=descriptors&&Object.getOwnPropertyDescriptor,EXISTS=hasOwnProperty_1(FunctionPrototype$1,"name"),PROPER=EXISTS&&"something"===function(){}.name,CONFIGURABLE=EXISTS&&(!descriptors||descriptors&&getDescriptor(FunctionPrototype$1,"name").configurable),functionName={EXISTS:EXISTS,PROPER:PROPER,CONFIGURABLE:CONFIGURABLE},functionToString=functionUncurryThis(Function.toString);isCallable(sharedStore.inspectSource)||(sharedStore.inspectSource=function(it){return functionToString(it)});var inspectSource=sharedStore.inspectSource,makeBuiltIn_1=createCommonjsModule((function(module){var CONFIGURABLE_FUNCTION_NAME=functionName.CONFIGURABLE,enforceInternalState=internalState.enforce,getInternalState=internalState.get,defineProperty=Object.defineProperty,CONFIGURABLE_LENGTH=descriptors&&!fails((function(){return 8!==defineProperty((function(){}),"length",{value:8}).length})),TEMPLATE=String(String).split("String"),makeBuiltIn=module.exports=function(value,name,options){"Symbol("===String(name).slice(0,7)&&(name="["+String(name).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),options&&options.getter&&(name="get "+name),options&&options.setter&&(name="set "+name),(!hasOwnProperty_1(value,"name")||CONFIGURABLE_FUNCTION_NAME&&value.name!==name)&&(descriptors?defineProperty(value,"name",{value:name,configurable:!0}):value.name=name),CONFIGURABLE_LENGTH&&options&&hasOwnProperty_1(options,"arity")&&value.length!==options.arity&&defineProperty(value,"length",{value:options.arity});try{options&&hasOwnProperty_1(options,"constructor")&&options.constructor?descriptors&&defineProperty(value,"prototype",{writable:!1}):value.prototype&&(value.prototype=void 0)}catch(error){}var state=enforceInternalState(value);return hasOwnProperty_1(state,"source")||(state.source=TEMPLATE.join("string"==typeof name?name:"")),value};Function.prototype.toString=makeBuiltIn((function(){return isCallable(this)&&getInternalState(this).source||inspectSource(this)}),"toString")})),defineBuiltIn=function(O,key,value,options){options||(options={});var simple=options.enumerable,name=void 0!==options.name?options.name:key;if(isCallable(value)&&makeBuiltIn_1(value,name,options),options.global)simple?O[key]=value:defineGlobalProperty(key,value);else{try{options.unsafe?O[key]&&(simple=!0):delete O[key]}catch(error){}simple?O[key]=value:objectDefineProperty.f(O,key,{value:value,enumerable:!1,configurable:!options.nonConfigurable,writable:!options.nonWritable})}return O},max=Math.max,min$2=Math.min,toAbsoluteIndex=function(index,length){var integer=toIntegerOrInfinity(index);return integer<0?max(integer+length,0):min$2(integer,length)},min$1=Math.min,toLength=function(argument){return argument>0?min$1(toIntegerOrInfinity(argument),9007199254740991):0},lengthOfArrayLike=function(obj){return toLength(obj.length)},createMethod$2=function(IS_INCLUDES){return function($this,el,fromIndex){var value,O=toIndexedObject($this),length=lengthOfArrayLike(O),index=toAbsoluteIndex(fromIndex,length);if(IS_INCLUDES&&el!=el){for(;length>index;)if((value=O[index++])!=value)return!0}else for(;length>index;index++)if((IS_INCLUDES||index in O)&&O[index]===el)return IS_INCLUDES||index||0;return!IS_INCLUDES&&-1}},arrayIncludes={includes:createMethod$2(!0),indexOf:createMethod$2(!1)},indexOf=arrayIncludes.indexOf,push$3=functionUncurryThis([].push),objectKeysInternal=function(object,names){var key,O=toIndexedObject(object),i=0,result=[];for(key in O)!hasOwnProperty_1(hiddenKeys$1,key)&&hasOwnProperty_1(O,key)&&push$3(result,key);for(;names.length>i;)hasOwnProperty_1(O,key=names[i++])&&(~indexOf(result,key)||push$3(result,key));return result},enumBugKeys=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],hiddenKeys=enumBugKeys.concat("length","prototype"),f$3=Object.getOwnPropertyNames||function(O){return objectKeysInternal(O,hiddenKeys)},objectGetOwnPropertyNames={f:f$3},f$2=Object.getOwnPropertySymbols,objectGetOwnPropertySymbols={f:f$2},concat$1=functionUncurryThis([].concat),ownKeys=getBuiltIn("Reflect","ownKeys")||function(it){var keys=objectGetOwnPropertyNames.f(anObject(it)),getOwnPropertySymbols=objectGetOwnPropertySymbols.f;return getOwnPropertySymbols?concat$1(keys,getOwnPropertySymbols(it)):keys},copyConstructorProperties=function(target,source,exceptions){for(var keys=ownKeys(source),defineProperty=objectDefineProperty.f,getOwnPropertyDescriptor=objectGetOwnPropertyDescriptor.f,i=0;iindex;)objectDefineProperty.f(O,key=keys[index++],props[key]);return O},objectDefineProperties={f:f$1},html=getBuiltIn("document","documentElement"),GT=">",LT="<",PROTOTYPE="prototype",SCRIPT="script",IE_PROTO$1=sharedKey("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(content){return LT+SCRIPT+GT+content+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(activeXDocument){activeXDocument.write(scriptTag("")),activeXDocument.close();var temp=activeXDocument.parentWindow.Object;return activeXDocument=null,temp},NullProtoObjectViaIFrame=function(){var iframeDocument,iframe=documentCreateElement("iframe"),JS="java"+SCRIPT+":";return iframe.style.display="none",html.appendChild(iframe),iframe.src=String(JS),(iframeDocument=iframe.contentWindow.document).open(),iframeDocument.write(scriptTag("document.F=Object")),iframeDocument.close(),iframeDocument.F},activeXDocument,NullProtoObject=function(){try{activeXDocument=new ActiveXObject("htmlfile")}catch(error){}NullProtoObject="undefined"!=typeof document?document.domain&&activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame():NullProtoObjectViaActiveX(activeXDocument);for(var length=enumBugKeys.length;length--;)delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];return NullProtoObject()};hiddenKeys$1[IE_PROTO$1]=!0;var objectCreate=Object.create||function(O,Properties){var result;return null!==O?(EmptyConstructor[PROTOTYPE]=anObject(O),result=new EmptyConstructor,EmptyConstructor[PROTOTYPE]=null,result[IE_PROTO$1]=O):result=NullProtoObject(),void 0===Properties?result:objectDefineProperties.f(result,Properties)},correctPrototypeGetter=!fails((function(){function F(){}return F.prototype.constructor=null,Object.getPrototypeOf(new F)!==F.prototype})),IE_PROTO=sharedKey("IE_PROTO"),$Object=Object,ObjectPrototype=$Object.prototype,objectGetPrototypeOf=correctPrototypeGetter?$Object.getPrototypeOf:function(O){var object=toObject(O);if(hasOwnProperty_1(object,IE_PROTO))return object[IE_PROTO];var constructor=object.constructor;return isCallable(constructor)&&object instanceof constructor?constructor.prototype:object instanceof $Object?ObjectPrototype:null},ITERATOR$5=wellKnownSymbol("iterator"),BUGGY_SAFARI_ITERATORS$1=!1,IteratorPrototype$2,PrototypeOfArrayIteratorPrototype,arrayIterator;[].keys&&(arrayIterator=[].keys(),"next"in arrayIterator?(PrototypeOfArrayIteratorPrototype=objectGetPrototypeOf(objectGetPrototypeOf(arrayIterator)),PrototypeOfArrayIteratorPrototype!==Object.prototype&&(IteratorPrototype$2=PrototypeOfArrayIteratorPrototype)):BUGGY_SAFARI_ITERATORS$1=!0);var NEW_ITERATOR_PROTOTYPE=!isObject(IteratorPrototype$2)||fails((function(){var test={};return IteratorPrototype$2[ITERATOR$5].call(test)!==test}));NEW_ITERATOR_PROTOTYPE&&(IteratorPrototype$2={}),isCallable(IteratorPrototype$2[ITERATOR$5])||defineBuiltIn(IteratorPrototype$2,ITERATOR$5,(function(){return this}));var iteratorsCore={IteratorPrototype:IteratorPrototype$2,BUGGY_SAFARI_ITERATORS:BUGGY_SAFARI_ITERATORS$1},defineProperty$3=objectDefineProperty.f,TO_STRING_TAG$2=wellKnownSymbol("toStringTag"),setToStringTag=function(target,TAG,STATIC){target&&!STATIC&&(target=target.prototype),target&&!hasOwnProperty_1(target,TO_STRING_TAG$2)&&defineProperty$3(target,TO_STRING_TAG$2,{configurable:!0,value:TAG})},iterators={},IteratorPrototype$1=iteratorsCore.IteratorPrototype,returnThis$1=function(){return this},iteratorCreateConstructor=function(IteratorConstructor,NAME,next,ENUMERABLE_NEXT){var TO_STRING_TAG=NAME+" Iterator";return IteratorConstructor.prototype=objectCreate(IteratorPrototype$1,{next:createPropertyDescriptor(+!ENUMERABLE_NEXT,next)}),setToStringTag(IteratorConstructor,TO_STRING_TAG,!1),iterators[TO_STRING_TAG]=returnThis$1,IteratorConstructor},$String=String,$TypeError$8=TypeError,aPossiblePrototype=function(argument){if("object"==typeof argument||isCallable(argument))return argument;throw $TypeError$8("Can't set "+$String(argument)+" as a prototype")},objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var setter,CORRECT_SETTER=!1,test={};try{(setter=functionUncurryThis(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(test,[]),CORRECT_SETTER=test instanceof Array}catch(error){}return function(O,proto){return anObject(O),aPossiblePrototype(proto),CORRECT_SETTER?setter(O,proto):O.__proto__=proto,O}}():void 0),PROPER_FUNCTION_NAME=functionName.PROPER,CONFIGURABLE_FUNCTION_NAME=functionName.CONFIGURABLE,IteratorPrototype=iteratorsCore.IteratorPrototype,BUGGY_SAFARI_ITERATORS=iteratorsCore.BUGGY_SAFARI_ITERATORS,ITERATOR$4=wellKnownSymbol("iterator"),KEYS="keys",VALUES="values",ENTRIES="entries",returnThis=function(){return this},iteratorDefine=function(Iterable,NAME,IteratorConstructor,next,DEFAULT,IS_SET,FORCED){iteratorCreateConstructor(IteratorConstructor,NAME,next);var CurrentIteratorPrototype,methods,KEY,getIterationMethod=function(KIND){if(KIND===DEFAULT&&defaultIterator)return defaultIterator;if(!BUGGY_SAFARI_ITERATORS&&KIND in IterablePrototype)return IterablePrototype[KIND];switch(KIND){case KEYS:case VALUES:case ENTRIES:return function(){return new IteratorConstructor(this,KIND)}}return function(){return new IteratorConstructor(this)}},TO_STRING_TAG=NAME+" Iterator",INCORRECT_VALUES_NAME=!1,IterablePrototype=Iterable.prototype,nativeIterator=IterablePrototype[ITERATOR$4]||IterablePrototype["@@iterator"]||DEFAULT&&IterablePrototype[DEFAULT],defaultIterator=!BUGGY_SAFARI_ITERATORS&&nativeIterator||getIterationMethod(DEFAULT),anyNativeIterator="Array"==NAME&&IterablePrototype.entries||nativeIterator;if(anyNativeIterator&&(CurrentIteratorPrototype=objectGetPrototypeOf(anyNativeIterator.call(new Iterable)))!==Object.prototype&&CurrentIteratorPrototype.next&&(objectGetPrototypeOf(CurrentIteratorPrototype)!==IteratorPrototype&&(objectSetPrototypeOf?objectSetPrototypeOf(CurrentIteratorPrototype,IteratorPrototype):isCallable(CurrentIteratorPrototype[ITERATOR$4])||defineBuiltIn(CurrentIteratorPrototype,ITERATOR$4,returnThis)),setToStringTag(CurrentIteratorPrototype,TO_STRING_TAG,!0)),PROPER_FUNCTION_NAME&&DEFAULT==VALUES&&nativeIterator&&nativeIterator.name!==VALUES&&(CONFIGURABLE_FUNCTION_NAME?createNonEnumerableProperty(IterablePrototype,"name",VALUES):(INCORRECT_VALUES_NAME=!0,defaultIterator=function(){return functionCall(nativeIterator,this)})),DEFAULT)if(methods={values:getIterationMethod(VALUES),keys:IS_SET?defaultIterator:getIterationMethod(KEYS),entries:getIterationMethod(ENTRIES)},FORCED)for(KEY in methods)(BUGGY_SAFARI_ITERATORS||INCORRECT_VALUES_NAME||!(KEY in IterablePrototype))&&defineBuiltIn(IterablePrototype,KEY,methods[KEY]);else _export({target:NAME,proto:!0,forced:BUGGY_SAFARI_ITERATORS||INCORRECT_VALUES_NAME},methods);return IterablePrototype[ITERATOR$4]!==defaultIterator&&defineBuiltIn(IterablePrototype,ITERATOR$4,defaultIterator,{name:DEFAULT}),iterators[NAME]=defaultIterator,methods},createIterResultObject=function(value,done){return{value:value,done:done}},charAt=stringMultibyte.charAt,STRING_ITERATOR="String Iterator",setInternalState$2=internalState.set,getInternalState$1=internalState.getterFor(STRING_ITERATOR);iteratorDefine(String,"String",(function(iterated){setInternalState$2(this,{type:STRING_ITERATOR,string:toString_1(iterated),index:0})}),(function(){var point,state=getInternalState$1(this),string=state.string,index=state.index;return index>=string.length?createIterResultObject(void 0,!0):(point=charAt(string,index),state.index+=point.length,createIterResultObject(point,!1))}));var functionUncurryThisClause=function(fn){if("Function"===classofRaw(fn))return functionUncurryThis(fn)},bind$1=functionUncurryThisClause(functionUncurryThisClause.bind),functionBindContext=function(fn,that){return aCallable(fn),void 0===that?fn:functionBindNative?bind$1(fn,that):function(){return fn.apply(that,arguments)}},iteratorClose=function(iterator,kind,value){var innerResult,innerError;anObject(iterator);try{if(!(innerResult=getMethod(iterator,"return"))){if("throw"===kind)throw value;return value}innerResult=functionCall(innerResult,iterator)}catch(error){innerError=!0,innerResult=error}if("throw"===kind)throw value;if(innerError)throw innerResult;return anObject(innerResult),value},callWithSafeIterationClosing=function(iterator,fn,value,ENTRIES){try{return ENTRIES?fn(anObject(value)[0],value[1]):fn(value)}catch(error){iteratorClose(iterator,"throw",error)}},ITERATOR$3=wellKnownSymbol("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod=function(it){return void 0!==it&&(iterators.Array===it||ArrayPrototype$1[ITERATOR$3]===it)},noop$1=function(){},empty=[],construct=getBuiltIn("Reflect","construct"),constructorRegExp=/^\s*(?:class|function)\b/,exec=functionUncurryThis(constructorRegExp.exec),INCORRECT_TO_STRING=!constructorRegExp.exec(noop$1),isConstructorModern=function(argument){if(!isCallable(argument))return!1;try{return construct(noop$1,empty,argument),!0}catch(error){return!1}},isConstructorLegacy=function(argument){if(!isCallable(argument))return!1;switch(classof(argument)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return INCORRECT_TO_STRING||!!exec(constructorRegExp,inspectSource(argument))}catch(error){return!0}};isConstructorLegacy.sham=!0;var isConstructor=!construct||fails((function(){var called;return isConstructorModern(isConstructorModern.call)||!isConstructorModern(Object)||!isConstructorModern((function(){called=!0}))||called}))?isConstructorLegacy:isConstructorModern,createProperty=function(object,key,value){var propertyKey=toPropertyKey(key);propertyKey in object?objectDefineProperty.f(object,propertyKey,createPropertyDescriptor(0,value)):object[propertyKey]=value},ITERATOR$2=wellKnownSymbol("iterator"),getIteratorMethod=function(it){if(!isNullOrUndefined(it))return getMethod(it,ITERATOR$2)||getMethod(it,"@@iterator")||iterators[classof(it)]},$TypeError$7=TypeError,getIterator=function(argument,usingIterator){var iteratorMethod=arguments.length<2?getIteratorMethod(argument):usingIterator;if(aCallable(iteratorMethod))return anObject(functionCall(iteratorMethod,argument));throw $TypeError$7(tryToString(argument)+" is not iterable")},$Array$1=Array,arrayFrom=function(arrayLike){var O=toObject(arrayLike),IS_CONSTRUCTOR=isConstructor(this),argumentsLength=arguments.length,mapfn=argumentsLength>1?arguments[1]:void 0,mapping=void 0!==mapfn;mapping&&(mapfn=functionBindContext(mapfn,argumentsLength>2?arguments[2]:void 0));var length,result,step,iterator,next,value,iteratorMethod=getIteratorMethod(O),index=0;if(!iteratorMethod||this===$Array$1&&isArrayIteratorMethod(iteratorMethod))for(length=lengthOfArrayLike(O),result=IS_CONSTRUCTOR?new this(length):$Array$1(length);length>index;index++)value=mapping?mapfn(O[index],index):O[index],createProperty(result,index,value);else for(next=(iterator=getIterator(O,iteratorMethod)).next,result=IS_CONSTRUCTOR?new this:[];!(step=functionCall(next,iterator)).done;index++)value=mapping?callWithSafeIterationClosing(iterator,mapfn,[step.value,index],!0):step.value,createProperty(result,index,value);return result.length=index,result},ITERATOR$1=wellKnownSymbol("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$1]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(error){}var checkCorrectnessOfIteration=function(exec,SKIP_CLOSING){if(!SKIP_CLOSING&&!SAFE_CLOSING)return!1;var ITERATION_SUPPORT=!1;try{var object={};object[ITERATOR$1]=function(){return{next:function(){return{done:ITERATION_SUPPORT=!0}}}},exec(object)}catch(error){}return ITERATION_SUPPORT},INCORRECT_ITERATION=!checkCorrectnessOfIteration((function(iterable){Array.from(iterable)}));_export({target:"Array",stat:!0,forced:INCORRECT_ITERATION},{from:arrayFrom});var path=global_1;path.Array.from;var defineProperty$2=objectDefineProperty.f,UNSCOPABLES=wellKnownSymbol("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&defineProperty$2(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:objectCreate(null)});var addToUnscopables=function(key){ArrayPrototype[UNSCOPABLES][key]=!0},$includes=arrayIncludes.includes,BROKEN_ON_SPARSE=fails((function(){return!Array(1).includes()}));_export({target:"Array",proto:!0,forced:BROKEN_ON_SPARSE},{includes:function(el){return $includes(this,el,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables("includes");var entryUnbind=function(CONSTRUCTOR,METHOD){return functionUncurryThis(global_1[CONSTRUCTOR].prototype[METHOD])};entryUnbind("Array","includes");var isArray=Array.isArray||function(argument){return"Array"==classofRaw(argument)},$TypeError$6=TypeError,MAX_SAFE_INTEGER=9007199254740991,doesNotExceedSafeInteger=function(it){if(it>MAX_SAFE_INTEGER)throw $TypeError$6("Maximum allowed index exceeded");return it},flattenIntoArray=function(target,original,source,sourceLen,start,depth,mapper,thisArg){for(var element,elementLen,targetIndex=start,sourceIndex=0,mapFn=!!mapper&&functionBindContext(mapper,thisArg);sourceIndex0&&isArray(element)?(elementLen=lengthOfArrayLike(element),targetIndex=flattenIntoArray(target,original,element,elementLen,targetIndex,depth-1)-1):(doesNotExceedSafeInteger(targetIndex+1),target[targetIndex]=element),targetIndex++),sourceIndex++;return targetIndex},flattenIntoArray_1=flattenIntoArray,SPECIES$3=wellKnownSymbol("species"),$Array=Array,arraySpeciesConstructor=function(originalArray){var C;return isArray(originalArray)&&(C=originalArray.constructor,(isConstructor(C)&&(C===$Array||isArray(C.prototype))||isObject(C)&&null===(C=C[SPECIES$3]))&&(C=void 0)),void 0===C?$Array:C},arraySpeciesCreate=function(originalArray,length){return new(arraySpeciesConstructor(originalArray))(0===length?0:length)};_export({target:"Array",proto:!0},{flat:function(){var depthArg=arguments.length?arguments[0]:void 0,O=toObject(this),sourceLen=lengthOfArrayLike(O),A=arraySpeciesCreate(O,0);return A.length=flattenIntoArray_1(A,O,O,sourceLen,0,void 0===depthArg?1:toIntegerOrInfinity(depthArg)),A}}),addToUnscopables("flat"),entryUnbind("Array","flat");var push$2=functionUncurryThis([].push),createMethod$1=function(TYPE){var IS_MAP=1==TYPE,IS_FILTER=2==TYPE,IS_SOME=3==TYPE,IS_EVERY=4==TYPE,IS_FIND_INDEX=6==TYPE,IS_FILTER_REJECT=7==TYPE,NO_HOLES=5==TYPE||IS_FIND_INDEX;return function($this,callbackfn,that,specificCreate){for(var value,result,O=toObject($this),self=indexedObject(O),boundFunction=functionBindContext(callbackfn,that),length=lengthOfArrayLike(self),index=0,create=specificCreate||arraySpeciesCreate,target=IS_MAP?create($this,length):IS_FILTER||IS_FILTER_REJECT?create($this,0):void 0;length>index;index++)if((NO_HOLES||index in self)&&(result=boundFunction(value=self[index],index,O),TYPE))if(IS_MAP)target[index]=result;else if(result)switch(TYPE){case 3:return!0;case 5:return value;case 6:return index;case 2:push$2(target,value)}else switch(TYPE){case 4:return!1;case 7:push$2(target,value)}return IS_FIND_INDEX?-1:IS_SOME||IS_EVERY?IS_EVERY:target}},arrayIteration={forEach:createMethod$1(0),map:createMethod$1(1),filter:createMethod$1(2),some:createMethod$1(3),every:createMethod$1(4),find:createMethod$1(5),findIndex:createMethod$1(6),filterReject:createMethod$1(7)},$find=arrayIteration.find,FIND="find",SKIPS_HOLES=!0;FIND in[]&&Array(1)[FIND]((function(){SKIPS_HOLES=!1})),_export({target:"Array",proto:!0,forced:SKIPS_HOLES},{find:function(callbackfn){return $find(this,callbackfn,arguments.length>1?arguments[1]:void 0)}}),addToUnscopables(FIND),entryUnbind("Array","find");var $assign=Object.assign,defineProperty$1=Object.defineProperty,concat=functionUncurryThis([].concat),objectAssign=!$assign||fails((function(){if(descriptors&&1!==$assign({b:1},$assign(defineProperty$1({},"a",{enumerable:!0,get:function(){defineProperty$1(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var A={},B={},symbol=Symbol();return A[symbol]=7,"abcdefghijklmnopqrst".split("").forEach((function(chr){B[chr]=chr})),7!=$assign({},A)[symbol]||"abcdefghijklmnopqrst"!=objectKeys($assign({},B)).join("")}))?function(target,source){for(var T=toObject(target),argumentsLength=arguments.length,index=1,getOwnPropertySymbols=objectGetOwnPropertySymbols.f,propertyIsEnumerable=objectPropertyIsEnumerable.f;argumentsLength>index;)for(var key,S=indexedObject(arguments[index++]),keys=getOwnPropertySymbols?concat(objectKeys(S),getOwnPropertySymbols(S)):objectKeys(S),length=keys.length,j=0;length>j;)key=keys[j++],descriptors&&!functionCall(propertyIsEnumerable,S,key)||(T[key]=S[key]);return T}:$assign;_export({target:"Object",stat:!0,arity:2,forced:Object.assign!==objectAssign},{assign:objectAssign}),path.Object.assign;var $propertyIsEnumerable=objectPropertyIsEnumerable.f,propertyIsEnumerable=functionUncurryThis($propertyIsEnumerable),push$1=functionUncurryThis([].push),createMethod=function(TO_ENTRIES){return function(it){for(var key,O=toIndexedObject(it),keys=objectKeys(O),length=keys.length,i=0,result=[];length>i;)key=keys[i++],descriptors&&!propertyIsEnumerable(O,key)||push$1(result,TO_ENTRIES?[key,O[key]]:O[key]);return result}},objectToArray={entries:createMethod(!0),values:createMethod(!1)},$entries=objectToArray.entries;_export({target:"Object",stat:!0},{entries:function(O){return $entries(O)}}),path.Object.entries;var $values=objectToArray.values;_export({target:"Object",stat:!0},{values:function(O){return $values(O)}}),path.Object.values;var $Error$1=Error,replace=functionUncurryThis("".replace),TEST=String($Error$1("zxcasd").stack),V8_OR_CHAKRA_STACK_ENTRY=/\n\s*at [^:]*:[^\n]*/,IS_V8_OR_CHAKRA_STACK=V8_OR_CHAKRA_STACK_ENTRY.test(TEST),errorStackClear=function(stack,dropEntries){if(IS_V8_OR_CHAKRA_STACK&&"string"==typeof stack&&!$Error$1.prepareStackTrace)for(;dropEntries--;)stack=replace(stack,V8_OR_CHAKRA_STACK_ENTRY,"");return stack},installErrorCause=function(O,options){isObject(options)&&"cause"in options&&createNonEnumerableProperty(O,"cause",options.cause)},$TypeError$5=TypeError,Result=function(stopped,result){this.stopped=stopped,this.result=result},ResultPrototype=Result.prototype,iterate=function(iterable,unboundFunction,options){var iterator,iterFn,index,length,result,next,step,that=options&&options.that,AS_ENTRIES=!(!options||!options.AS_ENTRIES),IS_RECORD=!(!options||!options.IS_RECORD),IS_ITERATOR=!(!options||!options.IS_ITERATOR),INTERRUPTED=!(!options||!options.INTERRUPTED),fn=functionBindContext(unboundFunction,that),stop=function(condition){return iterator&&iteratorClose(iterator,"normal",condition),new Result(!0,condition)},callFn=function(value){return AS_ENTRIES?(anObject(value),INTERRUPTED?fn(value[0],value[1],stop):fn(value[0],value[1])):INTERRUPTED?fn(value,stop):fn(value)};if(IS_RECORD)iterator=iterable.iterator;else if(IS_ITERATOR)iterator=iterable;else{if(!(iterFn=getIteratorMethod(iterable)))throw $TypeError$5(tryToString(iterable)+" is not iterable");if(isArrayIteratorMethod(iterFn)){for(index=0,length=lengthOfArrayLike(iterable);length>index;index++)if((result=callFn(iterable[index]))&&objectIsPrototypeOf(ResultPrototype,result))return result;return new Result(!1)}iterator=getIterator(iterable,iterFn)}for(next=IS_RECORD?iterable.next:iterator.next;!(step=functionCall(next,iterator)).done;){try{result=callFn(step.value)}catch(error){iteratorClose(iterator,"throw",error)}if("object"==typeof result&&result&&objectIsPrototypeOf(ResultPrototype,result))return result}return new Result(!1)},normalizeStringArgument=function(argument,$default){return void 0===argument?arguments.length<2?"":$default:toString_1(argument)},errorStackInstallable=!fails((function(){var error=Error("a");return!("stack"in error)||(Object.defineProperty(error,"stack",createPropertyDescriptor(1,7)),7!==error.stack)})),TO_STRING_TAG$1=wellKnownSymbol("toStringTag"),$Error=Error,push=[].push,$AggregateError=function(errors,message){var that,options=arguments.length>2?arguments[2]:void 0,isInstance=objectIsPrototypeOf(AggregateErrorPrototype,this);objectSetPrototypeOf?that=objectSetPrototypeOf($Error(),isInstance?objectGetPrototypeOf(this):AggregateErrorPrototype):(that=isInstance?this:objectCreate(AggregateErrorPrototype),createNonEnumerableProperty(that,TO_STRING_TAG$1,"Error")),void 0!==message&&createNonEnumerableProperty(that,"message",normalizeStringArgument(message)),errorStackInstallable&&createNonEnumerableProperty(that,"stack",errorStackClear(that.stack,1)),installErrorCause(that,options);var errorsArray=[];return iterate(errors,push,{that:errorsArray}),createNonEnumerableProperty(that,"errors",errorsArray),that};objectSetPrototypeOf?objectSetPrototypeOf($AggregateError,$Error):copyConstructorProperties($AggregateError,$Error,{name:!0});var AggregateErrorPrototype=$AggregateError.prototype=objectCreate($Error.prototype,{constructor:createPropertyDescriptor(1,$AggregateError),message:createPropertyDescriptor(1,""),name:createPropertyDescriptor(1,"AggregateError")});_export({global:!0,constructor:!0,arity:2},{AggregateError:$AggregateError});var defineProperty=objectDefineProperty.f,ARRAY_ITERATOR="Array Iterator",setInternalState$1=internalState.set,getInternalState=internalState.getterFor(ARRAY_ITERATOR),es_array_iterator=iteratorDefine(Array,"Array",(function(iterated,kind){setInternalState$1(this,{type:ARRAY_ITERATOR,target:toIndexedObject(iterated),index:0,kind:kind})}),(function(){var state=getInternalState(this),target=state.target,kind=state.kind,index=state.index++;return!target||index>=target.length?(state.target=void 0,createIterResultObject(void 0,!0)):createIterResultObject("keys"==kind?index:"values"==kind?target[index]:[index,target[index]],!1)}),"values"),values=iterators.Arguments=iterators.Array;if(addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries"),descriptors&&"values"!==values.name)try{defineProperty(values,"name",{value:"values"})}catch(error){}var objectToString=toStringTagSupport?{}.toString:function(){return"[object "+classof(this)+"]"};toStringTagSupport||defineBuiltIn(Object.prototype,"toString",objectToString,{unsafe:!0});var engineIsNode="process"==classofRaw(global_1.process),SPECIES$2=wellKnownSymbol("species"),setSpecies=function(CONSTRUCTOR_NAME){var Constructor=getBuiltIn(CONSTRUCTOR_NAME),defineProperty=objectDefineProperty.f;descriptors&&Constructor&&!Constructor[SPECIES$2]&&defineProperty(Constructor,SPECIES$2,{configurable:!0,get:function(){return this}})},$TypeError$4=TypeError,anInstance=function(it,Prototype){if(objectIsPrototypeOf(Prototype,it))return it;throw $TypeError$4("Incorrect invocation")},$TypeError$3=TypeError,aConstructor=function(argument){if(isConstructor(argument))return argument;throw $TypeError$3(tryToString(argument)+" is not a constructor")},SPECIES$1=wellKnownSymbol("species"),speciesConstructor=function(O,defaultConstructor){var S,C=anObject(O).constructor;return void 0===C||isNullOrUndefined(S=anObject(C)[SPECIES$1])?defaultConstructor:aConstructor(S)},FunctionPrototype=Function.prototype,apply=FunctionPrototype.apply,call=FunctionPrototype.call,functionApply="object"==typeof Reflect&&Reflect.apply||(functionBindNative?call.bind(apply):function(){return call.apply(apply,arguments)}),arraySlice=functionUncurryThis([].slice),$TypeError$2=TypeError,validateArgumentsLength=function(passed,required){if(passed1?arguments[1]:void 0,that.length)),search=toString_1(searchString);return nativeStartsWith?nativeStartsWith(that,search,index):stringSlice(that,index,index+search.length)===search}}),entryUnbind("String","startsWith");var global$1="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==global$1&&global$1,support={searchParams:"URLSearchParams"in global$1,iterable:"Symbol"in global$1&&"iterator"in Symbol,blob:"FileReader"in global$1&&"Blob"in global$1&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in global$1,arrayBuffer:"ArrayBuffer"in global$1};function isDataView(obj){return obj&&DataView.prototype.isPrototypeOf(obj)}if(support.arrayBuffer)var viewClasses=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],isArrayBufferView=ArrayBuffer.isView||function(obj){return obj&&viewClasses.indexOf(Object.prototype.toString.call(obj))>-1};function normalizeName(name){if("string"!=typeof name&&(name=String(name)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(name)||""===name)throw new TypeError('Invalid character in header field name: "'+name+'"');return name.toLowerCase()}function normalizeValue(value){return"string"!=typeof value&&(value=String(value)),value}function iteratorFor(items){var iterator={next:function(){var value=items.shift();return{done:void 0===value,value:value}}};return support.iterable&&(iterator[Symbol.iterator]=function(){return iterator}),iterator}function Headers(headers){this.map={},headers instanceof Headers?headers.forEach((function(value,name){this.append(name,value)}),this):Array.isArray(headers)?headers.forEach((function(header){this.append(header[0],header[1])}),this):headers&&Object.getOwnPropertyNames(headers).forEach((function(name){this.append(name,headers[name])}),this)}function consumed(body){if(body.bodyUsed)return Promise.reject(new TypeError("Already read"));body.bodyUsed=!0}function fileReaderReady(reader){return new Promise((function(resolve,reject){reader.onload=function(){resolve(reader.result)},reader.onerror=function(){reject(reader.error)}}))}function readBlobAsArrayBuffer(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsArrayBuffer(blob),promise}function readBlobAsText(blob){var reader=new FileReader,promise=fileReaderReady(reader);return reader.readAsText(blob),promise}function readArrayBufferAsText(buf){for(var view=new Uint8Array(buf),chars=new Array(view.length),i=0;i-1?upcased:method}function Request(input,options){if(!(this instanceof Request))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var body=(options=options||{}).body;if(input instanceof Request){if(input.bodyUsed)throw new TypeError("Already read");this.url=input.url,this.credentials=input.credentials,options.headers||(this.headers=new Headers(input.headers)),this.method=input.method,this.mode=input.mode,this.signal=input.signal,body||null==input._bodyInit||(body=input._bodyInit,input.bodyUsed=!0)}else this.url=String(input);if(this.credentials=options.credentials||this.credentials||"same-origin",!options.headers&&this.headers||(this.headers=new Headers(options.headers)),this.method=normalizeMethod(options.method||this.method||"GET"),this.mode=options.mode||this.mode||null,this.signal=options.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&body)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(body),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==options.cache&&"no-cache"!==options.cache)){var reParamSearch=/([?&])_=[^&]*/;if(reParamSearch.test(this.url))this.url=this.url.replace(reParamSearch,"$1_="+(new Date).getTime());else{this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}}function decode(body){var form=new FormData;return body.trim().split("&").forEach((function(bytes){if(bytes){var split=bytes.split("="),name=split.shift().replace(/\+/g," "),value=split.join("=").replace(/\+/g," ");form.append(decodeURIComponent(name),decodeURIComponent(value))}})),form}function parseHeaders(rawHeaders){var headers=new Headers;return rawHeaders.replace(/\r?\n[\t ]+/g," ").split("\r").map((function(header){return 0===header.indexOf("\n")?header.substr(1,header.length):header})).forEach((function(line){var parts=line.split(":"),key=parts.shift().trim();if(key){var value=parts.join(":").trim();headers.append(key,value)}})),headers}function Response(bodyInit,options){if(!(this instanceof Response))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');options||(options={}),this.type="default",this.status=void 0===options.status?200:options.status,this.ok=this.status>=200&&this.status<300,this.statusText=void 0===options.statusText?"":""+options.statusText,this.headers=new Headers(options.headers),this.url=options.url||"",this._initBody(bodyInit)}Request.prototype.clone=function(){return new Request(this,{body:this._bodyInit})},Body.call(Request.prototype),Body.call(Response.prototype),Response.prototype.clone=function(){return new Response(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new Headers(this.headers),url:this.url})},Response.error=function(){var response=new Response(null,{status:0,statusText:""});return response.type="error",response};var redirectStatuses=[301,302,303,307,308];Response.redirect=function(url,status){if(-1===redirectStatuses.indexOf(status))throw new RangeError("Invalid status code");return new Response(null,{status:status,headers:{location:url}})};var DOMException=global$1.DOMException;try{new DOMException}catch(err){DOMException=function(message,name){this.message=message,this.name=name;var error=Error(message);this.stack=error.stack},DOMException.prototype=Object.create(Error.prototype),DOMException.prototype.constructor=DOMException}function fetch$1(input,init){return new Promise((function(resolve,reject){var request=new Request(input,init);if(request.signal&&request.signal.aborted)return reject(new DOMException("Aborted","AbortError"));var xhr=new XMLHttpRequest;function abortXhr(){xhr.abort()}xhr.onload=function(){var options={status:xhr.status,statusText:xhr.statusText,headers:parseHeaders(xhr.getAllResponseHeaders()||"")};options.url="responseURL"in xhr?xhr.responseURL:options.headers.get("X-Request-URL");var body="response"in xhr?xhr.response:xhr.responseText;setTimeout((function(){resolve(new Response(body,options))}),0)},xhr.onerror=function(){setTimeout((function(){reject(new TypeError("Network request failed"))}),0)},xhr.ontimeout=function(){setTimeout((function(){reject(new TypeError("Network request failed"))}),0)},xhr.onabort=function(){setTimeout((function(){reject(new DOMException("Aborted","AbortError"))}),0)},xhr.open(request.method,function(url){try{return""===url&&global$1.location.href?global$1.location.href:url}catch(e){return url}}(request.url),!0),"include"===request.credentials?xhr.withCredentials=!0:"omit"===request.credentials&&(xhr.withCredentials=!1),"responseType"in xhr&&(support.blob?xhr.responseType="blob":support.arrayBuffer&&request.headers.get("Content-Type")&&-1!==request.headers.get("Content-Type").indexOf("application/octet-stream")&&(xhr.responseType="arraybuffer")),!init||"object"!=typeof init.headers||init.headers instanceof Headers?request.headers.forEach((function(value,name){xhr.setRequestHeader(name,value)})):Object.getOwnPropertyNames(init.headers).forEach((function(name){xhr.setRequestHeader(name,normalizeValue(init.headers[name]))})),request.signal&&(request.signal.addEventListener("abort",abortXhr),xhr.onreadystatechange=function(){4===xhr.readyState&&request.signal.removeEventListener("abort",abortXhr)}),xhr.send(void 0===request._bodyInit?null:request._bodyInit)}))}fetch$1.polyfill=!0,global$1.fetch||(global$1.fetch=fetch$1,global$1.Headers=Headers,global$1.Request=Request,global$1.Response=Response),null==Element.prototype.getAttributeNames&&(Element.prototype.getAttributeNames=function(){for(var attributes=this.attributes,length=attributes.length,result=new Array(length),i=0;i=0&&matches.item(i)!==this;);return i>-1}),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),Element.prototype.closest||(Element.prototype.closest=function(s){var el=this;do{if(el.matches(s))return el;el=el.parentElement||el.parentNode}while(null!==el&&1===el.nodeType);return null});var Connection=function(){function Connection(){_classCallCheck(this,Connection),this.headers={}}return _createClass(Connection,[{key:"onMessage",value:function(message,payload){message.component.receiveMessage(message,payload)}},{key:"onError",value:function(message,status,response){return message.component.messageSendFailed(),store$2.onErrorCallback(status,response)}},{key:"showExpiredMessage",value:function(response,message){store$2.sessionHasExpiredCallback?store$2.sessionHasExpiredCallback(response,message):confirm("This page has expired.\nWould you like to refresh the page?")&&window.location.reload()}},{key:"sendMessage",value:function(message){var _this=this,payload=message.payload(),csrfToken=getCsrfToken(),socketId=this.getSocketId(),appUrl=window.livewire_app_url;if(this.shouldUseLocalePrefix(payload)&&(appUrl="".concat(appUrl,"/").concat(payload.fingerprint.locale)),window.__testing_request_interceptor)return window.__testing_request_interceptor(payload,this);fetch("".concat(appUrl,"/livewire/message/").concat(payload.fingerprint.name),{method:"POST",body:JSON.stringify(payload),credentials:"same-origin",headers:_objectSpread2(_objectSpread2(_objectSpread2({"Content-Type":"application/json",Accept:"text/html, application/xhtml+xml","X-Livewire":!0},this.headers),{},{Referer:window.location.href},csrfToken&&{"X-CSRF-TOKEN":csrfToken}),socketId&&{"X-Socket-ID":socketId})}).then((function(response){if(response.ok)response.text().then((function(response){_this.isOutputFromDump(response)?(_this.onError(message),_this.showHtmlModal(response)):_this.onMessage(message,JSON.parse(response))}));else{if(!1===_this.onError(message,response.status,response))return;if(419===response.status){if(store$2.sessionHasExpired)return;store$2.sessionHasExpired=!0,_this.showExpiredMessage(response,message)}else response.text().then((function(response){_this.showHtmlModal(response)}))}})).catch((function(){_this.onError(message)}))}},{key:"shouldUseLocalePrefix",value:function(payload){var path=payload.fingerprint.path,locale=payload.fingerprint.locale;return path.split("/")[0]==locale}},{key:"isOutputFromDump",value:function(output){return!!output.match(/