Skip to content

Export records ​

Asynchronous export jobs and their status

INFO

Har bir javob umumiy konvertda qaytadi — code, message, messages, status_code, time — foydali yuk esa data ichida. Quyidagi jadvallar faqat data ichini tavsiflaydi.

POST /export-records/create ​

Initiate an async export job for the specified page. The export runs in the background via BullMQ; poll get-by-id or get-paging to track progress. Returns the created record with state=pending.

So‘rov tanasi

MaydonTurMajburiyTavsif
page_namestringHaBito page identifier to export (e.g. trade, products, purchase, customers). Must match a registered PageNames value.
query_paramsobjectHaPage-specific query parameters (filters, date range, etc.). Passed through to the per-page export cursor function after RBAC validation. Include ext_type ('xlsx' or 'csv') to control output format; defaults to xlsx.
json
{
  "page_name": "string",
  "query_params": {}
}

Javob

MaydonTurTavsif
_idstringExport record ObjectId
account_idstringTenant identifier (equals boss ObjectId / dbName)
user_idstringObjectId of the user who initiated the export
file_namestringGenerated file name (e.g. trade-1718000000000.xlsx)
file_pathstringS3 / storage path to the exported file (available when state=completed)
page_namestringBito page identifier the export was requested for (e.g. trade, products, purchase)
statestringCurrent state of the export job. Worker-driven: pending→in_progress→completed|failed. Caller-cancellable: pending|in_progress→canceled.. Mumkin qiymatlar: pending, in_progress, completed, failed, canceled
started_atstring (date-time)Timestamp when the export record was created
completed_atstring (date-time)Timestamp when the export reached a terminal state (completed, failed, or canceled)
progressnumberExport completion percentage (0–100). Set to 100 on completed.
query_paramsobjectThe validated query parameters used for this export (page-specific shape)
userobjectDenormalized user data (available in get-paging list)
user.full_namestring
user.phone_numberstring
json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": {
    "_id": "string",
    "account_id": "string",
    "user_id": "string",
    "file_name": "string",
    "file_path": "string",
    "page_name": "string",
    "state": "pending",
    "started_at": "2025-05-01T12:00:00Z",
    "completed_at": "2025-05-01T12:00:00Z",
    "progress": 0,
    "query_params": {},
    "user": {
      "full_name": "string",
      "phone_number": "string"
    }
  },
  "time": "2025-05-01T12:00:00Z"
}

GET /export-records/get-by-id/{id} ​

Fetch a single export record by ObjectId. Use this to poll state/progress after create.

Yo‘l parametrlari

ParametrTurMajburiyTavsif
idstringHaExport record ObjectId

So‘rov tanasi

So‘rov tanasi talab qilinmaydi.

Javob

Javob tuzilishi quyidagi bilan bir xil: POST /export-records/create.

POST /export-records/get-paging ​

Paginated list of export records for the authenticated tenant. Filterable by user_id, page_name, state, date range, and employee list. Includes $lookup user {full_name, phone_number}.

So‘rov tanasi

MaydonTurMajburiyTavsif
pagenumberHaStandart: 1
limitnumberHaStandart: 20
user_idstringYo‘qFilter by initiating user ObjectId
page_namestringYo‘qFilter by page name (e.g. trade, products)
statestringYo‘qFilter by export state. Mumkin qiymatlar: pending, in_progress, completed, failed, canceled
date_fromstring (date)Yo‘qFilter records created on or after this date (ISO 8601)
date_tostring (date)Yo‘qFilter records created on or before this date (ISO 8601)
employeesstring[]Yo‘qFilter by a list of user ObjectIds (alternative to user_id for multi-user filtering)
json
{
  "page": 1,
  "limit": 20,
  "user_id": "string",
  "page_name": "string",
  "state": "pending",
  "date_from": "string",
  "date_to": "string",
  "employees": [
    "string"
  ]
}

Javob

MaydonTurTavsif
totalnumber
listobject[]
list[]._idstringExport record ObjectId
list[].account_idstringTenant identifier (equals boss ObjectId / dbName)
list[].user_idstringObjectId of the user who initiated the export
list[].file_namestringGenerated file name (e.g. trade-1718000000000.xlsx)
list[].file_pathstringS3 / storage path to the exported file (available when state=completed)
list[].page_namestringBito page identifier the export was requested for (e.g. trade, products, purchase)
list[].statestringCurrent state of the export job. Worker-driven: pending→in_progress→completed|failed. Caller-cancellable: pending|in_progress→canceled.. Mumkin qiymatlar: pending, in_progress, completed, failed, canceled
list[].started_atstring (date-time)Timestamp when the export record was created
list[].completed_atstring (date-time)Timestamp when the export reached a terminal state (completed, failed, or canceled)
list[].progressnumberExport completion percentage (0–100). Set to 100 on completed.
list[].query_paramsobjectThe validated query parameters used for this export (page-specific shape)
list[].userobjectDenormalized user data (available in get-paging list)
list[].user.full_namestring
list[].user.phone_numberstring
json
{
  "code": 0,
  "message": "Success",
  "status_code": 200,
  "data": {
    "total": 0,
    "list": [
      {
        "_id": "string",
        "account_id": "string",
        "user_id": "string",
        "file_name": "string",
        "file_path": "string",
        "page_name": "string",
        "state": "pending",
        "started_at": "2025-05-01T12:00:00Z",
        "completed_at": "2025-05-01T12:00:00Z",
        "progress": 0,
        "query_params": {},
        "user": {
          "full_name": null,
          "phone_number": null
        }
      }
    ]
  },
  "time": "2025-05-01T12:00:00Z"
}

PUT /export-records/set-state/{id} ​

Cancel a pending or in-progress export job. This is the only caller-driven state transition — only state=canceled is accepted. Worker-driven transitions (pending→in_progress→completed/failed) cannot be triggered via this endpoint.

Yo‘l parametrlari

ParametrTurMajburiyTavsif
idstringHaExport record ObjectId

So‘rov tanasi

MaydonTurMajburiyTavsif
statestringHaTarget state. Only 'canceled' is accepted via this endpoint. The record must currently be in 'pending' or 'in_progress' state; otherwise a WrongState error is returned.. Mumkin qiymatlar: canceled
json
{
  "state": "canceled"
}

Javob

Javob tuzilishi quyidagi bilan bir xil: POST /export-records/create.


Bu sahifa OpenAPI spetsifikatsiyasidan yaratilgan.

Bito 2.0 Integration API