# Schedules ## List schedules `client.agents.schedules.list(stringagentID, ScheduleListParamsparams, RequestOptionsoptions?): CursorPagination` **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules` Lists all schedules for an agent ### Parameters - `agentID: string` - `params: ScheduleListParams` - `workspaceId: string` Path param: Workspace ID. - `bundleKey?: string` Query param: Filter by bundle_key — return only resources owned by this bundle. - `cursor?: string` Query param: Pagination cursor from previous response. - `includeInfo?: boolean` Query param: When true, the `info` field on each returned schedule is populated. Requests with this flag count more against your rate limit. - `limit?: number` Query param: Maximum number of results to return. - `prefix?: string` Query param: Filter expression (query param: prefix). - `query?: string` Query param: Free-form search query. - `sortOrder?: string` Query param: Sort order for results (asc or desc by creation time). ### Returns - `AgentSchedule` 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: string` 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?: Record` 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"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?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" | "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"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?: string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId?: string` ID of the most recent objective the schedule created. - `lastSkippedAt?: string` 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?: string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires?: number` Lifetime count of objectives created by this schedule. ### Example ```typescript import Cadenya from '@cadenya/cadenya'; const client = new Cadenya({ apiKey: process.env['CADENYA_API_KEY'], // This is the default and can be omitted }); // Automatically fetches more pages as needed. for await (const agentSchedule of client.agents.schedules.list('agentId', { workspaceId: 'workspaceId', })) { console.log(agentSchedule.metadata); } ``` #### 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.create(stringagentID, ScheduleCreateParamsparams, RequestOptionsoptions?): AgentSchedule` **post** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules` Creates a new schedule for an agent ### Parameters - `agentID: string` - `params: ScheduleCreateParams` - `workspaceId: string` Path param: Workspace ID. - `metadata: CreateResourceMetadata` Body param: 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. - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") - `bundleKey?: string` Optional bundle ownership key. See ResourceMetadata.bundle_key. - `externalId?: string` External ID for the resource (e.g., a workflow ID from an external system) - `labels?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: AgentScheduleSpec` Body param: 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId?: string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. ### Returns - `AgentSchedule` 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: string` 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?: Record` 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"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?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" | "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"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?: string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId?: string` ID of the most recent objective the schedule created. - `lastSkippedAt?: string` 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?: string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires?: number` Lifetime count of objectives created by this schedule. ### Example ```typescript import Cadenya from '@cadenya/cadenya'; const client = new Cadenya({ apiKey: process.env['CADENYA_API_KEY'], // This is the default and can be omitted }); const agentSchedule = await client.agents.schedules.create('agentId', { workspaceId: 'workspaceId', metadata: { name: 'name' }, spec: { initialMessage: 'initialMessage', schedule: {}, }, }); console.log(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.retrieve(stringid, ScheduleRetrieveParamsparams, RequestOptionsoptions?): AgentSchedule` **get** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Retrieves a schedule by ID from an agent ### Parameters - `id: string` - `params: ScheduleRetrieveParams` - `workspaceId: string` Workspace ID. - `agentId: string` Agent ID. Accepts the canonical `agent_…` form or the `external_id:` form. ### Returns - `AgentSchedule` 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: string` 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?: Record` 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"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?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" | "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"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?: string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId?: string` ID of the most recent objective the schedule created. - `lastSkippedAt?: string` 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?: string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires?: number` Lifetime count of objectives created by this schedule. ### Example ```typescript import Cadenya from '@cadenya/cadenya'; const client = new Cadenya({ apiKey: process.env['CADENYA_API_KEY'], // This is the default and can be omitted }); const agentSchedule = await client.agents.schedules.retrieve('id', { workspaceId: 'workspaceId', agentId: 'agentId', }); console.log(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(stringid, ScheduleDeleteParamsparams, RequestOptionsoptions?): void` **delete** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Deletes a schedule from an agent ### Parameters - `id: string` - `params: ScheduleDeleteParams` - `workspaceId: string` Workspace ID. - `agentId: string` Agent ID. Accepts the canonical `agent_…` form or the `external_id:` form. ### Example ```typescript import Cadenya from '@cadenya/cadenya'; const client = new Cadenya({ apiKey: process.env['CADENYA_API_KEY'], // This is the default and can be omitted }); await client.agents.schedules.delete('id', { workspaceId: 'workspaceId', agentId: 'agentId' }); ``` ## Update a schedule `client.agents.schedules.update(stringid, ScheduleUpdateParamsparams, RequestOptionsoptions?): AgentSchedule` **patch** `/v1/workspaces/{workspaceId}/agents/{agentId}/schedules/{id}` Updates a schedule for an agent ### Parameters - `id: string` - `params: ScheduleUpdateParams` - `workspaceId: string` Path param: Workspace ID. - `agentId: string` Path param: Agent ID. Accepts the canonical `agent_…` form or the `external_id:` form. - `metadata?: UpdateResourceMetadata` Body param: 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. - `name: string` Human-readable name for the resource (e.g., "Customer Support Agent", "Email Tool") - `bundleKey?: string` Optional bundle ownership key. See ResourceMetadata.bundle_key. - `externalId?: string` External ID for the resource (e.g., a workflow ID from an external system) - `labels?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec?: AgentScheduleSpec` Body param: 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId?: string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. - `updateMask?: string` Body param: Fields to update. ### Returns - `AgentSchedule` 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: string` 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?: Record` 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"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?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" | "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"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?: string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId?: string` ID of the most recent objective the schedule created. - `lastSkippedAt?: string` 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?: string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires?: number` Lifetime count of objectives created by this schedule. ### Example ```typescript import Cadenya from '@cadenya/cadenya'; const client = new Cadenya({ apiKey: process.env['CADENYA_API_KEY'], // This is the default and can be omitted }); const agentSchedule = await client.agents.schedules.update('id', { workspaceId: 'workspaceId', agentId: 'agentId', }); console.log(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 - `AgentSchedule` 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: string` 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?: Record` 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"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?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" | "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"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?: string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId?: string` ID of the most recent objective the schedule created. - `lastSkippedAt?: string` 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?: string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires?: number` Lifetime count of objectives created by this schedule. ### Agent Schedule 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?: Record` Arbitrary key-value pairs for categorization and filtering Examples: {"environment": "production", "team": "platform", "version": "v2"} - `spec: ProfileSpec` Configuration for a profile. - `type: "PROFILE_TYPE_UNSPECIFIED" | "PROFILE_TYPE_USER" | "PROFILE_TYPE_API_KEY" | "PROFILE_TYPE_SYSTEM"` Whether this profile represents a human user, an API key, or a system principal. - `"PROFILE_TYPE_UNSPECIFIED"` - `"PROFILE_TYPE_USER"` - `"PROFILE_TYPE_API_KEY"` - `"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?: string` When the schedule last fired (regardless of objective outcome). - `lastObjectiveId?: string` ID of the most recent objective the schedule created. - `lastSkippedAt?: string` 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?: string` When the schedule will next fire. Computed from the spec; absent when the schedule is PAUSED/ARCHIVED or has no future fire times. - `totalFires?: number` Lifetime count of objectives created by this schedule. ### Agent Schedule 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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?: "OVERLAP_POLICY_UNSPECIFIED" | "OVERLAP_POLICY_ALLOW" | "OVERLAP_POLICY_SKIP"` What to do when the previous run is still in flight. Defaults to SKIP. - `"OVERLAP_POLICY_UNSPECIFIED"` - `"OVERLAP_POLICY_ALLOW"` - `"OVERLAP_POLICY_SKIP"` - `status?: "AGENT_SCHEDULE_STATUS_UNSPECIFIED" | "AGENT_SCHEDULE_STATUS_ACTIVE" | "AGENT_SCHEDULE_STATUS_PAUSED" | "AGENT_SCHEDULE_STATUS_ARCHIVED"` Lifecycle. Defaults to ACTIVE on create when unspecified. - `"AGENT_SCHEDULE_STATUS_UNSPECIFIED"` - `"AGENT_SCHEDULE_STATUS_ACTIVE"` - `"AGENT_SCHEDULE_STATUS_PAUSED"` - `"AGENT_SCHEDULE_STATUS_ARCHIVED"` - `variationId?: string` Optional explicit variation. When unset, the agent's variation_selection_mode chooses per fire. ### Agent Schedule Spec 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?: Array` Wall-clock rules. May be empty if `intervals` is non-empty. - `comment?: string` - `dayOfMonth?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` - `intervals?: Array` 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 - `ScheduleCalendar` 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?: Array` - `end?: number` - `start?: number` - `step?: number` - `dayOfWeek?: Array` - `end?: number` - `start?: number` - `step?: number` - `hour?: Array` - `end?: number` - `start?: number` - `step?: number` - `minute?: Array` - `end?: number` - `start?: number` - `step?: number` - `month?: Array` - `end?: number` - `start?: number` - `step?: number` - `second?: Array` - `end?: number` - `start?: number` - `step?: number` ### Schedule Interval - `ScheduleInterval` 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 - `ScheduleRange` 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?: number` - `start?: number` - `step?: number`