//native
/**
* List Requisitions
* Query requisitions with optional filters. Returns up to 50 records per page; paginate with offset.
*/
export async function main(
auth: RT.Coupa,
status:
| "draft"
| "cart"
| "pending_buyer_action"
| "pending_approval"
| "approved"
| "ordered"
| "partially_received"
| "received"
| "abandoned"
| "backgrounded"
| "withdrawn"
| undefined,
requester_login: string | undefined,
updated_after: string | undefined,
exported: boolean | undefined,
limit: number | undefined,
offset: number | undefined,
return_object: "limited" | "shallow" | undefined
) {
const base = auth.instance_url.replace(/\/+$/, "")
const url = new URL(`${base}/api/requisitions`)
const filters: { [key: string]: string | number | boolean | undefined } = {
status,
"requester[login]": requester_login,
"updated_at[gt]": updated_after,
exported,
limit,
offset,
return_object,
}
for (const [k, v] of Object.entries(filters)) {
if (v !== undefined && v !== "") {
url.searchParams.append(k, String(v))
}
}
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/json",
},
})
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
return await response.json()
}
Submitted by hugo989 4 hours ago