status enum Pin every run to this exact lifecycle/result state.
Generate compact, coherent CI run fixtures with run-derived job conclusions, ordered steps, safe commits and exact lifecycle dates.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
status | enum | allowed: queued | inProgress | success | failure | cancelled example: failure | Pin every run to this exact lifecycle/result state. |
pipeline | enum | allowed: ci | release | docs example: ci | Pin the job-name set to ci, release or docs. |
trigger | enum | allowed: push | pullRequest | manual | schedule example: pullRequest | Pin the fictional run trigger. |
branch | string | allowed: 1 – 60 example: feature/example-checkout | Use this resolved branch value in every record. |
minJobs | int | default: 2 allowed: 1 – 3 example: 2 | Minimum jobs per run, inclusive. |
maxJobs | int | default: 3 allowed: 1 – 3 example: 3 | Maximum jobs per run, inclusive; must be ≥ minJobs. |
from | date | example: 2026-03-01 | Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today. |
to | date | example: 2026-03-31T23:59:59.999Z | Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end. |
status enum Pin every run to this exact lifecycle/result state.
pipeline enum Pin the job-name set to ci, release or docs.
trigger enum Pin the fictional run trigger.
branch string Use this resolved branch value in every record.
minJobs int Minimum jobs per run, inclusive.
maxJobs int Maximum jobs per run, inclusive; must be ≥ minJobs.
from date Earliest creation time. With only from, to resolves 30 elapsed days later; with neither, defaults 30 UTC days before today.
to date Latest creation time. With only to, from resolves 30 elapsed days earlier; with neither, defaults to today's UTC end.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: id,runNumber | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: artifacts | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
id | string | Distinct fictional run ID. | run_836f2c4ac196_00 |
runNumber | integer | Synthetic display sequence number. | 1842 |
pipeline | string | ci | release | docs. | ci |
trigger | string | push | pullRequest | manual | schedule. | pullRequest |
branch | string | Synthetic or explicitly requested branch. | feature/example-checkout |
commit | object | Synthetic sha, message, author name and reserved-domain email. | {"sha":"0123456789abcdef0123456789abcdef01234567","message":"test: cover checkout flow","authorName":"Avery Chen","authorEmail":"avery@example.com"} |
status | string | queued | inProgress | success | failure | cancelled. | failure |
createdAt | string (ISO 8601) | Run creation time inside from/to. | 2026-03-12T08:00:00.000Z |
startedAt nullable | string (ISO 8601) | First job start, null while queued. | 2026-03-12T08:00:04.000Z |
completedAt nullable | string (ISO 8601) | Terminal completion time only. | 2026-03-12T08:02:20.000Z |
durationSeconds nullable | integer | Exact terminal startedAt→completedAt duration, else null. | 136 |
jobs | object[] | One to three jobs, each with exactly two status-coherent ordered steps. | [{"id":"run_demo_job1","name":"test","status":"completed","conclusion":"success","startedAt":"2026-03-12T08:00:04.000Z","completedAt":"2026-03-12T08:01:00.000Z","durationSeconds":56,"steps":[]}] |
artifacts | object[] | One fictional artifact only for successful runs; otherwise empty. | [] |
id string Distinct fictional run ID.
example: run_836f2c4ac196_00
runNumber integer Synthetic display sequence number.
example: 1842
pipeline string ci | release | docs.
example: ci
trigger string push | pullRequest | manual | schedule.
example: pullRequest
branch string Synthetic or explicitly requested branch.
example: feature/example-checkout
commit object Synthetic sha, message, author name and reserved-domain email.
example: {"sha":"0123456789abcdef0123456789abcdef01234567","message":"test: cover checkout flow","authorName":"Avery Chen","authorEmail":"avery@example.com"}
status string queued | inProgress | success | failure | cancelled.
example: failure
createdAt string (ISO 8601) Run creation time inside from/to.
example: 2026-03-12T08:00:00.000Z
startedAt string (ISO 8601) nullable First job start, null while queued.
example: 2026-03-12T08:00:04.000Z
completedAt string (ISO 8601) nullable Terminal completion time only.
example: 2026-03-12T08:02:20.000Z
durationSeconds integer nullable Exact terminal startedAt→completedAt duration, else null.
example: 136
jobs object[] One to three jobs, each with exactly two status-coherent ordered steps.
example: [{"id":"run_demo_job1","name":"test","status":"completed","conclusion":"success","startedAt":"2026-03-12T08:00:04.000Z","completedAt":"2026-03-12T08:01:00.000Z","durationSeconds":56,"steps":[]}]
artifacts object[] One fictional artifact only for successful runs; otherwise empty.
example: []
/api/ci-runs?pipeline=ci&trigger=pullRequest&status=failure&count=5&seed=42 {
"data": [
{
"id": "run_958016cfb6a5c85e_00",
"runNumber": 307525,
"pipeline": "ci",
"trigger": "pullRequest",
"branch": "develop",
"commit": {
"sha": "5863c1d1cff8728448a0b56b87c24316010d1461",
"message": "feat: add demo pipeline state",
"authorName": "Kaylie Ziemann",
"authorEmail": "fixture-df3629ff@example.com"
},
"status": "failure",
"createdAt": "2026-07-19T23:52:47.748Z",
"startedAt": "2026-07-19T23:53:07.748Z",
"completedAt": "2026-07-19T23:54:54.748Z",
"durationSeconds": 107,
"jobs": [
{
"id": "run_958016cfb6a5c85e_00_job1",
"name": "lint",
"status": "completed",
"conclusion": "success",
"startedAt": "2026-07-19T23:53:07.748Z",
"completedAt": "2026-07-19T23:53:49.748Z",
"durationSeconds": 42,
"steps": [
{
"number": 1,
"name": "prepare",
"status": "completed",
"conclusion": "success",
"startedAt": "2026-07-19T23:53:07.748Z",
"completedAt": "2026-07-19T23:53:12.748Z"
},
{
"number": 2,
"name": "run lint",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ci-runs?pipeline=release&status=success&minJobs=3&maxJobs=3&count=8&seed=17 {
"data": [
{
"id": "run_55abf24f73252bc1_00",
"runNumber": 558175,
"pipeline": "release",
"trigger": "manual",
"branch": "develop",
"commit": {
"sha": "fa6772197c4b91746615d4e9076dfe77920f6091",
"message": "feat: add demo pipeline state",
"authorName": "Miss Mary Hilpert-Welch",
"authorEmail": "fixture-03d5a37e@example.com"
},
"status": "success",
"createdAt": "2026-07-13T15:46:20.077Z",
"startedAt": "2026-07-13T15:46:35.077Z",
"completedAt": "2026-07-13T15:47:27.077Z",
"durationSeconds": 52,
"jobs": [
{
"id": "run_55abf24f73252bc1_00_job1",
"name": "build",
"status": "completed",
"conclusion": "success",
"startedAt": "2026-07-13T15:46:35.077Z",
"completedAt": "2026-07-13T15:46:42.077Z",
"durationSeconds": 7,
"steps": [
{
"number": 1,
"name": "prepare",
"status": "completed",
"conclusion": "success",
"startedAt": "2026-07-13T15:46:35.077Z",
"completedAt": "2026-07-13T15:46:39.077Z"
},
{
"number": 2,
"name": "run build",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/ci-runs?status=inProgress&branch=feature%2Fexample-checkout&from=2026-03-01&to=2026-03-31&count=6&seed=8 {
"data": [
{
"id": "run_5a0ad10ec4981258_00",
"runNumber": 265047,
"pipeline": "release",
"trigger": "schedule",
"branch": "feature/example-checkout",
"commit": {
"sha": "e7ed05d64418bc8e6c2ed0e0e37de56feb78dd63",
"message": "test: cover example workflow",
"authorName": "Morris Ondricka",
"authorEmail": "fixture-67d45aaa@example.com"
},
"status": "inProgress",
"createdAt": "2026-03-23T13:46:44.932Z",
"startedAt": "2026-03-23T13:47:23.932Z",
"completedAt": null,
"durationSeconds": null,
"jobs": [
{
"id": "run_5a0ad10ec4981258_00_job1",
"name": "build",
"status": "inProgress",
"conclusion": null,
"startedAt": "2026-03-23T13:47:23.932Z",
"completedAt": null,
"durationSeconds": null,
"steps": [
{
"number": 1,
"name": "prepare",
"status": "completed",
"conclusion": "success",
"startedAt": "2026-03-23T13:47:23.932Z",
"completedAt": "2026-03-23T13:47:24.932Z"
},
{
"number": 2,
"name": "run build",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates compact vendor-neutral continuous-integration run fixtures for pipeline dashboards and build-history tests. Each run owns one to three jobs, and every job owns exactly two ordered steps. The hierarchy agrees all the way up: a successful run has only successful jobs, a failed run contains a failure followed by skipped jobs, an in-progress run has one active job followed by queued jobs, and a cancelled run has one cancelled job.
status, pipeline, trigger, branch, minJobs/maxJobs and the creation-time from/to window are genuine constraints. Terminal runs have start/completion/duration values; queued and in-progress masks remain exact. Only successful runs expose one fictional build artifact.
Commit hashes and author identities are synthetic, author email uses reserved example.com, and the response intentionally avoids provider URLs, node IDs or proprietary fields. It is not a GitHub Actions, GitLab CI, CircleCI or other vendor wire schema. The three-job/two-step cap also keeps a 100-run response below the platform payload budget.
Yes. Failed and cancelled runs contain the matching terminal job, successful runs contain only successful jobs, and later jobs are skipped where appropriate.
Yes. Executed jobs are ordered, their two steps do not overlap, and each job's start/completion bounds its steps.
At most three jobs with two steps each. The bounded shape keeps even count=100 within the platform's response-size gate.
No. The model is intentionally generic and makes no compatibility claim for any hosted CI service.
Fake git commits — Conventional Commits or plain messages, 40-char hashes, safe author emails, dates in your range and realistic diff stats. Fully seedable.
Generate coherent fake audit records for authentication, CRUD and permission changes — safely seeded, filterable and bounded by time.
Fake file metadata — kebab-case names, the correct MIME type for every extension, plausible per-kind sizes, unix paths and seeded SHA-256-style checksums.
Bounded SemVer 2.0.0 parsing, precedence comparison and major/minor/patch bumps, with explicit size limits instead of precision loss.