@swishapp/api-client 0.43.1-next.0 → 0.44.0-unstable.20260203181536

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.
Files changed (65) hide show
  1. package/README.md +56 -0
  2. package/dist/{client.d.ts → 2026-01/client.d.ts} +1 -1
  3. package/dist/2026-01/index.d.ts +3 -0
  4. package/dist/2026-01/index.js +7 -0
  5. package/dist/{openapi → 2026-01/openapi}/client/index.d.ts +2 -1
  6. package/dist/{openapi → 2026-01/openapi}/client/types.gen.d.ts +2 -9
  7. package/dist/{openapi → 2026-01/openapi}/client/utils.gen.d.ts +1 -1
  8. package/dist/{openapi → 2026-01/openapi}/core/bodySerializer.gen.d.ts +12 -4
  9. package/dist/{openapi → 2026-01/openapi}/core/params.gen.d.ts +10 -0
  10. package/dist/2026-01/openapi/core/queryKeySerializer.gen.d.ts +18 -0
  11. package/dist/2026-01/openapi/index.d.ts +2 -0
  12. package/dist/{openapi → 2026-01/openapi}/sdk.gen.d.ts +1 -0
  13. package/dist/{openapi → 2026-01/openapi}/types.gen.d.ts +7 -97
  14. package/dist/{types.d.ts → 2026-01/types.d.ts} +1 -2
  15. package/dist/2026-04/client.d.ts +74 -0
  16. package/dist/2026-04/index.d.ts +3 -0
  17. package/dist/2026-04/index.js +7 -0
  18. package/dist/2026-04/openapi/client/client.gen.d.ts +2 -0
  19. package/dist/2026-04/openapi/client/index.d.ts +8 -0
  20. package/dist/2026-04/openapi/client/types.gen.d.ts +117 -0
  21. package/dist/2026-04/openapi/client/utils.gen.d.ts +33 -0
  22. package/dist/2026-04/openapi/client.gen.d.ts +12 -0
  23. package/dist/2026-04/openapi/core/auth.gen.d.ts +18 -0
  24. package/dist/2026-04/openapi/core/bodySerializer.gen.d.ts +25 -0
  25. package/dist/2026-04/openapi/core/params.gen.d.ts +43 -0
  26. package/dist/2026-04/openapi/core/pathSerializer.gen.d.ts +33 -0
  27. package/dist/2026-04/openapi/core/queryKeySerializer.gen.d.ts +18 -0
  28. package/dist/2026-04/openapi/core/serverSentEvents.gen.d.ts +71 -0
  29. package/dist/2026-04/openapi/core/types.gen.d.ts +78 -0
  30. package/dist/2026-04/openapi/core/utils.gen.d.ts +19 -0
  31. package/dist/2026-04/openapi/index.d.ts +2 -0
  32. package/dist/2026-04/openapi/sdk.gen.d.ts +60 -0
  33. package/dist/2026-04/openapi/types.gen.d.ts +3335 -0
  34. package/dist/2026-04/types.d.ts +60 -0
  35. package/dist/index.d.ts +1 -3
  36. package/dist/index.js +6 -4
  37. package/dist/unstable/client.d.ts +74 -0
  38. package/dist/unstable/index.d.ts +3 -0
  39. package/dist/unstable/index.js +7 -0
  40. package/dist/unstable/openapi/client/client.gen.d.ts +2 -0
  41. package/dist/unstable/openapi/client/index.d.ts +8 -0
  42. package/dist/unstable/openapi/client/types.gen.d.ts +117 -0
  43. package/dist/unstable/openapi/client/utils.gen.d.ts +33 -0
  44. package/dist/unstable/openapi/client.gen.d.ts +12 -0
  45. package/dist/unstable/openapi/core/auth.gen.d.ts +18 -0
  46. package/dist/unstable/openapi/core/bodySerializer.gen.d.ts +25 -0
  47. package/dist/unstable/openapi/core/params.gen.d.ts +43 -0
  48. package/dist/unstable/openapi/core/pathSerializer.gen.d.ts +33 -0
  49. package/dist/unstable/openapi/core/queryKeySerializer.gen.d.ts +18 -0
  50. package/dist/unstable/openapi/core/serverSentEvents.gen.d.ts +71 -0
  51. package/dist/unstable/openapi/core/types.gen.d.ts +78 -0
  52. package/dist/unstable/openapi/core/utils.gen.d.ts +19 -0
  53. package/dist/unstable/openapi/index.d.ts +2 -0
  54. package/dist/unstable/openapi/sdk.gen.d.ts +60 -0
  55. package/dist/unstable/openapi/types.gen.d.ts +3335 -0
  56. package/dist/unstable/types.d.ts +60 -0
  57. package/package.json +44 -9
  58. package/dist/openapi/index.d.ts +0 -2
  59. /package/dist/{openapi → 2026-01/openapi}/client/client.gen.d.ts +0 -0
  60. /package/dist/{openapi → 2026-01/openapi}/client.gen.d.ts +0 -0
  61. /package/dist/{openapi → 2026-01/openapi}/core/auth.gen.d.ts +0 -0
  62. /package/dist/{openapi → 2026-01/openapi}/core/pathSerializer.gen.d.ts +0 -0
  63. /package/dist/{openapi → 2026-01/openapi}/core/serverSentEvents.gen.d.ts +0 -0
  64. /package/dist/{openapi → 2026-01/openapi}/core/types.gen.d.ts +0 -0
  65. /package/dist/{openapi → 2026-01/openapi}/core/utils.gen.d.ts +0 -0
package/README.md CHANGED
@@ -10,6 +10,8 @@ npm install @swishapp/api-client
10
10
 
11
11
  ## Usage
12
12
 
13
+ ### Default Import (Latest Version)
14
+
13
15
  ```ts
14
16
  import { createApiClient } from "@swishapp/api-client";
15
17
 
@@ -21,6 +23,60 @@ const swish = createApiClient({
21
23
  const { data } = await swish.items.list();
22
24
  ```
23
25
 
26
+ ### Versioned Import (Recommended)
27
+
28
+ For better control over API versions:
29
+
30
+ ```ts
31
+ import { createApiClient } from "@swishapp/api-client/2026-04";
32
+
33
+ const swish = createApiClient({
34
+ authToken: "swish-api-token",
35
+ });
36
+
37
+ const { data } = await swish.items.list();
38
+ ```
39
+
40
+ ## API Versioning
41
+
42
+ The client supports multiple API versions. Import the specific version you need:
43
+
44
+ - `@swishapp/api-client/2026-01` - Latest
45
+ - `@swishapp/api-client/2026-04` - Release candidate
46
+
47
+ Using versioned imports ensures your code remains stable when new API versions are released.
48
+
49
+ ## Development
50
+
51
+ ### Generate API Types
52
+
53
+ All API versions are configured in `openapi-ts.config.ts`:
54
+
55
+ ```typescript
56
+ export default [
57
+ defineConfig({
58
+ input: "https://swish.app/api/2026-04/.well-known/openapi",
59
+ output: "src/2026-04/openapi",
60
+ plugins: ["@hey-api/client-fetch"],
61
+ }),
62
+ // Add new versions here
63
+ ];
64
+ ```
65
+
66
+ Generate types for all versions:
67
+
68
+ ```bash
69
+ npm run generate
70
+ ```
71
+
72
+ ### Add a New Version
73
+
74
+ ```bash
75
+ npm run add-version 2026-07
76
+ ```
77
+
78
+ See `VERSIONS.md` for detailed version management instructions.
79
+
24
80
  ## Documentation
25
81
 
