@swishapp/api-client 0.21.0 → 0.23.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/dist/client.d.ts CHANGED
@@ -1,5 +1,7 @@
1
- import type { SwishClientConfig, SwishClientOptions, ApiResponse } from "./types";
1
+ import type { SwishClientConfig, SwishClientOptions, ApiResponse, PaginatedApiResponse } from "./types";
2
2
  import type * as types from "./openapi/types.gen";
3
+ export declare const apiVersion = "2025-10";
4
+ export declare const baseUrl = "https://swish.app/api/2025-10";
3
5
  export declare const createApiClient: (options: SwishClientOptions) => SwishClient;
4
6
  export type { SwishClient };
5
7
  declare class SwishClient {
@@ -13,7 +15,7 @@ declare class SwishClient {
13
15
  setConfig(config: SwishClientConfig): void;
14
16
  requestInterceptor(request: Request): Request;
15
17
  readonly items: {
16
- list: (query?: types.ItemControllerFindData["query"]) => Promise<ApiResponse<types.Item[]>>;
18
+ list: (query?: types.ItemControllerFindData["query"]) => Promise<PaginatedApiResponse<types.Item>>;
17
19
  create: (items: types.CreateItemInput) => Promise<ApiResponse<types.Item>>;
18
20
  delete: (itemIds: types.DeleteItemsInput["itemIds"]) => Promise<ApiResponse<unknown>>;
19
21
  findById: (itemId: string) => Promise<ApiResponse<types.ItemDetail>>;
@@ -22,9 +24,9 @@ declare class SwishClient {
22
24
  setListsById: (itemId: string, listIds: types.SetItemListsInput["listIds"]) => Promise<ApiResponse<types.ItemDetail>>;
23
25
  };
24
26
  readonly lists: {
25
- list: (query?: types.ListControllerFindData["query"]) => Promise<ApiResponse<types.List[]>>;
27
+ list: (query?: types.ListControllerFindData["query"]) => Promise<PaginatedApiResponse<types.ListDetail>>;
26
28
  create: (list: types.CreateListInput) => Promise<ApiResponse<types.List>>;
27
- findById: (listId: string, query?: types.ListControllerFindByIdData["query"]) => Promise<ApiResponse<types.ListDetail>>;
29
+ findById: (listId: string) => Promise<ApiResponse<types.ListDetail>>;
28
30
  updateById: (listId: string, body: types.UpdateListInput) => Promise<ApiResponse<types.List>>;
29
31
  deleteById: (listId: string) => Promise<ApiResponse<unknown>>;
30
32
  orderItems: (listId: string, itemIds: types.SetListItemsOrderInput["itemIds"]) => Promise<ApiResponse<types.List>>;
@@ -36,4 +38,5 @@ declare class SwishClient {
36
38
  identify: (body: types.IdentifyProfileInput) => Promise<ApiResponse<types.IdentifyProfileResult>>;
37
39
  };
38
40
  private readonly handleRequest;
41
+ private readonly handlePaginatedRequest;
39
42
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
1
  export * from "./client";
2
2
  export type * from "./types";
3
3
  export type * from "./openapi/types.gen";
4
- export declare const baseUrl = "https://swish.app/api/2025-07";
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- var M=Object.defineProperty;var o=(e,r)=>M(e,"name",{value:r,configurable:!0});var X=o(async(e,r)=>{let t=typeof r=="function"?await r(e):r;if(t)return e.scheme==="bearer"?`Bearer ${t}`:e.scheme==="basic"?`Basic ${btoa(t)}`:t},"A");var Y={bodySerializer:o(e=>JSON.stringify(e,(r,t)=>typeof t=="bigint"?t.toString():t),"bodySerializer")};var Z=o(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"U"),ee=o(e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"_"),re=o(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"D"),g=o(({allowReserved:e,explode:r,name:t,style:s,value:i})=>{if(!r){let l=(e?i:i.map(d=>encodeURIComponent(d))).join(ee(s));switch(s){case"label":return`.${l}`;case"matrix":return`;${t}=${l}`;case"simple":return l;default:return`${t}=${l}`}}let a=Z(s),n=i.map(l=>s==="label"||s==="simple"?e?l:encodeURIComponent(l):w({allowReserved:e,name:t,value:l})).join(a);return s==="label"||s==="matrix"?a+n:n},"O"),w=o(({allowReserved:e,name:r,value:t})=>{if(t==null)return"";if(typeof t=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${r}=${e?t:encodeURIComponent(t)}`},"y"),B=o(({allowReserved:e,explode:r,name:t,style:s,value:i})=>{if(i instanceof Date)return`${t}=${i.toISOString()}`;if(s!=="deepObject"&&!r){let l=[];Object.entries(i).forEach(([y,h])=>{l=[...l,y,e?h:encodeURIComponent(h)]});let d=l.join(",");switch(s){case"form":return`${t}=${d}`;case"label":return`.${d}`;case"matrix":return`;${t}=${d}`;default:return d}}let a=re(s),n=Object.entries(i).map(([l,d])=>w({allowReserved:e,name:s==="deepObject"?`${t}[${l}]`:l,value:d})).join(a);return s==="label"||s==="matrix"?a+n:n},"q"),te=/\{[^{}]+\}/g,oe=o(({path:e,url:r})=>{let t=r,s=r.match(te);if(s)for(let i of s){let a=!1,n=i.substring(1,i.length-1),l="simple";n.endsWith("*")&&(a=!0,n=n.substring(0,n.length-1)),n.startsWith(".")?(n=n.substring(1),l="label"):n.startsWith(";")&&(n=n.substring(1),l="matrix");let d=e[n];if(d==null)continue;if(Array.isArray(d)){t=t.replace(i,g({explode:a,name:n,style:l,value:d}));continue}if(typeof d=="object"){t=t.replace(i,B({explode:a,name:n,style:l,value:d}));continue}if(l==="matrix"){t=t.replace(i,`;${w({name:n,value:d})}`);continue}let y=encodeURIComponent(l==="label"?`.${d}`:d);t=t.replace(i,y)}return t},"B"),S=o(({allowReserved:e,array:r,object:t}={})=>s=>{let i=[];if(s&&typeof s=="object")for(let a in s){let n=s[a];if(n!=null){if(Array.isArray(n)){i=[...i,g({allowReserved:e,explode:!0,name:a,style:"form",value:n,...r})];continue}if(typeof n=="object"){i=[...i,B({allowReserved:e,explode:!0,name:a,style:"deepObject",value:n,...t})];continue}i=[...i,w({allowReserved:e,name:a,value:n})]}}return i.join("&")},"E"),ne=o(e=>{var t;if(!e)return"stream";let r=(t=e.split(";")[0])==null?void 0:t.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"}},"P"),le=o(async({security:e,...r})=>{for(let t of e){let s=await X(t,r.auth);if(!s)continue;let i=t.name??"Authorization";switch(t.in){case"query":r.query||(r.query={}),r.query[i]=s;break;case"header":default:r.headers.set(i,s);break}return}},"I"),R=o(e=>se({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:S(e.querySerializer),url:e.url}),"S"),se=o(({baseUrl:e,path:r,query:t,querySerializer:s,url:i})=>{let a=i.startsWith("/")?i:`/${i}`,n=(e??"")+a;r&&(n=oe({path:r,url:n}));let l=t?s(t):"";return l.startsWith("?")&&(l=l.substring(1)),l&&(n+=`?${l}`),n},"W"),x=o((e,r)=>{var s;let t={...e,...r};return(s=t.baseUrl)!=null&&s.endsWith("/")&&(t.baseUrl=t.baseUrl.substring(0,t.baseUrl.length-1)),t.headers=A(e.headers,r.headers),t},"C"),A=o((...e)=>{let r=new Headers;for(let t of e){if(!t||typeof t!="object")continue;let s=t instanceof Headers?t.entries():Object.entries(t);for(let[i,a]of s)if(a===null)r.delete(i);else if(Array.isArray(a))for(let n of a)r.append(i,n);else a!==void 0&&r.set(i,typeof a=="object"?JSON.stringify(a):a)}return r},"x"),C,L=(C=class{_fns;constructor(){this._fns=[]}clear(){this._fns=[]}exists(r){return this._fns.indexOf(r)!==-1}eject(r){let t=this._fns.indexOf(r);t!==-1&&(this._fns=[...this._fns.slice(0,t),...this._fns.slice(t+1)])}use(r){this._fns=[...this._fns,r]}},o(C,"m"),C),ie=o(()=>({error:new L,request:new L,response:new L}),"T"),ae=S({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),de={"Content-Type":"application/json"},m=o((e={})=>({...Y,headers:de,parseAs:"auto",querySerializer:ae,...e}),"w"),E=o((e={})=>{let r=x(m(),e),t=o(()=>({...r}),"e"),s=o(n=>(r=x(r,n),t()),"a"),i=ie(),a=o(async n=>{let l={...r,...n,fetch:n.fetch??r.fetch??globalThis.fetch,headers:A(r.headers,n.headers)};l.security&&await le({...l,security:l.security}),l.body&&l.bodySerializer&&(l.body=l.bodySerializer(l.body)),(l.body===void 0||l.body==="")&&l.headers.delete("Content-Type");let d=R(l),y={redirect:"follow",...l},h=new Request(d,y);for(let u of i.request._fns)h=await u(h,l);let K=l.fetch,c=await K(h);for(let u of i.response._fns)c=await u(c,h,l);let I={request:h,response:c};if(c.ok){if(c.status===204||c.headers.get("Content-Length")==="0")return{data:{},...I};let u=(l.parseAs==="auto"?ne(c.headers.get("Content-Type")):l.parseAs)??"json";if(u==="stream")return{data:c.body,...I};let T=await c[u]();return u==="json"&&(l.responseValidator&&await l.responseValidator(T),l.responseTransformer&&(T=await l.responseTransformer(T))),{data:T,...I}}let O=await c.text();try{O=JSON.parse(O)}catch{}let f=O;for(let u of i.error._fns)f=await u(O,c,h,l);if(f=f||{},l.throwOnError)throw f;return{error:f,...I}},"o");return{buildUrl:R,connect:o(n=>a({...n,method:"CONNECT"}),"connect"),delete:o(n=>a({...n,method:"DELETE"}),"delete"),get:o(n=>a({...n,method:"GET"}),"get"),getConfig:t,head:o(n=>a({...n,method:"HEAD"}),"head"),interceptors:i,options:o(n=>a({...n,method:"OPTIONS"}),"options"),patch:o(n=>a({...n,method:"PATCH"}),"patch"),post:o(n=>a({...n,method:"POST"}),"post"),put:o(n=>a({...n,method:"PUT"}),"put"),request:a,setConfig:s,trace:o(n=>a({...n,method:"TRACE"}),"trace")}},"J");var p=E(m({baseUrl:"https://swish.app/api/2025-07"}));var q=o(e=>((e==null?void 0:e.client)??p).get({url:"/lists",...e}),"listControllerFind"),j=o(e=>(e.client??p).post({url:"/lists",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerCreate"),k=o(e=>(e.client??p).delete({url:"/lists/{listId}",...e}),"listControllerDeleteById"),v=o(e=>(e.client??p).get({url:"/lists/{listId}",...e}),"listControllerFindById"),U=o(e=>(e.client??p).patch({url:"/lists/{listId}",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerUpdateById"),F=o(e=>(e.client??p).put({url:"/lists/{listId}/items/order",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerSetListItemsOrder"),P=o(e=>(e.client??p).post({url:"/lists/{listId}/items",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerAddItemsToList"),$=o(e=>(e.client??p).delete({url:"/items",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerDelete"),z=o(e=>((e==null?void 0:e.client)??p).get({url:"/items",...e}),"itemControllerFind"),N=o(e=>(e.client??p).post({url:"/items",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerCreate"),_=o(e=>(e.client??p).delete({url:"/items/{itemId}",...e}),"itemControllerDeleteById"),V=o(e=>(e.client??p).get({url:"/items/{itemId}",...e}),"itemControllerFindById"),W=o(e=>(e.client??p).patch({url:"/items/{itemId}",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerUpdateById"),J=o(e=>(e.client??p).put({url:"/items/{itemId}/lists",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerSetListsById"),H=o(e=>((e==null?void 0:e.client)??p).get({url:"/profiles/accounts-version",...e}),"profileControllerCustomerAccountsVersion"),G=o(e=>(e.client??p).post({url:"/profiles/identify",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"profileControllerIdentify"),Q=o(e=>(e.client??p).post({url:"/profiles/token",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"profileControllerCreateToken");var Ee=o(e=>new b(e),"createApiClient"),D=class D{constructor(r){this.client=E(m({baseUrl:"https://swish.app/api/2025-07"}));this.items={list:o(r=>this.handleRequest(z({query:r,client:this.client})),"list"),create:o(r=>this.handleRequest(N({body:r,client:this.client})),"create"),delete:o(r=>this.handleRequest($({body:{itemIds:r},client:this.client})),"delete"),findById:o(r=>this.handleRequest(V({path:{itemId:r},client:this.client})),"findById"),updateById:o((r,t)=>this.handleRequest(W({body:t,path:{itemId:r},client:this.client})),"updateById"),deleteById:o(r=>this.handleRequest(_({path:{itemId:r},client:this.client})),"deleteById"),setListsById:o((r,t)=>this.handleRequest(J({body:{listIds:t},path:{itemId:r},client:this.client})),"setListsById")};this.lists={list:o(r=>this.handleRequest(q({query:r,client:this.client})),"list"),create:o(r=>this.handleRequest(j({body:r,client:this.client})),"create"),findById:o((r,t)=>this.handleRequest(v({path:{listId:r},query:t??{sort:"recently_saved"},client:this.client})),"findById"),updateById:o((r,t)=>this.handleRequest(U({body:t,path:{listId:r},client:this.client})),"updateById"),deleteById:o(r=>this.handleRequest(k({path:{listId:r},client:this.client})),"deleteById"),orderItems:o((r,t)=>this.handleRequest(F({body:{itemIds:t},path:{listId:r},client:this.client})),"orderItems"),addItemsToList:o((r,t)=>this.handleRequest(P({body:{itemIds:t},path:{listId:r},client:this.client})),"addItemsToList")};this.profiles={customerAccountsVersion:o(()=>this.handleRequest(H({client:this.client})),"customerAccountsVersion"),createToken:o((r={})=>this.handleRequest(Q({body:r,client:this.client})),"createToken"),identify:o(r=>this.handleRequest(G({body:r,client:this.client})),"identify")};this.handleRequest=o(async r=>{let{data:t,error:s}=await r;if(s!=null&&s.error)return{data:null,error:s==null?void 0:s.error};if(t!=null&&t.data){let i={data:t.data,error:null};return t.pageInfo&&(i.pageInfo=t.pageInfo),i}return{data:null,error:null}},"handleRequest");this.profile=r.profile,r.authToken&&(this.authToken=r.authToken),r.config&&this.client.setConfig(r.config),this.client.interceptors.request.use(this.requestInterceptor.bind(this)),r.requestInterceptor&&this.client.interceptors.request.use(r.requestInterceptor),r.responseInterceptor&&this.client.interceptors.response.use(r.responseInterceptor)}setProfile(r){this.profile=r}getProfile(){return this.profile}setAuthToken(r){this.authToken=r}setConfig(r){this.client.setConfig(r)}requestInterceptor(r){return this.authToken&&r.headers.set("Authorization",`Bearer ${this.authToken}`),this.profile&&r.headers.set("Profile",this.profile),r}};o(D,"SwishClient");var b=D;var De="https://swish.app/api/2025-07";export{De as baseUrl,Ee as createApiClient};
1
+ var M=Object.defineProperty;var o=(e,r)=>M(e,"name",{value:r,configurable:!0});var X=o(async(e,r)=>{let t=typeof r=="function"?await r(e):r;if(t)return e.scheme==="bearer"?`Bearer ${t}`:e.scheme==="basic"?`Basic ${btoa(t)}`:t},"A");var Y={bodySerializer:o(e=>JSON.stringify(e,(r,t)=>typeof t=="bigint"?t.toString():t),"bodySerializer")};var Z=o(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"U"),ee=o(e=>{switch(e){case"form":return",";case"pipeDelimited":return"|";case"spaceDelimited":return"%20";default:return","}},"_"),re=o(e=>{switch(e){case"label":return".";case"matrix":return";";case"simple":return",";default:return"&"}},"D"),g=o(({allowReserved:e,explode:r,name:t,style:s,value:i})=>{if(!r){let l=(e?i:i.map(d=>encodeURIComponent(d))).join(ee(s));switch(s){case"label":return`.${l}`;case"matrix":return`;${t}=${l}`;case"simple":return l;default:return`${t}=${l}`}}let a=Z(s),n=i.map(l=>s==="label"||s==="simple"?e?l:encodeURIComponent(l):w({allowReserved:e,name:t,value:l})).join(a);return s==="label"||s==="matrix"?a+n:n},"O"),w=o(({allowReserved:e,name:r,value:t})=>{if(t==null)return"";if(typeof t=="object")throw new Error("Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these.");return`${r}=${e?t:encodeURIComponent(t)}`},"y"),B=o(({allowReserved:e,explode:r,name:t,style:s,value:i})=>{if(i instanceof Date)return`${t}=${i.toISOString()}`;if(s!=="deepObject"&&!r){let l=[];Object.entries(i).forEach(([y,h])=>{l=[...l,y,e?h:encodeURIComponent(h)]});let d=l.join(",");switch(s){case"form":return`${t}=${d}`;case"label":return`.${d}`;case"matrix":return`;${t}=${d}`;default:return d}}let a=re(s),n=Object.entries(i).map(([l,d])=>w({allowReserved:e,name:s==="deepObject"?`${t}[${l}]`:l,value:d})).join(a);return s==="label"||s==="matrix"?a+n:n},"q"),te=/\{[^{}]+\}/g,oe=o(({path:e,url:r})=>{let t=r,s=r.match(te);if(s)for(let i of s){let a=!1,n=i.substring(1,i.length-1),l="simple";n.endsWith("*")&&(a=!0,n=n.substring(0,n.length-1)),n.startsWith(".")?(n=n.substring(1),l="label"):n.startsWith(";")&&(n=n.substring(1),l="matrix");let d=e[n];if(d==null)continue;if(Array.isArray(d)){t=t.replace(i,g({explode:a,name:n,style:l,value:d}));continue}if(typeof d=="object"){t=t.replace(i,B({explode:a,name:n,style:l,value:d}));continue}if(l==="matrix"){t=t.replace(i,`;${w({name:n,value:d})}`);continue}let y=encodeURIComponent(l==="label"?`.${d}`:d);t=t.replace(i,y)}return t},"B"),S=o(({allowReserved:e,array:r,object:t}={})=>s=>{let i=[];if(s&&typeof s=="object")for(let a in s){let n=s[a];if(n!=null){if(Array.isArray(n)){i=[...i,g({allowReserved:e,explode:!0,name:a,style:"form",value:n,...r})];continue}if(typeof n=="object"){i=[...i,B({allowReserved:e,explode:!0,name:a,style:"deepObject",value:n,...t})];continue}i=[...i,w({allowReserved:e,name:a,value:n})]}}return i.join("&")},"E"),ne=o(e=>{var t;if(!e)return"stream";let r=(t=e.split(";")[0])==null?void 0:t.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"}},"P"),le=o(async({security:e,...r})=>{for(let t of e){let s=await X(t,r.auth);if(!s)continue;let i=t.name??"Authorization";switch(t.in){case"query":r.query||(r.query={}),r.query[i]=s;break;case"header":default:r.headers.set(i,s);break}return}},"I"),R=o(e=>se({baseUrl:e.baseUrl,path:e.path,query:e.query,querySerializer:typeof e.querySerializer=="function"?e.querySerializer:S(e.querySerializer),url:e.url}),"S"),se=o(({baseUrl:e,path:r,query:t,querySerializer:s,url:i})=>{let a=i.startsWith("/")?i:`/${i}`,n=(e??"")+a;r&&(n=oe({path:r,url:n}));let l=t?s(t):"";return l.startsWith("?")&&(l=l.substring(1)),l&&(n+=`?${l}`),n},"W"),x=o((e,r)=>{var s;let t={...e,...r};return(s=t.baseUrl)!=null&&s.endsWith("/")&&(t.baseUrl=t.baseUrl.substring(0,t.baseUrl.length-1)),t.headers=A(e.headers,r.headers),t},"C"),A=o((...e)=>{let r=new Headers;for(let t of e){if(!t||typeof t!="object")continue;let s=t instanceof Headers?t.entries():Object.entries(t);for(let[i,a]of s)if(a===null)r.delete(i);else if(Array.isArray(a))for(let n of a)r.append(i,n);else a!==void 0&&r.set(i,typeof a=="object"?JSON.stringify(a):a)}return r},"x"),C,L=(C=class{_fns;constructor(){this._fns=[]}clear(){this._fns=[]}exists(r){return this._fns.indexOf(r)!==-1}eject(r){let t=this._fns.indexOf(r);t!==-1&&(this._fns=[...this._fns.slice(0,t),...this._fns.slice(t+1)])}use(r){this._fns=[...this._fns,r]}},o(C,"m"),C),ie=o(()=>({error:new L,request:new L,response:new L}),"T"),ae=S({allowReserved:!1,array:{explode:!0,style:"form"},object:{explode:!0,style:"deepObject"}}),de={"Content-Type":"application/json"},m=o((e={})=>({...Y,headers:de,parseAs:"auto",querySerializer:ae,...e}),"w"),E=o((e={})=>{let r=x(m(),e),t=o(()=>({...r}),"e"),s=o(n=>(r=x(r,n),t()),"a"),i=ie(),a=o(async n=>{let l={...r,...n,fetch:n.fetch??r.fetch??globalThis.fetch,headers:A(r.headers,n.headers)};l.security&&await le({...l,security:l.security}),l.body&&l.bodySerializer&&(l.body=l.bodySerializer(l.body)),(l.body===void 0||l.body==="")&&l.headers.delete("Content-Type");let d=R(l),y={redirect:"follow",...l},h=new Request(d,y);for(let u of i.request._fns)h=await u(h,l);let K=l.fetch,c=await K(h);for(let u of i.response._fns)c=await u(c,h,l);let I={request:h,response:c};if(c.ok){if(c.status===204||c.headers.get("Content-Length")==="0")return{data:{},...I};let u=(l.parseAs==="auto"?ne(c.headers.get("Content-Type")):l.parseAs)??"json";if(u==="stream")return{data:c.body,...I};let T=await c[u]();return u==="json"&&(l.responseValidator&&await l.responseValidator(T),l.responseTransformer&&(T=await l.responseTransformer(T))),{data:T,...I}}let O=await c.text();try{O=JSON.parse(O)}catch{}let f=O;for(let u of i.error._fns)f=await u(O,c,h,l);if(f=f||{},l.throwOnError)throw f;return{error:f,...I}},"o");return{buildUrl:R,connect:o(n=>a({...n,method:"CONNECT"}),"connect"),delete:o(n=>a({...n,method:"DELETE"}),"delete"),get:o(n=>a({...n,method:"GET"}),"get"),getConfig:t,head:o(n=>a({...n,method:"HEAD"}),"head"),interceptors:i,options:o(n=>a({...n,method:"OPTIONS"}),"options"),patch:o(n=>a({...n,method:"PATCH"}),"patch"),post:o(n=>a({...n,method:"POST"}),"post"),put:o(n=>a({...n,method:"PUT"}),"put"),request:a,setConfig:s,trace:o(n=>a({...n,method:"TRACE"}),"trace")}},"J");var p=E(m({baseUrl:"https://swish.app/api/2025-10"}));var q=o(e=>((e==null?void 0:e.client)??p).get({url:"/lists",...e}),"listControllerFind"),v=o(e=>(e.client??p).post({url:"/lists",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerCreate"),j=o(e=>(e.client??p).delete({url:"/lists/{listId}",...e}),"listControllerDeleteById"),k=o(e=>(e.client??p).get({url:"/lists/{listId}",...e}),"listControllerFindById"),P=o(e=>(e.client??p).patch({url:"/lists/{listId}",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerUpdateById"),U=o(e=>(e.client??p).put({url:"/lists/{listId}/items/order",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerSetListItemsOrder"),F=o(e=>(e.client??p).post({url:"/lists/{listId}/items",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"listControllerAddItemsToList"),$=o(e=>(e.client??p).delete({url:"/items",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerDelete"),z=o(e=>((e==null?void 0:e.client)??p).get({url:"/items",...e}),"itemControllerFind"),N=o(e=>(e.client??p).post({url:"/items",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerCreate"),_=o(e=>(e.client??p).delete({url:"/items/{itemId}",...e}),"itemControllerDeleteById"),V=o(e=>(e.client??p).get({url:"/items/{itemId}",...e}),"itemControllerFindById"),W=o(e=>(e.client??p).patch({url:"/items/{itemId}",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerUpdateById"),J=o(e=>(e.client??p).put({url:"/items/{itemId}/lists",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"itemControllerSetListsById"),H=o(e=>((e==null?void 0:e.client)??p).get({url:"/profiles/accounts-version",...e}),"profileControllerCustomerAccountsVersion"),G=o(e=>(e.client??p).post({url:"/profiles/identify",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"profileControllerIdentify"),Q=o(e=>(e.client??p).post({url:"/profiles/token",...e,headers:{"Content-Type":"application/json",...e==null?void 0:e.headers}}),"profileControllerCreateToken");var ce="2025-10",he=`https://swish.app/api/${ce}`,be=o(e=>new b(e),"createApiClient"),D=class D{constructor(r){this.client=E(m({baseUrl:he}));this.items={list:o(r=>this.handlePaginatedRequest(z({query:r,client:this.client})),"list"),create:o(r=>this.handleRequest(N({body:r,client:this.client})),"create"),delete:o(r=>this.handleRequest($({body:{itemIds:r},client:this.client})),"delete"),findById:o(r=>this.handleRequest(V({path:{itemId:r},client:this.client})),"findById"),updateById:o((r,t)=>this.handleRequest(W({body:t,path:{itemId:r},client:this.client})),"updateById"),deleteById:o(r=>this.handleRequest(_({path:{itemId:r},client:this.client})),"deleteById"),setListsById:o((r,t)=>this.handleRequest(J({body:{listIds:t},path:{itemId:r},client:this.client})),"setListsById")};this.lists={list:o(r=>this.handlePaginatedRequest(q({query:r,client:this.client})),"list"),create:o(r=>this.handleRequest(v({body:r,client:this.client})),"create"),findById:o(r=>this.handleRequest(k({path:{listId:r},client:this.client})),"findById"),updateById:o((r,t)=>this.handleRequest(P({body:t,path:{listId:r},client:this.client})),"updateById"),deleteById:o(r=>this.handleRequest(j({path:{listId:r},client:this.client})),"deleteById"),orderItems:o((r,t)=>this.handleRequest(U({body:{itemIds:t},path:{listId:r},client:this.client})),"orderItems"),addItemsToList:o((r,t)=>this.handleRequest(F({body:{itemIds:t},path:{listId:r},client:this.client})),"addItemsToList")};this.profiles={customerAccountsVersion:o(()=>this.handleRequest(H({client:this.client})),"customerAccountsVersion"),createToken:o((r={})=>this.handleRequest(Q({body:r,client:this.client})),"createToken"),identify:o(r=>this.handleRequest(G({body:r,client:this.client})),"identify")};this.handleRequest=o(async r=>{let{data:t,error:s}=await r;return s!=null&&s.error?{error:s.error}:{data:t==null?void 0:t.data}},"handleRequest");this.handlePaginatedRequest=o(async r=>{var i;let{data:t,error:s}=await r;return s!=null&&s.error?{error:s.error}:{data:(t==null?void 0:t.data)??[],pageInfo:(t==null?void 0:t.pageInfo)??{next:null,previous:null,totalCount:((i=t==null?void 0:t.data)==null?void 0:i.length)??0}}},"handlePaginatedRequest");this.profile=r.profile,r.authToken&&(this.authToken=r.authToken),r.config&&this.client.setConfig(r.config),this.client.interceptors.request.use(this.requestInterceptor.bind(this)),r.requestInterceptor&&this.client.interceptors.request.use(r.requestInterceptor),r.responseInterceptor&&this.client.interceptors.response.use(r.responseInterceptor)}setProfile(r){this.profile=r}getProfile(){return this.profile}setAuthToken(r){this.authToken=r}setConfig(r){this.client.setConfig(r)}requestInterceptor(r){return this.authToken&&r.headers.set("Authorization",`Bearer ${this.authToken}`),this.profile&&r.headers.set("Profile",this.profile),r}};o(D,"SwishClient");var b=D;export{ce as apiVersion,he as baseUrl,be as createApiClient};
@@ -14,7 +14,7 @@ export type Options<TData extends TDataShape = TDataShape, ThrowOnError extends
14
14
  meta?: Record<string, unknown>;
15
15
  };
16
16
  export declare const listControllerFind: <ThrowOnError extends boolean = false>(options?: Options<ListControllerFindData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").Response & {
17
- data?: Array<import("./types.gen").List>;
17
+ data?: Array<import("./types.gen").ListDetail>;
18
18
  }, ListControllerFindError, ThrowOnError>;
19
19
  export declare const listControllerCreate: <ThrowOnError extends boolean = false>(options: Options<ListControllerCreateData, ThrowOnError>) => import("@hey-api/client-fetch").RequestResult<import("./types.gen").Response & {
20
20
  data?: import("./types.gen").List;
@@ -1,29 +1,3 @@
1
- export type Item = {
2
- /**
3
- * The ID of the item
4
- */
5
- id: string;
6
- /**
7
- * The Shopify ID of the product
8
- */
9
- productId: number;
10
- /**
11
- * The Shopify ID of the variant
12
- */
13
- variantId: number | null;
14
- /**
15
- * The quantity of the item in the list
16
- */
17
- quantity: number;
18
- /**
19
- * The date and time the item was created
20
- */
21
- createdAt: string;
22
- /**
23
- * The date and time the item was updated
24
- */
25
- updatedAt: string;
26
- };
27
1
  export type ListDetail = {
28
2
  /**
29
3
  * The ID of the list
@@ -42,9 +16,13 @@ export type ListDetail = {
42
16
  */
43
17
  updatedAt: string;
44
18
  /**
45
- * The items in the list
19
+ * The number of items in the list
20
+ */
21
+ itemCount: number;
22
+ /**
23
+ * Array of image URLs for the first 4 items in the list
46
24
  */
47
- items: Array<Item>;
25
+ imageUrls: Array<string>;
48
26
  };
49
27
  export type List = {
50
28
  /**
@@ -63,14 +41,6 @@ export type List = {
63
41
  * The date and time the list was updated
64
42
  */
65
43
  updatedAt: string;
66
- /**
67
- * The number of items in the list
68
- */
69
- itemCount: number;
70
- /**
71
- * Array of image URLs for the first 4 items in the list
72
- */
73
- imageUrls: Array<string>;
74
44
  };
75
45
  export type _Error = {
76
46
  /**
@@ -170,6 +140,32 @@ export type ItemDetail = {
170
140
  */
171
141
  listIds: Array<string>;
172
142
  };
143
+ export type Item = {
144
+ /**
145
+ * The ID of the item
146
+ */
147
+ id: string;
148
+ /**
149
+ * The Shopify ID of the product
150
+ */
151
+ productId: number;
152
+ /**
153
+ * The Shopify ID of the variant
154
+ */
155
+ variantId: number | null;
156
+ /**
157
+ * The quantity of the item in the list
158
+ */
159
+ quantity: number;
160
+ /**
161
+ * The date and time the item was created
162
+ */
163
+ createdAt: string;
164
+ /**
165
+ * The date and time the item was updated
166
+ */
167
+ updatedAt: string;
168
+ };
173
169
  export type CreateItemInput = {
174
170
  /**
175
171
  * The Shopify ID of the product
@@ -312,7 +308,7 @@ export type ListControllerFindResponses = {
312
308
  * Returns all lists as paginated response
313
309
  */
314
310
  200: Response & {
315
- data?: Array<List>;
311
+ data?: Array<ListDetail>;
316
312
  };
317
313
  };
318
314
  export type ListControllerFindResponse = ListControllerFindResponses[keyof ListControllerFindResponses];
@@ -435,12 +431,7 @@ export type ListControllerFindByIdData = {
435
431
  */
436
432
  listId: string;
437
433
  };
438
- query: {
439
- /**
440
- * The sort order of the items in the list
441
- */
442
- sort: 'recently_saved' | 'custom';
443
- };
434
+ query?: never;
444
435
  url: '/lists/{listId}';
445
436
  };
446
437
  export type ListControllerFindByIdErrors = {
@@ -733,6 +724,10 @@ export type ItemControllerFindData = {
733
724
  * Item search query
734
725
  */
735
726
  query?: string;
727
+ /**
728
+ * List ID to filter items by specific list
729
+ */
730
+ listId?: string;
736
731
  };
737
732
  url: '/items';
738
733
  };
@@ -1448,5 +1443,5 @@ export type AnalyticsControllerLoadNewListsResponses = {
1448
1443
  };
1449
1444
  export type AnalyticsControllerLoadNewListsResponse = AnalyticsControllerLoadNewListsResponses[keyof AnalyticsControllerLoadNewListsResponses];
1450
1445
  export type ClientOptions = {
1451
- baseUrl: 'https://swish.app/api/2025-07' | (string & {});
1446
+ baseUrl: 'https://swish.app/api/2025-10' | (string & {});
1452
1447
  };
package/dist/types.d.ts CHANGED
@@ -33,10 +33,19 @@ export interface ApiError {
33
33
  requestId: string;
34
34
  statusCode: number;
35
35
  }
36
+ export interface ApiErrorResponse {
37
+ error: ApiError;
38
+ }
36
39
  export type ApiResponse<TData> = {
37
40
  data: TData | null;
38
- error: ApiError | null;
39
- pageInfo?: PageInfo;
41
+ } | {
42
+ error: ApiError;
43
+ };
44
+ export type PaginatedApiResponse<TData> = {
45
+ data: TData[];
46
+ pageInfo: PageInfo;
47
+ } | {
48
+ error: ApiError;
40
49
  };
41
50
  export type ApiRequestResponse<TData> = Promise<{
42
51
  data?: {
@@ -44,6 +53,6 @@ export type ApiRequestResponse<TData> = Promise<{
44
53
  pageInfo?: PageInfo;
45
54
  } | void;
46
55
  error?: {
47
- error: unknown;
56
+ error: ApiError;
48
57
  };
49
58
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@swishapp/api-client",
3
- "version": "0.21.0",
3
+ "version": "0.23.0",
4
4
  "description": "A lightweight JS client for the Swish REST API.",
5
5
  "homepage": "https://developers.swish.app/libraries/api-client",
6
6
  "type": "module",