docs(api): localize CSV columns in Persian
This commit is contained in:
@@ -128,7 +128,7 @@ Detail rows expose only fields available in the authorized view: opaque merchant
|
|||||||
- `Content-Type: text/csv; charset=utf-8`
|
- `Content-Type: text/csv; charset=utf-8`
|
||||||
- UTF-8 with one leading BOM for common Persian spreadsheet compatibility
|
- UTF-8 with one leading BOM for common Persian spreadsheet compatibility
|
||||||
- RFC 4180-style comma separation, header row, CRLF records, and doubled quotes
|
- RFC 4180-style comma separation, header row, CRLF records, and doubled quotes
|
||||||
- Stable ASCII `snake_case` column names; Persian values remain UTF-8
|
- Stable Persian column names separated by normal spaces, with Persian status labels
|
||||||
- UTC ISO timestamps with `Z`; Rial integer values; no locale-formatted numbers
|
- UTC ISO timestamps with `Z`; Rial integer values; no locale-formatted numbers
|
||||||
- `Content-Disposition: attachment` with an ASCII `filename` fallback followed by an RFC 6266 `filename*=UTF-8''...` value
|
- `Content-Disposition: attachment` with an ASCII `filename` fallback followed by an RFC 6266 `filename*=UTF-8''...` value
|
||||||
- `Cache-Control: private, no-store` and `X-Content-Type-Options: nosniff`
|
- `Cache-Control: private, no-store` and `X-Content-Type-Options: nosniff`
|
||||||
@@ -273,14 +273,14 @@ Correlate `requestId`, authenticated user/merchant internal ids, run id, section
|
|||||||
- Merchant-facing detail CSV export is synchronous in the MVP and honors the current authorized tenant scope and approved filters.
|
- Merchant-facing detail CSV export is synchronous in the MVP and honors the current authorized tenant scope and approved filters.
|
||||||
- CSV export is capped at 100,000 rows, 50 MiB estimated uncompressed output, and a 60-second deadline.
|
- CSV export is capped at 100,000 rows, 50 MiB estimated uncompressed output, and a 60-second deadline.
|
||||||
- CSV export is limited to 3 requests per 10 minutes with burst 1 in independent authenticated-user and merchant buckets.
|
- CSV export is limited to 3 requests per 10 minutes with burst 1 in independent authenticated-user and merchant buckets.
|
||||||
|
- CSV uses UTF-8 with a BOM, Persian column names separated by normal spaces, and Persian status labels. Numeric cells remain plain calculation-safe numbers and timestamps remain UTC ISO values.
|
||||||
|
|
||||||
## Remaining product questions
|
## Remaining product questions
|
||||||
|
|
||||||
1. Approve UTF-8 BOM output for spreadsheet compatibility and stable ASCII column headers, or require localized Persian header names.
|
1. Define retention and operator access policy for analytics-access and CSV-export audit records; Identity's 30-day demo-auth retention does not automatically cover these events.
|
||||||
2. Define retention and operator access policy for analytics-access and CSV-export audit records; Identity's 30-day demo-auth retention does not automatically cover these events.
|
2. Confirm whether terminal identifiers may be shown/exported as their existing opaque source reference or require a separate merchant-facing display alias.
|
||||||
3. Confirm whether terminal identifiers may be shown/exported as their existing opaque source reference or require a separate merchant-facing display alias.
|
3. Choose the production base URI used for dereferenceable Problem Details `type` documentation; `https://api.zarinpal.example/problems/...` is a non-production placeholder in the draft contract.
|
||||||
4. Choose the production base URI used for dereferenceable Problem Details `type` documentation; `https://api.zarinpal.example/problems/...` is a non-production placeholder in the draft contract.
|
4. Approve or revise the proposed public-edge request limits: 16 KiB for JSON bodies and 8 KiB for the request target/query string.
|
||||||
5. Approve or revise the proposed public-edge request limits: 16 KiB for JSON bodies and 8 KiB for the request target/query string.
|
|
||||||
|
|
||||||
## Standards references
|
## Standards references
|
||||||
|
|
||||||
|
|||||||
@@ -453,14 +453,19 @@ paths:
|
|||||||
description: |
|
description: |
|
||||||
Uses the same tenant scope, approved period, filters, and allowlisted
|
Uses the same tenant scope, approved period, filters, and allowlisted
|
||||||
projection as `listAnalyticsSessionDetails`. Cursor and page limit do not
|
projection as `listAnalyticsSessionDetails`. Cursor and page limit do not
|
||||||
apply. Output is UTF-8 with a BOM, an ASCII snake_case header row, comma
|
apply. Output is UTF-8 with a BOM, a Persian header row whose labels use
|
||||||
separators, CRLF records, and RFC 4180 quoting.
|
normal spaces, comma separators, CRLF records, and RFC 4180 quoting.
|
||||||
|
|
||||||
Stable columns are:
|
Stable columns are:
|
||||||
`session_id`, `terminal_id`, `session_status`, `amount_rial`,
|
`شناسه نشست پرداخت`, `شناسه پایانه`, `وضعیت پرداخت`, `مبلغ ریال`,
|
||||||
`fee_amount_rial`, `created_at`, `expires_at`, `attempt_count`,
|
`کارمزد ریال`, `زمان ایجاد`, `زمان انقضا`, `تعداد تلاش`,
|
||||||
`latest_attempt_status`, `latest_attempt_at`, `verified_at`, `settled_at`,
|
`وضعیت آخرین تلاش`, `زمان آخرین تلاش`, `زمان تأیید`, `زمان تسویه`,
|
||||||
`failure_stage`.
|
`مرحله مشاهده شده شکست`.
|
||||||
|
|
||||||
|
CSV status labels are Persian: `Paid` is `پرداخت شده و تأیید نشده`,
|
||||||
|
`Verified` is `تأیید شده`, `Failed` is `ناموفق`, `Reversed` is
|
||||||
|
`برگشت خورده`, and `InBank` is `در بانک`. Numeric cells remain plain
|
||||||
|
calculation-safe numbers and timestamps remain UTC ISO values.
|
||||||
|
|
||||||
Columns unavailable to the chosen authorized view are empty. Payer tokens,
|
Columns unavailable to the chosen authorized view are empty. Payer tokens,
|
||||||
credentials, peer data, internal ids, and any field unavailable in the JSON
|
credentials, peer data, internal ids, and any field unavailable in the JSON
|
||||||
@@ -497,7 +502,7 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
contentMediaType: text/csv
|
contentMediaType: text/csv
|
||||||
example: "\uFEFFsession_id,terminal_id,session_status,amount_rial,fee_amount_rial,created_at,expires_at,attempt_count,latest_attempt_status,latest_attempt_at,verified_at,settled_at,failure_stage\r\nses_01K2M8,term_0042,Paid,1500000,2000,2026-06-01T08:00:00Z,2026-06-01T08:15:00Z,1,Paid,2026-06-01T08:02:00Z,,,\r\n"
|
example: "\uFEFF\"شناسه نشست پرداخت\",\"شناسه پایانه\",\"وضعیت پرداخت\",\"مبلغ ریال\",\"کارمزد ریال\",\"زمان ایجاد\",\"زمان انقضا\",\"تعداد تلاش\",\"وضعیت آخرین تلاش\",\"زمان آخرین تلاش\",\"زمان تأیید\",\"زمان تسویه\",\"مرحله مشاهده شده شکست\"\r\nses_01K2M8,term_0042,پرداخت شده و تأیید نشده,1500000,2000,2026-06-01T08:00:00Z,2026-06-01T08:15:00Z,1,پرداخت شده و تأیید نشده,2026-06-01T08:02:00Z,,,\r\n"
|
||||||
'400':
|
'400':
|
||||||
$ref: '#/components/responses/BadRequest'
|
$ref: '#/components/responses/BadRequest'
|
||||||
'401':
|
'401':
|
||||||
|
|||||||
Reference in New Issue
Block a user