Bulk-issue stored-value instruments
Mints many instruments from a batch of drafts through the SAME issue path. Each element of instruments is exactly an issueGiftcard body — id, kind (gift_card | credit_note | store_credit), code, 3-letter currency and a strictly positive integer amountCents, plus optional customerId and expiresAt. The array is typed loosely ON PURPOSE so one bad row cannot 400 the whole batch. Returns a per-row report keyed by bearer code (created / skipped when the id or code already exists / failed with a reason). Idempotent: re-posting the same batch skips the rows already issued. Invalid rows are REPORTED, not rejected — the batch still returns 200, so always read failed and the per-row reason rather than trusting the status code. The whole batch is refused with a 403 when the caller lacks the issuance right.
Authorizations
Authorization: Bearer <token>. Accepts EITHER a Keycloak access token (scopes-in-token) OR an opaque POS session token; both resolve to the same pos.* scope vocabulary the route guards enforce.
Body
Response
The per-row outcome plus the created/skipped/failed totals.
The per-row outcome plus the created/skipped/failed totals.

