export interface Accumulator { data: Record[] included: Record[] meta: Record links: Record } export interface WalkRequest extends GetRequest { acc?: Accumulator } export interface GenericRequest { headers?: Record url: string } export interface GetRequest extends GenericRequest { data: { filter?: string fields: Record where?: Record include?: string[] order?: string perPage?: number offset?: number walk?: boolean } & Record } export interface Relationship { data: { type: string id: string } } export type Relationships = Record export interface PostRequest extends GenericRequest { data?: { fields?: Record // value should be comma separated string include?: string[] data?: { type: string attributes: Record relationships?: Relationships } } } export type PatchRequest = PostRequest export interface DeleteRequest extends GenericRequest {} export interface ApiClient { get(_request: GetRequest): Promise post(_request: PostRequest): Promise patch(_request: PatchRequest): Promise delete(_request: DeleteRequest): Promise } export type RequestData = { fields: Record where: Record include: string[] data: Record perPage: number offset: number order: string }