@cheqi/sdk 0.1.5 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/download/index.d.ts +62 -0
- package/dist/download/index.js +162 -0
- package/dist/download/index.js.map +1 -0
- package/dist/http/client.d.ts +2 -1
- package/dist/http/client.js +7 -0
- package/dist/http/client.js.map +1 -1
- package/dist/http/endpoints.d.ts +1 -0
- package/dist/http/endpoints.js +1 -0
- package/dist/http/endpoints.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/models/generated/ClientReceiptDownloadRequest.d.ts +44 -0
- package/dist/models/generated/ClientReceiptDownloadRequest.js +50 -0
- package/dist/models/generated/ClientReceiptDownloadRequest.js.map +1 -0
- package/dist/models/generated/ClientReceiptDownloadResponse.d.ts +44 -0
- package/dist/models/generated/ClientReceiptDownloadResponse.js +46 -0
- package/dist/models/generated/ClientReceiptDownloadResponse.js.map +1 -0
- package/dist/models/generated/index.d.ts +2 -0
- package/dist/models/generated/index.js +2 -0
- package/dist/models/generated/index.js.map +1 -1
- package/dist/services/receipt.d.ts +12 -2
- package/dist/services/receipt.js +24 -0
- package/dist/services/receipt.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/package.json +5 -1
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-generated, end-to-end-encrypted receipt download links
|
|
3
|
+
* ("Download Link Contract v1" — the offline-first QR route).
|
|
4
|
+
*
|
|
5
|
+
* The download id and AES-256-GCM content key are generated locally, with no network,
|
|
6
|
+
* so a terminal can render the QR `<baseUrl>/<downloadId>#<contentKey>` even while the
|
|
7
|
+
* Cheqi API is unreachable. The content key travels only in the URL fragment, which
|
|
8
|
+
* browsers never send to any server: Cheqi stores ciphertext it can never decrypt, and
|
|
9
|
+
* decryption happens on the customer's device.
|
|
10
|
+
*
|
|
11
|
+
* This module is intentionally separate from {@link ../services/decryption.js | DecryptionService}
|
|
12
|
+
* (the Node-only RSA + AES path for receipts delivered to Cheqi wallets) and is
|
|
13
|
+
* **browser-safe**: it uses only WebCrypto (`globalThis.crypto`), no `node:crypto` and no
|
|
14
|
+
* `Buffer`, so the same code runs on terminals (Node >= 20) and on the public receipt
|
|
15
|
+
* download page.
|
|
16
|
+
*
|
|
17
|
+
* Framing matches the SDK's hybrid encryption: `base64(iv || ciphertext || tag)` in a
|
|
18
|
+
* single opaque blob. The plaintext is a {@link ReceiptEnvelope} — the same envelope model
|
|
19
|
+
* used for wallet delivery, so no separate download-route model exists.
|
|
20
|
+
*/
|
|
21
|
+
import type { ReceiptEnvelope } from "../models/generated/ReceiptEnvelope.js";
|
|
22
|
+
export type { ReceiptEnvelope };
|
|
23
|
+
/** Download id length in bytes (128 bits — the enumeration defense on the public endpoint). */
|
|
24
|
+
export declare const DOWNLOAD_ID_LENGTH = 16;
|
|
25
|
+
/** A freshly generated download link: render `url` as the QR immediately, upload later. */
|
|
26
|
+
export interface DownloadLink {
|
|
27
|
+
/** base64url (unpadded) download id; the only part of the link the server ever sees. */
|
|
28
|
+
downloadId: string;
|
|
29
|
+
/** base64url (unpadded) AES-256 content key; lives ONLY in the URL fragment. */
|
|
30
|
+
contentKey: string;
|
|
31
|
+
/** Full customer-facing URL: `<baseUrl>/<downloadId>#<contentKey>`. */
|
|
32
|
+
url: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Generates a fresh download link locally — no network involved. Call this at transaction
|
|
36
|
+
* close and render `url` as the QR regardless of connectivity; upload the encrypted
|
|
37
|
+
* envelope asynchronously afterwards.
|
|
38
|
+
*/
|
|
39
|
+
export declare function generateDownloadLink(baseUrl: string): DownloadLink;
|
|
40
|
+
/** Builds the customer-facing URL. The content key MUST stay in the fragment. */
|
|
41
|
+
export declare function buildDownloadUrl(baseUrl: string, downloadId: string, contentKey: string): string;
|
|
42
|
+
/**
|
|
43
|
+
* Splits a download URL (or a path + fragment) back into its parts, e.g. on the
|
|
44
|
+
* download page: `parseDownloadUrl(location.href)`.
|
|
45
|
+
*/
|
|
46
|
+
export declare function parseDownloadUrl(url: string): {
|
|
47
|
+
downloadId: string;
|
|
48
|
+
contentKey: string;
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Encrypts a receipt envelope with the content key. Returns `base64(iv || ciphertext || tag)` —
|
|
52
|
+
* the exact bytes to upload as `ciphertext` to `POST /receipt/download`. Encrypt once and
|
|
53
|
+
* persist the result: upload retries MUST resend identical bytes (the endpoint is
|
|
54
|
+
* idempotent on them).
|
|
55
|
+
*/
|
|
56
|
+
export declare function encryptDownloadEnvelope(envelope: ReceiptEnvelope, contentKey: string): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Decrypts a `base64(iv || ciphertext || tag)` blob (as served by
|
|
59
|
+
* `GET /public/receipt/encrypted/{downloadId}`) with the content key from the URL fragment.
|
|
60
|
+
* Throws {@link DecryptionError} when the key is wrong or the blob was tampered with.
|
|
61
|
+
*/
|
|
62
|
+
export declare function decryptDownloadEnvelope(encryptedEnvelope: string, contentKey: string): Promise<ReceiptEnvelope>;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client-generated, end-to-end-encrypted receipt download links
|
|
3
|
+
* ("Download Link Contract v1" — the offline-first QR route).
|
|
4
|
+
*
|
|
5
|
+
* The download id and AES-256-GCM content key are generated locally, with no network,
|
|
6
|
+
* so a terminal can render the QR `<baseUrl>/<downloadId>#<contentKey>` even while the
|
|
7
|
+
* Cheqi API is unreachable. The content key travels only in the URL fragment, which
|
|
8
|
+
* browsers never send to any server: Cheqi stores ciphertext it can never decrypt, and
|
|
9
|
+
* decryption happens on the customer's device.
|
|
10
|
+
*
|
|
11
|
+
* This module is intentionally separate from {@link ../services/decryption.js | DecryptionService}
|
|
12
|
+
* (the Node-only RSA + AES path for receipts delivered to Cheqi wallets) and is
|
|
13
|
+
* **browser-safe**: it uses only WebCrypto (`globalThis.crypto`), no `node:crypto` and no
|
|
14
|
+
* `Buffer`, so the same code runs on terminals (Node >= 20) and on the public receipt
|
|
15
|
+
* download page.
|
|
16
|
+
*
|
|
17
|
+
* Framing matches the SDK's hybrid encryption: `base64(iv || ciphertext || tag)` in a
|
|
18
|
+
* single opaque blob. The plaintext is a {@link ReceiptEnvelope} — the same envelope model
|
|
19
|
+
* used for wallet delivery, so no separate download-route model exists.
|
|
20
|
+
*/
|
|
21
|
+
import { AES_KEY_LENGTH, GCM_IV_LENGTH, GCM_TAG_LENGTH } from "../crypto.js";
|
|
22
|
+
import { DecryptionError, EncryptionError } from "../errors.js";
|
|
23
|
+
import { ReceiptEnvelopeFromJSON, ReceiptEnvelopeToJSON } from "../models/generated/ReceiptEnvelope.js";
|
|
24
|
+
/** Download id length in bytes (128 bits — the enumeration defense on the public endpoint). */
|
|
25
|
+
export const DOWNLOAD_ID_LENGTH = 16;
|
|
26
|
+
function webCrypto() {
|
|
27
|
+
const cryptoApi = globalThis.crypto;
|
|
28
|
+
if (!cryptoApi?.subtle) {
|
|
29
|
+
throw new EncryptionError("WebCrypto is not available in this environment (requires a browser or Node >= 20)");
|
|
30
|
+
}
|
|
31
|
+
return cryptoApi;
|
|
32
|
+
}
|
|
33
|
+
function subtle() {
|
|
34
|
+
return webCrypto().subtle;
|
|
35
|
+
}
|
|
36
|
+
function randomBytes(length) {
|
|
37
|
+
const bytes = new Uint8Array(length);
|
|
38
|
+
webCrypto().getRandomValues(bytes);
|
|
39
|
+
return bytes;
|
|
40
|
+
}
|
|
41
|
+
function toBase64(bytes) {
|
|
42
|
+
let binary = "";
|
|
43
|
+
for (const byte of bytes) {
|
|
44
|
+
binary += String.fromCharCode(byte);
|
|
45
|
+
}
|
|
46
|
+
return btoa(binary);
|
|
47
|
+
}
|
|
48
|
+
function fromBase64(value) {
|
|
49
|
+
const binary = atob(value);
|
|
50
|
+
const bytes = new Uint8Array(binary.length);
|
|
51
|
+
for (let i = 0; i < binary.length; i += 1) {
|
|
52
|
+
bytes[i] = binary.charCodeAt(i);
|
|
53
|
+
}
|
|
54
|
+
return bytes;
|
|
55
|
+
}
|
|
56
|
+
function toBase64Url(bytes) {
|
|
57
|
+
return toBase64(bytes).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
|
|
58
|
+
}
|
|
59
|
+
function fromBase64Url(value) {
|
|
60
|
+
return fromBase64(value.replaceAll("-", "+").replaceAll("_", "/"));
|
|
61
|
+
}
|
|
62
|
+
async function importContentKey(contentKey, usage) {
|
|
63
|
+
let keyBytes;
|
|
64
|
+
try {
|
|
65
|
+
keyBytes = fromBase64Url(contentKey);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
throw new DecryptionError("Content key is not valid base64url");
|
|
69
|
+
}
|
|
70
|
+
if (keyBytes.length !== AES_KEY_LENGTH) {
|
|
71
|
+
throw new DecryptionError(`Content key has invalid length: expected ${AES_KEY_LENGTH} bytes, got ${keyBytes.length}`);
|
|
72
|
+
}
|
|
73
|
+
return subtle().importKey("raw", keyBytes, "AES-GCM", false, [usage]);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Generates a fresh download link locally — no network involved. Call this at transaction
|
|
77
|
+
* close and render `url` as the QR regardless of connectivity; upload the encrypted
|
|
78
|
+
* envelope asynchronously afterwards.
|
|
79
|
+
*/
|
|
80
|
+
export function generateDownloadLink(baseUrl) {
|
|
81
|
+
const downloadId = toBase64Url(randomBytes(DOWNLOAD_ID_LENGTH));
|
|
82
|
+
const contentKey = toBase64Url(randomBytes(AES_KEY_LENGTH));
|
|
83
|
+
return { downloadId, contentKey, url: buildDownloadUrl(baseUrl, downloadId, contentKey) };
|
|
84
|
+
}
|
|
85
|
+
/** Builds the customer-facing URL. The content key MUST stay in the fragment. */
|
|
86
|
+
export function buildDownloadUrl(baseUrl, downloadId, contentKey) {
|
|
87
|
+
const trimmed = baseUrl.endsWith("/") ? baseUrl.slice(0, -1) : baseUrl;
|
|
88
|
+
return `${trimmed}/${downloadId}#${contentKey}`;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Splits a download URL (or a path + fragment) back into its parts, e.g. on the
|
|
92
|
+
* download page: `parseDownloadUrl(location.href)`.
|
|
93
|
+
*/
|
|
94
|
+
export function parseDownloadUrl(url) {
|
|
95
|
+
const hashIndex = url.indexOf("#");
|
|
96
|
+
if (hashIndex < 0) {
|
|
97
|
+
throw new DecryptionError("Download URL has no #fragment content key");
|
|
98
|
+
}
|
|
99
|
+
const contentKey = url.slice(hashIndex + 1);
|
|
100
|
+
const path = url.slice(0, hashIndex);
|
|
101
|
+
const downloadId = path.slice(path.lastIndexOf("/") + 1);
|
|
102
|
+
if (!downloadId || !contentKey) {
|
|
103
|
+
throw new DecryptionError("Download URL is missing the download id or content key");
|
|
104
|
+
}
|
|
105
|
+
return { downloadId, contentKey };
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Encrypts a receipt envelope with the content key. Returns `base64(iv || ciphertext || tag)` —
|
|
109
|
+
* the exact bytes to upload as `ciphertext` to `POST /receipt/download`. Encrypt once and
|
|
110
|
+
* persist the result: upload retries MUST resend identical bytes (the endpoint is
|
|
111
|
+
* idempotent on them).
|
|
112
|
+
*/
|
|
113
|
+
export async function encryptDownloadEnvelope(envelope, contentKey) {
|
|
114
|
+
const key = await importContentKey(contentKey, "encrypt");
|
|
115
|
+
const iv = randomBytes(GCM_IV_LENGTH);
|
|
116
|
+
// Normalize through FromJSON first: callers commonly pass plain parsed JSON (e.g. a
|
|
117
|
+
// generateReceiptTemplate response, where issueDate is a string), while ToJSON assumes
|
|
118
|
+
// hydrated model objects (Date instances). The round-trip accepts both and allow-lists
|
|
119
|
+
// the envelope to known model fields.
|
|
120
|
+
const normalized = ReceiptEnvelopeToJSON(ReceiptEnvelopeFromJSON(envelope));
|
|
121
|
+
const plaintext = new TextEncoder().encode(JSON.stringify(normalized));
|
|
122
|
+
const encrypted = new Uint8Array(await subtle().encrypt({ name: "AES-GCM", iv: iv }, key, plaintext));
|
|
123
|
+
const combined = new Uint8Array(iv.length + encrypted.length);
|
|
124
|
+
combined.set(iv, 0);
|
|
125
|
+
combined.set(encrypted, iv.length);
|
|
126
|
+
return toBase64(combined);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Decrypts a `base64(iv || ciphertext || tag)` blob (as served by
|
|
130
|
+
* `GET /public/receipt/encrypted/{downloadId}`) with the content key from the URL fragment.
|
|
131
|
+
* Throws {@link DecryptionError} when the key is wrong or the blob was tampered with.
|
|
132
|
+
*/
|
|
133
|
+
export async function decryptDownloadEnvelope(encryptedEnvelope, contentKey) {
|
|
134
|
+
const key = await importContentKey(contentKey, "decrypt");
|
|
135
|
+
let combined;
|
|
136
|
+
try {
|
|
137
|
+
combined = fromBase64(encryptedEnvelope);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
throw new DecryptionError("Encrypted envelope is not valid base64");
|
|
141
|
+
}
|
|
142
|
+
const minLength = GCM_IV_LENGTH + GCM_TAG_LENGTH;
|
|
143
|
+
if (combined.length < minLength) {
|
|
144
|
+
throw new DecryptionError(`Encrypted envelope too short: expected at least ${minLength} bytes, got ${combined.length}`);
|
|
145
|
+
}
|
|
146
|
+
const iv = combined.subarray(0, GCM_IV_LENGTH);
|
|
147
|
+
const ciphertextWithTag = combined.subarray(GCM_IV_LENGTH);
|
|
148
|
+
let plaintext;
|
|
149
|
+
try {
|
|
150
|
+
plaintext = await subtle().decrypt({ name: "AES-GCM", iv: iv }, key, ciphertextWithTag);
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
throw new DecryptionError("Failed to decrypt envelope: wrong content key or tampered ciphertext");
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
return ReceiptEnvelopeFromJSON(JSON.parse(new TextDecoder().decode(plaintext)));
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
throw new DecryptionError("Decrypted envelope is not valid JSON");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/download/index.ts"],"names":[],"mappings":"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"}
|
package/dist/http/client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CheqiSDKConfig } from "../config.js";
|
|
2
|
-
import type { CheqiApiClient, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateResponse, EncryptedCreditNote, EncryptedReceiptRequest, FetchLike, IdentificationDetails, ReceiptTemplateGenerationRequest, ReceiptTemplateResponse, RecipientResolutionResponse, ProvisionCompanyRequest } from "../types.js";
|
|
2
|
+
import type { CheqiApiClient, ClientReceiptDownloadRequest, ClientReceiptDownloadResponse, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateResponse, EncryptedCreditNote, EncryptedReceiptRequest, FetchLike, IdentificationDetails, ReceiptTemplateGenerationRequest, ReceiptTemplateResponse, RecipientResolutionResponse, ProvisionCompanyRequest } from "../types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Default HTTP implementation of {@link CheqiApiClient}.
|
|
5
5
|
*
|
|
@@ -17,6 +17,7 @@ export declare class DefaultCheqiApiClient implements CheqiApiClient {
|
|
|
17
17
|
generateCreditNoteTemplate(request: CreditNoteTemplateGenerationRequest, accessToken?: string | null): Promise<CreditNoteTemplateResponse>;
|
|
18
18
|
matchCustomer(request: IdentificationDetails, accessToken?: string | null): Promise<RecipientResolutionResponse>;
|
|
19
19
|
sendEncryptedReceipts(matchId: string, encryptedReceipts: EncryptedReceiptRequest[], templateHash: string, accessToken?: string | null): Promise<Record<string, unknown>>;
|
|
20
|
+
uploadClientEncryptedReceipt(request: ClientReceiptDownloadRequest, accessToken?: string | null): Promise<ClientReceiptDownloadResponse>;
|
|
20
21
|
sendEncryptedCreditNotes(matchId: string, parentCheqiReceiptId: string, encryptedCreditNotes: EncryptedCreditNote[], templateHash: string, accessToken?: string | null): Promise<Record<string, unknown>>;
|
|
21
22
|
sendReceiptViaEmail(customerEmail: string, receipt: Record<string, unknown> | string, accessToken?: string | null): Promise<void>;
|
|
22
23
|
provisionCompany(request: ProvisionCompanyRequest): Promise<Record<string, unknown>>;
|
package/dist/http/client.js
CHANGED
|
@@ -109,6 +109,13 @@ export class DefaultCheqiApiClient {
|
|
|
109
109
|
operation: "sendEncryptedReceipts"
|
|
110
110
|
});
|
|
111
111
|
}
|
|
112
|
+
async uploadClientEncryptedReceipt(request, accessToken) {
|
|
113
|
+
return this.request("POST", Endpoints.CLIENT_RECEIPT_DOWNLOAD_ENDPOINT, {
|
|
114
|
+
body: normalizeValue(request),
|
|
115
|
+
accessToken,
|
|
116
|
+
operation: "uploadClientEncryptedReceipt"
|
|
117
|
+
});
|
|
118
|
+
}
|
|
112
119
|
async sendEncryptedCreditNotes(matchId, parentCheqiReceiptId, encryptedCreditNotes, templateHash, accessToken) {
|
|
113
120
|
return this.request("POST", Endpoints.ENCRYPTED_CREDIT_NOTE_ENDPOINT, {
|
|
114
121
|
body: {
|
package/dist/http/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
package/dist/http/endpoints.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export declare const Endpoints: {
|
|
|
2
2
|
readonly TEMPLATE_ENDPOINT: "/receipt/template";
|
|
3
3
|
readonly CUSTOMER_MATCH_ENDPOINT: "/recipient/resolve";
|
|
4
4
|
readonly ENCRYPTED_RECEIPT_ENDPOINT: "/receipt/encrypted";
|
|
5
|
+
readonly CLIENT_RECEIPT_DOWNLOAD_ENDPOINT: "/receipt/download";
|
|
5
6
|
readonly ENCRYPTED_CREDIT_NOTE_ENDPOINT: "/credit-note/encrypted";
|
|
6
7
|
readonly CREDIT_NOTE_TEMPLATE_ENDPOINT: "/credit-note/template";
|
|
7
8
|
readonly EMAIL_RECEIPT_ENDPOINT: "/receipt/email";
|
package/dist/http/endpoints.js
CHANGED
|
@@ -2,6 +2,7 @@ export const Endpoints = {
|
|
|
2
2
|
TEMPLATE_ENDPOINT: "/receipt/template",
|
|
3
3
|
CUSTOMER_MATCH_ENDPOINT: "/recipient/resolve",
|
|
4
4
|
ENCRYPTED_RECEIPT_ENDPOINT: "/receipt/encrypted",
|
|
5
|
+
CLIENT_RECEIPT_DOWNLOAD_ENDPOINT: "/receipt/download",
|
|
5
6
|
ENCRYPTED_CREDIT_NOTE_ENDPOINT: "/credit-note/encrypted",
|
|
6
7
|
CREDIT_NOTE_TEMPLATE_ENDPOINT: "/credit-note/template",
|
|
7
8
|
EMAIL_RECEIPT_ENDPOINT: "/receipt/email",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/http/endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,iBAAiB,EAAE,mBAAmB;IACtC,uBAAuB,EAAE,oBAAoB;IAC7C,0BAA0B,EAAE,oBAAoB;IAChD,8BAA8B,EAAE,wBAAwB;IACxD,6BAA6B,EAAE,uBAAuB;IACtD,sBAAsB,EAAE,gBAAgB;IACxC,0BAA0B,EAAE,oBAAoB;IAChD,uBAAuB,EAAE,CAAC,SAAiB,EAAU,EAAE,CAAC,YAAY,SAAS,SAAS;IACtF,sBAAsB,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE;IACjH,+BAA+B,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,YAAY,SAAS,WAAW,OAAO,WAAW;IACnI,iCAAiC,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,YAAY,SAAS,WAAW,OAAO,aAAa;CAC/H,CAAC"}
|
|
1
|
+
{"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/http/endpoints.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,iBAAiB,EAAE,mBAAmB;IACtC,uBAAuB,EAAE,oBAAoB;IAC7C,0BAA0B,EAAE,oBAAoB;IAChD,gCAAgC,EAAE,mBAAmB;IACrD,8BAA8B,EAAE,wBAAwB;IACxD,6BAA6B,EAAE,uBAAuB;IACtD,sBAAsB,EAAE,gBAAgB;IACxC,0BAA0B,EAAE,oBAAoB;IAChD,uBAAuB,EAAE,CAAC,SAAiB,EAAU,EAAE,CAAC,YAAY,SAAS,SAAS;IACtF,sBAAsB,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,YAAY,SAAS,WAAW,OAAO,EAAE;IACjH,+BAA+B,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,YAAY,SAAS,WAAW,OAAO,WAAW;IACnI,iCAAiC,EAAE,CAAC,SAAiB,EAAE,OAAe,EAAU,EAAE,CAAC,YAAY,SAAS,WAAW,OAAO,aAAa;CAC/H,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export { CreditNoteService } from "./services/credit-note.js";
|
|
|
17
17
|
export { VerificationService } from "./services/verification.js";
|
|
18
18
|
export { CompanyService } from "./services/company.js";
|
|
19
19
|
export { StoreService } from "./services/store.js";
|
|
20
|
+
export * from "./download/index.js";
|
|
20
21
|
export { canonicalizeJson } from "./rfc8785.js";
|
|
21
22
|
export { canonicalizeXml } from "./xml.js";
|
|
22
23
|
export type { CheqiApiClient, CheqiSDKOptions, CreditNoteEnvelope, CreditNoteInitiationRequest, DecryptedDeliveredCreditNote, DecryptedReceipt, EncryptedReceipt, FetchLike, JsonObject, JsonPrimitive, JsonValue, Nullable, RefundBankAccount, RefundPreference, ReturnCondition, ReturnLineItem, RequestOptions } from "./types.js";
|
package/dist/index.js
CHANGED
|
@@ -15,6 +15,7 @@ export { CreditNoteService } from "./services/credit-note.js";
|
|
|
15
15
|
export { VerificationService } from "./services/verification.js";
|
|
16
16
|
export { CompanyService } from "./services/company.js";
|
|
17
17
|
export { StoreService } from "./services/store.js";
|
|
18
|
+
export * from "./download/index.js";
|
|
18
19
|
export { canonicalizeJson } from "./rfc8785.js";
|
|
19
20
|
export { canonicalizeXml } from "./xml.js";
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,cAAc,qBAAqB,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cheqi API
|
|
3
|
+
* Cheqi provides APIs for creating receipts and reading receipts for customers
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: v1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Client-encrypted receipt payload
|
|
14
|
+
* @export
|
|
15
|
+
* @interface ClientReceiptDownloadRequest
|
|
16
|
+
*/
|
|
17
|
+
export interface ClientReceiptDownloadRequest {
|
|
18
|
+
/**
|
|
19
|
+
* Client-generated download identifier: at least 16 CSPRNG bytes encoded as base64url without padding. Must be exactly the id embedded in the QR URL path. Resubmitting the same id with identical payload bytes is an idempotent replay.
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof ClientReceiptDownloadRequest
|
|
22
|
+
*/
|
|
23
|
+
downloadId: string;
|
|
24
|
+
/**
|
|
25
|
+
* Base64-encoded AES-256-GCM blob framed as iv || ciphertext || tag (12-byte IV, 128-bit tag) of the receipt envelope, encrypted client-side with the key from the QR URL fragment. Cheqi never receives that key and cannot decrypt this payload.
|
|
26
|
+
* @type {string}
|
|
27
|
+
* @memberof ClientReceiptDownloadRequest
|
|
28
|
+
*/
|
|
29
|
+
ciphertext: string;
|
|
30
|
+
/**
|
|
31
|
+
* Optional locally computed template hash for audit and reconciliation.
|
|
32
|
+
* @type {string}
|
|
33
|
+
* @memberof ClientReceiptDownloadRequest
|
|
34
|
+
*/
|
|
35
|
+
templateHash?: string | null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if a given object implements the ClientReceiptDownloadRequest interface.
|
|
39
|
+
*/
|
|
40
|
+
export declare function instanceOfClientReceiptDownloadRequest(value: object): value is ClientReceiptDownloadRequest;
|
|
41
|
+
export declare function ClientReceiptDownloadRequestFromJSON(json: any): ClientReceiptDownloadRequest;
|
|
42
|
+
export declare function ClientReceiptDownloadRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientReceiptDownloadRequest;
|
|
43
|
+
export declare function ClientReceiptDownloadRequestToJSON(json: any): ClientReceiptDownloadRequest;
|
|
44
|
+
export declare function ClientReceiptDownloadRequestToJSONTyped(value?: ClientReceiptDownloadRequest | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* Cheqi API
|
|
5
|
+
* Cheqi provides APIs for creating receipts and reading receipts for customers
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: v1
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Check if a given object implements the ClientReceiptDownloadRequest interface.
|
|
16
|
+
*/
|
|
17
|
+
export function instanceOfClientReceiptDownloadRequest(value) {
|
|
18
|
+
if (!('downloadId' in value) || value['downloadId'] === undefined)
|
|
19
|
+
return false;
|
|
20
|
+
if (!('ciphertext' in value) || value['ciphertext'] === undefined)
|
|
21
|
+
return false;
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
export function ClientReceiptDownloadRequestFromJSON(json) {
|
|
25
|
+
return ClientReceiptDownloadRequestFromJSONTyped(json, false);
|
|
26
|
+
}
|
|
27
|
+
export function ClientReceiptDownloadRequestFromJSONTyped(json, ignoreDiscriminator) {
|
|
28
|
+
if (json == null) {
|
|
29
|
+
return json;
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
'downloadId': json['downloadId'],
|
|
33
|
+
'ciphertext': json['ciphertext'],
|
|
34
|
+
'templateHash': json['templateHash'] == null ? undefined : json['templateHash'],
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function ClientReceiptDownloadRequestToJSON(json) {
|
|
38
|
+
return ClientReceiptDownloadRequestToJSONTyped(json, false);
|
|
39
|
+
}
|
|
40
|
+
export function ClientReceiptDownloadRequestToJSONTyped(value, ignoreDiscriminator = false) {
|
|
41
|
+
if (value == null) {
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
'downloadId': value['downloadId'],
|
|
46
|
+
'ciphertext': value['ciphertext'],
|
|
47
|
+
'templateHash': value['templateHash'],
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=ClientReceiptDownloadRequest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientReceiptDownloadRequest.js","sourceRoot":"","sources":["../../../src/models/generated/ClientReceiptDownloadRequest.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,oBAAoB;AACpB;;;;;;;;;;GAUG;AA6BH;;GAEG;AACH,MAAM,UAAU,sCAAsC,CAAC,KAAa;IAChE,IAAI,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChF,IAAI,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAChF,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oCAAoC,CAAC,IAAS;IAC1D,OAAO,yCAAyC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,yCAAyC,CAAC,IAAS,EAAE,mBAA4B;IAC7F,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO;QAEH,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;QAChC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;QAChC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;KAClF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kCAAkC,CAAC,IAAS;IACxD,OAAO,uCAAuC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,uCAAuC,CAAC,KAA2C,EAAE,sBAA+B,KAAK;IACrI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QAEH,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;QACjC,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC;QACjC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC;KACxC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cheqi API
|
|
3
|
+
* Cheqi provides APIs for creating receipts and reading receipts for customers
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: v1
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @export
|
|
15
|
+
* @interface ClientReceiptDownloadResponse
|
|
16
|
+
*/
|
|
17
|
+
export interface ClientReceiptDownloadResponse {
|
|
18
|
+
/**
|
|
19
|
+
* Stable Cheqi receipt identifier minted at upload time, for merchant back-office reconciliation. The customer-facing reference is the download URL itself.
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof ClientReceiptDownloadResponse
|
|
22
|
+
*/
|
|
23
|
+
cheqiReceiptId?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Timestamp when Cheqi first accepted this upload.
|
|
26
|
+
* @type {Date}
|
|
27
|
+
* @memberof ClientReceiptDownloadResponse
|
|
28
|
+
*/
|
|
29
|
+
createdAt?: Date;
|
|
30
|
+
/**
|
|
31
|
+
* Timestamp after which the download link stops resolving.
|
|
32
|
+
* @type {Date}
|
|
33
|
+
* @memberof ClientReceiptDownloadResponse
|
|
34
|
+
*/
|
|
35
|
+
expiresAt?: Date;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if a given object implements the ClientReceiptDownloadResponse interface.
|
|
39
|
+
*/
|
|
40
|
+
export declare function instanceOfClientReceiptDownloadResponse(value: object): value is ClientReceiptDownloadResponse;
|
|
41
|
+
export declare function ClientReceiptDownloadResponseFromJSON(json: any): ClientReceiptDownloadResponse;
|
|
42
|
+
export declare function ClientReceiptDownloadResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): ClientReceiptDownloadResponse;
|
|
43
|
+
export declare function ClientReceiptDownloadResponseToJSON(json: any): ClientReceiptDownloadResponse;
|
|
44
|
+
export declare function ClientReceiptDownloadResponseToJSONTyped(value?: ClientReceiptDownloadResponse | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* Cheqi API
|
|
5
|
+
* Cheqi provides APIs for creating receipts and reading receipts for customers
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: v1
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Check if a given object implements the ClientReceiptDownloadResponse interface.
|
|
16
|
+
*/
|
|
17
|
+
export function instanceOfClientReceiptDownloadResponse(value) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
export function ClientReceiptDownloadResponseFromJSON(json) {
|
|
21
|
+
return ClientReceiptDownloadResponseFromJSONTyped(json, false);
|
|
22
|
+
}
|
|
23
|
+
export function ClientReceiptDownloadResponseFromJSONTyped(json, ignoreDiscriminator) {
|
|
24
|
+
if (json == null) {
|
|
25
|
+
return json;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
'cheqiReceiptId': json['cheqiReceiptId'] == null ? undefined : json['cheqiReceiptId'],
|
|
29
|
+
'createdAt': json['createdAt'] == null ? undefined : (new Date(json['createdAt'])),
|
|
30
|
+
'expiresAt': json['expiresAt'] == null ? undefined : (new Date(json['expiresAt'])),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
export function ClientReceiptDownloadResponseToJSON(json) {
|
|
34
|
+
return ClientReceiptDownloadResponseToJSONTyped(json, false);
|
|
35
|
+
}
|
|
36
|
+
export function ClientReceiptDownloadResponseToJSONTyped(value, ignoreDiscriminator = false) {
|
|
37
|
+
if (value == null) {
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
'cheqiReceiptId': value['cheqiReceiptId'],
|
|
42
|
+
'createdAt': value['createdAt'] == null ? undefined : ((value['createdAt']).toISOString()),
|
|
43
|
+
'expiresAt': value['expiresAt'] == null ? undefined : ((value['expiresAt']).toISOString()),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ClientReceiptDownloadResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClientReceiptDownloadResponse.js","sourceRoot":"","sources":["../../../src/models/generated/ClientReceiptDownloadResponse.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,oBAAoB;AACpB;;;;;;;;;;GAUG;AA6BH;;GAEG;AACH,MAAM,UAAU,uCAAuC,CAAC,KAAa;IACjE,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qCAAqC,CAAC,IAAS;IAC3D,OAAO,0CAA0C,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,0CAA0C,CAAC,IAAS,EAAE,mBAA4B;IAC9F,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO;QAEH,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QAClF,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KACrF,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mCAAmC,CAAC,IAAS;IACzD,OAAO,wCAAwC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,wCAAwC,CAAC,KAA4C,EAAE,sBAA+B,KAAK;IACvI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO;QAEH,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,CAAC;QACzC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAC1F,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;KAC7F,CAAC;AACN,CAAC"}
|
|
@@ -13,6 +13,8 @@ export * from './CardDetails.js';
|
|
|
13
13
|
export * from './Charge.js';
|
|
14
14
|
export * from './CheqiCreditNote.js';
|
|
15
15
|
export * from './CheqiReceipt.js';
|
|
16
|
+
export * from './ClientReceiptDownloadRequest.js';
|
|
17
|
+
export * from './ClientReceiptDownloadResponse.js';
|
|
16
18
|
export * from './CompanyCreationRequest.js';
|
|
17
19
|
export * from './CompanyIdentifierDTO.js';
|
|
18
20
|
export * from './CompanyIdentifierRequirement.js';
|
|
@@ -13,6 +13,8 @@ export * from './CardDetails.js';
|
|
|
13
13
|
export * from './Charge.js';
|
|
14
14
|
export * from './CheqiCreditNote.js';
|
|
15
15
|
export * from './CheqiReceipt.js';
|
|
16
|
+
export * from './ClientReceiptDownloadRequest.js';
|
|
17
|
+
export * from './ClientReceiptDownloadResponse.js';
|
|
16
18
|
export * from './CompanyCreationRequest.js';
|
|
17
19
|
export * from './CompanyIdentifierDTO.js';
|
|
18
20
|
export * from './CompanyIdentifierRequirement.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/generated/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,yCAAyC,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,oDAAoD,CAAC;AACnE,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/models/generated/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mCAAmC,CAAC;AAClD,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,6CAA6C,CAAC;AAC5D,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0CAA0C,CAAC;AACzD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,2CAA2C,CAAC;AAC1D,cAAc,kCAAkC,CAAC;AACjD,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,yCAAyC,CAAC;AACxD,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uCAAuC,CAAC;AACtD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,oDAAoD,CAAC;AACnE,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oCAAoC,CAAC"}
|
|
@@ -1,17 +1,27 @@
|
|
|
1
1
|
import { ReceiptResult } from "../models.js";
|
|
2
|
-
import type { CheqiApiClient, EncryptedReceiptRequest, IdentificationDetails, MatchedRecipient, NotificationDisplayCode, ReceiptTemplateGenerationRequest, ReceiptTemplateRequest, ReceiptTemplateResponse, RecipientResolutionResponse } from "../types.js";
|
|
2
|
+
import type { CheqiApiClient, ClientReceiptDownloadRequest, ClientReceiptDownloadResponse, EncryptedReceiptRequest, IdentificationDetails, MatchedRecipient, NotificationDisplayCode, ReceiptTemplateGenerationRequest, ReceiptTemplateRequest, ReceiptTemplateResponse, RecipientResolutionResponse } from "../types.js";
|
|
3
3
|
import { EncryptionService } from "./encryption.js";
|
|
4
4
|
import { MatchingService } from "./matching.js";
|
|
5
5
|
export declare class ReceiptService {
|
|
6
6
|
private readonly apiClient;
|
|
7
7
|
private readonly encryptionService;
|
|
8
8
|
private readonly matchingService;
|
|
9
|
-
constructor(apiClient: Pick<CheqiApiClient, "generateReceiptTemplate" | "sendEncryptedReceipts" | "sendReceiptViaEmail">, encryptionService: EncryptionService, matchingService: MatchingService);
|
|
9
|
+
constructor(apiClient: Pick<CheqiApiClient, "generateReceiptTemplate" | "sendEncryptedReceipts" | "sendReceiptViaEmail" | "uploadClientEncryptedReceipt">, encryptionService: EncryptionService, matchingService: MatchingService);
|
|
10
10
|
processCompleteReceipt(identificationDetails: IdentificationDetails, receiptRequest: ReceiptTemplateRequest, accessToken?: string | null, notificationDisplayCode?: NotificationDisplayCode | null): Promise<ReceiptResult>;
|
|
11
11
|
generateReceiptTemplate(request: ReceiptTemplateGenerationRequest, accessToken?: string | null): Promise<ReceiptTemplateResponse>;
|
|
12
12
|
createEncryptedReceipts(purchaseReceipt: string, recipient: MatchedRecipient, notificationDisplayCode?: NotificationDisplayCode | null): EncryptedReceiptRequest;
|
|
13
13
|
sendEncryptedReceipts(encryptedReceipts: EncryptedReceiptRequest[], templateHash: string, matchResponse: RecipientResolutionResponse, accessToken?: string | null): Promise<Record<string, unknown>>;
|
|
14
14
|
sendReceiptViaEmail(customerEmail: string, cheqiReceipt: Record<string, unknown>, accessToken?: string | null): Promise<ReceiptResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Uploads a client-encrypted receipt for a download link generated locally with
|
|
17
|
+
* `generateDownloadLink` and encrypted with `encryptDownloadEnvelope` (Download Link
|
|
18
|
+
* Contract v1). The QR was rendered before this call; the upload may happen much later.
|
|
19
|
+
*
|
|
20
|
+
* Idempotent on the exact ciphertext bytes: resend the SAME persisted blob on retries
|
|
21
|
+
* (200 and 201 are both success). A 409 means different bytes already exist under this
|
|
22
|
+
* download id — a bug in the integration; do not regenerate the id or retry.
|
|
23
|
+
*/
|
|
24
|
+
uploadClientEncryptedReceipt(request: ClientReceiptDownloadRequest, accessToken?: string | null): Promise<ClientReceiptDownloadResponse>;
|
|
15
25
|
private buildEncryptedReceipts;
|
|
16
26
|
private validateProcessInputs;
|
|
17
27
|
}
|
package/dist/services/receipt.js
CHANGED
|
@@ -126,6 +126,30 @@ export class ReceiptService {
|
|
|
126
126
|
await this.apiClient.sendReceiptViaEmail(customerEmail, cheqiReceipt, accessToken);
|
|
127
127
|
return ReceiptResult.deliveredViaEmail(customerEmail);
|
|
128
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Uploads a client-encrypted receipt for a download link generated locally with
|
|
131
|
+
* `generateDownloadLink` and encrypted with `encryptDownloadEnvelope` (Download Link
|
|
132
|
+
* Contract v1). The QR was rendered before this call; the upload may happen much later.
|
|
133
|
+
*
|
|
134
|
+
* Idempotent on the exact ciphertext bytes: resend the SAME persisted blob on retries
|
|
135
|
+
* (200 and 201 are both success). A 409 means different bytes already exist under this
|
|
136
|
+
* download id — a bug in the integration; do not regenerate the id or retry.
|
|
137
|
+
*/
|
|
138
|
+
async uploadClientEncryptedReceipt(request, accessToken = null) {
|
|
139
|
+
if (!request?.downloadId || !/^[A-Za-z0-9_-]{22,64}$/.test(request.downloadId)) {
|
|
140
|
+
throw new CheqiSDKError("downloadId must be 22-64 base64url characters", {
|
|
141
|
+
errorCode: ErrorCodes.VALIDATION_ERROR,
|
|
142
|
+
httpStatusCode: 400
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
if (!request.ciphertext) {
|
|
146
|
+
throw new CheqiSDKError("ciphertext is required", {
|
|
147
|
+
errorCode: ErrorCodes.VALIDATION_ERROR,
|
|
148
|
+
httpStatusCode: 400
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
return this.apiClient.uploadClientEncryptedReceipt(request, accessToken);
|
|
152
|
+
}
|
|
129
153
|
buildEncryptedReceipts(matchResponse, templateResponse, notificationDisplayCode) {
|
|
130
154
|
const encryptedReceipts = [];
|
|
131
155
|
for (const recipient of matchedRecipients(matchResponse)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/services/receipt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/services/receipt.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type JsonValue = JsonPrimitive | JsonObject | JsonValue[];
|
|
|
4
4
|
export interface JsonObject {
|
|
5
5
|
[key: string]: JsonValue | undefined;
|
|
6
6
|
}
|
|
7
|
-
export type { AddressDTO, BarcodeType, BuyerType, CardDetails, CreditNoteContextEnvelope, ReceiptContextEnvelope, Charge, CheqiCreditNote, CheqiReceipt, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateRequest, CreditNoteTemplateResponse, Discount, EncryptedCreditNote, EncryptedCreditNoteInitiationRequest, EncryptedReceiptRequest, EncryptedReceiptsRequest, IdentificationDetails, Identifier, MatchedRecipient, NotificationDisplayCode, PaymentAccountDetails, Period, Product, ReceiptCreatedResponse, ReceiptEnvelope, ReceiptFormat, ReceiptTemplateGenerationRequest, ReceiptTemplateRequest, ReceiptTemplateResponse, RecipientResolutionResponse, SellingParty, ReceivingParty, StoreDTO, Tax, VatMetadata, } from "./models/generated/index.js";
|
|
7
|
+
export type { AddressDTO, BarcodeType, BuyerType, CardDetails, ClientReceiptDownloadRequest, ClientReceiptDownloadResponse, CreditNoteContextEnvelope, ReceiptContextEnvelope, Charge, CheqiCreditNote, CheqiReceipt, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateRequest, CreditNoteTemplateResponse, Discount, EncryptedCreditNote, EncryptedCreditNoteInitiationRequest, EncryptedReceiptRequest, EncryptedReceiptsRequest, IdentificationDetails, Identifier, MatchedRecipient, NotificationDisplayCode, PaymentAccountDetails, Period, Product, ReceiptCreatedResponse, ReceiptEnvelope, ReceiptFormat, ReceiptTemplateGenerationRequest, ReceiptTemplateRequest, ReceiptTemplateResponse, RecipientResolutionResponse, SellingParty, ReceivingParty, StoreDTO, Tax, VatMetadata, } from "./models/generated/index.js";
|
|
8
8
|
export type CompanyDTO = import("./models/generated/index.js").CompanyCreationRequest;
|
|
9
9
|
export type IdentificationDetailsPaymentTypeEnum = import("./models/generated/index.js").PaymentType;
|
|
10
10
|
export type ProvisionCompanyRequest = import("./models/generated/index.js").CreateChildCompanyRequest;
|
|
@@ -97,6 +97,7 @@ export interface CheqiApiClient {
|
|
|
97
97
|
generateCreditNoteTemplate(request: import("./models/generated/index.js").CreditNoteTemplateGenerationRequest, accessToken?: string | null): Promise<import("./models/generated/index.js").CreditNoteTemplateResponse>;
|
|
98
98
|
matchCustomer(request: import("./models/generated/index.js").IdentificationDetails, accessToken?: string | null): Promise<import("./models/generated/index.js").RecipientResolutionResponse>;
|
|
99
99
|
sendEncryptedReceipts(matchId: string, encryptedReceipts: import("./models/generated/index.js").EncryptedReceiptRequest[], templateHash: string, accessToken?: string | null): Promise<Record<string, unknown>>;
|
|
100
|
+
uploadClientEncryptedReceipt(request: import("./models/generated/index.js").ClientReceiptDownloadRequest, accessToken?: string | null): Promise<import("./models/generated/index.js").ClientReceiptDownloadResponse>;
|
|
100
101
|
sendEncryptedCreditNotes(matchId: string, parentCheqiReceiptId: string, encryptedCreditNotes: import("./models/generated/index.js").EncryptedCreditNote[], templateHash: string, accessToken?: string | null): Promise<Record<string, unknown>>;
|
|
101
102
|
sendReceiptViaEmail(customerEmail: string, receipt: Record<string, unknown> | string, accessToken?: string | null): Promise<void>;
|
|
102
103
|
provisionCompany(request: ProvisionCompanyRequest): Promise<Record<string, unknown>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cheqi/sdk",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Cheqi TypeScript SDK for encrypted receipt and credit note processing",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Cheqi",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"./entity": {
|
|
33
33
|
"types": "./dist/entity/index.d.ts",
|
|
34
34
|
"default": "./dist/entity/index.js"
|
|
35
|
+
},
|
|
36
|
+
"./download": {
|
|
37
|
+
"types": "./dist/download/index.d.ts",
|
|
38
|
+
"default": "./dist/download/index.js"
|
|
35
39
|
}
|
|
36
40
|
},
|
|
37
41
|
"files": [
|