ko
Use cases›Infrastructure & Utilities
Developer view · Utility work management

Infrastructure & Utilities

You built the work-management system the utility runs on. At 6:58 a main lets go under Elgin Street, an SLA clock starts, and the only confined-space-certified crew is mid-job across town.

You may never stand in that trench — but the crew schedule your code produces decides how long the street goes without water. Re-planning crews by certification and equipment under a regulatory clock is the code you don’t want to own. Your app flags the break priority: "p0"; Crisphive re-plans crews against certs, equipment, SLA windows and travel; your app confirms and dispatches.

You’re building
Work-management systems, GIS-integrated dispatch, and asset-maintenance platforms
On the API for
Operations centres, field crews, and the street without water

Try it in your language

Pick a scenario, switch the server SDK. Every snippet is the actual call the API reference generates — with utility values filled in.

Hydrant flush · schedule planned work

POST/job-requests전체 참조 ↗
import { Configuration, JobRequestBusinessApi } from "@crisphive/sdk";

const config = new Configuration({ accessToken: "chsk_test_4eC8xQ9mZ2pL7Ka0rT" });
const api = new JobRequestBusinessApi(config);

const res = await api.createJobRequest({
  jobRequestCreateRequest: {
    "customer_id": "a1b2c3d4-0000-4a01-8c01-000000000001",
    "description": "Hydrant flush — Elgin St zone, routine",
    "job_dates": [
      {
        "date": "2026-07-24",
        "periods": [
          {
            "business_view": [],
            "period": "morning"
          }
        ]
      }
    ],
    "job_type_id": "b2c3d4e5-0000-4a02-8c02-000000000002",
    "priority": "p3",
    "skill_ids": [
      "c3d4e5f6-0000-4a03-8c03-000000000003"
    ],
    "sla_deadline": "2026-07-30T17:00:00"
  },
});
const { error_code, message, data } = res.data;

Switch to Go, Ruby, PHP, Java or .NET — the class names, model types and method casing all follow that SDK’s generated conventions. Swap chsk_test_ for chsk_live_ and the same code runs against production.

▼

Three ways this bites

These are the days a utility work-management system is judged on. Each is a real cost in idle crew-hours, mobilisation and travel — and each maps to a field the API already carries.

1
Main break, only crew mid-job

The pain ·An emergency pulls the crew off a staged multi-day job that silently unwinds — days of setup redone from zero.

Crisphive ·The emergency re-plan preview absorbs the break without unwinding staged work; moves show exactly what shifts.

2
Digging without a live locate

The pain ·A crew is sent to dig on an expired locate and stands down on-site — a full mobilisation billed for zero work.

Crisphive ·Locate-before-dig is first-class in dependencies; a plan that digs without it never comes back.

3
Vac truck that isn’t there yet

The pain ·The crew arrives before the equipment and waits on the clock — idle crew-hours while the asset is still in transit.

Crisphive ·The equipment run is modelled in dependencies with real transit time, so the crew is sequenced to arrive after it.

▼

Reading the cascade call

The A main break just hit scenario above is the re-plan itself — it previews the moves so nothing is dispatched until you confirm. Its fields map to the story like this:

FieldWhat it is
emergency_job_idThe break driving the re-plan — the SLA-bound job that has to be honoured.
technician_idThe crew in play for that work.
start_atWhen the disruption lands — 06:58 in the story.
modeHow hard the solver may push to fit the response (here, allow overtime).
displacement_modeWhat may happen to the jobs it moves (here, reschedule them rather than drop them).

The urgency flag from the intro — priority: "p0" — is set when you book or update the job on POST /job-requests (the Hydrant flush scenario shows a routine p3). The full priority ladder and the allowed values for mode and displacement_mode live in each endpoint’s Full reference.

▼

Hard constraints, not suggestions

A dispatcher that ignores these isn’t planning — it’s sending an uncertified crew into a confined space. Each one is a first-class field in the API.

The ruleWhat the API enforces
Confined-space & HV certsA main break needs a confined-space crew; a live line needs HV. Only crews whose skill_ids cover the work get assigned.
Regulatory SLA windowsThe clock on a break is a hard sla_deadline. The solver protects SLA-bound work before it touches routine jobs.
Equipment & vehiclesValve kits, vac trucks, bucket trucks. An equipment run is modelled in dependencies, so no plan promises a job whose gear is on another crew.
Locate-before-digLocate before excavation; isolate before repair. Order is first-class dependencies.
Crew hours & fatigueShift limits and fatigue rules are hard constraints. The compliant day is the only day the API returns.
▼

What you ship

You ship dispatch that re-plans itself.

  • No hand-rolled constraint engine — certs, SLA windows, equipment and travel are API fields.
  • Deterministic means auditable: replay the exact morning for a regulator or an after-action.
  • Reporting copy comes back with the plan, ready for the ops log verbatim.
▼

What their day feels like

One break stops shaking the whole schedule.

  • The ops centre stops re-planning crews by hand.
  • SLA-bound work is protected; no crew is sent beyond its certification.
  • The street has water back inside the window — routine work slides, not the SLA.
▼

Every job has stakeholders

A main break touches far more than the crew that fixes it. Every work order is a web of stakeholders who feel it when the schedule drifts — and a tighter operation quietly serves all of them.

In plain sight
Ratepayers & the street

Water back inside the window and a straight answer on when — not a silent, all-day outage.

The ops centre

Confirms a re-plan in one click instead of re-planning crews over the radio.

The utility director

More planned work per crew-hour with fewer SLA penalties — a tighter, leaner operation.

Often invisible — until they’re not
Regulators & auditors

Deterministic plans replay identically for a regulator or after-action — granular proof, not “we think we were compliant.”

Public image & optics

Fewer visible outages and faster restorations protect the utility’s standing with the public and the council.

Crews & retention

Certs and fatigue rules honoured mean no crew sent beyond its ticket or its hours — safer work keeps crews.

▼

What you get back, and what gets pushed

The A main break just hit preview returns the whole plan in data: moves and reassignments (which crew shifts, from and to which job and time), a total_moves count, and warnings such as TECH_NOT_FEASIBLE — so the ops centre can see the response before you dispatch it.

To keep the ops log live as crews move, register a webhook endpoint and Crisphive POSTs each event to your URL with a Crisphive-Signature header. Verify it against your whsec_… secret over the raw body before you trust the payload — Webhooks has the event shape and copy-paste verify snippets.

Cascades, previews, reads and MCP access are never billed — call the solver on every disruption without architecting around your own bill. The core is a deterministic solver: same inputs, same plan, every time. The LLM only sits at the edges, turning a plan into the message your customer reads.

Start building

The snippet above imports @crisphive/sdk — grab the package for your language, drop in a key, and the same call runs. Every response comes back in one { error_code, message, data } envelope.