"Company",
"Leads",
"Customers",
"Contacts",
"Staff",
"Contracts",
"Tasks",
"Expenses",
"Invoice",
"Items",
"Note",
"Estimate",
"Contract",
"Proposal",
"Projects",
"Tickets"} FieldBelongsto Belongs to Mandatory Field Belongs to. * * @apiParam {Number} [id] Optional unique ID. * * @apiSuccess {Object} Custom Custom Fields information with values. * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * [ * { * "field_name": "custom_fields[invoice][1]", * "custom_field_id": "1", * "label": "Input 1", * "required": "0", * "type": "input", * "value": "input1 data" * }, * { * "field_name": "custom_fields[invoice][2]", * "custom_field_id": "2", * "label": "Number 1", * "required": "0", * "type": "number", * "value": "12" * }, * { * "field_name": "custom_fields[invoice][3]", * "custom_field_id": "3", * "label": "Textarea 1", * "required": "0", * "type": "textarea", * "value": "textarea content" * }, * { * "field_name": "custom_fields[invoice][4]", * "custom_field_id": "4", * "label": "Select 1", * "required": "0", * "type": "select", * "value": "[\"Option 1\"]", * "options": "[\"Option 1\",\"Option 2\",\"Option 3\"]" * }, * { * "field_name": "custom_fields[invoice][5]", * "custom_field_id": "5", * "label": "Multiselect 1", * "required": "0", * "type": "multiselect", * "value": "[\"Option 1\",\" Option 2\"]", * "options": "[\"Option 1\",\"Option 2\",\"Option 3\"]" * }, * { * "field_name": "custom_fields[invoice][6]", * "custom_field_id": "6", * "label": "Checkbox 1", * "required": "0", * "type": "checkbox", * "value": "[\"Option 1\",\" Option 2\"]", * "options": "[\"Option 1\",\"Option 2\",\"Option 3\"]" * }, * { * "field_name": "custom_fields[invoice][7]", * "custom_field_id": "7", * "label": "Datepicker 1", * "required": "0", * "type": "date_picker", * "value": "2021-05-16" * }, * { * "field_name": "custom_fields[invoice][8]", * "custom_field_id": "8", * "label": "Datetime Picker 1", * "required": "0", * "type": "date_picker_time", * "value": "2021-05-25 23:06:00" * }, * { * "field_name": "custom_fields[invoice][9]", * "custom_field_id": "9", * "label": "Colorpicker 1", * "required": "0", * "type": "colorpicker", * "value": "#8f1b1b" * }, * { * "field_name": "custom_fields[invoice][10]", * "custom_field_id": "10", * "label": "Hyperlink 1", * "required": "0", * "type": "link", * "value": "google" * } * ] * * @apiError {Boolean} status Request status. * @apiError {String} message No data were found. * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * { * "status": false, * "message": "No data were found" * } */ public function data_get($type = "", $id = "") { $allowed_type = ["company", "leads", "customers", "contacts", "staff", "contracts", "tasks", "expenses", "invoice", "items", "credit_note", "estimate", "contract", "proposal", "projects", "tickets"]; if (empty($type) || !in_array($type, $allowed_type)) { // Set the response and exit $this->response(['status' => FALSE, 'message' => 'Not valid data'], REST_Controller::HTTP_NOT_FOUND); // NOT_FOUND (404) being the HTTP response code } $fields = get_custom_fields($type); $customfields = []; foreach ($fields as $key => $field) { $customfields[$key] = new stdclass(); $customfields[$key]->field_name = 'custom_fields[' . $field['fieldto'] . '][' . $field['id'] . ']'; $customfields[$key]->custom_field_id = $field['id']; $customfields[$key]->label = $field['name']; $customfields[$key]->required = $field['required']; $customfields[$key]->type = $field['type']; $customfields[$key]->value = get_custom_field_value($id, $field['id'], $type, false); if (!empty($field['options'])) { $customfields[$key]->value = json_encode(explode(',', $customfields[$key]->value)); $customfields[$key]->options = json_encode(explode(',', $field['options'])); } } $this->response($customfields, REST_Controller::HTTP_OK); // OK (200) being the HTTP response code } /** * @api {POST} N/A Add Custom Fields * @apiVersion 0.2.0 * @apiDescription Submit URL for POST request of the custom fields remains the same for each endpoint (ie `api/contacts` for Contacts endpoint, `api/invoices` for Invoices endpoint, etc..) *

In this example, we will use the following form data which corresponds to the following custom field types:

`custom_fields[invoice][1]` = **Input Type**
`custom_fields[invoice][2]` = **Number**
`custom_fields[invoice][3]` = **Textarea**
`custom_fields[invoice][4]` = **Radio**
`custom_fields[invoice][5]` = **Checkbox**
`custom_fields[invoice][6]` = **Multiselect**
`custom_fields[invoice][7]` = **Date**
`custom_fields[invoice][8]` = **Datetime**
`custom_fields[invoice][9]` = **Color**
`custom_fields[invoice][10]` = **Link** * @apiName PostActionExample * @apiGroup Custom Fields * * @apiParam {string/array} custom_fields[customFieldType] Custom Field Key should be same as `field_name` returned from **Search custom field values' information** * * @apiParamExample {Multipart Form} Request-Example: * [ * custom_fields[invoice][1] => John Doe * custom_fields[invoice][2] => 10 * custom_fields[invoice][3] => Lorem Ipsum is simply dummy text of the printing and typesetting industry. * custom_fields[invoice][4] => Option 1 * custom_fields[invoice][5][] => Option 1 * custom_fields[invoice][5][] => Option 2 * custom_fields[invoice][6][] => Option 1 * custom_fields[invoice][6][] => Option 3 * custom_fields[invoice][7] => 2021-05-06 * custom_fields[invoice][8] => 2021-05-06 00:23:25 * custom_fields[invoice][9] => #FFFFFF * custom_fields[invoice][10] => Link * ] * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * Same as Original request * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * Same as Original request */ /** * @api {PUT} N/A Update Custom Fields * @apiVersion 0.2.0 * @apiDescription Submit URL for PUT request of the custom fields remains the same for each endpoint (ie `api/contacts` for Contacts endpoint, `api/invoices` for Invoices endpoint, etc..) *

In this example, we will use the following form data which corresponds to the following custom field types:

`custom_fields[invoice][1]` = **Input Type**
`custom_fields[invoice][2]` = **Number**
`custom_fields[invoice][3]` = **Textarea**
`custom_fields[invoice][4]` = **Radio**
`custom_fields[invoice][5]` = **Checkbox**
`custom_fields[invoice][6]` = **Multiselect**
`custom_fields[invoice][7]` = **Date**
`custom_fields[invoice][8]` = **Datetime**
`custom_fields[invoice][9]` = **Color**
`custom_fields[invoice][10]` = **Link** * @apiName PutActionExample * @apiGroup Custom Fields * * @apiParam {string/array} custom_fields[customFieldType] Custom Field JSON should be same as below with `field_name` and `custom_field_id` returned from **Search custom field values' information** * * @apiParamExample {json} Request-Example: * { * "custom_fields":{ "invoice":{ "1":"test 12 item 1", "2":"10", "3":"Lorem Ipsum is simply dummy text of the printing and typesetting industry", "4":"Option 1", "5":["Option 1","Option 2"], "6":["Option 1","Option 3"], "7":"2021-05-06", "8":"2021-05-06 00:23:25", "9":"#ffffff", "10":"Link" } } * } * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK * Same as Original request * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * Same as Original request */ /** * @api {GET} N/A Request Custom Fields * @apiVersion 0.2.0 * @apiDescription Custom fields' data will be returned combined with other request's information during the initial GET request of each available endpoint (Contacts, Invoices etc) with their respective `label` and `value` key * @apiName GetActionExample * @apiGroup Custom Fields * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK { "id": "1", "sent": "0", "datesend": null, "clientid": "1", "deleted_customer_name": null, "number": "10", "prefix": "INV-", "number_format": "1", "datecreated": "2021-05-14 00:44:52", "date": "2021-08-28", "duedate": "2021-09-27", "currency": "1", "subtotal": "110.00", "total_tax": "0.00", "total": "110.00", "adjustment": "0.00", "addedfrom": "0", "hash": "4222d2f53404324ea73535d3c0f2c3f0", "status": "1", "clientnote": "", "adminnote": "", "last_overdue_reminder": null, "cancel_overdue_reminders": "1", "allowed_payment_modes": "a:2:{i:0;s:1:\"1\";i:1;s:1:\"2\";}", "token": null, "discount_percent": "0.00", "discount_total": "0.00", "discount_type": "", "recurring": "0", "recurring_type": null, "custom_recurring": "0", "cycles": "0", "total_cycles": "0", "is_recurring_from": null, "last_recurring_date": null, "terms": "", "sale_agent": "0", "billing_street": "billing address", "billing_city": "billing city name", "billing_state": "billing state name", "billing_zip": "billing zip code", "billing_country": "0", "shipping_street": "shipping address", "shipping_city": "city name", "shipping_state": "state name", "shipping_zip": "zip code", "shipping_country": "0", "include_shipping": "1", "show_shipping_on_invoice": "1", "show_quantity_as": "1", "project_id": "0", "subscription_id": "0", "short_link": null, "symbol": "$", "name": "USD", "decimal_separator": ".", "thousand_separator": ",", "placement": "before", "isdefault": "1", "currencyid": "1", "currency_name": "USD", "total_left_to_pay": "110.00", "items": [ { "id": "1", "rel_id": "1", "rel_type": "invoice", "description": "item description", "long_description": "item long description", "qty": "1.00", "rate": "10.00", "unit": "1", "item_order": "1", "customfields": [ { "label": "Input 1", "value": "test 12 item 1" }, { "label": "Number 1", "value": "10" }, { "label": "Textarea 1", "value": "Lorem Ipsum is simply dummy text of the printing and typesetting industry" }, { "label": "Select 1", "value": "Option 1" }, { "label": "Multiselect 1", "value": "Option 1, Option 2" }, { "label": "Checkbox 1", "value": "Option 1, Option 3" }, { "label": "Datepicker 1", "value": "2021-05-06" }, { "label": "Datetime Picker 1", "value": "2021-05-06 00:23:25" }, { "label": "Colorpicker 1", "value": "#ffffff" }, { "label": "Hyperlink 1", "value": "Link" } ] }, { "id": "2", "rel_id": "1", "rel_type": "invoice", "description": "updated item 2 description", "long_description": "updated item 2 logn description", "qty": "1.00", "rate": "100.00", "unit": "", "item_order": "2", "customfields": [ { "label": "Input 1", "value": "test 12 item 2" }, { "label": "Number 1", "value": "10" }, { "label": "Textarea 1", "value": "Lorem Ipsum is simply dummy text of the printing and typesetting industry" }, { "label": "Select 1", "value": "Option 1" }, { "label": "Multiselect 1", "value": "Option 1, Option 2" }, { "label": "Checkbox 1", "value": "Option 1, Option 3" }, { "label": "Datepicker 1", "value": "2021-05-06" }, { "label": "Datetime Picker 1", "value": "2021-05-06 00:23:25" }, { "label": "Colorpicker 1", "value": "#ffffff" }, { "label": "Hyperlink 1", "value": "Link" } ] } ], "attachments": [], "visible_attachments_to_customer_found": false, "client": { "userid": "1", "company": "updated company", "vat": "", "phonenumber": "", "country": "0", "city": "", "zip": "", "state": "", "address": "", "website": "", "datecreated": "2021-05-14 00:15:06", "active": "1", "leadid": null, "billing_street": "", "billing_city": "", "billing_state": "", "billing_zip": "", "billing_country": "0", "shipping_street": "", "shipping_city": "", "shipping_state": "", "shipping_zip": "", "shipping_country": "0", "longitude": null, "latitude": null, "default_language": "", "default_currency": "0", "show_primary_contact": "0", "stripe_id": null, "registration_confirmed": "1", "addedfrom": "0" }, "payments": [], "scheduled_email": null, "customfields": [ { "label": "Input 1", "value": "test 12" }, { "label": "Number 1", "value": "10" }, { "label": "Textarea 1", "value": "Lorem Ipsum is simply dummy text of the printing and typesetting industry" }, { "label": "Select 1", "value": "Option 1" }, { "label": "Multiselect 1", "value": "Option 1, Option 2" }, { "label": "Checkbox 1", "value": "Option 1, Option 3" }, { "label": "Datepicker 1", "value": "2021-05-06" }, { "label": "Datetime Picker 1", "value": "2021-05-06 00:23:25" }, { "label": "Colorpicker 1", "value": "#ffffff" }, { "label": "Hyperlink 1", "value": "Link" } ] } * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * Same as Original request */ /** * @api {GET} N/A Search custom field values' information * @apiVersion 0.2.0 * @apiDescription Custom fields' data will be returned combined with other request's information during the initial SEARCH request of each available endpoint (Contacts, Invoices etc) with their respective `label` and `value` key * @apiName SearchActionExample * @apiGroup Custom Fields * * @apiSuccessExample Success-Response: * HTTP/1.1 200 OK [ { "id": "1", "sent": "0", "datesend": null, "clientid": "1", "deleted_customer_name": null, "number": "10", "prefix": "INV-", "number_format": "1", "datecreated": "2021-05-14 00:15:06", "date": "2021-08-28", "duedate": "2021-09-27", "currency": "1", "subtotal": "110.00", "total_tax": "0.00", "total": "110.00", "adjustment": "0.00", "addedfrom": "0", "hash": "4222d2f53404324ea73535d3c0f2c3f0", "status": "1", "clientnote": "", "adminnote": "", "last_overdue_reminder": null, "cancel_overdue_reminders": "1", "allowed_payment_modes": "a:2:{i:0;s:1:\"1\";i:1;s:1:\"2\";}", "token": null, "discount_percent": "0.00", "discount_total": "0.00", "discount_type": "", "recurring": "0", "recurring_type": null, "custom_recurring": "0", "cycles": "0", "total_cycles": "0", "is_recurring_from": null, "last_recurring_date": null, "terms": "", "sale_agent": "0", "billing_street": "", "billing_city": "", "billing_state": "", "billing_zip": "", "billing_country": "0", "shipping_street": "", "shipping_city": "", "shipping_state": "", "shipping_zip": "", "shipping_country": "0", "include_shipping": "1", "show_shipping_on_invoice": "1", "show_quantity_as": "1", "project_id": "0", "subscription_id": "0", "short_link": null, "userid": "1", "company": "updated company", "vat": "", "phonenumber": "", "country": "0", "city": "", "zip": "", "state": "", "address": "", "website": "", "active": "1", "leadid": null, "longitude": null, "latitude": null, "default_language": "", "default_currency": "0", "show_primary_contact": "0", "stripe_id": null, "registration_confirmed": "1", "invoiceid": "1", "customfields": [ { "label": "Input 1", "value": "test 12" }, { "label": "Number 1", "value": "10" }, { "label": "Textarea 1", "value": "Lorem Ipsum is simply dummy text of the printing and typesetting industry" }, { "label": "Select 1", "value": "Option 1" }, { "label": "Multiselect 1", "value": "Option 1, Option 2" }, { "label": "Checkbox 1", "value": "Option 1, Option 3" }, { "label": "Datepicker 1", "value": "2021-05-06" }, { "label": "Datetime Picker 1", "value": "2021-05-06 00:23:25" }, { "label": "Colorpicker 1", "value": "#ffffff" }, { "label": "Hyperlink 1", "value": "Link" } ] }, { "id": "2", "sent": "0", "datesend": null, "clientid": "1", "deleted_customer_name": null, "number": "4", "prefix": "INV-", "number_format": "1", "datecreated": "2021-05-14 00:15:06", "date": "2021-05-28", "duedate": "2021-06-27", "currency": "1", "subtotal": "110.00", "total_tax": "0.00", "total": "110.00", "adjustment": "0.00", "addedfrom": "0", "hash": "630f8cc7ed2e6a70c4113ab24041bdf5", "status": "6", "clientnote": "", "adminnote": "", "last_overdue_reminder": null, "cancel_overdue_reminders": "1", "allowed_payment_modes": "a:2:{i:0;s:1:\"1\";i:1;s:1:\"2\";}", "token": null, "discount_percent": "0.00", "discount_total": "0.00", "discount_type": "", "recurring": "0", "recurring_type": null, "custom_recurring": "0", "cycles": "0", "total_cycles": "0", "is_recurring_from": null, "last_recurring_date": null, "terms": "", "sale_agent": "0", "billing_street": "", "billing_city": "", "billing_state": "", "billing_zip": "", "billing_country": "0", "shipping_street": "", "shipping_city": "", "shipping_state": "", "shipping_zip": "", "shipping_country": "0", "include_shipping": "1", "show_shipping_on_invoice": "1", "show_quantity_as": "1", "project_id": "0", "subscription_id": "0", "short_link": null, "userid": "1", "company": "updated company", "vat": "", "phonenumber": "", "country": "0", "city": "", "zip": "", "state": "", "address": "", "website": "", "active": "1", "leadid": null, "longitude": null, "latitude": null, "default_language": "", "default_currency": "0", "show_primary_contact": "0", "stripe_id": null, "registration_confirmed": "1", "invoiceid": "2", "customfields": [ { "label": "Input 1", "value": "test 12" }, { "label": "Number 1", "value": "10" }, { "label": "Textarea 1", "value": "Lorem Ipsum is simply dummy text of the printing and typesetting industry" }, { "label": "Select 1", "value": "Option 1" }, { "label": "Multiselect 1", "value": "Option 1, Option 2" }, { "label": "Checkbox 1", "value": "Option 1, Option 3" }, { "label": "Datepicker 1", "value": "2021-05-06" }, { "label": "Datetime Picker 1", "value": "2021-05-06 00:23:25" }, { "label": "Colorpicker 1", "value": "#ffffff" }, { "label": "Hyperlink 1", "value": "Link" } ] } ] * * @apiErrorExample Error-Response: * HTTP/1.1 404 Not Found * Same as Original request */ /** * @api {DELETE} N/A Delete Custom Fields * @apiVersion 0.2.0 * @apiDescription To remove particular custom field value you can use **Update** action and an **empty** value in the custom field.
Note: When you delete any record the corresponding custom field data will be **automatically deleted**. * @apiName DeleteActionExample * @apiGroup Custom Fields * */ } /* End of file Custom_fields.php */ /* Location: ./application/controllers/Custom_fields.php */