26
82
  For more information visit [Swish DEV docs](https://developers.swish.app/libraries/api-client).
@@ -1,6 +1,6 @@
1
1
  import type { SwishClientOptions, ApiResponse, PaginatedApiResponse } from "./types";
2
2
  import type * as types from "./openapi/types.gen";
3
- export declare const defaultApiVersion = "2026-04";
3
+ export declare const apiVersion = "2026-01";
4
4
  export declare const createApiClient: (options: SwishClientOptions) => SwishClient;
5
5
  export type { SwishClient };
6
6
  declare class SwishClient {
@@ -0,0 +1,3 @@
1
+ export * from "./client";
2
+ export type * from "./types";
3
+ export type * from "./openapi/types.gen";
@@ -0,0 +1,7 @@
1
+ var He=Object.defineProperty;var t=(e,r)=>He(e,"name",{value:r,configurable:!0});var ke={bodySerializer:t(e=>JSON.stringify(e,(r,o)=>typeof o=="bigint"?o.toString():o),"bodySerializer")};var Ae=t(({onRequest:e,onSseError:r,onSseEvent:o,responseTransformer:s,responseValidator:i,sseDefaultRetryDelay:c,sseMaxRetryAttempts:a,sseMaxRetryDelay:l,sseSleepFn:d,url:y,...n})=>{let f,w=d??(C=>new Promise(I=>setTimeout(I,C)));return{stream:t(async function*(){let C=c??3e3,I=0,b=n.signal??new AbortController().signal;for(;!b.aborted;){I++;let B=n.headers instanceof Headers?n.headers:new Headers(n.headers);f!==void 0&&B.set("Last-Event-ID",f);try{let L={redirect:"follow",...n,body:n.serializedBody,headers:B,signal:b},E=new Request(y,L);e&&(E=await e(y,L));let u=await(n.fetch??globalThis.fetch)(E);if(!u.ok)throw new Error(`SSE failed: ${u.status} ${u.statusText}`);if(!u.body)throw new Error("No body in SSE response");let m=u.body.pipeThrough(new TextDecoderStream).getReader(),x="",ge=t(()=>{try{m.cancel()}catch{}},"abortHandler");b.addEventListener("abort",ge);try{for(;;){let{done:je,value:Ge}=await m.read();if(je)break;x+=Ge,x=x.replace(/\r\n/g,`
2
+ `).replace(/\r/g,`
3
+ `);let we=x.split(`
4
+
5
+ `);x=we.pop()??"";for(let Me of we){let $e=Me.split(`
6
+ `),A=[],Be;for(let O of $e)if(O.startsWith("data:"))A.push(O.replace(/^data:\s*/,""));else if(O.startsWith("event:"))Be=O.replace(/^event:\s*/,"");else if(O.startsWith("id:"))f=O.replace(/^id:\s*/,"");else if(O.startsWith("retry:")){let Fe=Number.parseInt(O.replace(/^retry:\s*/,""),10);Number.isNaN(Fe)||(C=Fe)}let D,xe=!1;if(A.length){let O=A.join(`
7
+ `);try{D=JSON.parse(O),xe=!0}catch{D=O}}xe&&(i&&await i(D),s&&(D=await s(D))),o==null||o({data:D,event:Be,id:f,retry:C}),A.length&&(yield D)}}}finally{b.removeEventListener("abort",ge),m.releaseLock()}break}catch(L){if(r==null||r(L),a!==void 0&&I>=a)break;let E=Math.min(C*2**(I-1),l??3e4);await w(E)}}},"createStream")()}},"createSseClient");var Ve=t(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorArrayExplode"),Qe=t(e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"separatorArrayNoExplode"),We=t(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorObjectExplode"),P=t(({allowReserved:e,explode:r,name:o,style:s,value:i})=>{if(!r){let l=(e?i:i.map(d=>encodeURIComponent(d))).join(Qe(s));switch(s){case"label":return`.${l}`;case"matrix":return`;${o}=${l}`;case"simple":return l;default:return`${o}=${l}`}}let c=Ve(s),a=i.map(l=>s==="label"||s==="simple"?e?l:encodeURIComponent(l):T({allowReserved:e,name:o,value:l})).join(c);return s==="label"||s==="matrix"?c+a:a},"serializeArrayParam"),T=t(({allowReserved:e,name:r,value:o})=>{if(o==null)return"";if(typeof o=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${r}=${e?o:encodeURIComponent(o)}`},"serializePrimitiveParam"),q=t(({allowReserved:e,explode:r,name:o,style:s,value:i,valueOnly:c})=>{if(i instanceof Date)return c?i.toISOString():`${o}=${i.toISOString()}`;if(s!=="deepObject"&&!r){let d=[];Object.entries(i).forEach(([n,f])=>{d=[...d,n,e?f:encodeURIComponent(f)]});let y=d.join(",");switch(s){case"form":return`${o}=${y}`;case"label":return`.${y}`;case"matrix":return`;${o}=${y}`;default:return y}}let a=We(s),l=Object.entries(i).map(([d,y])=>T({allowReserved:e,name:s==="deepObject"?`${o}[${d}]`:d,value:y})).join(a);return s==="label"||s==="matrix"?a+l:l},"serializeObjectParam");var Je=/\{[^{}]+\}/g,Ke=t(({path:e,url:r})=>{let o=r,s=r.match(Je);if(s)for(let i of s){let c=!1,a=i.substring(1,i.length-1),l="simple";a.endsWith("*")&&(c=!0,a=a.substring(0,a.length-1)),a.startsWith(".")?(a=a.substring(1),l="label"):a.startsWith(";")&&(a=a.substring(1),l="matrix");let d=e[a];if(d==null)continue;if(Array.isArray(d)){o=o.replace(i,P({explode:c,name:a,style:l,value:d}));continue}if(typeof d=="object"){o=o.replace(i,q({explode:c,name:a,style:l,value:d,valueOnly:!0}));continue}if(l==="matrix"){o=o.replace(i,`;${T({name:a,value:d})}`);continue}let y=encodeURIComponent(l==="label"?`.${d}`:d);o=o.replace(i,y)}return o},"defaultPathSerializer"),Pe=t(({baseUrl:e,path:r,query:o,querySerializer:s,url:i})=>{let c=i.startsWith("/")?i:`/${i}`,a=(e??"")+c;r&&(a=Ke({path:r,url:a}));let l=o?s(o):"";return l.startsWith("?")&&(l=l.substring(1)),l&&(a+=`?${l}`),a},"getUrl");function v(e){let r=e.body!==void 0;if(r&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(r)return e.body}t(v,"getValidRequestBody");var qe=t(async(e,r)=>{let o=typeof r=="function"?await r(e):r;if(o)return e.scheme==="bearer"?`Bearer ${o}`:e.scheme==="basic"?`Basic ${btoa(o)}`:o},"getAuthToken");var Ue=t(({parameters:e={},...r}={})=>t(s=>{let i=[];if(s&&typeof s=="object")for(let c in s){let a=s[c];if(a==null)continue;let l=e[c]||r;if(Array.isArray(a)){let d=P({allowReserved:l.allowReserved,explode:!0,name:c,style:"form",value:a,...l.array});d&&i.push(d)}else if(typeof a=="object"){let d=q({allowReserved:l.allowReserved,explode:!0,name:c,style:"deepObject",value:a,...l.object});d&&i.push(d)}else{let d=T({allowReserved:l.allowReserved,name:c,value:a});d&&i.push(d)}}return i.join("&")},"querySerializer"),"createQuerySerializer"),ve=t(e=>{var o;if(!e)return"stream";let r=(o=e.split(";")[0])==null?void 0:o.trim();if(r){if(r.startsWith("application/json")||r.endsWith("+json"))return"json";if(r==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(s=>r.startsWith(s)))return"blob";if(r.startsWith("text/"))return"text"}},"getParseAs"),_e=t((e,r)=>{var o,s;return r?!!(e.headers.has(r)||(o=e.query)!=null&&o[r]||(s=e.headers.get("Cookie"))!=null&&s.includes(`${r}=`)):!1},"checkForExistence"),ze=t(async({security:e,...r})=>{for(let o of e){if(_e(r,o.name))continue;let s=await qe(o,r.auth);if(!s)continue;let i=o.name??"Authorization";switch(o.in){case"query":r.query||(r.query={}),r.query[i]=s;break;case"cookie":r.headers.append("Cookie",`${i}=${s}`);break;default:r.headers.set(i,s);break}}},"setAuthParams"),z=t(e=>Pe({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:Ue(e.querySerializer),url:e.url}),"buildUrl"),N=t((e,r)=>{var s;let o={...e,...r};return(s=o.baseUrl)!=null&&s.endsWith("/")&&(o.baseUrl=o.baseUrl.substring(0,o.baseUrl.length-1)),o.headers=U(e.headers,r.headers),o},"mergeConfigs"),Xe=t(e=>{let r=[];return e.forEach((o,s)=>{r.push([s,o])}),r},"headersEntries"),U=t((...e)=>{let r=new Headers;for(let o of e){if(!o)continue;let s=o instanceof Headers?Xe(o):Object.entries(o);for(let[i,c]of s)if(c===null)r.delete(i);else if(Array.isArray(c))for(let a of c)r.append(i,a);else c!==void 0&&r.set(i,typeof c=="object"?JSON.stringify(c):c)}return r},"mergeHeaders"),j=class j{constructor(){this.fns=[]}clear(){this.fns=[]}eject(r){let o=this.getInterceptorIndex(r);this.fns[o]&&(this.fns[o]=null)}exists(r){let o=this.getInterceptorIndex(r);return!!this.fns[o]}getInterceptorIndex(r){return typeof r=="number"?this.fns[r]?r:-1:this.fns.indexOf(r)}update(r,o){let s=this.getInterceptorIndex(r);return this.fns[s]?(this.fns[s]=o,r):!1}use(r){return this.fns.push(r),this.fns.length-1}};t(j,"Interceptors");var F=j,Ne=t(()=>({error:new F,request:new F,response:new F}),"createInterceptors"),Ye=Ue({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),Ze={"Content-Type":"application/json"},S=t((e={})=>({...ke,headers:Ze,parseAs:"auto",querySerializer:Ye,...e}),"createConfig");var g=t((e={})=>{let r=N(S(),e),o=t(()=>({...r}),"getConfig"),s=t(y=>(r=N(r,y),o()),"setConfig"),i=Ne(),c=t(async y=>{let n={...r,...y,fetch:y.fetch??r.fetch??globalThis.fetch,headers:U(r.headers,y.headers),serializedBody:void 0};n.security&&await ze({...n,security:n.security}),n.requestValidator&&await n.requestValidator(n),n.body!==void 0&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.body===void 0||n.serializedBody==="")&&n.headers.delete("Content-Type");let f=z(n);return{opts:n,url:f}},"beforeRequest"),a=t(async y=>{let{opts:n,url:f}=await c(y),w={redirect:"follow",...n,body:v(n)},R=new Request(f,w);for(let h of i.request.fns)h&&(R=await h(R,n));let k=n.fetch,C;try{C=await k(R)}catch(h){let u=h;for(let m of i.error.fns)m&&(u=await m(h,void 0,R,n));if(u=u||{},n.throwOnError)throw u;return n.responseStyle==="data"?void 0:{error:u,request:R,response:void 0}}for(let h of i.response.fns)h&&(C=await h(C,R,n));let I={request:R,response:C};if(C.ok){let h=(n.parseAs==="auto"?ve(C.headers.get("Content-Type")):n.parseAs)??"json";if(C.status===204||C.headers.get("Content-Length")==="0"){let m;switch(h){case"arrayBuffer":case"blob":case"text":m=await C[h]();break;case"formData":m=new FormData;break;case"stream":m=C.body;break;default:m={};break}return n.responseStyle==="data"?m:{data:m,...I}}let u;switch(h){case"arrayBuffer":case"blob":case"formData":case"text":u=await C[h]();break;case"json":{let m=await C.text();u=m?JSON.parse(m):{};break}case"stream":return n.responseStyle==="data"?C.body:{data:C.body,...I}}return h==="json"&&(n.responseValidator&&await n.responseValidator(u),n.responseTransformer&&(u=await n.responseTransformer(u))),n.responseStyle==="data"?u:{data:u,...I}}let b=await C.text(),B;try{B=JSON.parse(b)}catch{}let L=B??b,E=L;for(let h of i.error.fns)h&&(E=await h(L,C,R,n));if(E=E||{},n.throwOnError)throw E;return n.responseStyle==="data"?void 0:{error:E,...I}},"request"),l=t(y=>n=>a({...n,method:y}),"makeMethodFn"),d=t(y=>async n=>{let{opts:f,url:w}=await c(n);return Ae({...f,body:f.body,headers:f.headers,method:y,onRequest:t(async(R,k)=>{let C=new Request(R,k);for(let I of i.request.fns)I&&(C=await I(C,f));return C},"onRequest"),serializedBody:v(f),url:w})},"makeSseFn");return{buildUrl:z,connect:l("CONNECT"),delete:l("DELETE"),get:l("GET"),getConfig:o,head:l("HEAD"),interceptors:i,options:l("OPTIONS"),patch:l("PATCH"),post:l("POST"),put:l("PUT"),request:a,setConfig:s,sse:{connect:d("CONNECT"),delete:d("DELETE"),get:d("GET"),head:d("HEAD"),options:d("OPTIONS"),patch:d("PATCH"),post:d("POST"),put:d("PUT"),trace:d("TRACE")},trace:l("TRACE")}},"createClient");var p=g(S({baseUrl:"https://swish.app/api/2026-01"}));var G=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/lists",...e}),"listControllerFind"),M=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/lists",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerCreate"),$=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...e}),"listControllerDeleteById"),H=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...e}),"listControllerFindById"),V=t(e=>(e.client??p).patch({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerUpdateById"),Q=t(e=>(e.client??p).put({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/order",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerSetListItemsOrder"),W=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerAddItemsToList"),J=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/{itemId}",...e}),"listControllerRemoveItemFromList"),K=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/items",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerDelete"),_=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/items",...e}),"itemControllerFind"),X=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/items",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerCreate"),Y=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/items/count",...e}),"itemControllerCount"),Z=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...e}),"itemControllerDeleteById"),ee=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...e}),"itemControllerFindById"),re=t(e=>(e.client??p).patch({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerUpdateById"),te=t(e=>(e.client??p).put({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}/lists",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerSetListsById"),oe=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/identify",...e,headers:{"Content-Type":"application/json",...e.headers}}),"profileControllerIdentify"),se=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/token",...e,headers:{"Content-Type":"application/json",...e.headers}}),"profileControllerCreateToken"),ne=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/profiles",...e}),"profileControllerGetProfile");var ie=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/saved-items",...e}),"analyticsControllerLoadSavedItems"),le=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/sessions",...e}),"analyticsControllerLoadSessions"),ae=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/new-lists",...e}),"analyticsControllerLoadNewLists"),de=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/collect",...e,headers:{"Content-Type":"application/json",...e.headers}}),"trackingControllerCollect"),pe=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/orders",...e}),"ordersControllerFind"),ce=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/orders/{orderId}",...e}),"ordersControllerFindOne"),Ce=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}/save",...e}),"sharedListsControllerSave"),ye=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...e}),"sharedListsControllerDeleteById"),ue=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...e}),"sharedListsControllerFindById"),he=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists",...e}),"sharedListsControllerFindAll"),fe=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/notifications",...e}),"notificationsControllerFind"),me=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/notifications/unread/count",...e}),"notificationsControllerGetUnreadCount"),Ie=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/notifications/read",...e,headers:{"Content-Type":"application/json",...e.headers}}),"notificationsControllerMarkAsRead"),Re=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/notifications/{id}",...e}),"notificationsControllerDeleteById"),Oe=t(e=>((e==null?void 0:e.client)??p).get({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions",...e}),"subscriptionsControllerFind"),Ee=t(e=>(e.client??p).post({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions",...e,headers:{"Content-Type":"application/json",...e.headers}}),"subscriptionsControllerCreate"),Se=t(e=>(e.client??p).delete({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions/{id}",...e}),"subscriptionsControllerDelete"),be=t(e=>(e.client??p).get({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions/{id}",...e}),"subscriptionsControllerFindById"),Le=t(e=>(e.client??p).patch({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions/{id}",...e,headers:{"Content-Type":"application/json",...e.headers}}),"subscriptionsControllerUpdate");var rr="2026-01",vr=t(e=>new De(e),"createApiClient"),Te=class Te{constructor(r){this.version=rr;this.items={list:t(r=>this.handlePaginatedRequest(_({query:r,client:this.directClient})),"list"),create:t(r=>this.handleRequest(X({body:r,client:this.directClient})),"create"),delete:t(r=>this.handleRequest(K({body:{itemIds:r},client:this.directClient})),"delete"),findById:t(r=>this.handleRequest(ee({path:{itemId:r},client:this.directClient})),"findById"),updateById:t((r,o)=>this.handleRequest(re({body:o,path:{itemId:r},client:this.directClient})),"updateById"),deleteById:t(r=>this.handleRequest(Z({path:{itemId:r},client:this.directClient})),"deleteById"),setListsById:t((r,o)=>this.handleRequest(te({body:{listIds:o},path:{itemId:r},client:this.directClient})),"setListsById"),count:t(()=>this.handleRequest(Y({client:this.directClient})),"count")};this.lists={list:t(r=>this.handlePaginatedRequest(G({query:r,client:this.directClient})),"list"),create:t(r=>this.handleRequest(M({body:r,client:this.directClient})),"create"),findById:t(r=>this.handleRequest(H({path:{listId:r},client:this.directClient})),"findById"),updateById:t((r,o)=>this.handleRequest(V({body:o,path:{listId:r},client:this.directClient})),"updateById"),deleteById:t(r=>this.handleRequest($({path:{listId:r},client:this.directClient})),"deleteById"),orderItems:t((r,o)=>this.handleRequest(Q({body:{itemIds:o},path:{listId:r},client:this.directClient})),"orderItems"),addItemsToList:t((r,o)=>this.handleRequest(W({body:{itemIds:o},path:{listId:r},client:this.directClient})),"addItemsToList"),removeItemFromList:t((r,o)=>this.handleRequest(J({path:{listId:r,itemId:o},client:this.directClient})),"removeItemFromList")};this.profiles={createToken:t((r={})=>this.handleRequest(se({body:r,client:this.proxyClient??this.directClient})),"createToken"),identify:t(r=>this.handleRequest(oe({body:r,client:this.directClient})),"identify"),getProfile:t(()=>this.handleRequest(ne({client:this.directClient})),"getProfile")};this.orders={list:t(r=>this.handlePaginatedRequest(pe({query:r,client:this.directClient})),"list"),findById:t(r=>this.handleRequest(ce({path:{orderId:r},client:this.directClient})),"findById")};this.sharedLists={list:t(r=>this.handlePaginatedRequest(he({query:r,client:this.directClient})),"list"),save:t(r=>this.handleRequest(Ce({path:{listId:r},client:this.directClient})),"save"),findById:t(r=>this.handleRequest(ue({path:{listId:r},client:this.directClient})),"findById"),deleteById:t(r=>this.handleRequest(ye({path:{listId:r},client:this.directClient})),"deleteById")};this.analytics={savedItems:t(r=>this.handleRequest(ie({query:r,client:this.directClient})),"savedItems"),sessions:t(r=>this.handleRequest(le({query:r,client:this.directClient})),"sessions"),newLists:t(r=>this.handleRequest(ae({query:r,client:this.directClient})),"newLists")};this.tracking={track:t(r=>this.handleRequest(de({body:r,client:this.directClient})),"track")};this.notifications={list:t(r=>this.handlePaginatedRequest(fe({query:r,client:this.directClient})),"list"),getUnreadCount:t(()=>this.handleRequest(me({client:this.directClient})),"getUnreadCount"),markAsRead:t(r=>this.handleRequest(Ie({body:{notificationIds:r},client:this.directClient})),"markAsRead"),deleteById:t(r=>this.handleRequest(Re({path:{id:r},client:this.directClient})),"deleteById")};this.subscriptions={list:t(r=>this.handlePaginatedRequest(Oe({query:r,client:this.directClient})),"list"),create:t(r=>this.handleRequest(Ee({body:r,client:this.directClient})),"create"),findById:t(r=>this.handleRequest(be({path:{id:r},client:this.directClient})),"findById"),updateById:t((r,o)=>this.handleRequest(Le({body:o,path:{id:r},client:this.directClient})),"updateById"),deleteById:t(r=>this.handleRequest(Se({path:{id:r},client:this.directClient})),"deleteById")};this.handleRequest=t(async r=>{let{data:o,error:s}=await r;return s!=null&&s.error?{error:s.error}:{data:o==null?void 0:o.data}},"handleRequest");this.handlePaginatedRequest=t(async r=>{var i;let{data:o,error:s}=await r;return s!=null&&s.error?{error:s.error}:{data:(o==null?void 0:o.data)??[],pageInfo:(o==null?void 0:o.pageInfo)??{next:null,previous:null,totalCount:((i=o==null?void 0:o.data)==null?void 0:i.length)??0}}},"handlePaginatedRequest");var o,s,i,c;this.directClient=g(S({baseUrl:`https://swish.app/api/${this.version}`,...r.config})),(o=r.config)!=null&&o.authProxy&&(this.proxyClient=g(S({...r.config,baseUrl:r.config.authProxy}))),r.authToken&&(this.authToken=r.authToken),r.requestInterceptor&&((s=this.proxyClient)==null||s.interceptors.request.use(r.requestInterceptor),this.directClient.interceptors.request.use(r.requestInterceptor)),r.responseInterceptor&&((i=this.proxyClient)==null||i.interceptors.response.use(r.responseInterceptor),this.directClient.interceptors.response.use(r.responseInterceptor)),(c=this.proxyClient)==null||c.interceptors.request.use(this.proxyRequestInterceptor.bind(this)),this.directClient.interceptors.request.use(this.directRequestInterceptor.bind(this))}setAuthToken(r){this.authToken=r}proxyRequestInterceptor(r){return this.version&&r.headers.set("Swish-Api-Version",this.version),r}directRequestInterceptor(r){return this.authToken&&r.headers.set("Authorization",`Bearer ${this.authToken}`),r}};t(Te,"SwishClient");var De=Te;export{rr as apiVersion,vr as createApiClient};
@@ -2,6 +2,7 @@ export type { Auth } from '../core/auth.gen';
2
2
  export type { QuerySerializerOptions } from '../core/bodySerializer.gen';
3
3
  export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen';
4
4
  export { buildClientParams } from '../core/params.gen';
5
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen';
5
6
  export { createClient } from './client.gen';
6
- export type { Client, ClientOptions, Config, CreateClientConfig, Options, OptionsLegacyParser, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen';
7
+ export type { Client, ClientOptions, Config, CreateClientConfig, Options, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen';
7
8
  export { createConfig, mergeHeaders } from './utils.gen';
@@ -92,7 +92,7 @@ type BuildUrlFn = <TData extends {
92
92
  path?: Record<string, unknown>;
93
93
  query?: Record<string, unknown>;
94
94
  url: string;
95
- }>(options: Pick<TData, 'url'> & Options<TData>) => string;
95
+ }>(options: TData & Options<TData>) => string;
96
96
  export type Client = CoreClient<RequestFn, Config, MethodFn, BuildUrlFn, SseFn> & {
97
97
  interceptors: Middleware<Request, Response, unknown, ResolvedRequestOptions>;
98
98
  };
@@ -113,12 +113,5 @@ export interface TDataShape {
113
113
  url: string;
114
114
  }
115
115
  type OmitKeys<T, K> = Pick<T, Exclude<keyof T, K>>;
116
- export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = 'fields'> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 'body' | 'path' | 'query' | 'url'> & Omit<TData, 'url'>;
117
- export type OptionsLegacyParser<TData = unknown, ThrowOnError extends boolean = boolean, TResponseStyle extends ResponseStyle = 'fields'> = TData extends {
118
- body?: any;
119
- } ? TData extends {
120
- headers?: any;
121
- } ? OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, 'body' | 'headers' | 'url'> & TData : OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, 'body' | 'url'> & TData & Pick<RequestOptions<unknown, TResponseStyle, ThrowOnError>, 'headers'> : TData extends {
122
- headers?: any;
123
- } ? OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, 'headers' | 'url'> & TData & Pick<RequestOptions<unknown, TResponseStyle, ThrowOnError>, 'body'> : OmitKeys<RequestOptions<unknown, TResponseStyle, ThrowOnError>, 'url'> & TData;
116
+ export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, TResponse = unknown, TResponseStyle extends ResponseStyle = 'fields'> = OmitKeys<RequestOptions<TResponse, TResponseStyle, ThrowOnError>, 'body' | 'path' | 'query' | 'url'> & ([TData] extends [never] ? unknown : Omit<TData, 'url'>);
124
117
  export {};
@@ -1,6 +1,6 @@
1
1
  import type { QuerySerializerOptions } from '../core/bodySerializer.gen';
2
2
  import type { Client, ClientOptions, Config, RequestOptions } from './types.gen';
3
- export declare const createQuerySerializer: <T = unknown>({ allowReserved, array, object, }?: QuerySerializerOptions) => (queryParams: T) => string;
3
+ export declare const createQuerySerializer: <T = unknown>({ parameters, ...args }?: QuerySerializerOptions) => (queryParams: T) => string;
4
4
  /**
5
5
  * Infers parseAs value from provided Content-Type header.
6
6
  */
@@ -1,11 +1,18 @@
1
1
  import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen';
2
2
  export type QuerySerializer = (query: Record<string, unknown>) => string;
3
3
  export type BodySerializer = (body: any) => any;
4
- export interface QuerySerializerOptions {
4
+ type QuerySerializerOptionsObject = {
5
5
  allowReserved?: boolean;
6
- array?: SerializerOptions<ArrayStyle>;
7
- object?: SerializerOptions<ObjectStyle>;
8
- }
6
+ array?: Partial<SerializerOptions<ArrayStyle>>;
7
+ object?: Partial<SerializerOptions<ObjectStyle>>;
8
+ };
9
+ export type QuerySerializerOptions = QuerySerializerOptionsObject & {
10
+ /**
11
+ * Per-parameter serialization overrides. When provided, these settings
12
+ * override the global array/object settings for specific parameter names.
13
+ */
14
+ parameters?: Record<string, QuerySerializerOptionsObject>;
15
+ };
9
16
  export declare const formDataBodySerializer: {
10
17
  bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(body: T) => FormData;
11
18
  };
@@ -15,3 +22,4 @@ export declare const jsonBodySerializer: {
15
22
  export declare const urlSearchParamsBodySerializer: {
16
23
  bodySerializer: <T extends Record<string, any> | Array<Record<string, any>>>(body: T) => string;
17
24
  };
25
+ export {};
@@ -17,6 +17,16 @@ export type Field = {
17
17
  */
18
18
  key?: string;
19
19
  map?: string;
20
+ } | {
21
+ /**
22
+ * Field name. This is the name we want the user to see and use.
23
+ */
24
+ key: string;
25
+ /**
26
+ * Field mapped name. This is the name we want to use in the request.
27
+ * If `in` is omitted, `map` aliases `key` to the transport layer.
28
+ */
29
+ map: Slot;
20
30
  };
21
31
  export interface Fields {
22
32
  allowExtra?: Partial<Record<Slot, boolean>>;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * JSON-friendly union that mirrors what Pinia Colada can hash.
3
+ */
4
+ export type JsonValue = null | string | number | boolean | JsonValue[] | {
5
+ [key: string]: JsonValue;
6
+ };
7
+ /**
8
+ * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes.
9
+ */
10
+ export declare const queryKeyJsonReplacer: (_key: string, value: unknown) => {} | null | undefined;
11
+ /**
12
+ * Safely stringifies a value and parses it back into a JsonValue.
13
+ */
14
+ export declare const stringifyToJsonValue: (input: unknown) => JsonValue | undefined;
15
+ /**
16
+ * Normalizes any accepted value into a JSON-friendly shape for query keys.
17
+ */
18
+ export declare const serializeQueryKeyValue: (value: unknown) => JsonValue | undefined;
@@ -0,0 +1,2 @@
1
+ export { analyticsControllerLoadNewLists, analyticsControllerLoadSavedItems, analyticsControllerLoadSessions, itemControllerCount, itemControllerCreate, itemControllerDelete, itemControllerDeleteById, itemControllerFind, itemControllerFindById, itemControllerSetListsById, itemControllerUpdateById, listControllerAddItemsToList, listControllerCreate, listControllerDeleteById, listControllerFind, listControllerFindById, listControllerRemoveItemFromList, listControllerSetListItemsOrder, listControllerUpdateById, notificationsControllerDeleteById, notificationsControllerFind, notificationsControllerGetUnreadCount, notificationsControllerMarkAsRead, type Options, ordersControllerFind, ordersControllerFindOne, profileControllerCreateToken, profileControllerGetProfile, profileControllerIdentify, profileControllerUpdateProfile, sharedListsControllerDeleteById, sharedListsControllerFindAll, sharedListsControllerFindById, sharedListsControllerSave, subscriptionsControllerCreate, subscriptionsControllerDelete, subscriptionsControllerFind, subscriptionsControllerFindById, subscriptionsControllerUpdate, trackingControllerCollect } from './sdk.gen';
2
+ export type { AddItemsToListInput, Analytics, AnalyticsControllerLoadNewListsData, AnalyticsControllerLoadNewListsError, AnalyticsControllerLoadNewListsErrors, AnalyticsControllerLoadNewListsResponse, AnalyticsControllerLoadNewListsResponses, AnalyticsControllerLoadSavedItemsData, AnalyticsControllerLoadSavedItemsError, AnalyticsControllerLoadSavedItemsErrors, AnalyticsControllerLoadSavedItemsResponse, AnalyticsControllerLoadSavedItemsResponses, AnalyticsControllerLoadSessionsData, AnalyticsControllerLoadSessionsError, AnalyticsControllerLoadSessionsErrors, AnalyticsControllerLoadSessionsResponse, AnalyticsControllerLoadSessionsResponses, ClientOptions, CreateItemInput, CreateListInput, CreateProfileTokenInput, CreateProfileTokenResult, CreateSubscriptionInput, DeleteItemsInput, Error, ErrorResponse, Fulfillment, IdentifyProfileInput, Item, ItemControllerCountData, ItemControllerCountError, ItemControllerCountErrors, ItemControllerCountResponse, ItemControllerCountResponses, ItemControllerCreateData, ItemControllerCreateError, ItemControllerCreateErrors, ItemControllerCreateResponse, ItemControllerCreateResponses, ItemControllerDeleteByIdData, ItemControllerDeleteByIdError, ItemControllerDeleteByIdErrors, ItemControllerDeleteByIdResponse, ItemControllerDeleteByIdResponses, ItemControllerDeleteData, ItemControllerDeleteError, ItemControllerDeleteErrors, ItemControllerDeleteResponse, ItemControllerDeleteResponses, ItemControllerFindByIdData, ItemControllerFindByIdError, ItemControllerFindByIdErrors, ItemControllerFindByIdResponse, ItemControllerFindByIdResponses, ItemControllerFindData, ItemControllerFindError, ItemControllerFindErrors, ItemControllerFindResponse, ItemControllerFindResponses, ItemControllerSetListsByIdData, ItemControllerSetListsByIdError, ItemControllerSetListsByIdErrors, ItemControllerSetListsByIdResponse, ItemControllerSetListsByIdResponses, ItemControllerUpdateByIdData, ItemControllerUpdateByIdError, ItemControllerUpdateByIdErrors, ItemControllerUpdateByIdResponse, ItemControllerUpdateByIdResponses, ItemCount, ItemDetail, ItemReference, List, ListControllerAddItemsToListData, ListControllerAddItemsToListError, ListControllerAddItemsToListErrors, ListControllerAddItemsToListResponse, ListControllerAddItemsToListResponses, ListControllerCreateData, ListControllerCreateError, ListControllerCreateErrors, ListControllerCreateResponse, ListControllerCreateResponses, ListControllerDeleteByIdData, ListControllerDeleteByIdError, ListControllerDeleteByIdErrors, ListControllerDeleteByIdResponse, ListControllerDeleteByIdResponses, ListControllerFindByIdData, ListControllerFindByIdError, ListControllerFindByIdErrors, ListControllerFindByIdResponse, ListControllerFindByIdResponses, ListControllerFindData, ListControllerFindError, ListControllerFindErrors, ListControllerFindResponse, ListControllerFindResponses, ListControllerRemoveItemFromListData, ListControllerRemoveItemFromListError, ListControllerRemoveItemFromListErrors, ListControllerRemoveItemFromListResponse, ListControllerRemoveItemFromListResponses, ListControllerSetListItemsOrderData, ListControllerSetListItemsOrderError, ListControllerSetListItemsOrderErrors, ListControllerSetListItemsOrderResponse, ListControllerSetListItemsOrderResponses, ListControllerUpdateByIdData, ListControllerUpdateByIdError, ListControllerUpdateByIdErrors, ListControllerUpdateByIdResponse, ListControllerUpdateByIdResponses, ListDetail, MarketingConsent, MarkReadDto, Money, Notification, NotificationsControllerDeleteByIdData, NotificationsControllerDeleteByIdError, NotificationsControllerDeleteByIdErrors, NotificationsControllerDeleteByIdResponse, NotificationsControllerDeleteByIdResponses, NotificationsControllerFindData, NotificationsControllerFindError, NotificationsControllerFindErrors, NotificationsControllerFindResponse, NotificationsControllerFindResponses, NotificationsControllerGetUnreadCountData, NotificationsControllerGetUnreadCountError, NotificationsControllerGetUnreadCountErrors, NotificationsControllerGetUnreadCountResponse, NotificationsControllerGetUnreadCountResponses, NotificationsControllerMarkAsReadData, NotificationsControllerMarkAsReadError, NotificationsControllerMarkAsReadErrors, NotificationsControllerMarkAsReadResponse, NotificationsControllerMarkAsReadResponses, NotificationSettings, NotificationUnreadCount, OrderDetailDto, OrderDto, OrderLineItem, OrdersControllerFindData, OrdersControllerFindError, OrdersControllerFindErrors, OrdersControllerFindOneData, OrdersControllerFindOneError, OrdersControllerFindOneErrors, OrdersControllerFindOneResponse, OrdersControllerFindOneResponses, OrdersControllerFindResponse, OrdersControllerFindResponses, PageInfo, PaginatedResponse, PreviewImageDto, ProductDto, ProductVariantDto, Profile, ProfileControllerCreateTokenData, ProfileControllerCreateTokenError, ProfileControllerCreateTokenErrors, ProfileControllerCreateTokenResponse, ProfileControllerCreateTokenResponses, ProfileControllerGetProfileData, ProfileControllerGetProfileError, ProfileControllerGetProfileErrors, ProfileControllerGetProfileResponse, ProfileControllerGetProfileResponses, ProfileControllerIdentifyData, ProfileControllerIdentifyError, ProfileControllerIdentifyErrors, ProfileControllerIdentifyResponse, ProfileControllerIdentifyResponses, ProfileControllerUpdateProfileData, ProfileControllerUpdateProfileError, ProfileControllerUpdateProfileErrors, ProfileControllerUpdateProfileResponse, ProfileControllerUpdateProfileResponses, Response, SetItemListsInput, SetListItemsOrderInput, SharedList, SharedListsControllerDeleteByIdData, SharedListsControllerDeleteByIdError, SharedListsControllerDeleteByIdErrors, SharedListsControllerDeleteByIdResponse, SharedListsControllerDeleteByIdResponses, SharedListsControllerFindAllData, SharedListsControllerFindAllError, SharedListsControllerFindAllErrors, SharedListsControllerFindAllResponse, SharedListsControllerFindAllResponses, SharedListsControllerFindByIdData, SharedListsControllerFindByIdError, SharedListsControllerFindByIdErrors, SharedListsControllerFindByIdResponse, SharedListsControllerFindByIdResponses, SharedListsControllerSaveData, SharedListsControllerSaveError, SharedListsControllerSaveErrors, SharedListsControllerSaveResponse, SharedListsControllerSaveResponses, Subscription, SubscriptionQueryDto, SubscriptionsControllerCreateData, SubscriptionsControllerCreateError, SubscriptionsControllerCreateErrors, SubscriptionsControllerCreateResponse, SubscriptionsControllerCreateResponses, SubscriptionsControllerDeleteData, SubscriptionsControllerDeleteError, SubscriptionsControllerDeleteErrors, SubscriptionsControllerDeleteResponse, SubscriptionsControllerDeleteResponses, SubscriptionsControllerFindByIdData, SubscriptionsControllerFindByIdError, SubscriptionsControllerFindByIdErrors, SubscriptionsControllerFindByIdResponse, SubscriptionsControllerFindByIdResponses, SubscriptionsControllerFindData, SubscriptionsControllerFindError, SubscriptionsControllerFindErrors, SubscriptionsControllerFindResponse, SubscriptionsControllerFindResponses, SubscriptionsControllerUpdateData, SubscriptionsControllerUpdateError, SubscriptionsControllerUpdateErrors, SubscriptionsControllerUpdateResponse, SubscriptionsControllerUpdateResponses, TrackingControllerCollectData, TrackingControllerCollectError, TrackingControllerCollectErrors, TrackingControllerCollectResponse, TrackingControllerCollectResponses, TrackingEventRequestDto, TrackingInfo, UpdateItemInput, UpdateListInput, UpdateProfileInput, UpdateSubscriptionInput } from './types.gen';
@@ -38,6 +38,7 @@ export declare const analyticsControllerLoadSessions: <ThrowOnError extends bool
38
38
  export declare const analyticsControllerLoadNewLists: <ThrowOnError extends boolean = false>(options: Options<AnalyticsControllerLoadNewListsData, ThrowOnError>) => import("./client").RequestResult<AnalyticsControllerLoadNewListsResponses, AnalyticsControllerLoadNewListsErrors, ThrowOnError, "fields">;
39
39
  /**
40
40
  * Collect user behavior events
41
+ *
41
42
  * Endpoint for collecting user behavior events.
42
43
  */
43
44
  export declare const trackingControllerCollect: <ThrowOnError extends boolean = false>(options: Options<TrackingControllerCollectData, ThrowOnError>) => import("./client").RequestResult<TrackingControllerCollectResponses, TrackingControllerCollectErrors, ThrowOnError, "fields">;
@@ -1,5 +1,5 @@
1
1
  export type ClientOptions = {
2
- baseUrl: 'https://swish.app/api/2026-04' | (string & {});
2
+ baseUrl: 'https://swish.app/api/2026-01' | (string & {});
3
3
  };
4
4
  export type CreateItemInput = {
5
5
  /**
@@ -97,7 +97,7 @@ export type List = {
97
97
  */
98
98
  access: 'private' | 'public';
99
99
  };
100
- export type _Error = {
100
+ export type Error = {
101
101
  /**
102
102
  * The error message
103
103
  */
@@ -119,7 +119,7 @@ export type ErrorResponse = {
119
119
  /**
120
120
  * Error details
121
121
  */
122
- error: _Error;
122
+ error: Error;
123
123
  };
124
124
  export type PageInfo = {
125
125
  /**
@@ -611,86 +611,6 @@ export type MarkReadDto = {
611
611
  */
612
612
  notificationIds: Array<string>;
613
613
  };
614
- export type ProductCategoryDto = {
615
- id: string;
616
- name: string;
617
- };
618
- export type MoneyDto = {
619
- amount: string;
620
- currencyCode: string;
621
- };
622
- export type ProductPriceRangeDto = {
623
- maxVariantPrice: MoneyDto;
624
- minVariantPrice: MoneyDto;
625
- };
626
- export type ImageDto = {
627
- id: string;
628
- url: string;
629
- altText?: {
630
- [key: string]: unknown;
631
- } | null;
632
- thumbhash?: {
633
- [key: string]: unknown;
634
- } | null;
635
- };
636
- export type ProductVariantsCountDto = {
637
- count: number;
638
- };
639
- export type NotificationProductDto = {
640
- id: string;
641
- availableForSale: boolean;
642
- onlineStoreUrl?: {
643
- [key: string]: unknown;
644
- } | null;
645
- handle: string;
646
- productType: {
647
- [key: string]: unknown;
648
- } | null;
649
- tags: Array<string>;
650
- title: string;
651
- category?: ProductCategoryDto | null;
652
- compareAtPriceRange?: ProductPriceRangeDto | null;
653
- featuredImage?: ImageDto | null;
654
- priceRange: ProductPriceRangeDto;
655
- variantsCount?: ProductVariantsCountDto | null;
656
- };
657
- export type ProductOptionDto = {
658
- name: string;
659
- value: string;
660
- };
661
- export type NotificationVariantDto = {
662
- id: string;
663
- availableForSale: boolean;
664
- currentlyNotInStock: boolean;
665
- sku?: {
666
- [key: string]: unknown;
667
- } | null;
668
- title: string;
669
- compareAtPrice?: MoneyDto | null;
670
- image?: ImageDto | null;
671
- price: MoneyDto;
672
- selectedOptions: Array<ProductOptionDto>;
673
- };
674
- export type NotificationContextDto = {
675
- /**
676
- * The market identifier
677
- */
678
- market?: {
679
- [key: string]: unknown;
680
- } | null;
681
- /**
682
- * The country code
683
- */
684
- country?: {
685
- [key: string]: unknown;
686
- } | null;
687
- /**
688
- * The language code
689
- */
690
- language?: {
691
- [key: string]: unknown;
692
- } | null;
693
- };
694
614
  export type Notification = {
695
615
  /**
696
616
  * The ID of the notification
@@ -701,23 +621,13 @@ export type Notification = {
701
621
  */
702
622
  type: 'price_drop' | 'back_in_stock' | 'low_in_stock';
703
623
  /**
704
- * The product data associated with the notification
705
- */
706
- product: NotificationProductDto;
707
- /**
708
- * The variant data associated with the notification
709
- */
710
- variant?: NotificationVariantDto | null;
711
- /**
712
- * Context for localization (market/country/language)
624
+ * The Shopify product ID
713
625
  */
714
- context: NotificationContextDto | null;
626
+ productId?: string;
715
627
  /**
716
- * Metadata associated with the notification
628
+ * The Shopify variant ID
717
629
  */
718
- metadata: {
719
- [key: string]: unknown;
720
- } | null;
630
+ variantId?: string;
721
631
  /**
722
632
  * Whether the notification has been read
723
633
  */
@@ -1,7 +1,7 @@
1
1
  import type { SwishClient } from "./client";
2
2
  import type { Client, ClientOptions, Config } from "./openapi/client";
3
3
  import type { PageInfo } from "./openapi/types.gen";
4
- export type { SwishClient };
4
+ export type { SwishClient } from "./client";
5
5
  export interface SwishClientOptions {
6
6
  authToken?: string;
7
7
  config?: SwishClientConfig;
@@ -10,7 +10,6 @@ export interface SwishClientOptions {
10
10
  }
11
11
  export type SwishClientConfig = Config<ClientOptions> & {
12
12
  authProxy?: string;
13
- version?: string;
14
13
  };
15
14
  export type ListItemsResponse = Awaited<ReturnType<SwishClient["items"]["list"]>>;
16
15
  export type CreateItemResponse = Awaited<ReturnType<SwishClient["items"]["create"]>>;
@@ -0,0 +1,74 @@
1
+ import type { SwishClientOptions, ApiResponse, PaginatedApiResponse } from "./types";
2
+ import type * as types from "./openapi/types.gen";
3
+ export declare const apiVersion = "2026-04";
4
+ export declare const createApiClient: (options: SwishClientOptions) => SwishClient;
5
+ export type { SwishClient };
6
+ declare class SwishClient {
7
+ private authToken?;
8
+ private readonly version;
9
+ private readonly proxyClient?;
10
+ private readonly directClient;
11
+ constructor(options: SwishClientOptions);
12
+ setAuthToken(authToken: string): void;
13
+ proxyRequestInterceptor(request: Request): Request;
14
+ directRequestInterceptor(request: Request): Request;
15
+ readonly items: {
16
+ list: (query?: types.ItemControllerFindData["query"]) => Promise<PaginatedApiResponse<types.Item>>;
17
+ create: (items: types.CreateItemInput) => Promise<ApiResponse<types.Item>>;
18
+ delete: (itemIds: types.DeleteItemsInput["itemIds"]) => Promise<ApiResponse<types.Item[]>>;
19
+ findById: (itemId: string) => Promise<ApiResponse<types.ItemDetail>>;
20
+ updateById: (itemId: string, body: types.UpdateItemInput) => Promise<ApiResponse<types.Item>>;
21
+ deleteById: (itemId: string) => Promise<ApiResponse<types.Item>>;
22
+ setListsById: (itemId: string, listIds: types.SetItemListsInput["listIds"]) => Promise<ApiResponse<types.ItemDetail>>;
23
+ count: () => Promise<ApiResponse<types.ItemCount>>;
24
+ getRecentlyViewed: (query?: types.ItemControllerGetRecentlyViewedItemsData["query"]) => Promise<PaginatedApiResponse<types.RecentlyViewed>>;
25
+ };
26
+ readonly lists: {
27
+ list: (query?: types.ListControllerFindData["query"]) => Promise<PaginatedApiResponse<types.ListDetail>>;
28
+ create: (list: types.CreateListInput) => Promise<ApiResponse<types.List>>;
29
+ findById: (listId: string) => Promise<ApiResponse<types.ListDetail>>;
30
+ updateById: (listId: string, body: types.UpdateListInput) => Promise<ApiResponse<types.List>>;
31
+ deleteById: (listId: string) => Promise<ApiResponse<types.List>>;
32
+ orderItems: (listId: string, itemIds: types.SetListItemsOrderInput["itemIds"]) => Promise<ApiResponse<types.List>>;
33
+ addItemsToList: (listId: string, itemIds: types.AddItemsToListInput["itemIds"]) => Promise<ApiResponse<types.ListDetail>>;
34
+ removeItemFromList: (listId: string, itemId: string) => Promise<ApiResponse<unknown>>;
35
+ };
36
+ readonly profiles: {
37
+ createToken: (body?: types.CreateProfileTokenInput) => Promise<ApiResponse<types.CreateProfileTokenResult>>;
38
+ identify: (body: types.IdentifyProfileInput) => Promise<ApiResponse<unknown>>;
39
+ getProfile: () => Promise<ApiResponse<types.Profile>>;
40
+ };
41
+ readonly orders: {
42
+ list: (query?: types.OrdersControllerFindData["query"]) => Promise<PaginatedApiResponse<types.OrderDto>>;
43
+ findById: (orderId: number) => Promise<ApiResponse<types.OrderDetailDto>>;
44
+ };
45
+ readonly sharedLists: {
46
+ list: (query?: types.SharedListsControllerFindAllData["query"]) => Promise<PaginatedApiResponse<types.SharedList>>;
47
+ save: (listId: string) => Promise<ApiResponse<types.SharedList>>;
48
+ findById: (listId: string) => Promise<ApiResponse<types.SharedList>>;
49
+ deleteById: (listId: string) => Promise<ApiResponse<unknown>>;
50
+ };
51
+ readonly analytics: {
52
+ savedItems: (query: types.AnalyticsControllerLoadSavedItemsData["query"]) => Promise<ApiResponse<types.Analytics[]>>;
53
+ sessions: (query: types.AnalyticsControllerLoadSessionsData["query"]) => Promise<ApiResponse<types.Analytics[]>>;
54
+ newLists: (query: types.AnalyticsControllerLoadNewListsData["query"]) => Promise<ApiResponse<types.Analytics[]>>;
55
+ };
56
+ readonly tracking: {
57
+ track: (body: types.TrackingEventRequestDto) => Promise<ApiResponse<unknown>>;
58
+ };
59
+ readonly notifications: {
60
+ list: (query?: types.NotificationsControllerFindData["query"]) => Promise<PaginatedApiResponse<types.Notification>>;
61
+ getUnreadCount: () => Promise<ApiResponse<types.NotificationUnreadCount>>;
62
+ markAsRead: (notificationIds: types.MarkReadDto["notificationIds"]) => Promise<ApiResponse<types.Notification[]>>;
63
+ deleteById: (id: string) => Promise<ApiResponse<types.Notification>>;
64
+ };
65
+ readonly subscriptions: {
66
+ list: (query?: types.SubscriptionsControllerFindData["query"]) => Promise<PaginatedApiResponse<types.Subscription>>;
67
+ create: (body: types.CreateSubscriptionInput) => Promise<ApiResponse<types.Subscription>>;
68
+ findById: (id: string) => Promise<ApiResponse<types.Subscription>>;
69
+ updateById: (id: string, body: types.UpdateSubscriptionInput) => Promise<ApiResponse<types.Subscription>>;
70
+ deleteById: (id: string) => Promise<ApiResponse<types.Subscription>>;
71
+ };
72
+ private readonly handleRequest;
73
+ private readonly handlePaginatedRequest;
74
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./client";
2
+ export type * from "./types";
3
+ export type * from "./openapi/types.gen";
@@ -0,0 +1,7 @@
1
+ var He=Object.defineProperty;var t=(e,r)=>He(e,"name",{value:r,configurable:!0});var Pe={bodySerializer:t(e=>JSON.stringify(e,(r,o)=>typeof o=="bigint"?o.toString():o),"bodySerializer")};var Ae=t(({onRequest:e,onSseError:r,onSseEvent:o,responseTransformer:s,responseValidator:i,sseDefaultRetryDelay:c,sseMaxRetryAttempts:a,sseMaxRetryDelay:l,sseSleepFn:p,url:y,...n})=>{let f,g=p??(C=>new Promise(I=>setTimeout(I,C)));return{stream:t(async function*(){let C=c??3e3,I=0,b=n.signal??new AbortController().signal;for(;!b.aborted;){I++;let B=n.headers instanceof Headers?n.headers:new Headers(n.headers);f!==void 0&&B.set("Last-Event-ID",f);try{let D={redirect:"follow",...n,body:n.serializedBody,headers:B,signal:b},E=new Request(y,D);e&&(E=await e(y,D));let u=await(n.fetch??globalThis.fetch)(E);if(!u.ok)throw new Error(`SSE failed: ${u.status} ${u.statusText}`);if(!u.body)throw new Error("No body in SSE response");let m=u.body.pipeThrough(new TextDecoderStream).getReader(),x="",ge=t(()=>{try{m.cancel()}catch{}},"abortHandler");b.addEventListener("abort",ge);try{for(;;){let{done:Ge,value:Ve}=await m.read();if(Ge)break;x+=Ve,x=x.replace(/\r\n/g,`
2
+ `).replace(/\r/g,`
3
+ `);let Be=x.split(`
4
+
5
+ `);x=Be.pop()??"";for(let Me of Be){let $e=Me.split(`
6
+ `),P=[],xe;for(let O of $e)if(O.startsWith("data:"))P.push(O.replace(/^data:\s*/,""));else if(O.startsWith("event:"))xe=O.replace(/^event:\s*/,"");else if(O.startsWith("id:"))f=O.replace(/^id:\s*/,"");else if(O.startsWith("retry:")){let ke=Number.parseInt(O.replace(/^retry:\s*/,""),10);Number.isNaN(ke)||(C=ke)}let L,Fe=!1;if(P.length){let O=P.join(`
7
+ `);try{L=JSON.parse(O),Fe=!0}catch{L=O}}Fe&&(i&&await i(L),s&&(L=await s(L))),o==null||o({data:L,event:xe,id:f,retry:C}),P.length&&(yield L)}}}finally{b.removeEventListener("abort",ge),m.releaseLock()}break}catch(D){if(r==null||r(D),a!==void 0&&I>=a)break;let E=Math.min(C*2**(I-1),l??3e4);await g(E)}}},"createStream")()}},"createSseClient");var Qe=t(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorArrayExplode"),We=t(e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"separatorArrayNoExplode"),Je=t(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"separatorObjectExplode"),A=t(({allowReserved:e,explode:r,name:o,style:s,value:i})=>{if(!r){let l=(e?i:i.map(p=>encodeURIComponent(p))).join(We(s));switch(s){case"label":return`.${l}`;case"matrix":return`;${o}=${l}`;case"simple":return l;default:return`${o}=${l}`}}let c=Qe(s),a=i.map(l=>s==="label"||s==="simple"?e?l:encodeURIComponent(l):T({allowReserved:e,name:o,value:l})).join(c);return s==="label"||s==="matrix"?c+a:a},"serializeArrayParam"),T=t(({allowReserved:e,name:r,value:o})=>{if(o==null)return"";if(typeof o=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${r}=${e?o:encodeURIComponent(o)}`},"serializePrimitiveParam"),q=t(({allowReserved:e,explode:r,name:o,style:s,value:i,valueOnly:c})=>{if(i instanceof Date)return c?i.toISOString():`${o}=${i.toISOString()}`;if(s!=="deepObject"&&!r){let p=[];Object.entries(i).forEach(([n,f])=>{p=[...p,n,e?f:encodeURIComponent(f)]});let y=p.join(",");switch(s){case"form":return`${o}=${y}`;case"label":return`.${y}`;case"matrix":return`;${o}=${y}`;default:return y}}let a=Je(s),l=Object.entries(i).map(([p,y])=>T({allowReserved:e,name:s==="deepObject"?`${o}[${p}]`:p,value:y})).join(a);return s==="label"||s==="matrix"?a+l:l},"serializeObjectParam");var Ke=/\{[^{}]+\}/g,_e=t(({path:e,url:r})=>{let o=r,s=r.match(Ke);if(s)for(let i of s){let c=!1,a=i.substring(1,i.length-1),l="simple";a.endsWith("*")&&(c=!0,a=a.substring(0,a.length-1)),a.startsWith(".")?(a=a.substring(1),l="label"):a.startsWith(";")&&(a=a.substring(1),l="matrix");let p=e[a];if(p==null)continue;if(Array.isArray(p)){o=o.replace(i,A({explode:c,name:a,style:l,value:p}));continue}if(typeof p=="object"){o=o.replace(i,q({explode:c,name:a,style:l,value:p,valueOnly:!0}));continue}if(l==="matrix"){o=o.replace(i,`;${T({name:a,value:p})}`);continue}let y=encodeURIComponent(l==="label"?`.${p}`:p);o=o.replace(i,y)}return o},"defaultPathSerializer"),qe=t(({baseUrl:e,path:r,query:o,querySerializer:s,url:i})=>{let c=i.startsWith("/")?i:`/${i}`,a=(e??"")+c;r&&(a=_e({path:r,url:a}));let l=o?s(o):"";return l.startsWith("?")&&(l=l.substring(1)),l&&(a+=`?${l}`),a},"getUrl");function v(e){let r=e.body!==void 0;if(r&&e.bodySerializer)return"serializedBody"in e?e.serializedBody!==void 0&&e.serializedBody!==""?e.serializedBody:null:e.body!==""?e.body:null;if(r)return e.body}t(v,"getValidRequestBody");var Ue=t(async(e,r)=>{let o=typeof r=="function"?await r(e):r;if(o)return e.scheme==="bearer"?`Bearer ${o}`:e.scheme==="basic"?`Basic ${btoa(o)}`:o},"getAuthToken");var ve=t(({parameters:e={},...r}={})=>t(s=>{let i=[];if(s&&typeof s=="object")for(let c in s){let a=s[c];if(a==null)continue;let l=e[c]||r;if(Array.isArray(a)){let p=A({allowReserved:l.allowReserved,explode:!0,name:c,style:"form",value:a,...l.array});p&&i.push(p)}else if(typeof a=="object"){let p=q({allowReserved:l.allowReserved,explode:!0,name:c,style:"deepObject",value:a,...l.object});p&&i.push(p)}else{let p=T({allowReserved:l.allowReserved,name:c,value:a});p&&i.push(p)}}return i.join("&")},"querySerializer"),"createQuerySerializer"),ze=t(e=>{var o;if(!e)return"stream";let r=(o=e.split(";")[0])==null?void 0:o.trim();if(r){if(r.startsWith("application/json")||r.endsWith("+json"))return"json";if(r==="multipart/form-data")return"formData";if(["application/","audio/","image/","video/"].some(s=>r.startsWith(s)))return"blob";if(r.startsWith("text/"))return"text"}},"getParseAs"),Xe=t((e,r)=>{var o,s;return r?!!(e.headers.has(r)||(o=e.query)!=null&&o[r]||(s=e.headers.get("Cookie"))!=null&&s.includes(`${r}=`)):!1},"checkForExistence"),Ne=t(async({security:e,...r})=>{for(let o of e){if(Xe(r,o.name))continue;let s=await Ue(o,r.auth);if(!s)continue;let i=o.name??"Authorization";switch(o.in){case"query":r.query||(r.query={}),r.query[i]=s;break;case"cookie":r.headers.append("Cookie",`${i}=${s}`);break;default:r.headers.set(i,s);break}}},"setAuthParams"),z=t(e=>qe({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:ve(e.querySerializer),url:e.url}),"buildUrl"),N=t((e,r)=>{var s;let o={...e,...r};return(s=o.baseUrl)!=null&&s.endsWith("/")&&(o.baseUrl=o.baseUrl.substring(0,o.baseUrl.length-1)),o.headers=U(e.headers,r.headers),o},"mergeConfigs"),Ye=t(e=>{let r=[];return e.forEach((o,s)=>{r.push([s,o])}),r},"headersEntries"),U=t((...e)=>{let r=new Headers;for(let o of e){if(!o)continue;let s=o instanceof Headers?Ye(o):Object.entries(o);for(let[i,c]of s)if(c===null)r.delete(i);else if(Array.isArray(c))for(let a of c)r.append(i,a);else c!==void 0&&r.set(i,typeof c=="object"?JSON.stringify(c):c)}return r},"mergeHeaders"),j=class j{constructor(){this.fns=[]}clear(){this.fns=[]}eject(r){let o=this.getInterceptorIndex(r);this.fns[o]&&(this.fns[o]=null)}exists(r){let o=this.getInterceptorIndex(r);return!!this.fns[o]}getInterceptorIndex(r){return typeof r=="number"?this.fns[r]?r:-1:this.fns.indexOf(r)}update(r,o){let s=this.getInterceptorIndex(r);return this.fns[s]?(this.fns[s]=o,r):!1}use(r){return this.fns.push(r),this.fns.length-1}};t(j,"Interceptors");var F=j,je=t(()=>({error:new F,request:new F,response:new F}),"createInterceptors"),Ze=ve({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),er={"Content-Type":"application/json"},S=t((e={})=>({...Pe,headers:er,parseAs:"auto",querySerializer:Ze,...e}),"createConfig");var w=t((e={})=>{let r=N(S(),e),o=t(()=>({...r}),"getConfig"),s=t(y=>(r=N(r,y),o()),"setConfig"),i=je(),c=t(async y=>{let n={...r,...y,fetch:y.fetch??r.fetch??globalThis.fetch,headers:U(r.headers,y.headers),serializedBody:void 0};n.security&&await Ne({...n,security:n.security}),n.requestValidator&&await n.requestValidator(n),n.body!==void 0&&n.bodySerializer&&(n.serializedBody=n.bodySerializer(n.body)),(n.body===void 0||n.serializedBody==="")&&n.headers.delete("Content-Type");let f=z(n);return{opts:n,url:f}},"beforeRequest"),a=t(async y=>{let{opts:n,url:f}=await c(y),g={redirect:"follow",...n,body:v(n)},R=new Request(f,g);for(let h of i.request.fns)h&&(R=await h(R,n));let k=n.fetch,C;try{C=await k(R)}catch(h){let u=h;for(let m of i.error.fns)m&&(u=await m(h,void 0,R,n));if(u=u||{},n.throwOnError)throw u;return n.responseStyle==="data"?void 0:{error:u,request:R,response:void 0}}for(let h of i.response.fns)h&&(C=await h(C,R,n));let I={request:R,response:C};if(C.ok){let h=(n.parseAs==="auto"?ze(C.headers.get("Content-Type")):n.parseAs)??"json";if(C.status===204||C.headers.get("Content-Length")==="0"){let m;switch(h){case"arrayBuffer":case"blob":case"text":m=await C[h]();break;case"formData":m=new FormData;break;case"stream":m=C.body;break;default:m={};break}return n.responseStyle==="data"?m:{data:m,...I}}let u;switch(h){case"arrayBuffer":case"blob":case"formData":case"text":u=await C[h]();break;case"json":{let m=await C.text();u=m?JSON.parse(m):{};break}case"stream":return n.responseStyle==="data"?C.body:{data:C.body,...I}}return h==="json"&&(n.responseValidator&&await n.responseValidator(u),n.responseTransformer&&(u=await n.responseTransformer(u))),n.responseStyle==="data"?u:{data:u,...I}}let b=await C.text(),B;try{B=JSON.parse(b)}catch{}let D=B??b,E=D;for(let h of i.error.fns)h&&(E=await h(D,C,R,n));if(E=E||{},n.throwOnError)throw E;return n.responseStyle==="data"?void 0:{error:E,...I}},"request"),l=t(y=>n=>a({...n,method:y}),"makeMethodFn"),p=t(y=>async n=>{let{opts:f,url:g}=await c(n);return Ae({...f,body:f.body,headers:f.headers,method:y,onRequest:t(async(R,k)=>{let C=new Request(R,k);for(let I of i.request.fns)I&&(C=await I(C,f));return C},"onRequest"),serializedBody:v(f),url:g})},"makeSseFn");return{buildUrl:z,connect:l("CONNECT"),delete:l("DELETE"),get:l("GET"),getConfig:o,head:l("HEAD"),interceptors:i,options:l("OPTIONS"),patch:l("PATCH"),post:l("POST"),put:l("PUT"),request:a,setConfig:s,sse:{connect:p("CONNECT"),delete:p("DELETE"),get:p("GET"),head:p("HEAD"),options:p("OPTIONS"),patch:p("PATCH"),post:p("POST"),put:p("PUT"),trace:p("TRACE")},trace:l("TRACE")}},"createClient");var d=w(S({baseUrl:"https://swish.app/api/2026-04"}));var G=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/lists",...e}),"listControllerFind"),V=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/lists",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerCreate"),M=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...e}),"listControllerDeleteById"),$=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...e}),"listControllerFindById"),H=t(e=>(e.client??d).patch({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerUpdateById"),Q=t(e=>(e.client??d).put({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/order",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerSetListItemsOrder"),W=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items",...e,headers:{"Content-Type":"application/json",...e.headers}}),"listControllerAddItemsToList"),J=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/lists/{listId}/items/{itemId}",...e}),"listControllerRemoveItemFromList"),K=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/items",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerDelete"),_=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/items",...e}),"itemControllerFind"),X=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/items",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerCreate"),Y=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/items/recently-viewed",...e}),"itemControllerGetRecentlyViewedItems"),Z=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/items/count",...e}),"itemControllerCount"),ee=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...e}),"itemControllerDeleteById"),re=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...e}),"itemControllerFindById"),te=t(e=>(e.client??d).patch({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerUpdateById"),oe=t(e=>(e.client??d).put({security:[{scheme:"bearer",type:"http"}],url:"/items/{itemId}/lists",...e,headers:{"Content-Type":"application/json",...e.headers}}),"itemControllerSetListsById"),se=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/identify",...e,headers:{"Content-Type":"application/json",...e.headers}}),"profileControllerIdentify"),ne=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/profiles/token",...e,headers:{"Content-Type":"application/json",...e.headers}}),"profileControllerCreateToken"),ie=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/profiles",...e}),"profileControllerGetProfile");var le=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/saved-items",...e}),"analyticsControllerLoadSavedItems"),ae=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/sessions",...e}),"analyticsControllerLoadSessions"),de=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/analytics/new-lists",...e}),"analyticsControllerLoadNewLists"),pe=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/collect",...e,headers:{"Content-Type":"application/json",...e.headers}}),"trackingControllerCollect"),ce=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/orders",...e}),"ordersControllerFind"),Ce=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/orders/{orderId}",...e}),"ordersControllerFindOne"),ye=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}/save",...e}),"sharedListsControllerSave"),ue=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...e}),"sharedListsControllerDeleteById"),he=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists/{listId}",...e}),"sharedListsControllerFindById"),fe=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/shared-lists",...e}),"sharedListsControllerFindAll"),me=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/notifications",...e}),"notificationsControllerFind"),Ie=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/notifications/unread/count",...e}),"notificationsControllerGetUnreadCount"),Re=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/notifications/read",...e,headers:{"Content-Type":"application/json",...e.headers}}),"notificationsControllerMarkAsRead"),Oe=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/notifications/{id}",...e}),"notificationsControllerDeleteById"),Ee=t(e=>((e==null?void 0:e.client)??d).get({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions",...e}),"subscriptionsControllerFind"),Se=t(e=>(e.client??d).post({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions",...e,headers:{"Content-Type":"application/json",...e.headers}}),"subscriptionsControllerCreate"),be=t(e=>(e.client??d).delete({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions/{id}",...e}),"subscriptionsControllerDelete"),De=t(e=>(e.client??d).get({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions/{id}",...e}),"subscriptionsControllerFindById"),Le=t(e=>(e.client??d).patch({security:[{scheme:"bearer",type:"http"}],url:"/subscriptions/{id}",...e,headers:{"Content-Type":"application/json",...e.headers}}),"subscriptionsControllerUpdate");var tr="2026-04",zr=t(e=>new Te(e),"createApiClient"),we=class we{constructor(r){this.version=tr;this.items={list:t(r=>this.handlePaginatedRequest(_({query:r,client:this.directClient})),"list"),create:t(r=>this.handleRequest(X({body:r,client:this.directClient})),"create"),delete:t(r=>this.handleRequest(K({body:{itemIds:r},client:this.directClient})),"delete"),findById:t(r=>this.handleRequest(re({path:{itemId:r},client:this.directClient})),"findById"),updateById:t((r,o)=>this.handleRequest(te({body:o,path:{itemId:r},client:this.directClient})),"updateById"),deleteById:t(r=>this.handleRequest(ee({path:{itemId:r},client:this.directClient})),"deleteById"),setListsById:t((r,o)=>this.handleRequest(oe({body:{listIds:o},path:{itemId:r},client:this.directClient})),"setListsById"),count:t(()=>this.handleRequest(Z({client:this.directClient})),"count"),getRecentlyViewed:t(r=>this.handlePaginatedRequest(Y({query:r,client:this.directClient})),"getRecentlyViewed")};this.lists={list:t(r=>this.handlePaginatedRequest(G({query:r,client:this.directClient})),"list"),create:t(r=>this.handleRequest(V({body:r,client:this.directClient})),"create"),findById:t(r=>this.handleRequest($({path:{listId:r},client:this.directClient})),"findById"),updateById:t((r,o)=>this.handleRequest(H({body:o,path:{listId:r},client:this.directClient})),"updateById"),deleteById:t(r=>this.handleRequest(M({path:{listId:r},client:this.directClient})),"deleteById"),orderItems:t((r,o)=>this.handleRequest(Q({body:{itemIds:o},path:{listId:r},client:this.directClient})),"orderItems"),addItemsToList:t((r,o)=>this.handleRequest(W({body:{itemIds:o},path:{listId:r},client:this.directClient})),"addItemsToList"),removeItemFromList:t((r,o)=>this.handleRequest(J({path:{listId:r,itemId:o},client:this.directClient})),"removeItemFromList")};this.profiles={createToken:t((r={})=>this.handleRequest(ne({body:r,client:this.proxyClient??this.directClient})),"createToken"),identify:t(r=>this.handleRequest(se({body:r,client:this.directClient})),"identify"),getProfile:t(()=>this.handleRequest(ie({client:this.directClient})),"getProfile")};this.orders={list:t(r=>this.handlePaginatedRequest(ce({query:r,client:this.directClient})),"list"),findById:t(r=>this.handleRequest(Ce({path:{orderId:r},client:this.directClient})),"findById")};this.sharedLists={list:t(r=>this.handlePaginatedRequest(fe({query:r,client:this.directClient})),"list"),save:t(r=>this.handleRequest(ye({path:{listId:r},client:this.directClient})),"save"),findById:t(r=>this.handleRequest(he({path:{listId:r},client:this.directClient})),"findById"),deleteById:t(r=>this.handleRequest(ue({path:{listId:r},client:this.directClient})),"deleteById")};this.analytics={savedItems:t(r=>this.handleRequest(le({query:r,client:this.directClient})),"savedItems"),sessions:t(r=>this.handleRequest(ae({query:r,client:this.directClient})),"sessions"),newLists:t(r=>this.handleRequest(de({query:r,client:this.directClient})),"newLists")};this.tracking={track:t(r=>this.handleRequest(pe({body:r,client:this.directClient})),"track")};this.notifications={list:t(r=>this.handlePaginatedRequest(me({query:r,client:this.directClient})),"list"),getUnreadCount:t(()=>this.handleRequest(Ie({client:this.directClient})),"getUnreadCount"),markAsRead:t(r=>this.handleRequest(Re({body:{notificationIds:r},client:this.directClient})),"markAsRead"),deleteById:t(r=>this.handleRequest(Oe({path:{id:r},client:this.directClient})),"deleteById")};this.subscriptions={list:t(r=>this.handlePaginatedRequest(Ee({query:r,client:this.directClient})),"list"),create:t(r=>this.handleRequest(Se({body:r,client:this.directClient})),"create"),findById:t(r=>this.handleRequest(De({path:{id:r},client:this.directClient})),"findById"),updateById:t((r,o)=>this.handleRequest(Le({body:o,path:{id:r},client:this.directClient})),"updateById"),deleteById:t(r=>this.handleRequest(be({path:{id:r},client:this.directClient})),"deleteById")};this.handleRequest=t(async r=>{let{data:o,error:s}=await r;return s!=null&&s.error?{error:s.error}:{data:o==null?void 0:o.data}},"handleRequest");this.handlePaginatedRequest=t(async r=>{var i;let{data:o,error:s}=await r;return s!=null&&s.error?{error:s.error}:{data:(o==null?void 0:o.data)??[],pageInfo:(o==null?void 0:o.pageInfo)??{next:null,previous:null,totalCount:((i=o==null?void 0:o.data)==null?void 0:i.length)??0}}},"handlePaginatedRequest");var o,s,i,c;this.directClient=w(S({baseUrl:`https://swish.app/api/${this.version}`,...r.config})),(o=r.config)!=null&&o.authProxy&&(this.proxyClient=w(S({...r.config,baseUrl:r.config.authProxy}))),r.authToken&&(this.authToken=r.authToken),r.requestInterceptor&&((s=this.proxyClient)==null||s.interceptors.request.use(r.requestInterceptor),this.directClient.interceptors.request.use(r.requestInterceptor)),r.responseInterceptor&&((i=this.proxyClient)==null||i.interceptors.response.use(r.responseInterceptor),this.directClient.interceptors.response.use(r.responseInterceptor)),(c=this.proxyClient)==null||c.interceptors.request.use(this.proxyRequestInterceptor.bind(this)),this.directClient.interceptors.request.use(this.directRequestInterceptor.bind(this))}setAuthToken(r){this.authToken=r}proxyRequestInterceptor(r){return this.version&&r.headers.set("Swish-Api-Version",this.version),r}directRequestInterceptor(r){return this.authToken&&r.headers.set("Authorization",`Bearer ${this.authToken}`),r}};t(we,"SwishClient");var Te=we;export{tr as apiVersion,zr as createApiClient};
@@ -0,0 +1,2 @@
1
+ import type { Client, Config } from './types.gen';
2
+ export declare const createClient: (config?: Config) => Client;
@@ -0,0 +1,8 @@
1
+ export type { Auth } from '../core/auth.gen';
2
+ export type { QuerySerializerOptions } from '../core/bodySerializer.gen';
3
+ export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer, } from '../core/bodySerializer.gen';
4
+ export { buildClientParams } from '../core/params.gen';
5
+ export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen';
6
+ export { createClient } from './client.gen';
7
+ export type { Client, ClientOptions, Config, CreateClientConfig, Options, RequestOptions, RequestResult, ResolvedRequestOptions, ResponseStyle, TDataShape, } from './types.gen';
8
+ export { createConfig, mergeHeaders } from './utils.gen';