POST

Entries.List

Return rows inside a selected entry tab. First call User.Basic, show data.entries.list to the user, and send the selected id as entry_id. customer_id is optional: send it to show rows for one customer, or omit it to show rows for the selected tab without customer filtering.

Permissions

  • User must be logged in with a valid bearer token.
  • Returned or changed records are limited by the user permissions, team access, folder access, and account settings.

Action

  • Reads rows from the selected entry/tab only.
  • Returns JSON rows with id, row_id, entry_id, customer_id when linked, and data1/data2/etc. field values.
  • When a tab field has input_type=customer, the stored dataN value stays the customer id and the response also includes dataN_name plus dataN_customer, matching the dashboard importer/customer column.
  • status stays the unique id; status_name is the dashboard label_en. sub_status stays the unique id; sub_status_name is the dashboard sub_status_label.

Push Service

No socket push is sent because this function only reads data.

Automation

No automation is run because this function only reads data.

Special Instructions

  • Call User.Basic after login and let the user choose an entry from data.entries.list.
  • Send the selected id as entry_id on every Entries route.
  • Use customer_id only when the entry rows should be scoped to one customer.
  • If the selected entry has use_customer_for_entry=1 in User.Basic, each row can include entry_cust_id and the response includes entry_customer_data.
  • Send custom entry fields as data1, data2, data3, etc. according to the selected entry field settings.
  • Customer-type fields store a contactus id in dataN. The list/get response keeps that id and adds dataN_name plus dataN_customer so the UI can show the importer/customer name like the dashboard.
  • Row status/sub_status stay the stored unique ids. The response also adds status_name, status_color, sub_status_name, and sub_status_color from tabs_setting.status, same labels the dashboard table shows.
  • Use EntriesSettings routes only when you are creating or editing the tab definition itself.

Required Parameters

NameTypeSampleExplanation
entry_id
post
int7Selected entry/tab id from User.Basic data.entries.list. tab_id is also accepted.

Optional Parameters

NameTypeSampleWhat it gives
customer_id
post
int123Filters rows linked to one customer. Omit to list rows in this entry for the account.
entry_cust_id
post
int456Filters rows linked to one entry customer when the selected entry uses customer linking. entry_customer_id is also accepted.
search
post
stringTIANLUSearches data1..dataN values, customer-type field names (contactus.name, like the dashboard importer column), and the row customer name/phone/company_id. Multiple values: comma string or JSON array. Matches if any value is found. search_text and filter_data are also accepted.
limit
post
int25Maximum rows to return. Values above 25 are capped.
offset
post
int0Skips rows for paging. start is also accepted.
order
post
stringid_descOrders by newest or oldest id. Use id_desc or id_asc.

Authentication

Send the bearer token returned by Login in the request header.

Authorization: Bearer YOUR TOKEN

Sample Request

{
    "url": "\/app\/Entries.List",
    "method": "POST",
    "headers": {
        "Authorization": "Bearer YOUR TOKEN"
    },
    "body": {
        "entry_id": "7",
        "customer_id": "123",
        "limit": "25"
    },
    "url_user": "https:\/\/{user}.bull36.com\/app\/Entries.List",
    "url_domain": "https:\/\/{domain}\/app\/Entries.List"
}

Endpoint

POST /app/Entries.List
POST https://{user}.bull36.com/app/Entries.List
POST https://{domain}/app/Entries.List

Sample Output

{
    "success": 1,
    "entry_id": 7,
    "count": 1,
    "data": [
        {
            "id": "66aa00000000000000000001",
            "row_id": "66aa00000000000000000001",
            "entry_id": 7,
            "customer_id": 123,
            "customer_name": "Demo Customer",
            "entry_cust_id": 456,
            "entry_customer_data": {
                "id": 456,
                "name": "Linked customer",
                "phone": "0500000000"
            },
            "status": "17338636546758a8e6481dd",
            "status_name": "Open",
            "status_color": "#ffa500",
            "sub_status": "172346612866ba018d99c1a",
            "sub_status_name": "Waiting",
            "data1": "12557482",
            "data1_name": "TIANLU",
            "data1_customer": {
                "id": 12557482,
                "name": "TIANLU"
            }
        }
    ]
}

Count Only

Use the matching count route with the same filters when the UI only needs total rows for paging.

{
    "url": "\/app\/Entries.Count",
    "url_user": "https:\/\/{user}.bull36.com\/app\/Entries.Count",
    "url_domain": "https:\/\/{domain}\/app\/Entries.Count",
    "method": "POST",
    "headers": {
        "Authorization": "Bearer YOUR TOKEN"
    },
    "body": {
        "entry_id": "7",
        "customer_id": "123"
    },
    "sample_output": {
        "success": 1,
        "count": 123
    },
    "notes": {
        "route": "Entries.Count",
        "max_limit": 25
    }
}

Count JavaScript

const token = 'YOUR TOKEN';
const body = new URLSearchParams();
body.set('entry_id', '7');
body.set('customer_id', '123');

const res = await fetch('https://{domain}/app/Entries.Count', {
  method: 'POST',
  headers: { Authorization: `Bearer ${token}` },
  body
});
const data = await res.json();
console.log(data.count);

JavaScript Example

const token = 'YOUR TOKEN';
const basicRes = await fetch('/app/User.Basic', { method: 'POST', headers: { Authorization: `Bearer ${token}` } });
const basic = await basicRes.json();
const entry = basic.data.entries.list[0];

const body = new URLSearchParams({ entry_id: String(entry.id), limit: '25' });
const res = await fetch('/app/Entries.List', { method: 'POST', headers: { Authorization: `Bearer ${token}` }, body });
const data = await res.json();
console.log(entry.name, data.data);

Error Example

{
    "success": 0,
    "message": "Missing required parameter: entry_id"
}