@short.io/client-node 3.0.4 → 3.2.0

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 CHANGED
@@ -21,6 +21,7 @@ Official Node.js SDK for the [Short.io](https://short.io) URL shortening and lin
21
21
  - [Advanced Configuration](#advanced-configuration)
22
22
  - [TypeScript Support](#typescript-support)
23
23
  - [Rate Limits](#rate-limits)
24
+ - [Rate Limit Handling](#rate-limit-handling)
24
25
  - [Error Handling](#error-handling)
25
26
  - [Support](#support)
26
27
  - [License](#license)
@@ -38,6 +39,7 @@ Official Node.js SDK for the [Short.io](https://short.io) URL shortening and lin
38
39
  - **Permissions Management** - Control user access to links
39
40
  - **Full TypeScript Support** - Comprehensive type definitions included
40
41
  - **Modern ESM** - Built with ES modules
42
+ - **Automatic Rate Limit Handling** - Built-in retry logic for 429 responses with exponential backoff
41
43
 
42
44
  ## Requirements
43
45
 
@@ -701,6 +703,100 @@ interface Response<T> {
701
703
  | QR Bulk Generation | 1 request/minute |
702
704
  | Public API | 50 requests/second |
703
705
 
706
+ ## Rate Limit Handling
707
+
708
+ The SDK provides optional automatic retry logic for HTTP 429 (Too Many Requests) responses with exponential backoff.
709
+
710
+ **Default behavior:** No automatic retries. When a 429 response is received, it is returned immediately (or thrown if `throwOnError` is enabled). You must explicitly enable rate limit handling to get automatic retries.
711
+
712
+ ### Enable Global Rate Limiting
713
+
714
+ ```javascript
715
+ import { setApiKey, enableRateLimiting } from "@short.io/client-node";
716
+
717
+ setApiKey("YOUR_API_KEY");
718
+
719
+ // Enable with default settings
720
+ enableRateLimiting();
721
+ // Defaults: maxRetries=3, baseDelayMs=1000, maxDelayMs=60000
722
+
723
+ // Or customize the behavior
724
+ enableRateLimiting({
725
+ maxRetries: 5, // Maximum retry attempts (default: 3)
726
+ baseDelayMs: 1000, // Initial delay in ms (default: 1000)
727
+ maxDelayMs: 60000, // Maximum delay cap in ms (default: 60000)
728
+ onRateLimited: (info) => {
729
+ console.log(`Rate limited. Retry ${info.attempt} in ${info.delayMs}ms`);
730
+ console.log(`Limit: ${info.rateLimitLimit}, Remaining: ${info.rateLimitRemaining}`);
731
+ }
732
+ });
733
+ ```
734
+
735
+ ### Disable Rate Limiting
736
+
737
+ ```javascript
738
+ import { disableRateLimiting } from "@short.io/client-node";
739
+
740
+ disableRateLimiting();
741
+ ```
742
+
743
+ ### Per-Request Rate Limiting
744
+
745
+ Create a rate-limited client for specific requests:
746
+
747
+ ```javascript
748
+ import { createRateLimitedClient, createLink } from "@short.io/client-node";
749
+
750
+ const client = createRateLimitedClient({
751
+ maxRetries: 5,
752
+ onRateLimited: (info) => console.log(`Retry ${info.attempt}...`)
753
+ });
754
+
755
+ const result = await createLink({
756
+ client,
757
+ body: {
758
+ originalURL: "https://example.com",
759
+ domain: "your-domain.com"
760
+ }
761
+ });
762
+ ```
763
+
764
+ ### Rate Limit Info
765
+
766
+ The `onRateLimited` callback receives detailed information:
767
+
768
+ ```typescript
769
+ interface RateLimitInfo {
770
+ status: number; // HTTP status (429)
771
+ attempt: number; // Current retry attempt (1, 2, 3...)
772
+ delayMs: number; // Delay before next retry in ms
773
+ retryAfter?: number; // Seconds from Retry-After header
774
+ rateLimitLimit?: number; // Request limit per window (X-RateLimit-Limit)
775
+ rateLimitRemaining?: number; // Remaining requests (X-RateLimit-Remaining)
776
+ rateLimitReset?: number; // Unix timestamp when limit resets (X-RateLimit-Reset)
777
+ request: Request; // The request that was rate limited
778
+ }
779
+ ```
780
+
781
+ ### Configuration Options
782
+
783
+ | Option | Default | Description |
784
+ |--------|---------|-------------|
785
+ | `maxRetries` | `3` | Maximum number of retry attempts before returning the 429 response |
786
+ | `baseDelayMs` | `1000` | Initial delay in milliseconds for exponential backoff |
787
+ | `maxDelayMs` | `60000` | Maximum delay cap in milliseconds (1 minute) |
788
+ | `onRateLimited` | `undefined` | Optional callback invoked before each retry |
789
+
790
+ ### Backoff Strategy
791
+
792
+ The SDK uses exponential backoff with jitter:
793
+
794
+ 1. If `Retry-After` header is present, uses that value (capped at `maxDelayMs`)
795
+ 2. Otherwise, calculates delay as: `baseDelayMs * 2^(attempt-1) + random jitter`
796
+ 3. All delays are capped at `maxDelayMs`
797
+
798
+ After exhausting all retries, the 429 response is returned normally (or thrown if `throwOnError` is enabled).
799
+
704
800
  ## Error Handling
705
801
 
706
802
  ```javascript
@@ -1,2 +1,3 @@
1
1
  export { addLinkPermission, addTagsBulk, archiveLink, archiveLinksBulk, createDomain, createExampleLinks, createFolder, createLink, createLinkCountriesBulk, createLinkCountry, createLinkPublic, createLinkRegion, createLinkRegionsBulk, createLinksBulk, createLinkSimple, deleteLink, deleteLinkCountry, deleteLinkPermission, deleteLinkRegion, deleteLinksBulk, duplicateLink, expandLink, generateQrCode, generateQrCodesBulk, getDomain, getFolder, getLink, getLinkByOriginalUrl, getLinkCountries, getLinkOpengraph, getLinkPermissions, getLinkRegions, getLinksByUrl, getRegionsByCountry, listDomains, listFolders, listLinks, type Options, unarchiveLink, unarchiveLinksBulk, updateDomainSettings, updateLink, updateLinkOpengraph } from './sdk.gen.js';
2
2
  export type { AddLinkPermissionData, AddLinkPermissionError, AddLinkPermissionErrors, AddLinkPermissionResponse, AddLinkPermissionResponses, AddTagsBulkData, AddTagsBulkResponses, ArchiveLinkData, ArchiveLinkError, ArchiveLinkErrors, ArchiveLinkResponse, ArchiveLinkResponses, ArchiveLinksBulkData, ArchiveLinksBulkError, ArchiveLinksBulkErrors, ArchiveLinksBulkResponse, ArchiveLinksBulkResponses, ClientOptions, CreateDomainData, CreateDomainError, CreateDomainErrors, CreateDomainResponse, CreateDomainResponses, CreateExampleLinksData, CreateExampleLinksError, CreateExampleLinksErrors, CreateExampleLinksResponse, CreateExampleLinksResponses, CreateFolderData, CreateFolderResponses, CreateLinkCountriesBulkData, CreateLinkCountriesBulkResponses, CreateLinkCountryData, CreateLinkCountryResponses, CreateLinkData, CreateLinkError, CreateLinkErrors, CreateLinkPublicData, CreateLinkPublicError, CreateLinkPublicErrors, CreateLinkPublicResponse, CreateLinkPublicResponses, CreateLinkRegionData, CreateLinkRegionResponses, CreateLinkRegionsBulkData, CreateLinkRegionsBulkResponses, CreateLinkResponse, CreateLinkResponses, CreateLinksBulkData, CreateLinksBulkResponses, CreateLinkSimpleData, CreateLinkSimpleResponses, DeleteLinkCountryData, DeleteLinkCountryResponses, DeleteLinkData, DeleteLinkError, DeleteLinkErrors, DeleteLinkPermissionData, DeleteLinkPermissionError, DeleteLinkPermissionErrors, DeleteLinkPermissionResponse, DeleteLinkPermissionResponses, DeleteLinkRegionData, DeleteLinkRegionResponses, DeleteLinkResponse, DeleteLinkResponses, DeleteLinksBulkData, DeleteLinksBulkResponse, DeleteLinksBulkResponses, DuplicateLinkData, DuplicateLinkError, DuplicateLinkErrors, DuplicateLinkResponse, DuplicateLinkResponses, ExpandLinkData, ExpandLinkError, ExpandLinkErrors, ExpandLinkResponse, ExpandLinkResponses, GenerateQrCodeData, GenerateQrCodeResponses, GenerateQrCodesBulkData, GenerateQrCodesBulkResponses, GetDomainData, GetDomainError, GetDomainErrors, GetDomainResponse, GetDomainResponses, GetFolderData, GetFolderResponses, GetLinkByOriginalUrlData, GetLinkByOriginalUrlResponses, GetLinkCountriesData, GetLinkCountriesResponses, GetLinkData, GetLinkError, GetLinkErrors, GetLinkOpengraphData, GetLinkOpengraphResponses, GetLinkPermissionsData, GetLinkPermissionsError, GetLinkPermissionsErrors, GetLinkPermissionsResponse, GetLinkPermissionsResponses, GetLinkRegionsData, GetLinkRegionsResponses, GetLinkResponse, GetLinkResponses, GetLinksByUrlData, GetLinksByUrlResponses, GetRegionsByCountryData, GetRegionsByCountryResponses, ListDomainsData, ListDomainsResponse, ListDomainsResponses, ListFoldersData, ListFoldersResponses, ListLinksData, ListLinksError, ListLinksErrors, ListLinksResponse, ListLinksResponses, UnarchiveLinkData, UnarchiveLinkError, UnarchiveLinkErrors, UnarchiveLinkResponse, UnarchiveLinkResponses, UnarchiveLinksBulkData, UnarchiveLinksBulkError, UnarchiveLinksBulkErrors, UnarchiveLinksBulkResponse, UnarchiveLinksBulkResponses, UpdateDomainSettingsData, UpdateDomainSettingsError, UpdateDomainSettingsErrors, UpdateDomainSettingsResponse, UpdateDomainSettingsResponses, UpdateLinkData, UpdateLinkError, UpdateLinkErrors, UpdateLinkOpengraphData, UpdateLinkOpengraphResponses, UpdateLinkResponse, UpdateLinkResponses } from './types.gen.js';
3
+ export { zAddLinkPermissionData, zAddLinkPermissionResponse, zAddTagsBulkData, zArchiveLinkData, zArchiveLinkResponse, zArchiveLinksBulkData, zArchiveLinksBulkResponse, zCreateDomainData, zCreateDomainResponse, zCreateExampleLinksData, zCreateExampleLinksResponse, zCreateFolderData, zCreateLinkCountriesBulkData, zCreateLinkCountryData, zCreateLinkData, zCreateLinkPublicData, zCreateLinkPublicResponse, zCreateLinkRegionData, zCreateLinkRegionsBulkData, zCreateLinkResponse, zCreateLinksBulkData, zCreateLinkSimpleData, zDeleteLinkCountryData, zDeleteLinkData, zDeleteLinkPermissionData, zDeleteLinkPermissionResponse, zDeleteLinkRegionData, zDeleteLinkResponse, zDeleteLinksBulkData, zDeleteLinksBulkResponse, zDuplicateLinkData, zDuplicateLinkResponse, zExpandLinkData, zExpandLinkResponse, zGenerateQrCodeData, zGenerateQrCodesBulkData, zGetDomainData, zGetDomainResponse, zGetFolderData, zGetLinkByOriginalUrlData, zGetLinkCountriesData, zGetLinkData, zGetLinkOpengraphData, zGetLinkPermissionsData, zGetLinkPermissionsResponse, zGetLinkRegionsData, zGetLinkResponse, zGetLinksByUrlData, zGetRegionsByCountryData, zListDomainsData, zListDomainsResponse, zListFoldersData, zListLinksData, zListLinksResponse, zUnarchiveLinkData, zUnarchiveLinkResponse, zUnarchiveLinksBulkData, zUnarchiveLinksBulkResponse, zUpdateDomainSettingsData, zUpdateDomainSettingsResponse, zUpdateLinkData, zUpdateLinkOpengraphData, zUpdateLinkResponse } from './zod.gen.js';
@@ -1,2 +1,3 @@
1
1
  export { addLinkPermission, addTagsBulk, archiveLink, archiveLinksBulk, createDomain, createExampleLinks, createFolder, createLink, createLinkCountriesBulk, createLinkCountry, createLinkPublic, createLinkRegion, createLinkRegionsBulk, createLinksBulk, createLinkSimple, deleteLink, deleteLinkCountry, deleteLinkPermission, deleteLinkRegion, deleteLinksBulk, duplicateLink, expandLink, generateQrCode, generateQrCodesBulk, getDomain, getFolder, getLink, getLinkByOriginalUrl, getLinkCountries, getLinkOpengraph, getLinkPermissions, getLinkRegions, getLinksByUrl, getRegionsByCountry, listDomains, listFolders, listLinks, unarchiveLink, unarchiveLinksBulk, updateDomainSettings, updateLink, updateLinkOpengraph } from './sdk.gen.js';
2
+ export { zAddLinkPermissionData, zAddLinkPermissionResponse, zAddTagsBulkData, zArchiveLinkData, zArchiveLinkResponse, zArchiveLinksBulkData, zArchiveLinksBulkResponse, zCreateDomainData, zCreateDomainResponse, zCreateExampleLinksData, zCreateExampleLinksResponse, zCreateFolderData, zCreateLinkCountriesBulkData, zCreateLinkCountryData, zCreateLinkData, zCreateLinkPublicData, zCreateLinkPublicResponse, zCreateLinkRegionData, zCreateLinkRegionsBulkData, zCreateLinkResponse, zCreateLinksBulkData, zCreateLinkSimpleData, zDeleteLinkCountryData, zDeleteLinkData, zDeleteLinkPermissionData, zDeleteLinkPermissionResponse, zDeleteLinkRegionData, zDeleteLinkResponse, zDeleteLinksBulkData, zDeleteLinksBulkResponse, zDuplicateLinkData, zDuplicateLinkResponse, zExpandLinkData, zExpandLinkResponse, zGenerateQrCodeData, zGenerateQrCodesBulkData, zGetDomainData, zGetDomainResponse, zGetFolderData, zGetLinkByOriginalUrlData, zGetLinkCountriesData, zGetLinkData, zGetLinkOpengraphData, zGetLinkPermissionsData, zGetLinkPermissionsResponse, zGetLinkRegionsData, zGetLinkResponse, zGetLinksByUrlData, zGetRegionsByCountryData, zListDomainsData, zListDomainsResponse, zListFoldersData, zListLinksData, zListLinksResponse, zUnarchiveLinkData, zUnarchiveLinkResponse, zUnarchiveLinksBulkData, zUnarchiveLinksBulkResponse, zUpdateDomainSettingsData, zUpdateDomainSettingsResponse, zUpdateLinkData, zUpdateLinkOpengraphData, zUpdateLinkResponse } from './zod.gen.js';
2
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAgB,aAAa,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nexport { addLinkPermission, addTagsBulk, archiveLink, archiveLinksBulk, createDomain, createExampleLinks, createFolder, createLink, createLinkCountriesBulk, createLinkCountry, createLinkPublic, createLinkRegion, createLinkRegionsBulk, createLinksBulk, createLinkSimple, deleteLink, deleteLinkCountry, deleteLinkPermission, deleteLinkRegion, deleteLinksBulk, duplicateLink, expandLink, generateQrCode, generateQrCodesBulk, getDomain, getFolder, getLink, getLinkByOriginalUrl, getLinkCountries, getLinkOpengraph, getLinkPermissions, getLinkRegions, getLinksByUrl, getRegionsByCountry, listDomains, listFolders, listLinks, type Options, unarchiveLink, unarchiveLinksBulk, updateDomainSettings, updateLink, updateLinkOpengraph } from './sdk.gen';\nexport type { AddLinkPermissionData, AddLinkPermissionError, AddLinkPermissionErrors, AddLinkPermissionResponse, AddLinkPermissionResponses, AddTagsBulkData, AddTagsBulkResponses, ArchiveLinkData, ArchiveLinkError, ArchiveLinkErrors, ArchiveLinkResponse, ArchiveLinkResponses, ArchiveLinksBulkData, ArchiveLinksBulkError, ArchiveLinksBulkErrors, ArchiveLinksBulkResponse, ArchiveLinksBulkResponses, ClientOptions, CreateDomainData, CreateDomainError, CreateDomainErrors, CreateDomainResponse, CreateDomainResponses, CreateExampleLinksData, CreateExampleLinksError, CreateExampleLinksErrors, CreateExampleLinksResponse, CreateExampleLinksResponses, CreateFolderData, CreateFolderResponses, CreateLinkCountriesBulkData, CreateLinkCountriesBulkResponses, CreateLinkCountryData, CreateLinkCountryResponses, CreateLinkData, CreateLinkError, CreateLinkErrors, CreateLinkPublicData, CreateLinkPublicError, CreateLinkPublicErrors, CreateLinkPublicResponse, CreateLinkPublicResponses, CreateLinkRegionData, CreateLinkRegionResponses, CreateLinkRegionsBulkData, CreateLinkRegionsBulkResponses, CreateLinkResponse, CreateLinkResponses, CreateLinksBulkData, CreateLinksBulkResponses, CreateLinkSimpleData, CreateLinkSimpleResponses, DeleteLinkCountryData, DeleteLinkCountryResponses, DeleteLinkData, DeleteLinkError, DeleteLinkErrors, DeleteLinkPermissionData, DeleteLinkPermissionError, DeleteLinkPermissionErrors, DeleteLinkPermissionResponse, DeleteLinkPermissionResponses, DeleteLinkRegionData, DeleteLinkRegionResponses, DeleteLinkResponse, DeleteLinkResponses, DeleteLinksBulkData, DeleteLinksBulkResponse, DeleteLinksBulkResponses, DuplicateLinkData, DuplicateLinkError, DuplicateLinkErrors, DuplicateLinkResponse, DuplicateLinkResponses, ExpandLinkData, ExpandLinkError, ExpandLinkErrors, ExpandLinkResponse, ExpandLinkResponses, GenerateQrCodeData, GenerateQrCodeResponses, GenerateQrCodesBulkData, GenerateQrCodesBulkResponses, GetDomainData, GetDomainError, GetDomainErrors, GetDomainResponse, GetDomainResponses, GetFolderData, GetFolderResponses, GetLinkByOriginalUrlData, GetLinkByOriginalUrlResponses, GetLinkCountriesData, GetLinkCountriesResponses, GetLinkData, GetLinkError, GetLinkErrors, GetLinkOpengraphData, GetLinkOpengraphResponses, GetLinkPermissionsData, GetLinkPermissionsError, GetLinkPermissionsErrors, GetLinkPermissionsResponse, GetLinkPermissionsResponses, GetLinkRegionsData, GetLinkRegionsResponses, GetLinkResponse, GetLinkResponses, GetLinksByUrlData, GetLinksByUrlResponses, GetRegionsByCountryData, GetRegionsByCountryResponses, ListDomainsData, ListDomainsResponse, ListDomainsResponses, ListFoldersData, ListFoldersResponses, ListLinksData, ListLinksError, ListLinksErrors, ListLinksResponse, ListLinksResponses, UnarchiveLinkData, UnarchiveLinkError, UnarchiveLinkErrors, UnarchiveLinkResponse, UnarchiveLinkResponses, UnarchiveLinksBulkData, UnarchiveLinksBulkError, UnarchiveLinksBulkErrors, UnarchiveLinksBulkResponse, UnarchiveLinksBulkResponses, UpdateDomainSettingsData, UpdateDomainSettingsError, UpdateDomainSettingsErrors, UpdateDomainSettingsResponse, UpdateDomainSettingsResponses, UpdateLinkData, UpdateLinkError, UpdateLinkErrors, UpdateLinkOpengraphData, UpdateLinkOpengraphResponses, UpdateLinkResponse, UpdateLinkResponses } from './types.gen';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generated/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAgB,aAAa,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEtuB,OAAO,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,eAAe,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,eAAe,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,eAAe,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,YAAY,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,cAAc,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,eAAe,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC","sourcesContent":["// This file is auto-generated by @hey-api/openapi-ts\n\nexport { addLinkPermission, addTagsBulk, archiveLink, archiveLinksBulk, createDomain, createExampleLinks, createFolder, createLink, createLinkCountriesBulk, createLinkCountry, createLinkPublic, createLinkRegion, createLinkRegionsBulk, createLinksBulk, createLinkSimple, deleteLink, deleteLinkCountry, deleteLinkPermission, deleteLinkRegion, deleteLinksBulk, duplicateLink, expandLink, generateQrCode, generateQrCodesBulk, getDomain, getFolder, getLink, getLinkByOriginalUrl, getLinkCountries, getLinkOpengraph, getLinkPermissions, getLinkRegions, getLinksByUrl, getRegionsByCountry, listDomains, listFolders, listLinks, type Options, unarchiveLink, unarchiveLinksBulk, updateDomainSettings, updateLink, updateLinkOpengraph } from './sdk.gen';\nexport type { AddLinkPermissionData, AddLinkPermissionError, AddLinkPermissionErrors, AddLinkPermissionResponse, AddLinkPermissionResponses, AddTagsBulkData, AddTagsBulkResponses, ArchiveLinkData, ArchiveLinkError, ArchiveLinkErrors, ArchiveLinkResponse, ArchiveLinkResponses, ArchiveLinksBulkData, ArchiveLinksBulkError, ArchiveLinksBulkErrors, ArchiveLinksBulkResponse, ArchiveLinksBulkResponses, ClientOptions, CreateDomainData, CreateDomainError, CreateDomainErrors, CreateDomainResponse, CreateDomainResponses, CreateExampleLinksData, CreateExampleLinksError, CreateExampleLinksErrors, CreateExampleLinksResponse, CreateExampleLinksResponses, CreateFolderData, CreateFolderResponses, CreateLinkCountriesBulkData, CreateLinkCountriesBulkResponses, CreateLinkCountryData, CreateLinkCountryResponses, CreateLinkData, CreateLinkError, CreateLinkErrors, CreateLinkPublicData, CreateLinkPublicError, CreateLinkPublicErrors, CreateLinkPublicResponse, CreateLinkPublicResponses, CreateLinkRegionData, CreateLinkRegionResponses, CreateLinkRegionsBulkData, CreateLinkRegionsBulkResponses, CreateLinkResponse, CreateLinkResponses, CreateLinksBulkData, CreateLinksBulkResponses, CreateLinkSimpleData, CreateLinkSimpleResponses, DeleteLinkCountryData, DeleteLinkCountryResponses, DeleteLinkData, DeleteLinkError, DeleteLinkErrors, DeleteLinkPermissionData, DeleteLinkPermissionError, DeleteLinkPermissionErrors, DeleteLinkPermissionResponse, DeleteLinkPermissionResponses, DeleteLinkRegionData, DeleteLinkRegionResponses, DeleteLinkResponse, DeleteLinkResponses, DeleteLinksBulkData, DeleteLinksBulkResponse, DeleteLinksBulkResponses, DuplicateLinkData, DuplicateLinkError, DuplicateLinkErrors, DuplicateLinkResponse, DuplicateLinkResponses, ExpandLinkData, ExpandLinkError, ExpandLinkErrors, ExpandLinkResponse, ExpandLinkResponses, GenerateQrCodeData, GenerateQrCodeResponses, GenerateQrCodesBulkData, GenerateQrCodesBulkResponses, GetDomainData, GetDomainError, GetDomainErrors, GetDomainResponse, GetDomainResponses, GetFolderData, GetFolderResponses, GetLinkByOriginalUrlData, GetLinkByOriginalUrlResponses, GetLinkCountriesData, GetLinkCountriesResponses, GetLinkData, GetLinkError, GetLinkErrors, GetLinkOpengraphData, GetLinkOpengraphResponses, GetLinkPermissionsData, GetLinkPermissionsError, GetLinkPermissionsErrors, GetLinkPermissionsResponse, GetLinkPermissionsResponses, GetLinkRegionsData, GetLinkRegionsResponses, GetLinkResponse, GetLinkResponses, GetLinksByUrlData, GetLinksByUrlResponses, GetRegionsByCountryData, GetRegionsByCountryResponses, ListDomainsData, ListDomainsResponse, ListDomainsResponses, ListFoldersData, ListFoldersResponses, ListLinksData, ListLinksError, ListLinksErrors, ListLinksResponse, ListLinksResponses, UnarchiveLinkData, UnarchiveLinkError, UnarchiveLinkErrors, UnarchiveLinkResponse, UnarchiveLinkResponses, UnarchiveLinksBulkData, UnarchiveLinksBulkError, UnarchiveLinksBulkErrors, UnarchiveLinksBulkResponse, UnarchiveLinksBulkResponses, UpdateDomainSettingsData, UpdateDomainSettingsError, UpdateDomainSettingsErrors, UpdateDomainSettingsResponse, UpdateDomainSettingsResponses, UpdateLinkData, UpdateLinkError, UpdateLinkErrors, UpdateLinkOpengraphData, UpdateLinkOpengraphResponses, UpdateLinkResponse, UpdateLinkResponses } from './types.gen';\nexport { zAddLinkPermissionData, zAddLinkPermissionResponse, zAddTagsBulkData, zArchiveLinkData, zArchiveLinkResponse, zArchiveLinksBulkData, zArchiveLinksBulkResponse, zCreateDomainData, zCreateDomainResponse, zCreateExampleLinksData, zCreateExampleLinksResponse, zCreateFolderData, zCreateLinkCountriesBulkData, zCreateLinkCountryData, zCreateLinkData, zCreateLinkPublicData, zCreateLinkPublicResponse, zCreateLinkRegionData, zCreateLinkRegionsBulkData, zCreateLinkResponse, zCreateLinksBulkData, zCreateLinkSimpleData, zDeleteLinkCountryData, zDeleteLinkData, zDeleteLinkPermissionData, zDeleteLinkPermissionResponse, zDeleteLinkRegionData, zDeleteLinkResponse, zDeleteLinksBulkData, zDeleteLinksBulkResponse, zDuplicateLinkData, zDuplicateLinkResponse, zExpandLinkData, zExpandLinkResponse, zGenerateQrCodeData, zGenerateQrCodesBulkData, zGetDomainData, zGetDomainResponse, zGetFolderData, zGetLinkByOriginalUrlData, zGetLinkCountriesData, zGetLinkData, zGetLinkOpengraphData, zGetLinkPermissionsData, zGetLinkPermissionsResponse, zGetLinkRegionsData, zGetLinkResponse, zGetLinksByUrlData, zGetRegionsByCountryData, zListDomainsData, zListDomainsResponse, zListFoldersData, zListLinksData, zListLinksResponse, zUnarchiveLinkData, zUnarchiveLinkResponse, zUnarchiveLinksBulkData, zUnarchiveLinksBulkResponse, zUpdateDomainSettingsData, zUpdateDomainSettingsResponse, zUpdateLinkData, zUpdateLinkOpengraphData, zUpdateLinkResponse } from './zod.gen';\n"]}