You may define custom scheduled jobs (cron jobs) by creating files in the /jobs directory.
import {
  ProductService,
  ScheduledJobArgs,
  ScheduledJobConfig,
} from "@medusajs/medusa";
export default async function myCustomJob({ container }: ScheduledJobArgs) {
  const productService: ProductService = container.resolve("productService");
  const products = await productService.listAndCount();
  // Do something with the products
}
export const config: ScheduledJobConfig = {
  name: "daily-product-report",
  schedule: "0 0 * * *", // Every day at midnight
};
A scheduled job is defined in two parts a handler and a config. The handler is a function which is invoked when the job is scheduled. The config is an object which defines the name of the job, the schedule, and an optional data object.
The handler is a function which takes one parameter, an object of type ScheduledJobArgs with the following properties:
container - a MedusaContainer instance which can be used to resolve services.data - an object containing data passed to the job when it was scheduled. This object is passed in the config object.pluginOptions - an object containing plugin options, if the job is defined in a plugin.