Skip to content

API reference

API: Packs: equipment

Markdown version

MethodPathWhat it doesScope
GET/v1/packs/equipment/accounts/:id/openWhat's open on an account: quotes, rentals, work orders, unpaid invoices with aging, and what's coming uppacks:read
GET/v1/packs/equipment/assetsFind units by asset number, serial or model (with the rental out or awaiting its return check)packs:read
GET/v1/packs/equipment/assets/:id/historyA unit's checks, condition grades and damage over timepacks:read
GET/v1/packs/equipment/availabilityUnits of a class free for a date range, by branchpacks:read
GET/v1/packs/equipment/dispatchThe dispatch board for a day (deliveries, pickups, moves between branches, service calls) by branchpacks:read
PATCH/v1/packs/equipment/dispatch/:idAssign a driver or tech, change priority, or move a job along (a delivery done puts the rental out; a pickup done returns it)packs:write
GET/v1/packs/equipment/fleetFleet utilization by unit, class and branch, with add, remove or reposition advicepacks:read
POST/v1/packs/equipment/inspectionsRecord a return, delivery or periodic check: checklist, condition, hours, fuel, damage with photos (damage opens a work order and a charge)packs:write
GET/v1/packs/equipment/inspections/:id/photosThe photos of one inspection (ids and captions)packs:read
POST/v1/packs/equipment/lifecycle/runRun the lifecycle check now (renewals, warranties, service, parts, aftermarket; each once per window) (owners)settings:write
GET/v1/packs/equipment/photos/:idAn inspection photo (base64)packs:read
GET/v1/packs/equipment/profitabilityContribution per unit, or by make and model, or by class (revenue − repairs − depreciation)packs:read
GET/v1/packs/equipment/rentalsBookings and rentals out (reserved first, then out, by start date; overdue ones flagged)packs:read
POST/v1/packs/equipment/rentalsBook a rental: a free unit at the branch (else another branch, as a transfer), with delivery and pickup on the dispatch boardpacks:write
POST/v1/packs/equipment/rentals/:id/cancelCancel a booking that hasn't gone out: the unit is free again and its jobs come off the boardpacks:write
POST/v1/packs/equipment/rentals/:id/checkoutThe customer takes a booked unit at the counter: the rental is out from today (its delivery job comes off the board)packs:write
POST/v1/packs/equipment/rentals/:id/extendExtend a rental (the unit must be free for the new days)packs:write
GET/v1/packs/equipment/requestsRequests by department and urgency (newest first)packs:read
POST/v1/packs/equipment/requestsA parts, service, rental or sales request typed in (a phone call, a walk-in): sorted by department and urgency and routed to the branch's personpacks:write
GET/v1/packs/equipment/sell-adviceEach fleet unit's sell advice (sell now, watch, keep) with the reasonspacks:read
POST/v1/packs/equipment/visitsLog a field visit typed on a phone: read into a note on the account and a task per next steppacks:write
POST/v1/packs/equipment/visits/recordingLog a recorded field visit: transcribed onto a meeting on the account (the in-person recorder's consent and limits), then read into a note and taskspacks:write
GET/v1/packs/equipment/work-ordersOpen work orders (repairs, PMs, damage) with their unit and accountpacks:read
POST/v1/packs/equipment/work-orders/:id/closeClose a work order (the repair or PM is done): a PM records the unit's service; with nothing else open, the unit is available againpacks:write

Examples

GET /v1/packs/equipment/accounts/$ID/open

What's open on an account: quotes, rentals, work orders, unpaid invoices with aging, and what's coming up

curl -s "https://api.closefinch.com/v1/packs/equipment/accounts/$ID/open" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/accounts/${id}/open`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/packs/equipment/assets

Find units by asset number, serial or model (with the rental out or awaiting its return check)

curl -s "https://api.closefinch.com/v1/packs/equipment/assets" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/assets`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/packs/equipment/assets/$ID/history

A unit's checks, condition grades and damage over time

curl -s "https://api.closefinch.com/v1/packs/equipment/assets/$ID/history" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/assets/${id}/history`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/packs/equipment/availability

Units of a class free for a date range, by branch

curl -s "https://api.closefinch.com/v1/packs/equipment/availability" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/availability`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/packs/equipment/dispatch

The dispatch board for a day (deliveries, pickups, moves between branches, service calls) by branch

curl -s "https://api.closefinch.com/v1/packs/equipment/dispatch" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/dispatch`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

PATCH /v1/packs/equipment/dispatch/$ID

Assign a driver or tech, change priority, or move a job along (a delivery done puts the rental out; a pickup done returns it)

curl -s -X PATCH "https://api.closefinch.com/v1/packs/equipment/dispatch/$ID" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/dispatch/${id}`, {
  method: "PATCH",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/packs/equipment/fleet

Fleet utilization by unit, class and branch, with add, remove or reposition advice

curl -s "https://api.closefinch.com/v1/packs/equipment/fleet" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/fleet`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/packs/equipment/inspections

Record a return, delivery or periodic check: checklist, condition, hours, fuel, damage with photos (damage opens a work order and a charge)

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/inspections" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/inspections`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/packs/equipment/inspections/$ID/photos

The photos of one inspection (ids and captions)

curl -s "https://api.closefinch.com/v1/packs/equipment/inspections/$ID/photos" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/inspections/${id}/photos`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/packs/equipment/lifecycle/run

Run the lifecycle check now (renewals, warranties, service, parts, aftermarket; each once per window) (owners)

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/lifecycle/run" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/lifecycle/run`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/packs/equipment/photos/$ID

An inspection photo (base64)

curl -s "https://api.closefinch.com/v1/packs/equipment/photos/$ID" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/photos/${id}`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/packs/equipment/profitability

Contribution per unit, or by make and model, or by class (revenue − repairs − depreciation)

curl -s "https://api.closefinch.com/v1/packs/equipment/profitability" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/profitability`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

GET /v1/packs/equipment/rentals

Bookings and rentals out (reserved first, then out, by start date; overdue ones flagged)

curl -s "https://api.closefinch.com/v1/packs/equipment/rentals" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/rentals`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/packs/equipment/rentals

Book a rental: a free unit at the branch (else another branch, as a transfer), with delivery and pickup on the dispatch board

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/rentals" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/rentals`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

POST /v1/packs/equipment/rentals/$ID/cancel

Cancel a booking that hasn't gone out: the unit is free again and its jobs come off the board

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/rentals/$ID/cancel" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/rentals/${id}/cancel`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

POST /v1/packs/equipment/rentals/$ID/checkout

The customer takes a booked unit at the counter: the rental is out from today (its delivery job comes off the board)

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/rentals/$ID/checkout" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/rentals/${id}/checkout`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

POST /v1/packs/equipment/rentals/$ID/extend

Extend a rental (the unit must be free for the new days)

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/rentals/$ID/extend" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/rentals/${id}/extend`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/packs/equipment/requests

Requests by department and urgency (newest first)

curl -s "https://api.closefinch.com/v1/packs/equipment/requests" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/requests`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/packs/equipment/requests

A parts, service, rental or sales request typed in (a phone call, a walk-in): sorted by department and urgency and routed to the branch's person

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/requests" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/requests`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/packs/equipment/sell-advice

Each fleet unit's sell advice (sell now, watch, keep) with the reasons

curl -s "https://api.closefinch.com/v1/packs/equipment/sell-advice" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/sell-advice`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/packs/equipment/visits

Log a field visit typed on a phone: read into a note on the account and a task per next step

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/visits" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/visits`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

POST /v1/packs/equipment/visits/recording

Log a recorded field visit: transcribed onto a meeting on the account (the in-person recorder's consent and limits), then read into a note and tasks

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/visits/recording" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/visits/recording`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

GET /v1/packs/equipment/work-orders

Open work orders (repairs, PMs, damage) with their unit and account

curl -s "https://api.closefinch.com/v1/packs/equipment/work-orders" \
  -H "Authorization: Bearer $RA_API_KEY"
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/work-orders`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();

POST /v1/packs/equipment/work-orders/$ID/close

Close a work order (the repair or PM is done): a PM records the unit's service; with nothing else open, the unit is available again

curl -s -X POST "https://api.closefinch.com/v1/packs/equipment/work-orders/$ID/close" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
const res = await fetch(`https://api.closefinch.com/v1/packs/equipment/work-orders/${id}/close`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();

Request and response schemas: https://www.closefinch.com/openapi.json. All resources: API reference.

Send feedback

Tell us what's broken, confusing or missing on this page, or an idea. It goes to the team that builds the product.

Please don't include passwords or card numbers.
Only to reply about this. Never added to any mailing list.