11from typing import Any , Dict , Optional
2+ from enum import Enum
23from pydantic import BaseModel , Field
34
45
6+ class ServiceType (str , Enum ):
7+ """Enum for service types"""
8+ SMART_SCRAPER = "smartscraper"
9+ SEARCH_SCRAPER = "searchscraper"
10+ AGENTIC_SCRAPER = "agenticscraper"
11+
12+
513class ScheduledJobCreate (BaseModel ):
614 """Model for creating a new scheduled job"""
715 job_name : str = Field (..., description = "Name of the scheduled job" )
@@ -47,4 +55,58 @@ class GetJobExecutionsRequest(BaseModel):
4755 job_id : str = Field (..., description = "ID of the scheduled job" )
4856 page : int = Field (default = 1 , ge = 1 , description = "Page number" )
4957 page_size : int = Field (default = 20 , ge = 1 , le = 100 , description = "Number of executions per page" )
50- status : Optional [str ] = Field (None , description = "Filter by execution status" )
58+ status : Optional [str ] = Field (None , description = "Filter by execution status" )
59+
60+
61+ class JobActionResponse (BaseModel ):
62+ """Response model for job actions"""
63+ success : bool = Field (..., description = "Whether the action was successful" )
64+ message : str = Field (..., description = "Response message" )
65+ job_id : str = Field (..., description = "ID of the scheduled job" )
66+
67+
68+ class JobExecutionListResponse (BaseModel ):
69+ """Response model for job execution list"""
70+ executions : list = Field (..., description = "List of job executions" )
71+ total_count : int = Field (..., description = "Total number of executions" )
72+ page : int = Field (..., description = "Current page number" )
73+ page_size : int = Field (..., description = "Number of executions per page" )
74+
75+
76+ class JobTriggerResponse (BaseModel ):
77+ """Response model for job trigger"""
78+ success : bool = Field (..., description = "Whether the job was triggered successfully" )
79+ message : str = Field (..., description = "Response message" )
80+ job_id : str = Field (..., description = "ID of the scheduled job" )
81+ execution_id : Optional [str ] = Field (None , description = "ID of the triggered execution" )
82+
83+
84+ class ScheduledJobListResponse (BaseModel ):
85+ """Response model for scheduled job list"""
86+ jobs : list = Field (..., description = "List of scheduled jobs" )
87+ total_count : int = Field (..., description = "Total number of jobs" )
88+ page : int = Field (..., description = "Current page number" )
89+ page_size : int = Field (..., description = "Number of jobs per page" )
90+
91+
92+ class JobExecutionResponse (BaseModel ):
93+ """Response model for a single job execution"""
94+ execution_id : str = Field (..., description = "ID of the job execution" )
95+ job_id : str = Field (..., description = "ID of the scheduled job" )
96+ status : str = Field (..., description = "Execution status" )
97+ started_at : Optional [str ] = Field (None , description = "Execution start timestamp" )
98+ completed_at : Optional [str ] = Field (None , description = "Execution completion timestamp" )
99+ result : Optional [Dict [str , Any ]] = Field (None , description = "Execution result data" )
100+ error_message : Optional [str ] = Field (None , description = "Error message if execution failed" )
101+
102+
103+ class ScheduledJobResponse (BaseModel ):
104+ """Response model for a single scheduled job"""
105+ job_id : str = Field (..., description = "ID of the scheduled job" )
106+ job_name : str = Field (..., description = "Name of the scheduled job" )
107+ service_type : str = Field (..., description = "Type of service" )
108+ cron_expression : str = Field (..., description = "Cron expression for scheduling" )
109+ job_config : Dict [str , Any ] = Field (..., description = "Configuration for the job" )
110+ is_active : bool = Field (..., description = "Whether the job is active" )
111+ created_at : Optional [str ] = Field (None , description = "Job creation timestamp" )
112+ updated_at : Optional [str ] = Field (None , description = "Job last update timestamp" )
0 commit comments