Reference

operations: manifest queries

Package Trax.Api.GraphQLSurface GraphQL schemaSource OperationsQueries.cs

Fields of OperationsQueries that read scheduler manifests. Manifest groups are under operations.manifestGroups.

manifests

Returns a paginated list of scheduler manifests, ordered by ID descending (newest first). Supports both offset-based and keyset cursor pagination.

query {
  operations {
    manifests(skip: 0, take: 10) {
      items {
        id
        externalId
        name
        isEnabled
        scheduleType
        cronExpression
        intervalSeconds
        maxRetries
        timeoutSeconds
        lastSuccessfulRun
        manifestGroupId
        dependsOnManifestId
        priority
      }
      totalCount
      isEstimatedCount
      skip
      take
      nextCursor
    }
  }
}
ParameterTypeDefaultDescription
skipInt!0Number of records to skip (offset pagination). A negative value reads as 0
takeInt!25Number of records to return, from 1 to 500. See Page size
isEnabledBooleannullFilter by enabled/disabled
scheduleTypeScheduleTypenullFilter by schedule type (NONE, CRON, INTERVAL, ON_DEMAND, DEPENDENT, DORMANT_DEPENDENT, ONCE)
nameContainsStringnullCase-sensitive substring match on the train name
afterIdLongnullKeyset cursor. Returns records with id < afterId. When provided, skip is ignored. See Pagination
manifestGroupIdLongnullOnly manifests belonging to this group. The dashboard uses it to list a group's manifests
hideAdminTrainsBoolean!falseWhen true, leaves out the manifests of the framework's internal scheduler trains, by the same AdminTrains.FullNames list and exact match as executions(hideAdminTrains:). The dashboard's manifests page hides the same rows from its "Hide admin trains" toggle

Returns: PagedResult<ManifestSummary>

ManifestSummary fields

FieldTypeDescription
idLong!Database ID
externalIdString!Unique external identifier (used for upsert/trigger)
nameString!Train type name
isEnabledBoolean!Whether the manifest is active
scheduleTypeScheduleType!Cron or Interval
cronExpressionStringCron expression (when scheduleType is Cron)
intervalSecondsIntInterval in seconds (when scheduleType is Interval)
maxRetriesInt!Maximum retry count on failure
timeoutSecondsIntExecution timeout
lastSuccessfulRunDateTimeTimestamp of last successful execution
manifestGroupIdLong!Parent group ID
dependsOnManifestIdLongID of the manifest this one depends on
priorityInt!Dispatch priority (0-31, higher runs first)
manifestGroupNameStringName of the parent group
replayDecisionsOnRetryBoolean!Whether a retry of the manifest's failed run, automatic or a requeue of its dead letter, replays the decisions that run recorded. Set with ScheduleOptions.ReplayDecisionsOnRetry; see Retries replay decisions

| scheduleText | String! | The schedule in plain words: Daily at 02:00 UTC, Every 5 minutes, After nightly-import succeeds, On demand. A cron with no plain reading is shown as itself, in UTC | | nextRuns(count: Int! = 5) | [DateTime!]! | The next times the scheduler will run the manifest, earliest first, in UTC; count is clamped to 0 through 10. See When a manifest runs next |

When a manifest runs next

nextRuns and scheduleText read IOperationsService.GetUpcomingRunsAsync, which asks the manifest manager's own due-ness check, so the times are the ones the manager will act on: exclusion windows are skipped as the manager skips them (under the default FIRE_ONCE_NOW misfire policy, one catch-up run as the window ends), and each run is assumed to succeed when it is due. The first time is now when the manifest is due already. The list is empty for a manual, on-demand, dependent or dormant dependent manifest, where scheduleText says what starts it, and for a manifest that is disabled, in a disabled group, or has a dead letter awaiting intervention. Every manifest a request shows is read in one batch, so a full page costs one query.

query {
  operations {
    manifests(take: 25) {
      items { id scheduleText nextRuns(count: 3) }
    }
  }
}

