id descending — unless you pass a sort parameter.| Goal | How |
|---|---|
| A specific branch | request_branch_id=<branch id> |
| Every branch you have access to | filter[branch_id][equal]=-1 |
deleted_at is always null in this response. Fetch a deleted package directly by its id if you need it.filter[<field>][<operator>]=<value>. Omitting the operator means equal — filter[status]=1 is the same as filter[status][equal]=1.| Operator | Meaning |
|---|---|
equal | equals (default) |
not_equal | not equal |
in / not_in | in / not in a list of values |
like | partial text match |
gt / gte / from | greater than / greater than or equal |
lt / lte / to | less than / less than or equal |
is_null / is_not_null | value is / is not empty |
name, price, period_value, status, product_id. Filtering on an unrecognised field returns 400.sort[<field>]=asc or sort[<field>]=desc, e.g. sort[name]=asc.1 in the path is an optional data-detail level. It has no effect for packages, which are always returned as flat records.fields[] parameter is not supported; the complete record is always returned.curl --location --globoff 'https://.daftara.com/api2/package/list/1?per_page=20&page=1' \
--header 'Accept: application/json' \
--header 'apikey: ' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json'{
"current_page": 1,
"data": [
{
"id": 6,
"name": "Gold Membership",
"price": 250,
"period_value": 1,
"period_unit": "daily",
"status": 0,
"product_id": null,
"description": "Unlimited access",
"created": "2026-07-30 09:15:00",
"modified": "2026-07-30 09:15:00",
"deleted_at": null,
"type": "credit_charge",
"branch_id": 1
}
],
"first_page_url": "string",
"from": 0,
"last_page": 0,
"last_page_url": "string",
"links": [
{
"url": "string",
"label": "1",
"page": 0,
"active": true
}
],
"next_page_url": "string",
"path": "string",
"per_page": 20,
"prev_page_url": "string",
"to": 0,
"total": 1
}