@proveanything/smartlinks 1.0.13 → 1.0.16
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/README.md +12 -150
- package/build-docs.ts +28 -0
- package/dist/api/appConfiguration.d.ts +20 -9
- package/dist/api/appConfiguration.js +85 -11
- package/dist/api/auth.d.ts +3 -4
- package/dist/api/auth.js +2 -2
- package/dist/build-docs.js +26 -0
- package/dist/http.d.ts +5 -3
- package/dist/http.js +5 -3
- package/dist/index.d.ts +3 -0
- package/docs/README.md +282 -0
- package/docs/assets/navigation.js +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/documentation.json +3380 -1454
- package/docs/functions/appConfiguration.deleteConfig.html +1 -0
- package/docs/functions/appConfiguration.deleteDataItem.html +1 -0
- package/docs/functions/appConfiguration.getConfig.html +1 -0
- package/docs/functions/appConfiguration.getData.html +1 -0
- package/docs/functions/appConfiguration.getDataItem.html +1 -0
- package/docs/functions/appConfiguration.setConfig.html +1 -0
- package/docs/functions/appConfiguration.setDataItem.html +1 -0
- package/docs/functions/asset.getForCollection.html +1 -1
- package/docs/functions/asset.getForProduct.html +1 -1
- package/docs/functions/asset.getForProof.html +1 -1
- package/docs/functions/asset.listForCollection.html +1 -1
- package/docs/functions/asset.listForProduct.html +1 -1
- package/docs/functions/asset.listForProof.html +1 -1
- package/docs/functions/asset.uploadAsset.html +1 -1
- package/docs/functions/attestation.create.html +2 -2
- package/docs/functions/attestation.get.html +2 -2
- package/docs/functions/attestation.list.html +2 -2
- package/docs/functions/attestation.remove.html +1 -1
- package/docs/functions/attestation.update.html +2 -2
- package/docs/functions/auth.getAccount.html +3 -0
- package/docs/functions/auth.login.html +2 -2
- package/docs/functions/auth.logout.html +1 -1
- package/docs/functions/auth.verifyToken.html +3 -0
- package/docs/functions/collection.get.html +1 -1
- package/docs/functions/initializeApi.html +2 -4
- package/docs/functions/product.get.html +1 -1
- package/docs/functions/product.list.html +1 -1
- package/docs/functions/proof.get.html +1 -1
- package/docs/functions/proof.list.html +1 -1
- package/docs/functions/request.html +1 -1
- package/docs/interfaces/AppConfigurationResponse.html +4 -4
- package/docs/interfaces/AssetResponse.html +2 -2
- package/docs/interfaces/AttestationCreateRequest.html +4 -0
- package/docs/interfaces/AttestationResponse.html +7 -0
- package/docs/interfaces/AttestationUpdateRequest.html +3 -0
- package/docs/interfaces/CollectionResponse.html +5 -5
- package/docs/interfaces/ErrorResponse.html +3 -3
- package/docs/interfaces/ProductResponse.html +5 -5
- package/docs/interfaces/ProofResponse.html +8 -8
- package/docs/modules/appConfiguration.html +7 -1
- package/docs/modules/asset.html +1 -1
- package/docs/modules/attestation.html +1 -1
- package/docs/modules/auth.html +3 -1
- package/docs/modules/collection.html +1 -1
- package/docs/modules/product.html +1 -1
- package/docs/modules/proof.html +1 -1
- package/docs/modules.html +7 -0
- package/docs/types/AccountInfoResponse.html +1 -0
- package/docs/types/AppConfigOptions.html +1 -0
- package/docs/types/LoginResponse.html +1 -0
- package/docs/types/VerifyTokenResponse.html +1 -0
- package/package.json +5 -2
- package/src/api/appConfiguration.ts +99 -17
- package/src/api/auth.ts +5 -5
- package/src/http.ts +7 -5
- package/src/index.ts +13 -0
- package/temp-docs/.nojekyll +1 -0
- package/temp-docs/README.md +101 -0
- package/temp-docs/interfaces/AppConfigurationResponse.md +45 -0
- package/temp-docs/interfaces/AssetResponse.md +39 -0
- package/temp-docs/interfaces/AttestationCreateRequest.md +37 -0
- package/temp-docs/interfaces/AttestationResponse.md +70 -0
- package/temp-docs/interfaces/AttestationUpdateRequest.md +26 -0
- package/temp-docs/interfaces/CollectionResponse.md +58 -0
- package/temp-docs/interfaces/ErrorResponse.md +32 -0
- package/temp-docs/interfaces/ProductResponse.md +58 -0
- package/temp-docs/interfaces/ProofResponse.md +97 -0
- package/temp-docs/modules/appConfiguration.md +151 -0
- package/temp-docs/modules/asset.md +171 -0
- package/temp-docs/modules/attestation.md +134 -0
- package/temp-docs/modules/auth.md +88 -0
- package/temp-docs/modules/collection.md +33 -0
- package/temp-docs/modules/product.md +63 -0
- package/temp-docs/modules/proof.md +57 -0
- package/temp-docs/modules.md +176 -0
- package/docs/functions/appConfiguration.get.html +0 -6
package/docs/README.md
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
# Smartlinks SDK Documentation
|
|
2
|
+
|
|
3
|
+
## Table of contents
|
|
4
|
+
|
|
5
|
+
### Namespaces
|
|
6
|
+
|
|
7
|
+
- [appConfiguration](modules/appConfiguration.md)
|
|
8
|
+
- [asset](modules/asset.md)
|
|
9
|
+
- [attestation](modules/attestation.md)
|
|
10
|
+
- [auth](modules/auth.md)
|
|
11
|
+
- [collection](modules/collection.md)
|
|
12
|
+
- [product](modules/product.md)
|
|
13
|
+
- [proof](modules/proof.md)
|
|
14
|
+
|
|
15
|
+
### Interfaces
|
|
16
|
+
|
|
17
|
+
- [AppConfigurationResponse](interfaces/AppConfigurationResponse.md)
|
|
18
|
+
- [AssetResponse](interfaces/AssetResponse.md)
|
|
19
|
+
- [AttestationCreateRequest](interfaces/AttestationCreateRequest.md)
|
|
20
|
+
- [AttestationResponse](interfaces/AttestationResponse.md)
|
|
21
|
+
- [AttestationUpdateRequest](interfaces/AttestationUpdateRequest.md)
|
|
22
|
+
- [CollectionResponse](interfaces/CollectionResponse.md)
|
|
23
|
+
- [ErrorResponse](interfaces/ErrorResponse.md)
|
|
24
|
+
- [ProductResponse](interfaces/ProductResponse.md)
|
|
25
|
+
- [ProofResponse](interfaces/ProofResponse.md)
|
|
26
|
+
|
|
27
|
+
### Type Aliases
|
|
28
|
+
|
|
29
|
+
- [AccountInfoResponse](modules.md#accountinforesponse)
|
|
30
|
+
- [AppConfigOptions](modules.md#appconfigoptions)
|
|
31
|
+
- [LoginResponse](modules.md#loginresponse)
|
|
32
|
+
- [VerifyTokenResponse](modules.md#verifytokenresponse)
|
|
33
|
+
|
|
34
|
+
### Functions
|
|
35
|
+
|
|
36
|
+
- [initializeApi](modules.md#initializeapi)
|
|
37
|
+
- [request](modules.md#request)
|
|
38
|
+
|
|
39
|
+
## Type Aliases
|
|
40
|
+
|
|
41
|
+
### AccountInfoResponse
|
|
42
|
+
|
|
43
|
+
Ƭ **AccountInfoResponse**: `Object`
|
|
44
|
+
|
|
45
|
+
#### Type declaration
|
|
46
|
+
|
|
47
|
+
| Name | Type |
|
|
48
|
+
| :------ | :------ |
|
|
49
|
+
| `account` | `Record`\<`string`, `any`\> |
|
|
50
|
+
| `location` | `Record`\<`string`, `any`\> |
|
|
51
|
+
| `owner` | `Record`\<`string`, `any`\> |
|
|
52
|
+
| `user` | `Record`\<`string`, `any`\> |
|
|
53
|
+
|
|
54
|
+
#### Defined in
|
|
55
|
+
|
|
56
|
+
[api/auth.ts:19](https://github.com/Prove-Anything/smartlinks/blob/54a929dabe2ef3c5f4a5a559c656ea584231138a/src/api/auth.ts#L19)
|
|
57
|
+
|
|
58
|
+
___
|
|
59
|
+
|
|
60
|
+
### AppConfigOptions
|
|
61
|
+
|
|
62
|
+
Ƭ **AppConfigOptions**: `Object`
|
|
63
|
+
|
|
64
|
+
#### Type declaration
|
|
65
|
+
|
|
66
|
+
| Name | Type |
|
|
67
|
+
| :------ | :------ |
|
|
68
|
+
| `admin?` | `boolean` |
|
|
69
|
+
| `appId` | `string` |
|
|
70
|
+
| `batchId?` | `string` |
|
|
71
|
+
| `collectionId?` | `string` |
|
|
72
|
+
| `config?` | `any` |
|
|
73
|
+
| `data?` | `any` |
|
|
74
|
+
| `itemId?` | `string` |
|
|
75
|
+
| `productId?` | `string` |
|
|
76
|
+
| `user?` | `boolean` |
|
|
77
|
+
| `userData?` | `boolean` |
|
|
78
|
+
| `variantId?` | `string` |
|
|
79
|
+
|
|
80
|
+
#### Defined in
|
|
81
|
+
|
|
82
|
+
[api/appConfiguration.ts:4](https://github.com/Prove-Anything/smartlinks/blob/54a929dabe2ef3c5f4a5a559c656ea584231138a/src/api/appConfiguration.ts#L4)
|
|
83
|
+
|
|
84
|
+
___
|
|
85
|
+
|
|
86
|
+
### LoginResponse
|
|
87
|
+
|
|
88
|
+
Ƭ **LoginResponse**: `Object`
|
|
89
|
+
|
|
90
|
+
#### Type declaration
|
|
91
|
+
|
|
92
|
+
| Name | Type |
|
|
93
|
+
| :------ | :------ |
|
|
94
|
+
| `account` | `Record`\<`string`, `any`\> |
|
|
95
|
+
| `bearerToken` | `string` |
|
|
96
|
+
| `email` | `string` |
|
|
97
|
+
| `id` | `string` |
|
|
98
|
+
| `name` | `string` |
|
|
99
|
+
|
|
100
|
+
#### Defined in
|
|
101
|
+
|
|
102
|
+
[api/auth.ts:3](https://github.com/Prove-Anything/smartlinks/blob/54a929dabe2ef3c5f4a5a559c656ea584231138a/src/api/auth.ts#L3)
|
|
103
|
+
|
|
104
|
+
___
|
|
105
|
+
|
|
106
|
+
### VerifyTokenResponse
|
|
107
|
+
|
|
108
|
+
Ƭ **VerifyTokenResponse**: `Object`
|
|
109
|
+
|
|
110
|
+
#### Type declaration
|
|
111
|
+
|
|
112
|
+
| Name | Type |
|
|
113
|
+
| :------ | :------ |
|
|
114
|
+
| `account?` | `Record`\<`string`, `any`\> |
|
|
115
|
+
| `email?` | `string` |
|
|
116
|
+
| `id?` | `string` |
|
|
117
|
+
| `name?` | `string` |
|
|
118
|
+
| `valid` | `boolean` |
|
|
119
|
+
|
|
120
|
+
#### Defined in
|
|
121
|
+
|
|
122
|
+
[api/auth.ts:11](https://github.com/Prove-Anything/smartlinks/blob/54a929dabe2ef3c5f4a5a559c656ea584231138a/src/api/auth.ts#L11)
|
|
123
|
+
|
|
124
|
+
## Functions
|
|
125
|
+
|
|
126
|
+
### initializeApi
|
|
127
|
+
|
|
128
|
+
▸ **initializeApi**(`options`): `void`
|
|
129
|
+
|
|
130
|
+
Call this once (e.g. at app startup) to configure baseURL/auth.
|
|
131
|
+
|
|
132
|
+
#### Parameters
|
|
133
|
+
|
|
134
|
+
| Name | Type | Description |
|
|
135
|
+
| :------ | :------ | :------ |
|
|
136
|
+
| `options` | `Object` | Configuration options |
|
|
137
|
+
| `options.apiKey?` | `string` | - |
|
|
138
|
+
| `options.baseURL` | `string` | - |
|
|
139
|
+
| `options.bearerToken?` | `string` | - |
|
|
140
|
+
| `options.proxyMode?` | `boolean` | - |
|
|
141
|
+
|
|
142
|
+
#### Returns
|
|
143
|
+
|
|
144
|
+
`void`
|
|
145
|
+
|
|
146
|
+
#### Defined in
|
|
147
|
+
|
|
148
|
+
[http.ts:20](https://github.com/Prove-Anything/smartlinks/blob/54a929dabe2ef3c5f4a5a559c656ea584231138a/src/http.ts#L20)
|
|
149
|
+
|
|
150
|
+
___
|
|
151
|
+
|
|
152
|
+
### request
|
|
153
|
+
|
|
154
|
+
▸ **request**\<`T`\>(`path`): `Promise`\<`T`\>
|
|
155
|
+
|
|
156
|
+
Internal helper that performs a GET request to `\${baseURL}\${path}`,
|
|
157
|
+
injecting headers for apiKey or bearerToken if present.
|
|
158
|
+
Returns the parsed JSON as T, or throws an Error.
|
|
159
|
+
|
|
160
|
+
#### Type parameters
|
|
161
|
+
|
|
162
|
+
| Name |
|
|
163
|
+
| :------ |
|
|
164
|
+
| `T` |
|
|
165
|
+
|
|
166
|
+
#### Parameters
|
|
167
|
+
|
|
168
|
+
| Name | Type |
|
|
169
|
+
| :------ | :------ |
|
|
170
|
+
| `path` | `string` |
|
|
171
|
+
|
|
172
|
+
#### Returns
|
|
173
|
+
|
|
174
|
+
`Promise`\<`T`\>
|
|
175
|
+
|
|
176
|
+
#### Defined in
|
|
177
|
+
|
|
178
|
+
[http.ts:96](https://github.com/Prove-Anything/smartlinks/blob/54a929dabe2ef3c5f4a5a559c656ea584231138a/src/http.ts#L96)
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
An official JavaScript/TypeScript client SDK for the Smartlinks API. This package provides simple, namespaced functions to fetch Collection, Product, Proof, and App Configuration data in both browser and Node.js environments.
|
|
183
|
+
|
|
184
|
+
## Installation
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
npm install @proveanything/smartlinks
|
|
188
|
+
# or
|
|
189
|
+
yarn add @proveanything/smartlinks
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
## Quickstart
|
|
193
|
+
|
|
194
|
+
```ts
|
|
195
|
+
import {
|
|
196
|
+
initializeApi,
|
|
197
|
+
collection,
|
|
198
|
+
product,
|
|
199
|
+
proof,
|
|
200
|
+
appConfiguration,
|
|
201
|
+
} from "@proveanything/smartlinks";
|
|
202
|
+
|
|
203
|
+
async function main() {
|
|
204
|
+
// Initialize once (provide base URL and optional API key, bearer token, or proxyMode)
|
|
205
|
+
initializeApi({
|
|
206
|
+
baseURL: "https://smartlinks.app/api/v1",
|
|
207
|
+
apiKey: "YOUR_API_KEY_HERE", // optional
|
|
208
|
+
bearerToken: "YOUR_BEARER_TOKEN", // optional
|
|
209
|
+
proxyMode: false // optional, set true if running in iframe via parent proxy
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
try {
|
|
213
|
+
// Fetch a collection by ID
|
|
214
|
+
const coll = await collection.get("abc123");
|
|
215
|
+
console.log("Collection:", coll);
|
|
216
|
+
|
|
217
|
+
// Fetch a product item by collection ID & product ID
|
|
218
|
+
const prod = await product.get("abc123", "prod789");
|
|
219
|
+
console.log("Product Item:", prod);
|
|
220
|
+
|
|
221
|
+
// Fetch a proof by collection ID & proof ID
|
|
222
|
+
const prf = await proof.get("abc123", "proof456");
|
|
223
|
+
console.log("Proof:", prf);
|
|
224
|
+
|
|
225
|
+
// Fetch an app configuration by collection ID & app ID
|
|
226
|
+
const cfg = await appConfiguration.get("abc123", "app789");
|
|
227
|
+
console.log("App Configuration:", cfg);
|
|
228
|
+
} catch (err) {
|
|
229
|
+
console.error("Error fetching data:", err);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
main();
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## API Reference
|
|
237
|
+
|
|
238
|
+
### Initialization
|
|
239
|
+
|
|
240
|
+
```ts
|
|
241
|
+
initializeApi(options: { baseURL: string; apiKey?: string; bearerToken?: string; proxyMode?: boolean }): void
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
- **Parameters:**
|
|
245
|
+
- `baseURL` (`string`, required): The root URL of the Smartlinks API, e.g. `https://smartlinks.app/api/v1`.
|
|
246
|
+
- `apiKey` (`string`, optional): Your API key for the `X-API-Key` header.
|
|
247
|
+
- `bearerToken` (`string`, optional): Your Bearer token for the `Authorization` header.
|
|
248
|
+
- `proxyMode` (`boolean`, optional): Set to `true` if running in an iframe and using a parent proxy for requests.
|
|
249
|
+
|
|
250
|
+
All subsequent calls to the API functions will use these settings.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
### Namespaced Modules
|
|
255
|
+
|
|
256
|
+
Each namespace provides a `get` method for fetching data:
|
|
257
|
+
|
|
258
|
+
- **collection.get(collectionId: string): Promise<Collection>**
|
|
259
|
+
- **product.get(collectionId: string, productId: string): Promise<Product>**
|
|
260
|
+
- **proof.get(collectionId: string, proofId: string): Promise<Proof>**
|
|
261
|
+
- **appConfiguration.get(collectionId: string, appId: string): Promise<AppConfiguration>**
|
|
262
|
+
|
|
263
|
+
All methods return a Promise resolving to the corresponding object, or throw an `Error` on failure.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Changelog
|
|
268
|
+
|
|
269
|
+
### 1.0.0
|
|
270
|
+
|
|
271
|
+
- Initial release:
|
|
272
|
+
- `initializeApi` function to configure baseURL and auth.
|
|
273
|
+
- Namespaced modules:
|
|
274
|
+
- `collection.get(collectionId)`
|
|
275
|
+
- `product.get(collectionId, productId)`
|
|
276
|
+
- `proof.get(collectionId, proofId)`
|
|
277
|
+
- `appConfiguration.get(collectionId, appId)`
|
|
278
|
+
- Full TypeScript typings and JSDoc.
|
|
279
|
+
- Browser/Node fetch support via `cross-fetch`.
|
|
280
|
+
- Error handling via thrown `Error` objects.
|
|
281
|
+
|
|
282
|
+
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.navigationData = "data:application/octet-stream;base64,
|
|
1
|
+
window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAACp2WQW+cMBCF/4vPq6aNklTd22rbSJEitYraXqIeEAxghfUQe4iaVv3vlSEEY8zY5Lp+/vzGnnns/V9B8JvEXmRte0RVyqrTGUlUYifajGqxFycsugbMma94V9OpETvxIFUh9hc7kdeyKTQosb9/xRbQAMGwb0KWncotIgB1N8xPuLr4t/O4nzPKbghOG8jjFoZdAW0w/KrmifbcVJ7VxmnJhTt6hmo2VW0SqjYbfRrG5y+HmxkDFOhP+3NSU1ZA16iP2DSQz3vdcdfTfCX/Kteov2ksupxixBdZCg7LBBiWDKqRJrXehTSOjVY81yUBuZpdFQPr2gaz4jBvFZ/liPiOIwJDa7k4LSZ1X64hIwiackiDim+QGKMKlDW/7hjBahiEhhM+RUsZVOxbFQk3Mqj4d+qoDjxQR3VqLhzyHDsVvheLmSTczWIlw0NmEf0qvxu7dQfDMrP/CbQsn7/jA6x7cDTsheaBzBivNV8JifXLDdlxKKF2dc20ftKMTtpQtGyzMSLeNjLj7uC4eCW42eYU4IfZZvtYvt08lnHrB+9zfQemRWWcsZWKQJdZDuZsTTw/4fzyyj3AxjBPdRUsaoqNY5+jd/DYgVu+S10RJx7AO17qErE/+rRL9D0TcwdMH3bW9lLGQb9ojZrlzRQc6uVPAgvzNBEcljHYpGCfZkj9G1XiEkjPrX2QpcQjvv/08cPleWiovrb9MC6Q3nqMd2u/LWv+Zosx0s/pC7HGC0hiVKkkyayRf+DQylAYzQTsPw9vMCaEDo2BDbP/yOUDY+0OAAA="
|
package/docs/assets/search.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
window.searchData = "data:application/octet-stream;base64,
|
|
1
|
+
window.searchData = "data:application/octet-stream;base64,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";
|