# Schedules ## List schedules `client.Agents.Schedules.List(ctx, workspaceID, agentID, query) (*CursorPagination[AgentSchedule], error)` **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules` Lists all schedules for an agent ### Parameters - `workspaceID string` - `agentID string` - `query AgentScheduleListParams` - `BundleKey param.Field[string]` Filter by bundle_key — return only resources owned by this bundle. - `Cursor param.Field[string]` Pagination cursor from previous response. - `IncludeInfo param.Field[bool]` When true, the `info` field on each returned schedule is populated. Requests with this flag count more against your rate limit. - `Limit param.Field[int64]` Maximum number of results to return. - `Prefix param.Field[string]` Filter expression (query param: prefix). - `Query param.Field[string]` Free-form search query. - `SortOrder param.Field[string]` Sort order for results (asc or desc by creation time). ### Returns - `type AgentSchedule struct{…}` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `Metadata ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `CreatedAt Time` Timestamp when this resource was created - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` ID of the actor (user or service account) that created this resource - `WorkspaceID string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `BundleKey string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `InitialMessage string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `Schedule AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `Data unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `OverlapPolicy AgentScheduleSpecOverlapPolicy` What to do when the previous run is still in flight. Defaults to SKIP. - `const AgentScheduleSpecOverlapPolicyOverlapPolicyUnspecified AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_UNSPECIFIED"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicyAllow AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_ALLOW"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicySkip AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_SKIP"` - `Status AgentScheduleSpecStatus` Lifecycle. Defaults to ACTIVE on create when unspecified. - `const AgentScheduleSpecStatusAgentScheduleStatusUnspecified AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `const AgentScheduleSpecStatusAgentScheduleStatusActive AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ACTIVE"` - `const AgentScheduleSpecStatusAgentScheduleStatusPaused AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_PAUSED"` - `const AgentScheduleSpecStatusAgentScheduleStatusArchived AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ARCHIVED"` - `VariationID string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `Info AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `CreatedBy Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `Metadata AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` Configuration for a profile. - `Type ProfileSpecType` Whether this profile represents a human user, an API key, or a system principal. - `const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"` - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"` - `Email string` Email address of the profile. Required and unique within an account for user profiles. - `Name string` Display name (e.g., "Bobby Tables"). - `LastFireAt Time` When the schedule last fired (regardless of objective outcome). - `LastObjectiveID string` ID of the most recent objective the schedule created. - `LastSkippedAt Time` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `LastSkipReason string` Reason for the most recent skip (e.g. "previous objective still running"). - `NextFireAt Time` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `TotalFires int64` Lifetime count of objectives created by this schedule. ### Example ```go package main import ( "context" "fmt" "github.com/cadenya/cadenya-go" "github.com/cadenya/cadenya-go/option" ) func main() { client := cadenya.NewClient( option.WithAPIKey("My API Key"), ) page, err := client.Agents.Schedules.List( context.TODO(), "workspaceId", "agentId", cadenya.AgentScheduleListParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "items": [ { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ], "pagination": { "nextCursor": "nextCursor", "total": 0 } } ``` ## Create a new schedule `client.Agents.Schedules.New(ctx, workspaceID, agentID, body) (*AgentSchedule, error)` **post** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules` Creates a new schedule for an agent ### Parameters - `workspaceID string` - `agentID string` - `body AgentScheduleNewParams` - `Metadata param.Field[CreateResourceMetadata]` CreateResourceMetadata contains the user-provided fields for creating a workspace-scoped resource. Read-only fields (id, account_id, workspace_id, profile_id, created_at) are excluded since they are set by the server. - `Spec param.Field[AgentScheduleSpec]` AgentScheduleSpec is the user-provided configuration for a schedule. ### Returns - `type AgentSchedule struct{…}` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `Metadata ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `CreatedAt Time` Timestamp when this resource was created - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` ID of the actor (user or service account) that created this resource - `WorkspaceID string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `BundleKey string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `InitialMessage string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `Schedule AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `Data unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `OverlapPolicy AgentScheduleSpecOverlapPolicy` What to do when the previous run is still in flight. Defaults to SKIP. - `const AgentScheduleSpecOverlapPolicyOverlapPolicyUnspecified AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_UNSPECIFIED"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicyAllow AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_ALLOW"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicySkip AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_SKIP"` - `Status AgentScheduleSpecStatus` Lifecycle. Defaults to ACTIVE on create when unspecified. - `const AgentScheduleSpecStatusAgentScheduleStatusUnspecified AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `const AgentScheduleSpecStatusAgentScheduleStatusActive AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ACTIVE"` - `const AgentScheduleSpecStatusAgentScheduleStatusPaused AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_PAUSED"` - `const AgentScheduleSpecStatusAgentScheduleStatusArchived AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ARCHIVED"` - `VariationID string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `Info AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `CreatedBy Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `Metadata AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` Configuration for a profile. - `Type ProfileSpecType` Whether this profile represents a human user, an API key, or a system principal. - `const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"` - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"` - `Email string` Email address of the profile. Required and unique within an account for user profiles. - `Name string` Display name (e.g., "Bobby Tables"). - `LastFireAt Time` When the schedule last fired (regardless of objective outcome). - `LastObjectiveID string` ID of the most recent objective the schedule created. - `LastSkippedAt Time` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `LastSkipReason string` Reason for the most recent skip (e.g. "previous objective still running"). - `NextFireAt Time` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `TotalFires int64` Lifetime count of objectives created by this schedule. ### Example ```go package main import ( "context" "fmt" "github.com/cadenya/cadenya-go" "github.com/cadenya/cadenya-go/option" "github.com/cadenya/cadenya-go/shared" ) func main() { client := cadenya.NewClient( option.WithAPIKey("My API Key"), ) agentSchedule, err := client.Agents.Schedules.New( context.TODO(), "workspaceId", "agentId", cadenya.AgentScheduleNewParams{ Metadata: cadenya.F(shared.CreateResourceMetadataParam{ Name: cadenya.F("name"), }), Spec: cadenya.F(cadenya.AgentScheduleSpecParam{ InitialMessage: cadenya.F("initialMessage"), Schedule: cadenya.F(cadenya.AgentScheduleSpecScheduleParam{ }), }), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", agentSchedule.Metadata) } ``` #### Response ```json { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ``` ## Get a schedule by ID `client.Agents.Schedules.Get(ctx, workspaceID, agentID, id) (*AgentSchedule, error)` **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Retrieves a schedule by ID from an agent ### Parameters - `workspaceID string` - `agentID string` - `id string` ### Returns - `type AgentSchedule struct{…}` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `Metadata ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `CreatedAt Time` Timestamp when this resource was created - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` ID of the actor (user or service account) that created this resource - `WorkspaceID string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `BundleKey string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `InitialMessage string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `Schedule AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `Data unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `OverlapPolicy AgentScheduleSpecOverlapPolicy` What to do when the previous run is still in flight. Defaults to SKIP. - `const AgentScheduleSpecOverlapPolicyOverlapPolicyUnspecified AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_UNSPECIFIED"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicyAllow AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_ALLOW"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicySkip AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_SKIP"` - `Status AgentScheduleSpecStatus` Lifecycle. Defaults to ACTIVE on create when unspecified. - `const AgentScheduleSpecStatusAgentScheduleStatusUnspecified AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `const AgentScheduleSpecStatusAgentScheduleStatusActive AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ACTIVE"` - `const AgentScheduleSpecStatusAgentScheduleStatusPaused AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_PAUSED"` - `const AgentScheduleSpecStatusAgentScheduleStatusArchived AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ARCHIVED"` - `VariationID string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `Info AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `CreatedBy Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `Metadata AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` Configuration for a profile. - `Type ProfileSpecType` Whether this profile represents a human user, an API key, or a system principal. - `const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"` - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"` - `Email string` Email address of the profile. Required and unique within an account for user profiles. - `Name string` Display name (e.g., "Bobby Tables"). - `LastFireAt Time` When the schedule last fired (regardless of objective outcome). - `LastObjectiveID string` ID of the most recent objective the schedule created. - `LastSkippedAt Time` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `LastSkipReason string` Reason for the most recent skip (e.g. "previous objective still running"). - `NextFireAt Time` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `TotalFires int64` Lifetime count of objectives created by this schedule. ### Example ```go package main import ( "context" "fmt" "github.com/cadenya/cadenya-go" "github.com/cadenya/cadenya-go/option" ) func main() { client := cadenya.NewClient( option.WithAPIKey("My API Key"), ) agentSchedule, err := client.Agents.Schedules.Get( context.TODO(), "workspaceId", "agentId", "id", ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", agentSchedule.Metadata) } ``` #### Response ```json { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ``` ## Delete a schedule `client.Agents.Schedules.Delete(ctx, workspaceID, agentID, id) error` **delete** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Deletes a schedule from an agent ### Parameters - `workspaceID string` - `agentID string` - `id string` ### Example ```go package main import ( "context" "github.com/cadenya/cadenya-go" "github.com/cadenya/cadenya-go/option" ) func main() { client := cadenya.NewClient( option.WithAPIKey("My API Key"), ) err := client.Agents.Schedules.Delete( context.TODO(), "workspaceId", "agentId", "id", ) if err != nil { panic(err.Error()) } } ``` ## Update a schedule `client.Agents.Schedules.Update(ctx, workspaceID, agentID, id, body) (*AgentSchedule, error)` **patch** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Updates a schedule for an agent ### Parameters - `workspaceID string` - `agentID string` - `id string` - `body AgentScheduleUpdateParams` - `Metadata param.Field[UpdateResourceMetadata]` UpdateResourceMetadata contains the user-provided fields for updating a workspace-scoped resource. Read-only fields (id, account_id, workspace_id, profile_id, created_at) are excluded since they are set by the server. - `Spec param.Field[AgentScheduleSpec]` AgentScheduleSpec is the user-provided configuration for a schedule. - `UpdateMask param.Field[string]` Fields to update. ### Returns - `type AgentSchedule struct{…}` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `Metadata ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `CreatedAt Time` Timestamp when this resource was created - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` ID of the actor (user or service account) that created this resource - `WorkspaceID string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `BundleKey string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `InitialMessage string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `Schedule AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `Data unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `OverlapPolicy AgentScheduleSpecOverlapPolicy` What to do when the previous run is still in flight. Defaults to SKIP. - `const AgentScheduleSpecOverlapPolicyOverlapPolicyUnspecified AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_UNSPECIFIED"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicyAllow AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_ALLOW"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicySkip AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_SKIP"` - `Status AgentScheduleSpecStatus` Lifecycle. Defaults to ACTIVE on create when unspecified. - `const AgentScheduleSpecStatusAgentScheduleStatusUnspecified AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `const AgentScheduleSpecStatusAgentScheduleStatusActive AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ACTIVE"` - `const AgentScheduleSpecStatusAgentScheduleStatusPaused AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_PAUSED"` - `const AgentScheduleSpecStatusAgentScheduleStatusArchived AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ARCHIVED"` - `VariationID string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `Info AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `CreatedBy Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `Metadata AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` Configuration for a profile. - `Type ProfileSpecType` Whether this profile represents a human user, an API key, or a system principal. - `const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"` - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"` - `Email string` Email address of the profile. Required and unique within an account for user profiles. - `Name string` Display name (e.g., "Bobby Tables"). - `LastFireAt Time` When the schedule last fired (regardless of objective outcome). - `LastObjectiveID string` ID of the most recent objective the schedule created. - `LastSkippedAt Time` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `LastSkipReason string` Reason for the most recent skip (e.g. "previous objective still running"). - `NextFireAt Time` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `TotalFires int64` Lifetime count of objectives created by this schedule. ### Example ```go package main import ( "context" "fmt" "github.com/cadenya/cadenya-go" "github.com/cadenya/cadenya-go/option" ) func main() { client := cadenya.NewClient( option.WithAPIKey("My API Key"), ) agentSchedule, err := client.Agents.Schedules.Update( context.TODO(), "workspaceId", "agentId", "id", cadenya.AgentScheduleUpdateParams{ }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", agentSchedule.Metadata) } ``` #### Response ```json { "metadata": { "id": "id", "accountId": "accountId", "createdAt": "2019-12-27T18:11:19.117Z", "name": "name", "profileId": "profileId", "workspaceId": "workspaceId", "bundleKey": "bundleKey", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "initialMessage": "initialMessage", "schedule": { "calendars": [ { "comment": "comment", "dayOfMonth": [ { "end": 0, "start": 0, "step": 0 } ], "dayOfWeek": [ { "end": 0, "start": 0, "step": 0 } ], "hour": [ { "end": 0, "start": 0, "step": 0 } ], "minute": [ { "end": 0, "start": 0, "step": 0 } ], "month": [ { "end": 0, "start": 0, "step": 0 } ], "second": [ { "end": 0, "start": 0, "step": 0 } ] } ], "intervals": [ { "every": "-160513s", "offset": "-160513s" } ], "timezone": "timezone" }, "data": {}, "overlapPolicy": "OVERLAP_POLICY_UNSPECIFIED", "status": "AGENT_SCHEDULE_STATUS_UNSPECIFIED", "variationId": "variationId" }, "info": { "createdBy": { "metadata": { "id": "id", "accountId": "accountId", "name": "name", "profileId": "profileId", "externalId": "externalId", "labels": { "foo": "string" } }, "spec": { "type": "PROFILE_TYPE_UNSPECIFIED", "email": "email", "name": "name" } }, "lastFireAt": "2019-12-27T18:11:19.117Z", "lastObjectiveId": "lastObjectiveId", "lastSkippedAt": "2019-12-27T18:11:19.117Z", "lastSkipReason": "lastSkipReason", "nextFireAt": "2019-12-27T18:11:19.117Z", "totalFires": 0 } } ``` ## Domain Types ### Agent Schedule - `type AgentSchedule struct{…}` AgentSchedule resource — a recurring trigger attached to an agent that creates objectives on its cadence. - `Metadata ResourceMetadata` Standard metadata for persistent, named resources (e.g., agents, tools, prompts) - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "agent_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `CreatedAt Time` Timestamp when this resource was created - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` ID of the actor (user or service account) that created this resource - `WorkspaceID string` Workspace this resource belongs to for organizational grouping (prefixed ULID) - `BundleKey string` Optional bundle ownership key. When set, indicates the resource is managed by a configuration bundle identified by this key. Used by BulkWorkspaceResources.Apply to track which resources belong to which bundle for reconciliation / soft-delete on re-apply. - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec AgentScheduleSpec` AgentScheduleSpec is the user-provided configuration for a schedule. - `InitialMessage string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `Schedule AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `Data unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `OverlapPolicy AgentScheduleSpecOverlapPolicy` What to do when the previous run is still in flight. Defaults to SKIP. - `const AgentScheduleSpecOverlapPolicyOverlapPolicyUnspecified AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_UNSPECIFIED"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicyAllow AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_ALLOW"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicySkip AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_SKIP"` - `Status AgentScheduleSpecStatus` Lifecycle. Defaults to ACTIVE on create when unspecified. - `const AgentScheduleSpecStatusAgentScheduleStatusUnspecified AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `const AgentScheduleSpecStatusAgentScheduleStatusActive AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ACTIVE"` - `const AgentScheduleSpecStatusAgentScheduleStatusPaused AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_PAUSED"` - `const AgentScheduleSpecStatusAgentScheduleStatusArchived AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ARCHIVED"` - `VariationID string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `Info AgentScheduleInfo` AgentScheduleInfo provides read-only runtime data about a schedule. - `CreatedBy Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `Metadata AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` Configuration for a profile. - `Type ProfileSpecType` Whether this profile represents a human user, an API key, or a system principal. - `const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"` - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"` - `Email string` Email address of the profile. Required and unique within an account for user profiles. - `Name string` Display name (e.g., "Bobby Tables"). - `LastFireAt Time` When the schedule last fired (regardless of objective outcome). - `LastObjectiveID string` ID of the most recent objective the schedule created. - `LastSkippedAt Time` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `LastSkipReason string` Reason for the most recent skip (e.g. "previous objective still running"). - `NextFireAt Time` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `TotalFires int64` Lifetime count of objectives created by this schedule. ### Agent Schedule Info - `type AgentScheduleInfo struct{…}` AgentScheduleInfo provides read-only runtime data about a schedule. - `CreatedBy Profile` A profile identifies a user or non-human principal (such as an API key) at the account level. Profiles are account-scoped and can be granted access to multiple workspaces. - `Metadata AccountResourceMetadata` AccountResourceMetadata is used to represent a resource that is associated to an account but not to a workspace. - `ID string` Unique identifier for the resource (prefixed ULID, e.g., "apikey_01HXK...") - `AccountID string` Account this resource belongs to for multi-tenant isolation (prefixed ULID) - `Name string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") Required for resources that users interact with directly - `ProfileID string` - `ExternalID string` External ID for the resource (e.g., a workflow ID from an external system) - `Labels map[string, string]` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `Spec ProfileSpec` Configuration for a profile. - `Type ProfileSpecType` Whether this profile represents a human user, an API key, or a system principal. - `const ProfileSpecTypeProfileTypeUnspecified ProfileSpecType = "PROFILE_TYPE_UNSPECIFIED"` - `const ProfileSpecTypeProfileTypeUser ProfileSpecType = "PROFILE_TYPE_USER"` - `const ProfileSpecTypeProfileTypeAPIKey ProfileSpecType = "PROFILE_TYPE_API_KEY"` - `const ProfileSpecTypeProfileTypeSystem ProfileSpecType = "PROFILE_TYPE_SYSTEM"` - `Email string` Email address of the profile. Required and unique within an account for user profiles. - `Name string` Display name (e.g., "Bobby Tables"). - `LastFireAt Time` When the schedule last fired (regardless of objective outcome). - `LastObjectiveID string` ID of the most recent objective the schedule created. - `LastSkippedAt Time` When the schedule most recently skipped a fire (SKIP policy + prior in flight). - `LastSkipReason string` Reason for the most recent skip (e.g. "previous objective still running"). - `NextFireAt Time` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `TotalFires int64` Lifetime count of objectives created by this schedule. ### Agent Schedule Spec - `type AgentScheduleSpec struct{…}` AgentScheduleSpec is the user-provided configuration for a schedule. - `InitialMessage string` The initial message passed to CreateObjective on each fire. Becomes the first user message in the objective's chat history. - `Schedule AgentScheduleSpecSchedule` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. - `Data unknown` Optional input data passed to the objective. If the agent has an input_data_schema, this must satisfy it. - `OverlapPolicy AgentScheduleSpecOverlapPolicy` What to do when the previous run is still in flight. Defaults to SKIP. - `const AgentScheduleSpecOverlapPolicyOverlapPolicyUnspecified AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_UNSPECIFIED"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicyAllow AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_ALLOW"` - `const AgentScheduleSpecOverlapPolicyOverlapPolicySkip AgentScheduleSpecOverlapPolicy = "OVERLAP_POLICY_SKIP"` - `Status AgentScheduleSpecStatus` Lifecycle. Defaults to ACTIVE on create when unspecified. - `const AgentScheduleSpecStatusAgentScheduleStatusUnspecified AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `const AgentScheduleSpecStatusAgentScheduleStatusActive AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ACTIVE"` - `const AgentScheduleSpecStatusAgentScheduleStatusPaused AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_PAUSED"` - `const AgentScheduleSpecStatusAgentScheduleStatusArchived AgentScheduleSpecStatus = "AGENT_SCHEDULE_STATUS_ARCHIVED"` - `VariationID string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. ### Agent Schedule Spec Schedule - `type AgentScheduleSpecSchedule struct{…}` Schedule defines WHEN the schedule fires. Temporal-style structured form: a list of calendar rules (wall-clock) and/or interval rules (duration), OR'd together. At least one rule is required. - `Calendars []ScheduleCalendar` Wall-clock rules. May be empty if `intervals` is non-empty. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Intervals []ScheduleInterval` Duration-based rules. May be empty if `calendars` is non-empty. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). - `Timezone string` IANA tz name (e.g. "America/New_York"). Required. Applies to calendars; intervals fire on wall-clock cadence anchored in this zone. ### Schedule Calendar - `type ScheduleCalendar struct{…}` Calendar is a wall-clock rule. Empty field-list semantics: - second/minute/hour: empty means [{start: 0}] (top of the unit) - day_of_month/month/day_of_week: empty means "any value" Fire times = cartesian product across all fields. - `Comment string` - `DayOfMonth []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `DayOfWeek []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Hour []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Minute []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Month []ScheduleRange` - `End int64` - `Start int64` - `Step int64` - `Second []ScheduleRange` - `End int64` - `Start int64` - `Step int64` ### Schedule Interval - `type ScheduleInterval struct{…}` Interval is a duration-based rule. Fires every `every` from a stable anchor (workspace epoch), optionally phase-shifted by `offset`. - `Every string` - `Offset string` Phase shift within `every`. Must be < `every` (enforced at runtime). ### Schedule Range - `type ScheduleRange struct{…}` Inclusive numeric range with optional step. {start: 9} → 9 {start: 9, end: 17} → 9..17 {start: 0, end: 59, step: 15} → 0,15,30,45 `end` defaults to `start`; `step` defaults to 1. - `End int64` - `Start int64` - `Step int64`