Skip to main content

Fake Deployment Lifecycle API

MOCK DATA

Generate coherent deployment snapshots and lifecycle timelines with exact status, rollback, commit, artifact, environment and time relationships.

Generated test data for fixtures and development

Base URL
/api/deployments
Capabilities
2 routes Seedable
Last updated
July 29, 2026

GET /api/deployments

Live requestRuns against the public API
No key required
GET/api/deployments?count=8&seed=42

Request parameters

Mix environments or constrain every deployment to preview, staging or production.

Mix fictional services or constrain every fixture to one service.

Mix lifecycle outcomes or force one exact coherent snapshot state.

Inclusive lower bound for synthetic deployment initiation, not completion.

Inclusive upper bound for initiation; the from/to span may not exceed 366 days.

Advanced response options7 options

How many records to generate (1–100).

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/deployments?count=8&seed=42"
const res = await fetch("https://randomapi.dev/api/deployments?count=8&seed=42");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/deployments?count=8&seed=42").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/deployments?count=8&seed=42"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 5
environment enum

Mix environments or constrain every deployment to preview, staging or production.

default: any
allowed: any | preview | staging | production
example: environment=production
service enum

Mix fictional services or constrain every fixture to one service.

default: any
allowed: any | checkout-api | customer-web | event-worker | report-scheduler
example: service=checkout-api
status enum

Mix lifecycle outcomes or force one exact coherent snapshot state.

default: any
allowed: any | queued | running | succeeded | failed | cancelled | rolled_back
example: status=rolled_back
from date

Inclusive lower bound for synthetic deployment initiation, not completion.

default: 2026-01-01
example: from=2026-05-01
to date

Inclusive upper bound for initiation; the from/to span may not exceed 366 days.

default: 2026-12-31
example: to=2026-05-31
Universal parameters Shared response and formatting options 7
count int

How many records to generate (1–100).

default: 10
allowed: 1 – 100
example: count=3
seed int

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

example: seed=42
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=id,service
exclude list

Return all fields except these (comma-separated).

example: exclude=rollback
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 12
id string

Distinct dep_-prefixed fictional deployment identifier.

example: dep_staging_01_a1b2c3d4e5

service string

Fictional vendor-neutral workload name.

example: checkout-api

environment string

preview | staging | production.

example: staging

status string

queued | running | succeeded | failed | cancelled | rolled_back.

example: succeeded

trigger string

Synthetic trigger class: push, manual, schedule or api; never a person identity.

example: push

commitSha string

Synthetic 40-character lowercase hexadecimal commit fixture.

example: 0123456789abcdef0123456789abcdef01234567

artifact object

Service-coherent artifact: tag derived from commitSha plus a synthetic sha256 digest and matching reserved-registry reference.

example: {"name":"checkout-api","tag":"build-0123456789ab","digest":"sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef","reference":"registry.example.test/checkout-api@sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"}

initiatedAt string (ISO 8601)

Synthetic initiation inside the requested inclusive window.

example: 2026-05-12T09:00:00.000Z

startedAt string (ISO 8601) nullable

Start after initiation, or null only while queued.

example: 2026-05-12T09:00:17.000Z

finishedAt string (ISO 8601) nullable

Primary rollout completion for terminal states; null while queued/running.

example: 2026-05-12T09:04:17.000Z

durationSeconds integer nullable

Exact finishedAt minus startedAt in seconds, or null before completion.

example: 240

rollback object nullable

Completed same-environment restoration with a different target commit/artifact; present only for rolled_back.

example: null

Documented examples

