diff --git a/app/Console/Commands/OpenApiYaml.php b/app/Console/Commands/OpenApiYaml.php
index cb70e59c34d7..9c43a7408a9e 100644
--- a/app/Console/Commands/OpenApiYaml.php
+++ b/app/Console/Commands/OpenApiYaml.php
@@ -32,6 +32,11 @@ class OpenApiYaml extends Command
*/
protected $description = 'Build OpenApi YAML';
+ private array $directories = [
+ '/components/schemas',
+ '/paths/'
+ ];
+
/**
* Create a new command instance.
*
@@ -61,14 +66,50 @@ class OpenApiYaml extends Command
$this->info($file);
+ }
+
Storage::disk('base')->delete('/openapi/api-docs.yaml');
Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/info.yaml'));
- Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/paths/paths.yaml'));
- Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/components/components.yaml'));
+ Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/paths.yaml'));
+
+ //iterate paths
+ $directory = new DirectoryIterator($path . '/paths/');
+
+ foreach ($directory as $file) {
+
+ if ($file->isFile() && ! $file->isDot())
+ {
+
+ Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents("{$path}/paths/{$file->getFilename()}"));
+
+ }
+
+ }
+
+
+
+ Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/components.yaml'));
+ Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/components/schemas.yaml'));
+
+ //iterate schemas
+
+ $directory = new DirectoryIterator($path . '/components/schemas/');
+
+ foreach ($directory as $file) {
+
+ if ($file->isFile() && ! $file->isDot())
+ {
+
+ Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents("{$path}/components/schemas/{$file->getFilename()}"));
+
+ }
+
+ }
+
+ // Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/components/schemas/account.yaml'));
Storage::disk('base')->append('/openapi/api-docs.yaml', file_get_contents($path.'/misc/misc.yaml'));
- }
}
}
diff --git a/app/Helpers/Bank/Yodlee/Transformer/IncomeTransformer.php b/app/Helpers/Bank/Yodlee/Transformer/IncomeTransformer.php
index fc272f0eb1bd..3ae26cbf7c9e 100644
--- a/app/Helpers/Bank/Yodlee/Transformer/IncomeTransformer.php
+++ b/app/Helpers/Bank/Yodlee/Transformer/IncomeTransformer.php
@@ -127,6 +127,10 @@ class IncomeTransformer implements BankRevenueInterface
foreach($transaction->transaction as $transaction)
{
+ //do not store duplicate / pending transactions
+ if(property_exists($transaction,'status') && $transaction->status == 'PENDING')
+ continue;
+
$data[] = $this->transformTransaction($transaction);
}
diff --git a/app/Http/Middleware/TokenAuth.php b/app/Http/Middleware/TokenAuth.php
index cc7c0230c8a1..b312e1df5263 100644
--- a/app/Http/Middleware/TokenAuth.php
+++ b/app/Http/Middleware/TokenAuth.php
@@ -52,12 +52,6 @@ class TokenAuth
return response()->json($error, 403);
}
- $truth = app()->make(TruthSource::class);
-
- $truth->setCompanyUser($company_token->cu);
- $truth->setUser($company_token->user);
- $truth->setCompany($company_token->company);
- $truth->setCompanyToken($company_token);
/*
|
@@ -67,7 +61,19 @@ class TokenAuth
|
*/
+ $truth = app()->make(TruthSource::class);
+
+ $truth->setCompanyUser($company_token->cu);
+ $truth->setUser($company_token->user);
+ $truth->setCompany($company_token->company);
+ $truth->setCompanyToken($company_token);
+
+ /*
+ | This method binds the db to the jobs created using this
+ | session
+ */
app('queue')->createPayloadUsing(function () use ($company_token) {
+ nlog("setting DB ". $company_token->company->db);
return ['db' => $company_token->company->db];
});
diff --git a/app/Providers/MultiDBProvider.php b/app/Providers/MultiDBProvider.php
index f00a1d436693..72beb2abc594 100644
--- a/app/Providers/MultiDBProvider.php
+++ b/app/Providers/MultiDBProvider.php
@@ -37,6 +37,7 @@ class MultiDBProvider extends ServiceProvider
JobProcessing::class,
function ($event) {
if (isset($event->job->payload()['db'])) {
+ nlog("Settings DB: " . $event->job->payload()['db']);
MultiDB::setDb($event->job->payload()['db']);
}
}
diff --git a/app/Services/Email/MailEntity.php b/app/Services/Email/MailEntity.php
new file mode 100644
index 000000000000..81732f69921d
--- /dev/null
+++ b/app/Services/Email/MailEntity.php
@@ -0,0 +1,65 @@
+invitation = $invitation;
+
+ $this->db = $db;
+
+ $this->reminder_template = $reminder_template;
+
+ $this->template_data = $template_data;
+
+ $this->override = $override;
+
+ // $this->entity_string = $this->resolveEntityString();
+
+ // $this->entity = $invitation->{$this->entity_string};
+
+ // $this->settings = $invitation->contact->client->getMergedSettings();
+
+ // $this->reminder_template = $reminder_template ?: $this->entity->calculateTemplate($this->entity_string);
+
+ // $this->html_engine = new HtmlEngine($invitation);
+
+ // $this->template_data = $template_data;
+
+ }
+
+ public function handle(): void
+ {
+ MultiDB::setDb($this->db);
+
+ //construct mailable
+
+ //construct mailer
+
+ }
+
+}
diff --git a/app/Services/Email/MailObject.php b/app/Services/Email/MailObject.php
new file mode 100644
index 000000000000..08a540342e02
--- /dev/null
+++ b/app/Services/Email/MailObject.php
@@ -0,0 +1,80 @@
+
@@ -15,7 +15,7 @@ info:
license:
name: 'Elastic License'
url: 'https://www.elastic.co/licensing/elastic-license'
- version: 1.0.30
+ version: 5.5.70
servers:
-
url: 'https://demo.invoiceninja.com'
@@ -1565,519 +1565,7 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
- /api/v1/clients:
- get:
- tags:
- - clients
- summary: 'List clients'
- description: |
- Lists clients, search and filters allow fine grained lists to be generated.
- Query parameters can be added to performed more fine grained filtering of the clients, these are handled by the ClientFilters class which defines the methods available
- operationId: getClients
- 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 clients'
- 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- post:
- tags:
- - clients
- summary: 'Create client'
- description: 'Adds an client to a company'
- operationId: storeClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- responses:
- 200:
- description: 'Returns the saved client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}':
- get:
- tags:
- - clients
- summary: 'Show client'
- description: 'Displays a client by id'
- operationId: showClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the cl.ient 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- put:
- tags:
- - clients
- summary: 'Update client'
- description: 'Handles the updating of a client by id'
- operationId: updateClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- delete:
- tags:
- - clients
- summary: 'Delete client'
- description: 'Handles the deletion of a client by id'
- operationId: deleteClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client 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'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/edit':
- get:
- tags:
- - clients
- summary: 'Edit Client'
- description: 'Displays a client by id'
- operationId: editClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- /api/v1/clients/create:
- get:
- tags:
- - clients
- summary: 'Blank Client'
- description: 'Returns a blank object with default values'
- operationId: getClientsCreate
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- responses:
- 200:
- description: 'A blank client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- /api/v1/clients/bulk:
- post:
- tags:
- - clients
- summary: 'Bulk actions'
- description: ''
- operationId: bulkClients
- 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 Client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/upload':
- put:
- tags:
- - clients
- summary: 'Add client document'
- description: 'Handles the uploading of a document to a client'
- operationId: uploadClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/purge':
- post:
- tags:
- - clients
- summary: 'Purge client'
- description: 'Handles purging a client'
- operationId: purgeClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/{mergeable_client_hashed_id}/merge':
- post:
- tags:
- - clients
- summary: 'Merge client'
- description: 'Handles merging 2 clients'
- operationId: mergeClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- -
- name: mergeable_client_hashed_id
- in: path
- description: 'The Mergeable Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
/api/v1/client_gateway_tokens:
get:
tags:
@@ -2389,69 +1877,7 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
- /api/v1/client_statement:
- post:
- tags:
- - clients
- summary: 'Client statement PDF'
- description: 'Return a PDF of the client statement'
- operationId: clientStatement
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- requestBody:
- description: 'Statment Options'
- required: true
- content:
- application/json:
- schema:
- properties:
- start_date:
- description: 'The start date of the statement period - format Y-m-d'
- type: string
- end_date:
- description: 'The start date of the statement period - format Y-m-d'
- type: string
- client_id:
- description: 'The hashed ID of the client'
- type: string
- show_payments_table:
- description: 'Flag which determines if the payments table is shown'
- type: boolean
- show_aging_table:
- description: 'Flag which determines if the aging table is shown'
- type: boolean
- type: object
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
+
/api/v1/companies:
get:
tags:
@@ -14870,225 +14296,1002 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
-components:
- schemas:
- Account:
- properties:
- id:
- description: 'The account hashed id'
- type: string
- example: AS3df3A
- type: object
- 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
- 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
+ /api/v1/clients:
+ get:
+ tags:
+ - clients
+ summary: 'List clients'
+ description: |
+ Lists clients. Fine grained filtering is also available using query parameters.
+ operationId: getClients
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ $ref: '#/components/parameters/index'
+ -
+ name: name
+ in: query
+ description: Filter by client name
+ required: false
+ schema:
+ type: string
example: bob
- type: object
- BankIntegration:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- company_id:
- description: 'The company 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
- BankTransaction:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- company_id:
- description: 'The company 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
+ -
+ name: balance
+ in: query
+ description: Filter by client balance, format uses an operator and value separated by a colon. lt,lte, gt, gte, eq
+ required: false
+ schema:
+ type: string
+ example: lt:10
+ -
+ name: between_balance
+ in: query
+ description: Filter between client balances, format uses two values separated by a colon
+ required: false
+ schema:
+ type: string
+ example: 10:100
+ -
+ name: email
+ in: query
+ description: Filter by client email
+ required: false
+ schema:
+ type: string
+ example: bob@gmail.com
+ -
+ name: id_number
+ in: query
+ description: Filter by client id_number
+ required: false
+ schema:
+ type: string
+ example: a1039883
+ -
+ name: number
+ in: query
+ description: Filter by client number
+ required: false
+ schema:
+ type: string
+ example: a1039883
+ -
+ name: filter
+ in: query
+ description: Filters clients on columns - name, id_number, contact.first_name contact.last_name, contact.email, custom_value1-4
+ required: false
+ schema:
+ type: string
+ example: a1039883
+ -
+ name: sort
+ in: query
+ description: Returns the list sorted by column in ascending or descending order.
+ required: false
+ schema:
+ type: string
+ example: id|desc name|desc balance|asc
+
+ responses:
+ 200:
+ description: 'A list of clients'
+ 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ post:
+ tags:
+ - clients
+ summary: 'Create client'
+ description: 'Adds an client to a company'
+ operationId: storeClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ responses:
+ 200:
+ description: 'Returns the saved client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}':
+ get:
+ tags:
+ - clients
+ summary: 'Show client'
+ description: 'Displays a client by id'
+ operationId: showClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the cl.ient 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ put:
+ tags:
+ - clients
+ summary: 'Update client'
+ description: 'Handles the updating of a client by id'
+ operationId: updateClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ delete:
+ tags:
+ - clients
+ summary: 'Delete client'
+ description: 'Handles the deletion of a client by id'
+ operationId: deleteClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client 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:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/edit':
+ get:
+ tags:
+ - clients
+ summary: 'Edit Client'
+ description: 'Displays a client by id'
+ operationId: editClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ /api/v1/clients/create:
+ get:
+ tags:
+ - clients
+ summary: 'Blank Client'
+ description: 'Returns a blank object with default values'
+ operationId: getClientsCreate
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ responses:
+ 200:
+ description: 'A blank client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ /api/v1/clients/bulk:
+ post:
+ tags:
+ - clients
+ summary: 'Bulk actions'
+ description: ''
+ operationId: bulkClients
+ 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 Client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/upload':
+ put:
+ tags:
+ - clients
+ summary: 'Add client document'
+ description: 'Handles the uploading of a document to a client'
+ operationId: uploadClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/purge':
+ post:
+ tags:
+ - clients
+ summary: 'Purge client'
+ description: 'Handles purging a client'
+ operationId: purgeClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/{mergeable_client_hashed_id}/merge':
+ post:
+ tags:
+ - clients
+ summary: 'Merge client'
+ description: 'Handles merging 2 clients'
+ operationId: mergeClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ -
+ name: mergeable_client_hashed_id
+ in: path
+ description: 'The Mergeable Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ /api/v1/client_statement:
+ post:
+ tags:
+ - clients
+ summary: 'Client statement PDF'
+ description: 'Return a PDF of the client statement'
+ operationId: clientStatement
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/include'
+ requestBody:
+ description: 'Statment Options'
+ required: true
+ content:
+ application/json:
+ schema:
+ properties:
+ start_date:
+ description: 'The start date of the statement period - format Y-m-d'
+ type: string
+ end_date:
+ description: 'The start date of the statement period - format Y-m-d'
+ type: string
+ client_id:
+ description: 'The hashed ID of the client'
+ type: string
+ show_payments_table:
+ description: 'Flag which determines if the payments table is shown'
+ type: boolean
+ show_aging_table:
+ description: 'Flag which determines if the aging table is shown'
+ type: boolean
+ type: object
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+components:
+ parameters:
+ X-API-SECRET:
+ name: X-API-SECRET
+ in: header
+ description: 'The API secret as defined by the .env variable API_SECRET. Only needed for self hosted users, and only applicable on the login route.'
+ required: false
+ schema:
+ type: string
+ example: password
+ X-Requested-With:
+ name: X-Requested-With
+ in: header
+ description: 'Used to send the XMLHttpRequest header'
+ required: true
+ schema:
+ type: string
+ readOnly: true
+ example: XMLHttpRequest
+ X-API-TOKEN:
+ name: X-API-TOKEN
+ in: header
+ description: 'The API token to be used for authentication'
+ required: true
+ schema:
+ type: string
+ example: TOKEN
+ X-API-PASSWORD:
+ name: X-API-PASSWORD
+ in: header
+ description: 'The login password when challenged on certain protected routes'
+ required: false
+ schema:
+ type: string
+ example: supersecretpassword
+ bank_integration_include:
+ name: include
+ in: query
+ description: Include child relations of the BankIntegration object. Format is comma separated.
+ require: false
+ schema:
+ type: string
+ examples:
+ company:
+ value: company
+ summary: The associated Company
+ account:
+ value: account
+ summary: The associated Account
+ bank_transactions:
+ value: bank_transactions
+ summary: The associated Bank Transactions
+ client_include:
+ name: include
+ in: query
+ description: Include child relationships of the Client Object.
+ required: false
+ schema:
+ type: string
+ examples:
+ activities:
+ value: activities
+ summary: include=activities will include the activities object in the response
+ ledger:
+ value: ledger
+ summary: include=ledger will include the ledger object in the response
+ system_logs:
+ value: system_logs
+ summary: include=system_logs will include the system_logs object in the response
+ activity_include:
+ name: include
+ in: query
+ description: Include child relations of the Activity object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
+ required: false
+ schema:
+ type: string
+ examples:
+ history:
+ value: history
+ summary: include=history will include the history object in the response (This could include references to the backup HTML of the entity)
+ user:
+ value: user
+ summary: include=user will include the user object in the response
+ client:
+ value: client
+ summary: include=client will include the client object in the response
+ recurring_invoice:
+ value: recurring_invoice
+ summary: include=recurring_invoice will include the recurring_invoice object in the response
+ invoice:
+ value: invoice
+ summary: include=invoice will include the invoice object in the response
+ credit:
+ value: credit
+ summary: include=credit will include the credit object in the response
+ quote:
+ value: quote
+ summary: include=quote will include the quote object in the response
+ payment:
+ value: payment
+ summary: include=payment will include the payment object in the response
+ expense:
+ value: expense
+ summary: include=expense will include the expense object in the response
+ vendor_contact:
+ value: vendor_contact
+ summary: include=vendor_contact will include the vendor_contact object in the response
+ vendor:
+ value: vendor
+ summary: include=vendor will include the vendor object in the response
+ purchase_order:
+ value: purchase_order
+ summary: include=purchase_order will include the purchase_order object in the response
+ task:
+ value: task
+ summary: include=task will include the task object in the response
+ login_include:
+ name: include
+ in: query
+ description: Include child relations of the CompanyUser object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
+ required: false
+ schema:
+ type: string
+ examples:
+ user:
+ value: user
+ summary: include=user will include the user object in the response
+ company:
+ value: company
+ summary: include=company will include the company object in the response
+ token:
+ value: token
+ summary: include=token will include the token object in the response
+ account:
+ value: account
+ summary: include=account will include the account object in the response
+ per_page_meta:
+ name: per_page
+ in: query
+ description: The number of records to return for each request, default is 20
+ required: false
+ schema:
+ type: int
+ example: 20
+ page_meta:
+ name: page
+ in: query
+ description: The page number to return for this request (when performing pagination), default is 1
+ required: false
+ schema:
+ type: int
+ example: 1
+ include:
+ name: include
+ in: query
+ description: 'Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes'
+ required: false
+ schema:
+ type: string
+ example: 'first_load'
+ include_static:
+ name: include_static
+ in: query
+ description: 'Returns static variables'
+ required: false
+ schema:
+ type: string
+ example: include_static=true
+ clear_cache:
+ name: clear_cache
+ in: query
+ description: 'Clears the static cache'
+ required: false
+ schema:
+ type: string
+ example: clear_cache=true
+ index:
+ name: index
+ in: query
+ description: 'Replaces the default response index from data to a user specific string'
+ required: false
+ schema:
+ type: string
+ example: user
+ api_version:
+ name: api_version
+ in: query
+ description: 'The API version'
+ required: false
+ schema:
+ type: number
+ example: user
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ description: 'The API version'
+ schema:
+ type: number
+ X-RateLimit-Remaining:
+ description: 'The number of requests left for the time window.'
+ schema:
+ type: integer
+ X-RateLimit-Limit:
+ description: 'The total number of requests in a given time window.'
+ schema:
+ type: integer
+ components:
+ securitySchemes:
+ ApiKeyAuth:
+ type: apiKey
+ in: header
+ name: X-API-TOKEN
+ schemas:
+
BankTransactionRule:
properties:
id:
@@ -18688,9 +18891,9 @@ components:
type: object
properties:
message:
- description: 'These credentials do not match our records'
+ description: 'These credentials do not match our records / Invalid Token'
type: string
- example: 'These credentials do not match our records'
+ example: 'These credentials do not match our records / Invalid Token'
ValidationError:
properties:
message:
@@ -18705,6 +18908,20 @@ components:
type: string
type: object
type: object
+ AuthorizationError:
+ properties:
+ message:
+ description: 'Insufficient permissions for this resource.'
+ type: string
+ example: 'Insufficient permissions for this resource.'
+ errors:
+ properties:
+ value:
+ type: array
+ items:
+ type: string
+ type: object
+ type: object
VendorContact:
properties:
id:
@@ -18922,199 +19139,227 @@ components:
type: string
example: JSON
type: object
- parameters:
- X-API-SECRET:
- name: X-API-SECRET
- in: header
- description: 'The API secret as defined by the .env variable API_SECRET. Only needed for self hosted users, and only applicable on the login route.'
- required: false
- schema:
- type: string
- example: password
- X-Requested-With:
- name: X-Requested-With
- in: header
- description: 'Used to send the XMLHttpRequest header'
- required: true
- schema:
- type: string
- readOnly: true
- example: XMLHttpRequest
- X-API-TOKEN:
- name: X-API-TOKEN
- in: header
- description: 'The API token to be used for authentication'
- required: true
- schema:
- type: string
- example: TOKEN
- X-API-PASSWORD:
- name: X-API-PASSWORD
- in: header
- description: 'The login password when challenged on certain protected routes'
- required: false
- schema:
- type: string
- example: supersecretpassword
- bank_integration_include:
- name: include
- in: query
- description: Include child relations of the BankIntegration object. Format is comma separated.
- require: false
- schema:
- type: string
- examples:
- company:
- value: company
- summary: The associated Company
- account:
- value: account
- summary: The associated Account
- bank_transactions:
- value: bank_transactions
- summary: The associated Bank Transactions
- activity_include:
- name: include
- in: query
- description: Include child relations of the Activity object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
- required: false
- schema:
- type: string
- examples:
- history:
- value: history
- summary: include=history will include the history object in the response (This could include references to the backup HTML of the entity)
+ 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:
- value: user
- summary: include=user will include the user object in the response
+ $ref: '#/components/schemas/User'
client:
- value: client
- summary: include=client will include the client object in the response
+ $ref: '#/components/schemas/Client'
+ contact:
+ $ref: '#/components/schemas/ClientContact'
recurring_invoice:
- value: recurring_invoice
- summary: include=recurring_invoice will include the recurring_invoice object in the response
+ $ref: '#/components/schemas/RecurringInvoice'
invoice:
- value: invoice
- summary: include=invoice will include the invoice object in the response
+ $ref: '#/components/schemas/Invoice'
credit:
- value: credit
- summary: include=credit will include the credit object in the response
+ $ref: '#/components/schemas/Credit'
quote:
- value: quote
- summary: include=quote will include the quote object in the response
+ $ref: '#/components/schemas/Quote'
payment:
- value: payment
- summary: include=payment will include the payment object in the response
+ $ref: '#/components/schemas/Payment'
expense:
- value: expense
- summary: include=expense will include the expense object in the response
- vendor_contact:
- value: vendor_contact
- summary: include=vendor_contact will include the vendor_contact object in the response
- vendor:
- value: vendor
- summary: include=vendor will include the vendor object in the response
- purchase_order:
- value: purchase_order
- summary: include=purchase_order will include the purchase_order object in the response
+ $ref: '#/components/schemas/Expense'
task:
- value: task
- summary: include=task will include the task object in the response
- login_include:
- name: include
- in: query
- description: Include child relations of the CompanyUser object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
- required: false
- schema:
- type: string
- examples:
- user:
- value: user
- summary: include=user will include the user object in the response
- company:
- value: company
- summary: include=company will include the company object in the response
- token:
- value: token
- summary: include=token will include the token object in the response
- account:
- value: account
- summary: include=account will include the account object in the response
- per_page_meta:
- name: per_page
- in: query
- description: The number of records to return for each request, default is 20
- required: false
- schema:
- type: int
- example: 20
- page_meta:
- name: page
- in: query
- description: The page number to return for this request (when performing pagination), default is 1
- required: false
- schema:
- type: int
- example: 1
- include:
- name: include
- in: query
- description: 'Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes'
- required: false
- schema:
- type: string
- example: 'first_load'
- include_static:
- name: include_static
- in: query
- description: 'Returns static variables'
- required: false
- schema:
- type: string
- example: include_static=true
- clear_cache:
- name: clear_cache
- in: query
- description: 'Clears the static cache'
- required: false
- schema:
- type: string
- example: clear_cache=true
- index:
- name: index
- in: query
- description: 'Replaces the default response index from data to a user specific string'
- required: false
- schema:
- type: string
- example: user
- api_version:
- name: api_version
- in: query
- description: 'The API version'
- required: false
- schema:
- type: number
- example: user
- headers:
- X-MINIMUM-CLIENT-VERSION:
- description: 'The API version'
- schema:
- type: number
- X-RateLimit-Remaining:
- description: 'The number of requests left for the time window.'
- schema:
- type: integer
- X-RateLimit-Limit:
- description: 'The total number of requests in a given time window.'
- schema:
- type: integer
- components:
- securitySchemes:
- ApiKeyAuth:
- type: apiKey
- in: header
- name: X-API-TOKEN
+ $ref: '#/components/schemas/Task'
+ purchase_order:
+ $ref: '#/components/schemas/PurchaseOrder'
+ vendor:
+ $ref: '#/components/schemas/Vendor'
+ vendor_contact:
+ $ref: '#/components/schemas/VendorContact'
+ type: object
+ BankTransaction:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ company_id:
+ description: 'The company 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
+ BankIntegration:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ company_id:
+ description: 'The company 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
+ 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
+ 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
tags:
-
name: login
diff --git a/openapi/components.yaml b/openapi/components.yaml
new file mode 100644
index 000000000000..040a5958ae45
--- /dev/null
+++ b/openapi/components.yaml
@@ -0,0 +1,211 @@
+components:
+ parameters:
+ X-API-SECRET:
+ name: X-API-SECRET
+ in: header
+ description: 'The API secret as defined by the .env variable API_SECRET. Only needed for self hosted users, and only applicable on the login route.'
+ required: false
+ schema:
+ type: string
+ example: password
+ X-Requested-With:
+ name: X-Requested-With
+ in: header
+ description: 'Used to send the XMLHttpRequest header'
+ required: true
+ schema:
+ type: string
+ readOnly: true
+ example: XMLHttpRequest
+ X-API-TOKEN:
+ name: X-API-TOKEN
+ in: header
+ description: 'The API token to be used for authentication'
+ required: true
+ schema:
+ type: string
+ example: TOKEN
+ X-API-PASSWORD:
+ name: X-API-PASSWORD
+ in: header
+ description: 'The login password when challenged on certain protected routes'
+ required: false
+ schema:
+ type: string
+ example: supersecretpassword
+ bank_integration_include:
+ name: include
+ in: query
+ description: Include child relations of the BankIntegration object. Format is comma separated.
+ require: false
+ schema:
+ type: string
+ examples:
+ company:
+ value: company
+ summary: The associated Company
+ account:
+ value: account
+ summary: The associated Account
+ bank_transactions:
+ value: bank_transactions
+ summary: The associated Bank Transactions
+ client_include:
+ name: include
+ in: query
+ description: Include child relationships of the Client Object.
+ required: false
+ schema:
+ type: string
+ examples:
+ activities:
+ value: activities
+ summary: include=activities will include the activities object in the response
+ ledger:
+ value: ledger
+ summary: include=ledger will include the ledger object in the response
+ system_logs:
+ value: system_logs
+ summary: include=system_logs will include the system_logs object in the response
+ activity_include:
+ name: include
+ in: query
+ description: Include child relations of the Activity object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
+ required: false
+ schema:
+ type: string
+ examples:
+ history:
+ value: history
+ summary: include=history will include the history object in the response (This could include references to the backup HTML of the entity)
+ user:
+ value: user
+ summary: include=user will include the user object in the response
+ client:
+ value: client
+ summary: include=client will include the client object in the response
+ recurring_invoice:
+ value: recurring_invoice
+ summary: include=recurring_invoice will include the recurring_invoice object in the response
+ invoice:
+ value: invoice
+ summary: include=invoice will include the invoice object in the response
+ credit:
+ value: credit
+ summary: include=credit will include the credit object in the response
+ quote:
+ value: quote
+ summary: include=quote will include the quote object in the response
+ payment:
+ value: payment
+ summary: include=payment will include the payment object in the response
+ expense:
+ value: expense
+ summary: include=expense will include the expense object in the response
+ vendor_contact:
+ value: vendor_contact
+ summary: include=vendor_contact will include the vendor_contact object in the response
+ vendor:
+ value: vendor
+ summary: include=vendor will include the vendor object in the response
+ purchase_order:
+ value: purchase_order
+ summary: include=purchase_order will include the purchase_order object in the response
+ task:
+ value: task
+ summary: include=task will include the task object in the response
+ login_include:
+ name: include
+ in: query
+ description: Include child relations of the CompanyUser object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
+ required: false
+ schema:
+ type: string
+ examples:
+ user:
+ value: user
+ summary: include=user will include the user object in the response
+ company:
+ value: company
+ summary: include=company will include the company object in the response
+ token:
+ value: token
+ summary: include=token will include the token object in the response
+ account:
+ value: account
+ summary: include=account will include the account object in the response
+ per_page_meta:
+ name: per_page
+ in: query
+ description: The number of records to return for each request, default is 20
+ required: false
+ schema:
+ type: int
+ example: 20
+ page_meta:
+ name: page
+ in: query
+ description: The page number to return for this request (when performing pagination), default is 1
+ required: false
+ schema:
+ type: int
+ example: 1
+ include:
+ name: include
+ in: query
+ description: 'Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes'
+ required: false
+ schema:
+ type: string
+ example: 'first_load'
+ include_static:
+ name: include_static
+ in: query
+ description: 'Returns static variables'
+ required: false
+ schema:
+ type: string
+ example: include_static=true
+ clear_cache:
+ name: clear_cache
+ in: query
+ description: 'Clears the static cache'
+ required: false
+ schema:
+ type: string
+ example: clear_cache=true
+ index:
+ name: index
+ in: query
+ description: 'Replaces the default response index from data to a user specific string'
+ required: false
+ schema:
+ type: string
+ example: user
+ api_version:
+ name: api_version
+ in: query
+ description: 'The API version'
+ required: false
+ schema:
+ type: number
+ example: user
+ headers:
+ X-MINIMUM-CLIENT-VERSION:
+ description: 'The API version'
+ schema:
+ type: number
+ X-RateLimit-Remaining:
+ description: 'The number of requests left for the time window.'
+ schema:
+ type: integer
+ X-RateLimit-Limit:
+ description: 'The total number of requests in a given time window.'
+ schema:
+ type: integer
+ components:
+ securitySchemes:
+ ApiKeyAuth:
+ type: apiKey
+ in: header
+ name: X-API-TOKEN
\ No newline at end of file
diff --git a/openapi/components/components.yaml b/openapi/components/schemas.yaml
similarity index 90%
rename from openapi/components/components.yaml
rename to openapi/components/schemas.yaml
index 10086cf431b7..6b5e699ddcbb 100644
--- a/openapi/components/components.yaml
+++ b/openapi/components/schemas.yaml
@@ -1,222 +1,5 @@
-components:
schemas:
- Account:
- properties:
- id:
- description: 'The account hashed id'
- type: string
- example: AS3df3A
- type: object
- 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
- 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
- BankIntegration:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- company_id:
- description: 'The company 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
- BankTransaction:
- properties:
- id:
- description: 'The bank integration hashed id'
- type: string
- example: AS3df3A
- company_id:
- description: 'The company 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
+
BankTransactionRule:
properties:
id:
@@ -3816,9 +3599,9 @@ components:
type: object
properties:
message:
- description: 'These credentials do not match our records'
+ description: 'These credentials do not match our records / Invalid Token'
type: string
- example: 'These credentials do not match our records'
+ example: 'These credentials do not match our records / Invalid Token'
ValidationError:
properties:
message:
@@ -3833,6 +3616,20 @@ components:
type: string
type: object
type: object
+ AuthorizationError:
+ properties:
+ message:
+ description: 'Insufficient permissions for this resource.'
+ type: string
+ example: 'Insufficient permissions for this resource.'
+ errors:
+ properties:
+ value:
+ type: array
+ items:
+ type: string
+ type: object
+ type: object
VendorContact:
properties:
id:
@@ -4049,197 +3846,4 @@ components:
description: 'JSON or UBL'
type: string
example: JSON
- type: object
- parameters:
- X-API-SECRET:
- name: X-API-SECRET
- in: header
- description: 'The API secret as defined by the .env variable API_SECRET. Only needed for self hosted users, and only applicable on the login route.'
- required: false
- schema:
- type: string
- example: password
- X-Requested-With:
- name: X-Requested-With
- in: header
- description: 'Used to send the XMLHttpRequest header'
- required: true
- schema:
- type: string
- readOnly: true
- example: XMLHttpRequest
- X-API-TOKEN:
- name: X-API-TOKEN
- in: header
- description: 'The API token to be used for authentication'
- required: true
- schema:
- type: string
- example: TOKEN
- X-API-PASSWORD:
- name: X-API-PASSWORD
- in: header
- description: 'The login password when challenged on certain protected routes'
- required: false
- schema:
- type: string
- example: supersecretpassword
- bank_integration_include:
- name: include
- in: query
- description: Include child relations of the BankIntegration object. Format is comma separated.
- require: false
- schema:
- type: string
- examples:
- company:
- value: company
- summary: The associated Company
- account:
- value: account
- summary: The associated Account
- bank_transactions:
- value: bank_transactions
- summary: The associated Bank Transactions
- activity_include:
- name: include
- in: query
- description: Include child relations of the Activity object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
- required: false
- schema:
- type: string
- examples:
- history:
- value: history
- summary: include=history will include the history object in the response (This could include references to the backup HTML of the entity)
- user:
- value: user
- summary: include=user will include the user object in the response
- client:
- value: client
- summary: include=client will include the client object in the response
- recurring_invoice:
- value: recurring_invoice
- summary: include=recurring_invoice will include the recurring_invoice object in the response
- invoice:
- value: invoice
- summary: include=invoice will include the invoice object in the response
- credit:
- value: credit
- summary: include=credit will include the credit object in the response
- quote:
- value: quote
- summary: include=quote will include the quote object in the response
- payment:
- value: payment
- summary: include=payment will include the payment object in the response
- expense:
- value: expense
- summary: include=expense will include the expense object in the response
- vendor_contact:
- value: vendor_contact
- summary: include=vendor_contact will include the vendor_contact object in the response
- vendor:
- value: vendor
- summary: include=vendor will include the vendor object in the response
- purchase_order:
- value: purchase_order
- summary: include=purchase_order will include the purchase_order object in the response
- task:
- value: task
- summary: include=task will include the task object in the response
- login_include:
- name: include
- in: query
- description: Include child relations of the CompanyUser object, format is comma separated. **Note** it is possible to chain multiple includes together, ie. include=account,token
- required: false
- schema:
- type: string
- examples:
- user:
- value: user
- summary: include=user will include the user object in the response
- company:
- value: company
- summary: include=company will include the company object in the response
- token:
- value: token
- summary: include=token will include the token object in the response
- account:
- value: account
- summary: include=account will include the account object in the response
- per_page_meta:
- name: per_page
- in: query
- description: The number of records to return for each request, default is 20
- required: false
- schema:
- type: int
- example: 20
- page_meta:
- name: page
- in: query
- description: The page number to return for this request (when performing pagination), default is 1
- required: false
- schema:
- type: int
- example: 1
- include:
- name: include
- in: query
- description: 'Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes'
- required: false
- schema:
- type: string
- example: 'first_load'
- include_static:
- name: include_static
- in: query
- description: 'Returns static variables'
- required: false
- schema:
- type: string
- example: include_static=true
- clear_cache:
- name: clear_cache
- in: query
- description: 'Clears the static cache'
- required: false
- schema:
- type: string
- example: clear_cache=true
- index:
- name: index
- in: query
- description: 'Replaces the default response index from data to a user specific string'
- required: false
- schema:
- type: string
- example: user
- api_version:
- name: api_version
- in: query
- description: 'The API version'
- required: false
- schema:
- type: number
- example: user
- headers:
- X-MINIMUM-CLIENT-VERSION:
- description: 'The API version'
- schema:
- type: number
- X-RateLimit-Remaining:
- description: 'The number of requests left for the time window.'
- schema:
- type: integer
- X-RateLimit-Limit:
- description: 'The total number of requests in a given time window.'
- schema:
- type: integer
- components:
- securitySchemes:
- ApiKeyAuth:
- type: apiKey
- in: header
- name: X-API-TOKEN
\ No newline at end of file
+ type: object
\ No newline at end of file
diff --git a/openapi/components/schemas/account.yaml b/openapi/components/schemas/account.yaml
new file mode 100644
index 000000000000..924d6ea87e31
--- /dev/null
+++ b/openapi/components/schemas/account.yaml
@@ -0,0 +1,11 @@
+ 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
\ No newline at end of file
diff --git a/openapi/components/schemas/activity.yaml b/openapi/components/schemas/activity.yaml
new file mode 100644
index 000000000000..3ce45bf24c7d
--- /dev/null
+++ b/openapi/components/schemas/activity.yaml
@@ -0,0 +1,93 @@
+ 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
\ No newline at end of file
diff --git a/openapi/components/schemas/bank_integration.yaml b/openapi/components/schemas/bank_integration.yaml
new file mode 100644
index 000000000000..a868c67ed2ff
--- /dev/null
+++ b/openapi/components/schemas/bank_integration.yaml
@@ -0,0 +1,47 @@
+ BankIntegration:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ company_id:
+ description: 'The company 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
\ No newline at end of file
diff --git a/openapi/components/schemas/bank_transaction.yaml b/openapi/components/schemas/bank_transaction.yaml
new file mode 100644
index 000000000000..940da2e3f8c4
--- /dev/null
+++ b/openapi/components/schemas/bank_transaction.yaml
@@ -0,0 +1,55 @@
+ BankTransaction:
+ properties:
+ id:
+ description: 'The bank integration hashed id'
+ type: string
+ example: AS3df3A
+ company_id:
+ description: 'The company 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
\ No newline at end of file
diff --git a/openapi/components/schemas/btrules.yaml b/openapi/components/schemas/btrules.yaml
new file mode 100644
index 000000000000..d32681f3d087
--- /dev/null
+++ b/openapi/components/schemas/btrules.yaml
@@ -0,0 +1,15 @@
+ 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
\ No newline at end of file
diff --git a/openapi/info.yaml b/openapi/info.yaml
index 1c2088860bf8..242d223732b9 100644
--- a/openapi/info.yaml
+++ b/openapi/info.yaml
@@ -1,6 +1,6 @@
openapi: 3.0.0
info:
- title: 'Invoice Ninja API Reference - Where self host Invoicing lives.'
+ title: 'Invoice Ninja API Reference - Where self host invoicing lives.'
description: |
---
@@ -15,7 +15,7 @@ info:
license:
name: 'Elastic License'
url: 'https://www.elastic.co/licensing/elastic-license'
- version: 1.0.30
+ version: 5.5.70
servers:
-
url: 'https://demo.invoiceninja.com'
diff --git a/openapi/paths/paths.yaml b/openapi/paths.yaml
similarity index 96%
rename from openapi/paths/paths.yaml
rename to openapi/paths.yaml
index 20de4f2f5744..dde3fb5d2f2f 100644
--- a/openapi/paths/paths.yaml
+++ b/openapi/paths.yaml
@@ -1541,519 +1541,7 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
- /api/v1/clients:
- get:
- tags:
- - clients
- summary: 'List clients'
- description: |
- Lists clients, search and filters allow fine grained lists to be generated.
- Query parameters can be added to performed more fine grained filtering of the clients, these are handled by the ClientFilters class which defines the methods available
- operationId: getClients
- 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 clients'
- 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- post:
- tags:
- - clients
- summary: 'Create client'
- description: 'Adds an client to a company'
- operationId: storeClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- responses:
- 200:
- description: 'Returns the saved client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}':
- get:
- tags:
- - clients
- summary: 'Show client'
- description: 'Displays a client by id'
- operationId: showClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the cl.ient 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- put:
- tags:
- - clients
- summary: 'Update client'
- description: 'Handles the updating of a client by id'
- operationId: updateClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- delete:
- tags:
- - clients
- summary: 'Delete client'
- description: 'Handles the deletion of a client by id'
- operationId: deleteClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client 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'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/edit':
- get:
- tags:
- - clients
- summary: 'Edit Client'
- description: 'Displays a client by id'
- operationId: editClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- /api/v1/clients/create:
- get:
- tags:
- - clients
- summary: 'Blank Client'
- description: 'Returns a blank object with default values'
- operationId: getClientsCreate
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- responses:
- 200:
- description: 'A blank client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- /api/v1/clients/bulk:
- post:
- tags:
- - clients
- summary: 'Bulk actions'
- description: ''
- operationId: bulkClients
- 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 Client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/upload':
- put:
- tags:
- - clients
- summary: 'Add client document'
- description: 'Handles the uploading of a document to a client'
- operationId: uploadClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/purge':
- post:
- tags:
- - clients
- summary: 'Purge client'
- description: 'Handles purging a client'
- operationId: purgeClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
- '/api/v1/clients/{id}/{mergeable_client_hashed_id}/merge':
- post:
- tags:
- - clients
- summary: 'Merge client'
- description: 'Handles merging 2 clients'
- operationId: mergeClient
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- -
- name: id
- in: path
- description: 'The Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- -
- name: mergeable_client_hashed_id
- in: path
- description: 'The Mergeable Client Hashed ID'
- required: true
- schema:
- type: string
- format: string
- example: D2J234DFA
- responses:
- 200:
- description: 'Returns the client 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'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
/api/v1/client_gateway_tokens:
get:
tags:
@@ -2365,69 +1853,7 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Error'
- /api/v1/client_statement:
- post:
- tags:
- - clients
- summary: 'Client statement PDF'
- description: 'Return a PDF of the client statement'
- operationId: clientStatement
- parameters:
- -
- $ref: '#/components/parameters/X-API-TOKEN'
- -
- $ref: '#/components/parameters/X-Requested-With'
- -
- $ref: '#/components/parameters/include'
- requestBody:
- description: 'Statment Options'
- required: true
- content:
- application/json:
- schema:
- properties:
- start_date:
- description: 'The start date of the statement period - format Y-m-d'
- type: string
- end_date:
- description: 'The start date of the statement period - format Y-m-d'
- type: string
- client_id:
- description: 'The hashed ID of the client'
- type: string
- show_payments_table:
- description: 'Flag which determines if the payments table is shown'
- type: boolean
- show_aging_table:
- description: 'Flag which determines if the aging table is shown'
- type: boolean
- type: object
- responses:
- 200:
- description: 'Returns the client 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/Client'
- 422:
- description: 'Validation error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationError'
- default:
- description: 'Unexpected Error'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Error'
+
/api/v1/companies:
get:
tags:
diff --git a/openapi/paths/clients.yaml b/openapi/paths/clients.yaml
new file mode 100644
index 000000000000..5249c95f18e9
--- /dev/null
+++ b/openapi/paths/clients.yaml
@@ -0,0 +1,783 @@
+ /api/v1/clients:
+ get:
+ tags:
+ - clients
+ summary: 'List clients'
+ description: |
+ Lists clients. Fine grained filtering is also available using query parameters.
+ operationId: getClients
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ $ref: '#/components/parameters/index'
+ -
+ name: name
+ in: query
+ description: Filter by client name
+ required: false
+ schema:
+ type: string
+ example: bob
+ -
+ name: balance
+ in: query
+ description: Filter by client balance, format uses an operator and value separated by a colon. lt,lte, gt, gte, eq
+ required: false
+ schema:
+ type: string
+ example: lt:10
+ -
+ name: between_balance
+ in: query
+ description: Filter between client balances, format uses two values separated by a colon
+ required: false
+ schema:
+ type: string
+ example: 10:100
+ -
+ name: email
+ in: query
+ description: Filter by client email
+ required: false
+ schema:
+ type: string
+ example: bob@gmail.com
+ -
+ name: id_number
+ in: query
+ description: Filter by client id_number
+ required: false
+ schema:
+ type: string
+ example: a1039883
+ -
+ name: number
+ in: query
+ description: Filter by client number
+ required: false
+ schema:
+ type: string
+ example: a1039883
+ -
+ name: filter
+ in: query
+ description: Filters clients on columns - name, id_number, contact.first_name contact.last_name, contact.email, custom_value1-4
+ required: false
+ schema:
+ type: string
+ example: a1039883
+ -
+ name: sort
+ in: query
+ description: Returns the list sorted by column in ascending or descending order.
+ required: false
+ schema:
+ type: string
+ example: id|desc name|desc balance|asc
+
+ responses:
+ 200:
+ description: 'A list of clients'
+ 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ post:
+ tags:
+ - clients
+ summary: 'Create client'
+ description: 'Adds an client to a company'
+ operationId: storeClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ responses:
+ 200:
+ description: 'Returns the saved client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}':
+ get:
+ tags:
+ - clients
+ summary: 'Show client'
+ description: 'Displays a client by id'
+ operationId: showClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the cl.ient 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ put:
+ tags:
+ - clients
+ summary: 'Update client'
+ description: 'Handles the updating of a client by id'
+ operationId: updateClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ delete:
+ tags:
+ - clients
+ summary: 'Delete client'
+ description: 'Handles the deletion of a client by id'
+ operationId: deleteClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client 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:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/edit':
+ get:
+ tags:
+ - clients
+ summary: 'Edit Client'
+ description: 'Displays a client by id'
+ operationId: editClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ /api/v1/clients/create:
+ get:
+ tags:
+ - clients
+ summary: 'Blank Client'
+ description: 'Returns a blank object with default values'
+ operationId: getClientsCreate
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ responses:
+ 200:
+ description: 'A blank client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ /api/v1/clients/bulk:
+ post:
+ tags:
+ - clients
+ summary: 'Bulk actions'
+ description: ''
+ operationId: bulkClients
+ 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 Client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/upload':
+ put:
+ tags:
+ - clients
+ summary: 'Add client document'
+ description: 'Handles the uploading of a document to a client'
+ operationId: uploadClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/purge':
+ post:
+ tags:
+ - clients
+ summary: 'Purge client'
+ description: 'Handles purging a client'
+ operationId: purgeClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ '/api/v1/clients/{id}/{mergeable_client_hashed_id}/merge':
+ post:
+ tags:
+ - clients
+ summary: 'Merge client'
+ description: 'Handles merging 2 clients'
+ operationId: mergeClient
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/client_include'
+ -
+ name: id
+ in: path
+ description: 'The Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ -
+ name: mergeable_client_hashed_id
+ in: path
+ description: 'The Mergeable Client Hashed ID'
+ required: true
+ schema:
+ type: string
+ format: string
+ example: D2J234DFA
+ responses:
+ 200:
+ description: 'Returns the client 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'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ /api/v1/client_statement:
+ post:
+ tags:
+ - clients
+ summary: 'Client statement PDF'
+ description: 'Return a PDF of the client statement'
+ operationId: clientStatement
+ parameters:
+ -
+ $ref: '#/components/parameters/X-API-TOKEN'
+ -
+ $ref: '#/components/parameters/X-Requested-With'
+ -
+ $ref: '#/components/parameters/include'
+ requestBody:
+ description: 'Statment Options'
+ required: true
+ content:
+ application/json:
+ schema:
+ properties:
+ start_date:
+ description: 'The start date of the statement period - format Y-m-d'
+ type: string
+ end_date:
+ description: 'The start date of the statement period - format Y-m-d'
+ type: string
+ client_id:
+ description: 'The hashed ID of the client'
+ type: string
+ show_payments_table:
+ description: 'Flag which determines if the payments table is shown'
+ type: boolean
+ show_aging_table:
+ description: 'Flag which determines if the aging table is shown'
+ type: boolean
+ type: object
+ responses:
+ 200:
+ description: 'Returns the client 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/Client'
+ 401:
+ description: 'Authentication error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthenticationError'
+ 403:
+ description: 'Authorization error'
+ content:
+ application/json:
+ schema:
+ $ref: '#components/schemas/AuthorizationError'
+ 422:
+ description: 'Validation error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/ValidationError'
+ default:
+ description: 'Unexpected Error'
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
\ No newline at end of file
diff --git a/resources/views/email/billing/passwordless-login.blade.php b/resources/views/email/billing/passwordless-login.blade.php
index 0db522d1937e..6ab144802f7e 100644
--- a/resources/views/email/billing/passwordless-login.blade.php
+++ b/resources/views/email/billing/passwordless-login.blade.php
@@ -3,6 +3,6 @@
{{ ctrans('texts.login_link_requested') }}
- Sign in to Invoice Ninja + {{ ctrans('texts.login')}} @endcomponent