A manifest's properties (the train input it runs with) are not on this type. Read them from manifestDetail, one manifest at a time.

manifestDetail

Returns one manifest by database ID: every ManifestSummary field, plus the train input the manifest runs with and the rest of its scheduling settings. It backs the manifest detail page.

query {
  operations {
    manifestDetail(id: 42) {
      id
      name
      manifestGroupName
      propertyTypeName
      properties
      misfirePolicy
      misfireThresholdSeconds
      scheduledAt
      nextScheduledRun
      varianceSeconds
    }
  }
}
ParameterTypeRequiredDescription
idLong!YesThe manifest's database ID

Returns: ManifestDetail (nullable, returns null if the ID does not exist). It carries every ManifestSummary field (with manifestGroupName non-null) and:

FieldTypeDescription
propertyTypeNameStringFully qualified type name of the train input
propertiesStringThe train input as stored JSON, with each [TraxSensitive] member masked. Can hold credentials; see Train inputs and the operations gate
misfirePolicyMisfirePolicy!What the manifest manager does with a missed run
misfireThresholdSecondsIntHow late a run can be before it counts as missed
scheduledAtDateTimeThe one-off run time, for a Once manifest
nextScheduledRunDateTimeWhen the manifest manager next plans to run it
varianceSecondsIntRandom jitter added to each run

manifestStats

Execution roll-up for a single manifest: run counts by state plus the most recent run and most recent successful run. Backs the summary cards on the dashboard's manifest detail page, through the same IOperationsService.GetManifestExecutionStatsAsync call. A manifest with no runs, or an id with no manifest, gets zeros and nulls. Served index-only by ix_metadata_manifest_state, so it stays fast on a manifest with a long history.

query {
  operations {
    manifestStats(manifestId: 42) {
      manifestId
      total
      completed
      failed
      inProgress
      pending
      cancelled
      lastRun
      lastSuccessfulRun
    }
  }
}
ParameterTypeRequiredDescription
manifestIdLong!YesThe manifest's database ID

Returns: ManifestExecutionStats! (never null; a manifest with no runs returns all-zero counts and null timestamps).

ManifestExecutionStats fields

FieldTypeDescription
manifestIdLong!The manifest these stats are for (echoes the argument)
totalLong!Total executions across all states
completedLong!Executions in Completed
failedLong!Executions in Failed
inProgressLong!Executions in InProgress
pendingLong!Executions in Pending
cancelledLong!Executions in Cancelled
lastRunDateTimeStart time of the most recent execution. Null when there are none
lastSuccessfulRunDateTimeEnd time of the most recent Completed execution. Null when there are none

manifestExclusions

The schedule exclusion windows configured on a manifest: the days, dates, ranges, or daily time windows during which it is intentionally skipped (not treated as a misfire). Backs the exclusions panel on the manifest detail page. The model is flat and discriminated: type selects which of the other fields apply.

query {
  operations {
    manifestExclusions(manifestId: 42) {
      type
      daysOfWeek
      dates
      startDate
      endDate
      startTime
      endTime
    }
  }
}
ParameterTypeRequiredDescription
manifestIdLong!YesThe manifest's database ID

Returns: [ManifestExclusion!]! (empty when the manifest has no exclusions or does not exist).

ManifestExclusion fields

FieldTypeApplies when type isDescription
typeExclusionType!alwaysDAYS_OF_WEEK, DATES, DATE_RANGE, or TIME_WINDOW
daysOfWeek[DayOfWeek!]DAYS_OF_WEEKWeekdays to skip (SUNDAY..SATURDAY)
dates[Date!]DATESSpecific calendar dates to skip
startDateDateDATE_RANGEFirst day of an inclusive skipped range
endDateDateDATE_RANGELast day of an inclusive skipped range
startTimeLocalTimeTIME_WINDOWDaily window start (supports midnight crossover)
endTimeLocalTimeTIME_WINDOWDaily window end

See also