Build-generated requests and complete responses
3
Mixed deployment dashboard fixtures
GET /api/deployments?count=8&seed=42
{
  "data": [
    {
      "id": "dep_staging_01_8016cfb6a5",
      "service": "event-worker",
      "environment": "staging",
      "status": "succeeded",
      "trigger": "manual",
      "commitSha": "c85eac58cdd40fb15863c1d1cff8728400000000",
      "artifact": {
        "name": "event-worker",
        "tag": "build-c85eac58cdd4",
        "digest": "sha256:48a0b56b87c24316010d14615edf3629ff11dec8095cf565312cf80200000000",
        "reference": "registry.example.test/event-worker@sha256:48a0b56b87c24316010d14615edf3629ff11dec8095cf565312cf80200000000"
      },
      "initiatedAt": "2026-03-24T03:39:13.182Z",
      "startedAt": "2026-03-24T03:39:39.182Z",
      "finishedAt": "2026-03-24T03:52:03.182Z",
      "durationSeconds": 744,
      "rollback": null
    },
    {
      "id": "dep_preview_02_f248abeccb",
      "service": "checkout-api",
      "environment": "preview",
      "status": "succeeded",
      "trigger": "schedule",
      "commitSha": "a6fd45df91c36673e8fcae90de65558500000002",
      "artifact": {
        "name": "checkout-api",
        "tag": "build-a6fd45df91c3",
        "digest": "sha256:5da26d0b749e25c7ba8ef202f9e4c30de268a9b03c9f6b861545f57500000002",
        "reference": "registry.example.test/checkout-api@sha256:5da26d0b749e25c7ba8ef202f9e4c30de268a9b03c9f6b861545f57500000002"
      },
      "initiatedAt": "2026-04-25T08:37:51.752Z",
      "startedAt": "2026-04-25T08:39:48.752Z",
      "finishedAt": "2026-04-25T08:44:58.752Z",
      "durationSeconds": 310,
      "rollback": null
    },
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Production rollback snapshots
GET /api/deployments?environment=production&status=rolled_back&count=3&seed=7
{
  "data": [
    {
      "id": "dep_production_01_92c7e2436f",
      "service": "event-worker",
      "environment": "production",
      "status": "rolled_back",
      "trigger": "api",
      "commitSha": "61bcde1a237f61fd9658c008b242b88500000000",
      "artifact": {
        "name": "event-worker",
        "tag": "build-61bcde1a237f",
        "digest": "sha256:d1859fba0b85c06089191526515328c4ced70f658ee61c944b438aa100000000",
        "reference": "registry.example.test/event-worker@sha256:d1859fba0b85c06089191526515328c4ced70f658ee61c944b438aa100000000"
      },
      "initiatedAt": "2026-10-17T12:26:36.132Z",
      "startedAt": "2026-10-17T12:27:29.132Z",
      "finishedAt": "2026-10-17T12:48:42.132Z",
      "durationSeconds": 1273,
      "rollback": {
        "id": "rb_production_01_9fc0acd0",
        "environment": "production",
        "targetDeploymentId": "dep_production_previous_01",
        "targetCommitSha": "9dea7861742af4cbc2a2907658cec15900000001",
        "targetArtifact": {
          "name": "event-worker",
          "tag": "build-9dea7861742a",
          "digest": "sha256:f99e5c77149ec3a6e3273634617d0109c90891e6448394029d36d53100000001",
          "reference": "registry.example.test/event-worker@sha256:f99e5c77149ec3a6e3273634617d0109c90891e6448394029d36d53100000001"
        },
        "initiatedAt": "2026-10-17T13:32:36.132Z",
        "finishedAt": "2026-10-17T13:34:26.132Z",
        "durationSeconds": 110
      }
    },
    {
      "id": "dep_production_02_5c0ed5cab8",
      "service": "event-worker",
      "environment": "production",
      "status": "rolled_back",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
May checkout service deployments
GET /api/deployments?service=checkout-api&from=2026-05-01&to=2026-05-31&count=5&seed=19
{
  "data": [
    {
      "id": "dep_preview_01_d4d76736c9",
      "service": "checkout-api",
      "environment": "preview",
      "status": "queued",
      "trigger": "api",
      "commitSha": "26a42926470d39eda17114eb5c47537f00000000",
      "artifact": {
        "name": "checkout-api",
        "tag": "build-26a42926470d",
        "digest": "sha256:e4903453f48b9e3e5d72f4d3100cb0304ab3568d8f6ec919eb10a69c00000000",
        "reference": "registry.example.test/checkout-api@sha256:e4903453f48b9e3e5d72f4d3100cb0304ab3568d8f6ec919eb10a69c00000000"
      },
      "initiatedAt": "2026-05-10T01:30:37.179Z",
      "startedAt": null,
      "finishedAt": null,
      "durationSeconds": null,
      "rollback": null
    },
    {
      "id": "dep_preview_02_6c6dc8e7f8",
      "service": "checkout-api",
      "environment": "preview",
      "status": "rolled_back",
      "trigger": "push",
      "commitSha": "9f85bddd0a06ecc7766c51db72728b6200000002",
      "artifact": {
        "name": "checkout-api",
        "tag": "build-9f85bddd0a06",
        "digest": "sha256:afebb2d22165c12ca62d1f742ea5f0e7bedb626132164bb24e9534a400000002",
        "reference": "registry.example.test/checkout-api@sha256:afebb2d22165c12ca62d1f742ea5f0e7bedb626132164bb24e9534a400000002"
      },
      "initiatedAt": "2026-05-16T13:44:05.642Z",
      "startedAt": "2026-05-16T13:45:17.642Z",
      "finishedAt": "2026-05-16T13:46:49.642Z",
      "durationSeconds": 92,
      "rollback": {
        "id": "rb_preview_02_e822b813",
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

GET /api/deployments/timelines

Live requestRuns against the public API
No key required
GET/api/deployments/timelines?status=succeeded&count=4&seed=42

Request parameters

Mix environments or constrain every deployment to preview, staging or production.

Mix fictional services or constrain every fixture to one service.

Mix lifecycle outcomes or force one exact coherent snapshot state.

Inclusive lower bound for synthetic deployment initiation, not completion.

Inclusive upper bound for initiation; the from/to span may not exceed 366 days.

Advanced response options7 options

How many records to generate (1–100).

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

Return all fields except these (comma-separated).

Response format: json envelope, ndjson (one record per line) or csv.

Pretty-print the JSON response.

Drop the envelope: return the raw array/object without data/meta wrapper.

Response

Example parameters are ready. Send the request to inspect the live response.

Route reference

Code samples Ready-to-copy requests in 4 languages
Choose a code sample language
curl "https://randomapi.dev/api/deployments/timelines?status=succeeded&count=4&seed=42"
const res = await fetch("https://randomapi.dev/api/deployments/timelines?status=succeeded&count=4&seed=42");
const { data, meta } = await res.json();
import requests

data = requests.get("https://randomapi.dev/api/deployments/timelines?status=succeeded&count=4&seed=42").json()["data"]
$json = json_decode(file_get_contents(
  "https://randomapi.dev/api/deployments/timelines?status=succeeded&count=4&seed=42"
), true);
$data = $json["data"];
Parameters Route-specific request inputs 5
environment enum

Mix environments or constrain every deployment to preview, staging or production.

default: any
allowed: any | preview | staging | production
example: environment=production
service enum

Mix fictional services or constrain every fixture to one service.

default: any
allowed: any | checkout-api | customer-web | event-worker | report-scheduler
example: service=checkout-api
status enum

Mix lifecycle outcomes or force one exact coherent snapshot state.

default: any
allowed: any | queued | running | succeeded | failed | cancelled | rolled_back
example: status=rolled_back
from date

Inclusive lower bound for synthetic deployment initiation, not completion.

default: 2026-01-01
example: from=2026-05-01
to date

Inclusive upper bound for initiation; the from/to span may not exceed 366 days.

default: 2026-12-31
example: to=2026-05-31
Universal parameters Shared response and formatting options 7
count int

How many records to generate (1–100).

default: 10
allowed: 1 – 100
example: count=3
seed int

Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).

example: seed=42
fields list

Return only these fields (comma-separated). Mutually exclusive with 'exclude'.

example: fields=deploymentId,service
exclude list

Return all fields except these (comma-separated).

example: exclude=events
format enum

Response format: json envelope, ndjson (one record per line) or csv.

default: json
allowed: json | ndjson | csv
example: format=csv
pretty boolean

Pretty-print the JSON response.

default: false
example: pretty=true
unwrap boolean

Drop the envelope: return the raw array/object without data/meta wrapper.

default: false
example: unwrap=true
Response schema Fields returned in each record 5
deploymentId string

ID shared with the root snapshot for identical params, seed and record index.

example: dep_staging_01_a1b2c3d4e5

service string

Fictional workload shared with the snapshot.

example: checkout-api

environment string

Environment shared by rollout and any rollback events.

example: staging

finalStatus string

Snapshot status reached by the final lifecycle event.

example: rolled_back

events object[]

Strictly ordered lifecycle events with contiguous sequence numbers and coherent artifact digests.

example: [{"sequence":0,"type":"deployment_queued","at":"2026-05-12T09:00:00.000Z","artifactDigest":"sha256:0123"}]

Documented examples

Build-generated requests and complete responses
3
Succeeded deployment timelines
GET /api/deployments/timelines?status=succeeded&count=4&seed=42
{
  "data": [
    {
      "deploymentId": "dep_staging_01_58016cfb6a",
      "service": "event-worker",
      "environment": "staging",
      "finalStatus": "succeeded",
      "events": [
        {
          "sequence": 0,
          "type": "deployment_queued",
          "at": "2026-02-21T07:32:27.451Z",
          "artifactDigest": "sha256:448a0b56b87c24316010d14615edf3629ff11dec8095cf565312cf8000000000"
        },
        {
          "sequence": 1,
          "type": "deployment_started",
          "at": "2026-02-21T07:32:55.451Z",
          "artifactDigest": "sha256:448a0b56b87c24316010d14615edf3629ff11dec8095cf565312cf8000000000"
        },
        {
          "sequence": 2,
          "type": "deployment_succeeded",
          "at": "2026-02-21T07:39:46.451Z",
          "artifactDigest": "sha256:448a0b56b87c24316010d14615edf3629ff11dec8095cf565312cf8000000000"
        }
      ]
    },
    {
      "deploymentId": "dep_preview_02_8f248abecc",
      "service": "checkout-api",
      "environment": "preview",
      "finalStatus": "succeeded",
      "events": [
        {
          "sequence": 0,
          "type": "deployment_queued",
          "at": "2026-05-15T01:06:33.630Z",
          "artifactDigest": "sha256:55da26d0b749e25c7ba8ef202f9e4c30de268a9b03c9f6b861545f5700000002"
        },
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Full rollback event sequences
GET /api/deployments/timelines?environment=production&status=rolled_back&count=3&seed=7
{
  "data": [
    {
      "deploymentId": "dep_production_01_92c7e2436f",
      "service": "event-worker",
      "environment": "production",
      "finalStatus": "rolled_back",
      "events": [
        {
          "sequence": 0,
          "type": "deployment_queued",
          "at": "2026-10-17T12:26:36.132Z",
          "artifactDigest": "sha256:d1859fba0b85c06089191526515328c4ced70f658ee61c944b438aa100000000"
        },
        {
          "sequence": 1,
          "type": "deployment_started",
          "at": "2026-10-17T12:27:29.132Z",
          "artifactDigest": "sha256:d1859fba0b85c06089191526515328c4ced70f658ee61c944b438aa100000000"
        },
        {
          "sequence": 2,
          "type": "deployment_succeeded",
          "at": "2026-10-17T12:48:42.132Z",
          "artifactDigest": "sha256:d1859fba0b85c06089191526515328c4ced70f658ee61c944b438aa100000000"
        },
        {
          "sequence": 3,
          "type": "rollback_started",
          "at": "2026-10-17T13:32:36.132Z",
          "artifactDigest": "sha256:f99e5c77149ec3a6e3273634617d0109c90891e6448394029d36d53100000001"
        },
        {
          "sequence": 4,
          "type": "rollback_succeeded",
          "at": "2026-10-17T13:34:26.132Z",
          "artifactDigest": "sha256:f99e5c77149ec3a6e3273634617d0109c90891e6448394029d36d53100000001"
        }
      ]
    },
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}
Running staging event streams
GET /api/deployments/timelines?environment=staging&status=running&count=5&seed=23
{
  "data": [
    {
      "deploymentId": "dep_staging_01_35c7655efe",
      "service": "customer-web",
      "environment": "staging",
      "finalStatus": "running",
      "events": [
        {
          "sequence": 0,
          "type": "deployment_queued",
          "at": "2026-02-09T11:45:48.966Z",
          "artifactDigest": "sha256:f0ac85eda2bdedf55ad603ec6beb55afd16e175695b8499bb76a90bc00000000"
        },
        {
          "sequence": 1,
          "type": "deployment_started",
          "at": "2026-02-09T11:46:52.966Z",
          "artifactDigest": "sha256:f0ac85eda2bdedf55ad603ec6beb55afd16e175695b8499bb76a90bc00000000"
        }
      ]
    },
    {
      "deploymentId": "dep_staging_02_5623474fb5",
      "service": "report-scheduler",
      "environment": "staging",
      "finalStatus": "running",
      "events": [
        {
          "sequence": 0,
          "type": "deployment_queued",
          "at": "2026-02-17T11:15:35.972Z",
          "artifactDigest": "sha256:ef7a254e0618140ae7ebb62f769b6be81d2334962d0cb8ac3cc1848200000002"
        },
        {
          "sequence": 1,
          "type": "deployment_started",
          "at": "2026-02-17T11:16:42.972Z",
          "artifactDigest": "sha256:ef7a254e0618140ae7ebb62f769b6be81d2334962d0cb8ac3cc1848200000002"
        }
    …
    "generatedAt": "2026-07-29T08:13:22.000Z"
  }
}

About this API

Coverage & behavior

Generates fictional, vendor-neutral deployment fixtures for release dashboards, CI/CD demos and incident tests. Services, commit hashes, artifact digests and registry references are synthetic; the reserved registry.example.test host cannot identify or mutate a real registry.

Lifecycle states are exact. Queued has no start or finish. Running has started but not finished. Succeeded, failed and cancelled have an exact positive duration. A rolled-back deployment first completes its primary rollout, then restores a different commit and artifact in the same environment; rollback timestamps are later and its own duration is exact. finishedAt and durationSeconds describe the primary rollout, while the nested rollback and timeline expose the later restoration.

The root route returns current snapshots. /timelines returns the corresponding ordered event stream. With identical params, seed and count, record N in both routes represents the same deployment, making it practical to test snapshot/event projections against one fixture source. from and to constrain initiation only and are capped at 366 days.

Use it for

  • Populate release dashboards across queued, running and terminal states
  • Test rollback interfaces against a distinct restored commit and artifact
  • Reconcile deployment snapshots with ordered lifecycle event streams

Frequently asked questions

Do deployment status and timestamps always agree?

Yes. Queued has neither start nor finish, running has only a start, and every terminal rollout has an exact positive finishedAt - startedAt duration.

What does rolled_back mean in these fixtures?

The primary rollout succeeded first, then a later same-environment rollback restored a different synthetic commit and matching artifact reference.

Can snapshots be reconciled with timeline fixtures?

Yes. Use the same params, seed and count on / and /timelines; corresponding records share deployment ID, service, environment and final status.