//native
import * as wmill from "windmill-client"
/**
* New Mailing
* Returns mailings created since the last run (first run sets the watermark and returns nothing).
*/
export async function main(auth: RT.Outreach) {
const lastChecked: string | undefined = await wmill.getState()
const url = new URL("https://api.outreach.io/api/v2/mailings")
url.searchParams.append("sort", "-createdAt")
url.searchParams.append("page[size]", "100")
url.searchParams.append("count", "false")
if (lastChecked) {
url.searchParams.append("newFilterSyntax", "true")
url.searchParams.append("filter[createdAt][gte]", lastChecked)
}
const response = await fetch(url, {
headers: {
Authorization: `Bearer ${auth.token}`,
Accept: "application/vnd.api+json",
},
})
if (!response.ok) {
throw new Error(`${response.status} ${await response.text()}`)
}
const { data } = (await response.json()) as {
data: { id: number; attributes: { createdAt: string } }[]
}
const newItems = lastChecked
? data.filter((m) => m.attributes.createdAt > lastChecked)
: []
const newWatermark =
data[0]?.attributes.createdAt ?? lastChecked ?? new Date().toISOString()
await wmill.setState(newWatermark)
return newItems
}
Submitted by hugo989 5 hours ago