Edits history of script submission #22763 for ' New Task (outreach)'

  • bunnative
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    
    import * as wmill from "windmill-client"
    
    /**
     * New Task
     * Returns tasks 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/tasks")
      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((t) => t.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