Skip to the content

DoRoutes API · version 1

Jobs

GET/v1/admin/customers/{customer_id}/jobs

A customer's jobs

Needs the jobs.read permission.

Parameters

  • customer_idstring, in the path, required

Response 200 · object

Done.

  • jobsarray of Job or null, required
    • quote_idinteger (int64)
    • uuidstring
    • job_typestring

      One of: house office items parcels waste delivery

    • house_bystring

      For a house, how it is described; the firm's choice when left out. A customer's quote must use the firm's.

      One of: size room

    • service_datestring

      YYYY-MM-DD, the business's day of the job; a timed job's follows its appointment_time.

    • appointment_timestring

      Empty on a parcels or delivery job, whose time the planner sets.

    • legsarray of Leg

      At least one. Several collections or drops only where the firm's job type allows them.

      • leg_idinteger (int64)
      • positioninteger

        The leg's place in the quote, from 0; set from the order sent.

      • from_addressAddress
        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

      • to_addressAddress

        On a waste leg, the first disposal site chosen; a customer can't set it.

        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

      • from_yard_idinteger (int64)

        The yard a delivery sent without a collection address is collected from, the one nearest its drop. Ignored when sent.

      • from_accessAccess

        What a crew meets at one end of a leg.

        • property_typestring
        • notesstring

          Access notes, such as narrow stairs or no parking.

        • floorinteger
        • liftboolean
        • carry_minteger

          How far, in metres, things are carried between the door and the vehicle.

      • to_accessAccess

        What a crew meets at one end of a leg.

        • property_typestring
        • notesstring

          Access notes, such as narrow stairs or no parking.

        • floorinteger
        • liftboolean
        • carry_minteger

          How far, in metres, things are carried between the door and the vehicle.

      • recipient_namestring
      • recipient_phonestring
      • size_keystring

        One of the firm's active sizes for the type (GET /v1/config job_types); needed for parcels, waste and a house by size; a delivery's is standard when left out; none for office and items.

      • waste_kindsarray of string

        On a waste leg, at least one of the firm's waste kinds; none on other types.

      • window_startstring

        HH:MM, the business's local time. Only on parcels and delivery.

      • window_endstring

        HH:MM, after window_start.

      • load_kginteger

        A waste load's weight, its size's cubic metres at the price book's rubble_kg_per_m3 when it holds rubble_soil, otherwise kg_per_m3. Ignored when a customer sends it.

      • itemsarray of Item
        • item_idinteger (int64)
        • leg_idinteger (int64)

          On a quote, the leg the item travels on. Ignored when sent.

        • typestring
        • categorystring
        • quantityinteger
        • weightinteger

          Kilograms.

        • lengthinteger

          Centimetres.

        • widthinteger
        • heightinteger
        • fragileboolean
        • handling_minutesinteger

          One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

        • floorinteger

          On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

        • roominteger

          On a quote moved room by room, the index in its rooms of the item's room.

        • roomsarray of string

          In the catalogue, the room types the item is usually found in.

        • largeboolean

          In the catalogue, whether the item is large or awkward to move.

    • special_instructionsstring
    • fullnessstring

      For a house by size, how full the property is.

      One of: light average packed

    • roomsarray of Room

      For a house by room, on a quote with one leg, at least one room.

      • typestring, required

        One of: bedroom kitchen lounge dining_room bathroom office loft garage shed

      • floorinteger, required
      • itemsarray of Item

        Sent with a new quote, the room's items; they are stored with the leg's items, on the room's floor and naming the room. Returned rooms have none.

        • item_idinteger (int64)
        • leg_idinteger (int64)

          On a quote, the leg the item travels on. Ignored when sent.

        • typestring
        • categorystring
        • quantityinteger
        • weightinteger

          Kilograms.

        • lengthinteger

          Centimetres.

        • widthinteger
        • heightinteger
        • fragileboolean
        • handling_minutesinteger

          One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

        • floorinteger

          On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

        • roominteger

          On a quote moved room by room, the index in its rooms of the item's room.

        • roomsarray of string

          In the catalogue, the room types the item is usually found in.

        • largeboolean

          In the catalogue, whether the item is large or awkward to move.

    • customerCustomer
      • customer_idinteger (int64)
      • titlestring
      • first_namestring
      • last_namestring
      • emailstring (email)
      • email_confirmed_atstring

        When the customer first signed in by a link sent to the email; cleared when the email changes. Ignored when sent.

      • phonestring

        The latest number given.

      • phonesarray of string

        Every number the customer has given, oldest first, each once however spaced. Ignored when sent.

    • crewinteger or null

      Staff's crew; null works it out from the firm's crew rules. Staff only.

    • vehicle_idinteger (int64) or null

      The job's assignment, set with PUT /v1/admin/job/{id}/assignment; vehicle_id, driver_id, crew_ids and pinned are ignored when sent with a job.

    • hours_minutesinteger or null

      The time staff charge, in minutes; null works it out. Staff only.

    • extrasarray of QuoteExtra or null
      • idinteger (int64), required
      • quantityinteger, required
      • namestring

        As priced. Ignored when sent.

      • priceinteger (int64)

        Pence each, as priced. Ignored when sent.

    • total_valueinteger (int64)

      What the customer pays, in pence.

    • price_linesarray of PriceLine or null

      The price's parts. To customers only when the firm shows its breakdown and staff haven't set the price.

      • kindstring, required

        One of: time fixed miles floors heavy fragile extra adjustment booking_fee road_charges gate_fee free

      • labelstring, required
      • quantitynumber, required
      • unitinteger (int64), required
      • amountinteger (int64), required
    • vatVATPrice

      A price excluding VAT with the VAT the firm adds at the standard 20%; registered is the firm's vat_registered setting, and without it vat is 0 and gross is net.

      • registeredboolean, required
      • netinteger (int64), required
      • vatinteger (int64), required
      • grossinteger (int64), required
    • displayPriceDisplay or null

      How the price is shown to the customer, in pence. An estimate gives the hourly rate; a range its upper end.

      • kindstring, required

        One of: fixed estimate range

      • amountinteger (int64), required
      • upperinteger (int64)
      • hourly_rateinteger (int64)
    • pricedPriced or null

      What a quote was priced with. Staff only.

      • crewinteger
      • vehiclesarray of object
        • vehicle_idinteger (int64)
        • tripsinteger
      • hoursnumber
    • calculatedinteger (int64)

      The worked-out price, beside staff's override. Staff only.

    • estimated_costinteger (int64)

      Staff only.

    • margininteger (int64)

      Staff only.

    • below_marginboolean

      Under the firm's minimum margin. Staff only.

    • price_overrideinteger (int64) or null

      Staff only; set with PUT /v1/admin/quote/{id}/price.

    • deposit_penceinteger (int64)

      The deposit due to book, in pence, from the firm's deposit rule or staff's override, capped at the gross price; 0 when there is none or it is under 30 pence.

    • deposit_onlinestring

      Set by GET /v1/quote/{id} when accepting takes deposit_pence online first, through the checkout_url accepting answers; "pay" takes it at once, "hold" holds it on the card until staff confirm the booking.

      One of: pay hold

    • pay_witharray of string

      Set by GET /v1/quote/{id} with deposit_online; the providers the deposit can be paid with, in the order to offer them.

      One of: stripe paypal

    • card_balanceobject

      Set by GET /v1/quote/{id} when accepting pays the deposit online at a firm that charges the balance to the card before the move; accepting with Stripe then needs agree_card.

      • amount_penceinteger (int64), required
      • onstring (date), required

        The date the balance is taken, from 08:00.

    • deposit_overrideinteger (int64) or null

      Staff only; set with PUT /v1/admin/quote/{id}/deposit.

    • deposit_holdobject

      Set by GET /v1/admin/quote/{id} while the deposit is held on the customer's card, waiting for staff to confirm the booking.

      • amount_penceinteger (int64), required
      • hold_untilstring, required

        UTC, YYYY-MM-DD HH:MM:SS, when the hold lapses.

    • override_reasonstring

      Staff only.

    • statusstring

      "quoted price" when priced. "accepted" when booked or a delivery, once priced. "awaiting route" while HERE can't be reached: the route is tried again every 5 minutes and the customer is emailed the price when it arrives. "needs pricing" when staff must price it by hand (see pricing_reason); the customer is told their price will follow by email. "expired" once a priced quote is past valid_until, worked out when read. "acceptance received" when the customer accepted online and the business confirms bookings itself.

    • distanceinteger

      Metres.

    • durationinteger

      Minutes.

    • duration_in_trafficinteger
    • pricing_reasonstring

      Why staff must price the quote by hand, when its status is "needs pricing".

    • disposal_stopsarray of object

      The sites a waste job's load goes to, in order, with their addresses; the first is its drop. Given on a single job.

      • positioninteger
      • site_idinteger (int64)
      • namestring
      • gate_fee_penceinteger (int64)
      • addressAddress
        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

    • job_idsarray of integer (int64)

      The jobs a quote booked when it was made became, one per leg.

    • created_atstring
    • updated_atstring
    • sent_atstring

      When the quote was last emailed to the customer. A website quote is emailed when priced; a staff quote when staff send it. Ignored when sent, as are valid_until, accepted_at, accepted_by and terms_version.

    • valid_untilstring (date)

      The last day the quote can be accepted, set when it is priced from the business's quote_valid_days and never after the move date.

    • accepted_atstring
    • accepted_bystring

      One of: customer staff

    • terms_versioninteger

      The version of the terms and conditions a customer accepted the quote under.

    • deposit_dueboolean

      Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a sent deposit invoice still owed.

    • balance_dueboolean

      Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a balance invoice, sent before the move, still owed.

    • leg_idinteger (int64) or null
    • window_startstring
    • window_endstring
    • from_yard_idinteger (int64)

      The yard a delivery is collected from.

    • load_kginteger

      A waste load's weight, counted in the cargo's weight_kg.

    • recipient_namestring

      From the job's leg.

    • recipient_phonestring

      From the job's leg.

    • waste_kindsarray of string

      From the job's leg.

    • from_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • to_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • from_property_typestring
    • to_property_typestring
    • from_accessstring
    • to_accessstring
    • from_floorinteger
    • to_floorinteger
    • from_liftboolean
    • to_liftboolean
    • from_carry_minteger
    • to_carry_minteger
    • itemsarray of Item or null

      The leg's items.

      • item_idinteger (int64)
      • leg_idinteger (int64)

        On a quote, the leg the item travels on. Ignored when sent.

      • typestring
      • categorystring
      • quantityinteger
      • weightinteger

        Kilograms.

      • lengthinteger

        Centimetres.

      • widthinteger
      • heightinteger
      • fragileboolean
      • handling_minutesinteger

        One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

      • floorinteger

        On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

      • roominteger

        On a quote moved room by room, the index in its rooms of the item's room.

      • roomsarray of string

        In the catalogue, the room types the item is usually found in.

      • largeboolean

        In the catalogue, whether the item is large or awkward to move.

    • stepsarray of JobStep

      The steps the driver recorded, earliest first. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • kindstring, required

        One of: arrived_collection loaded arrived_delivery delivered arrived_disposal tipped

      • stopinteger

        The disposal stop's position, on arrived_disposal and tipped.

      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • no_signature_reasonstring

        Why a delivery has no signature, when the driver gave one.

      • proofarray of ProofLink

        The photos and signature it names, on staff's job read only.

        • idstring (uuid), required
        • kindstring, required

          One of: photo signature

        • content_typestring, required
        • urlstring, required
        • expires_atstring, required
    • issuesarray of JobIssue

      The issues the driver reported, earliest first. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • notestring, required
      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • proofarray of ProofLink

        The photos and signature it names, on staff's job read only.

        • idstring (uuid), required
        • kindstring, required

          One of: photo signature

        • content_typestring, required
        • urlstring, required
        • expires_atstring, required
    • clockarray of ClockEvent

      The clock events on the job, earliest first, voided ones included. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • job_idinteger (int64), required
      • staff_idinteger (int64), required
      • kindstring, required

        One of: in out

      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • sourcestring, required

        One of: phone office

      • added_byinteger (int64) or null, required

        The staff member who added an office event.

      • notestring or null, required

        Why the office added it.

      • replaces_idinteger (int64) or null, required

        The event an office fix voided.

      • voided_atstring or null, required
      • voided_byinteger (int64) or null, required
      • void_reasonstring or null, required
    • cargoCargo
      • weight_kginteger, required

        From the job's items, by quantity. Ignored when sent.

      • volume_m3number, required

        From the job's items' length by width by height, by quantity. Ignored when sent.

      • hazardous_goodsarray of string, required

        One of: explosive gas flammable combustible organic poison radioactive corrosive poisonousInhalation harmfulToWater other

      • tunnel_categorystring

        The ADR tunnel restriction for what the job carries, B the strictest; left out when there is none.

        One of: B C D E

    • handlingHandling

      Loading and unloading minutes. The estimate is each item's minutes, more for floors and carry, divided by the crew and multiplied by the business's handling_factor; a planner's override replaces it. Ignored when sent with a job.

      • loading_minutesinteger
      • unloading_minutesinteger
      • estimated_loading_minutesinteger
      • estimated_unloading_minutesinteger
      • loading_overrideinteger
      • unloading_overrideinteger
    • signatureSignature

      A job's signature rule, the job's override when set, otherwise the business's. Ignored when sent with a job.

      • rulestring, required

        What a driver must record on Delivered. The business's setting signature_rule is the default (signature_or_reason unless set).

        One of: signature_required signature_or_reason signature_optional

      • overrideSignatureRule or null, required
    • job_idinteger (int64)
    • invoice_idinteger (int64)
    • total_costinteger (int64)

      The estimated cost, in pence, on the first job of a quote.

    • net_totalinteger (int64)
    • status_reasonstring
    • grand_totalinteger (int64)

      What the customer pays, in pence, on the first job of a quote.

    • job_descriptionstring
    • number_of_staffinteger

      The job's crew size, its driver included.

    • driver_idinteger (int64) or null
    • crew_idsarray of integer (int64)

      Staff besides the driver.

    • pinnedboolean
Example response 200
{
  "jobs": [
    {
      "quote_id": 0,
      "uuid": "string",
      "job_type": "house",
      "house_by": "size",
      "service_date": "string",
      "appointment_time": "string",
      "legs": [
        {
          "leg_id": 0,
          "position": 0,
          "from_address": {
            "address_id": 0,
            "customer_id": 0,
            "quote_id": 0,
            "house_number": 0,
            "house_name": "string",
            "street": "string",
            "town": "string",
            "city": "string",
            "county": "string",
            "postcode": "string",
            "latitude": 0,
            "longitude": 0,
            "match_level": "house",
            "needs_check": true
          },
          "to_address": {
            "address_id": 0,
            "customer_id": 0,
            "quote_id": 0,
            "house_number": 0,
            "house_name": "string",
            "street": "string",
            "town": "string",
            "city": "string",
            "county": "string",
            "postcode": "string",
            "latitude": 0,
            "longitude": 0,
            "match_level": "house",
            "needs_check": true
          },
          "from_yard_id": 0,
          "from_access": {
            "property_type": "string",
            "notes": "string",
            "floor": 0,
            "lift": true,
            "carry_m": 0
          },
          "to_access": {
            "property_type": "string",
            "notes": "string",
            "floor": 0,
            "lift": true,
            "carry_m": 0
          },
          "recipient_name": "string",
          "recipient_phone": "string",
          "size_key": "string",
          "waste_kinds": [
            "string"
          ],
          "window_start": "string",
          "window_end": "string",
          "load_kg": 0,
          "items": [
            {
              "item_id": 0,
              "leg_id": 0,
              "type": "string",
              "category": "string",
              "quantity": 0,
              "weight": 0,
              "length": 0,
              "width": 0,
              "height": 0,
              "fragile": true,
              "handling_minutes": 0,
              "floor": 0,
              "room": 0,
              "rooms": [
                "bedroom"
              ],
              "large": true
            }
          ]
        }
      ],
      "special_instructions": "string",
      "fullness": "light",
      "rooms": [
        {
          "type": "bedroom",
          "floor": 0,
          "items": [
            {
              "item_id": 0,
              "leg_id": 0,
              "type": "string",
              "category": "string",
              "quantity": 0,
              "weight": 0,
              "length": 0,
              "width": 0,
              "height": 0,
              "fragile": true,
              "handling_minutes": 0,
              "floor": 0,
              "room": 0,
              "rooms": [
                "bedroom"
              ],
              "large": true
            }
          ]
        }
      ],
      "customer": {
        "customer_id": 0,
        "title": "string",
        "first_name": "string",
        "last_name": "string",
        "email": "email",
        "email_confirmed_at": "string",
        "phone": "string",
        "phones": [
          "string"
        ]
      },
      "crew": 0,
      "vehicle_id": 0,
      "hours_minutes": 0,
      "extras": [
        {
          "id": 0,
          "quantity": 0,
          "name": "string",
          "price": 0
        }
      ],
      "total_value": 0,
      "price_lines": [
        {
          "kind": "time",
          "label": "string",
          "quantity": 0,
          "unit": 0,
          "amount": 0
        }
      ],
      "vat": {
        "registered": true,
        "net": 0,
        "vat": 0,
        "gross": 0
      },
      "display": {
        "kind": "fixed",
        "amount": 0,
        "upper": 0,
        "hourly_rate": 0
      },
      "priced": {
        "crew": 0,
        "vehicles": [
          {
            "vehicle_id": 0,
            "trips": 0
          }
        ],
        "hours": 0
      },
      "calculated": 0,
      "estimated_cost": 0,
      "margin": 0,
      "below_margin": true,
      "price_override": 0,
      "deposit_pence": 0,
      "deposit_online": "pay",
      "pay_with": [
        "stripe"
      ],
      "card_balance": {
        "amount_pence": 0,
        "on": "date"
      },
      "deposit_override": 0,
      "deposit_hold": {
        "amount_pence": 0,
        "hold_until": "string"
      },
      "override_reason": "string",
      "status": "string",
      "distance": 0,
      "duration": 0,
      "duration_in_traffic": 0,
      "pricing_reason": "string",
      "disposal_stops": [
        {
          "position": 0,
          "site_id": 0,
          "name": "string",
          "gate_fee_pence": 0,
          "address": {
            "address_id": 0,
            "customer_id": 0,
            "quote_id": 0,
            "house_number": 0,
            "house_name": "string",
            "street": "string",
            "town": "string",
            "city": "string",
            "county": "string",
            "postcode": "string",
            "latitude": 0,
            "longitude": 0,
            "match_level": "house",
            "needs_check": true
          }
        }
      ],
      "job_ids": [
        0
      ],
      "created_at": "string",
      "updated_at": "string",
      "sent_at": "string",
      "valid_until": "date",
      "accepted_at": "string",
      "accepted_by": "customer",
      "terms_version": 0,
      "deposit_due": true,
      "balance_due": true,
      "leg_id": 0,
      "window_start": "string",
      "window_end": "string",
      "from_yard_id": 0,
      "load_kg": 0,
      "recipient_name": "string",
      "recipient_phone": "string",
      "waste_kinds": [
        "general"
      ],
      "from_address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      },
      "to_address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      },
      "from_property_type": "string",
      "to_property_type": "string",
      "from_access": "string",
      "to_access": "string",
      "from_floor": 0,
      "to_floor": 0,
      "from_lift": true,
      "to_lift": true,
      "from_carry_m": 0,
      "to_carry_m": 0,
      "items": [
        {
          "item_id": 0,
          "leg_id": 0,
          "type": "string",
          "category": "string",
          "quantity": 0,
          "weight": 0,
          "length": 0,
          "width": 0,
          "height": 0,
          "fragile": true,
          "handling_minutes": 0,
          "floor": 0,
          "room": 0,
          "rooms": [
            "bedroom"
          ],
          "large": true
        }
      ],
      "steps": [
        {
          "id": 0,
          "client_id": "string",
          "kind": "arrived_collection",
          "stop": 0,
          "driver_id": 0,
          "happened_at": "string",
          "received_at": "string",
          "no_signature_reason": "string",
          "proof": [
            {
              "id": "uuid",
              "kind": "photo",
              "content_type": "string",
              "url": "string",
              "expires_at": "string"
            }
          ]
        }
      ],
      "issues": [
        {
          "id": 0,
          "client_id": "string",
          "note": "string",
          "driver_id": 0,
          "happened_at": "string",
          "received_at": "string",
          "proof": [
            {
              "id": "uuid",
              "kind": "photo",
              "content_type": "string",
              "url": "string",
              "expires_at": "string"
            }
          ]
        }
      ],
      "clock": [
        {
          "id": 0,
          "client_id": "string",
          "job_id": 0,
          "staff_id": 0,
          "kind": "in",
          "driver_id": 0,
          "happened_at": "string",
          "received_at": "string",
          "source": "phone",
          "added_by": 0,
          "note": "string",
          "replaces_id": 0,
          "voided_at": "string",
          "voided_by": 0,
          "void_reason": "string"
        }
      ],
      "cargo": {
        "weight_kg": 0,
        "volume_m3": 0,
        "hazardous_goods": [
          "explosive"
        ],
        "tunnel_category": "B"
      },
      "handling": {
        "loading_minutes": 0,
        "unloading_minutes": 0,
        "estimated_loading_minutes": 0,
        "estimated_unloading_minutes": 0,
        "loading_override": 0,
        "unloading_override": 0
      },
      "signature": {
        "rule": "signature_required",
        "override": {}
      },
      "job_id": 0,
      "invoice_id": 0,
      "total_cost": 0,
      "net_total": 0,
      "status_reason": "string",
      "grand_total": 0,
      "job_description": "string",
      "number_of_staff": 0,
      "driver_id": 0,
      "crew_ids": [
        0
      ],
      "pinned": true
    }
  ]
}

Response 400 · Error

The request is not valid.

  • errorobject, required
    • codestring, required

      A short machine-readable name, such as not_found.

    • messagestring, required

      What went wrong, for people.

  • request_idstring, required

    Matches the X-Request-ID response header.

Example response 400
{
  "error": {
    "code": "string",
    "message": "string"
  },
  "request_id": "string"
}

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/jobs

Jobs

Needs the jobs.read permission. Soonest first, each with its customer, addresses and assignment.

Parameters

  • qstring, in the query

    Matches the customer's name, email or phone, either address's postcode (spaces ignored), or the job or quote number.

  • statusstring, in the query

    One status, or several separated by commas.

  • date_fromstring (date), in the query

    The first day of the appointment, in the business's time zone.

  • date_tostring (date), in the query

    The last day of the appointment, in the business's time zone.

  • unassignedboolean, in the query

    Only jobs with no vehicle.

  • limitinteger, in the query

    50 by default, 100 at most.

  • offsetinteger, in the query

Response 200 · object

Done.

  • jobsarray of Job or null, required
    • quote_idinteger (int64)
    • uuidstring
    • job_typestring

      One of: house office items parcels waste delivery

    • house_bystring

      For a house, how it is described; the firm's choice when left out. A customer's quote must use the firm's.

      One of: size room

    • service_datestring

      YYYY-MM-DD, the business's day of the job; a timed job's follows its appointment_time.

    • appointment_timestring

      Empty on a parcels or delivery job, whose time the planner sets.

    • legsarray of Leg

      At least one. Several collections or drops only where the firm's job type allows them.

      • leg_idinteger (int64)
      • positioninteger

        The leg's place in the quote, from 0; set from the order sent.

      • from_addressAddress
        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

      • to_addressAddress

        On a waste leg, the first disposal site chosen; a customer can't set it.

        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

      • from_yard_idinteger (int64)

        The yard a delivery sent without a collection address is collected from, the one nearest its drop. Ignored when sent.

      • from_accessAccess

        What a crew meets at one end of a leg.

        • property_typestring
        • notesstring

          Access notes, such as narrow stairs or no parking.

        • floorinteger
        • liftboolean
        • carry_minteger

          How far, in metres, things are carried between the door and the vehicle.

      • to_accessAccess

        What a crew meets at one end of a leg.

        • property_typestring
        • notesstring

          Access notes, such as narrow stairs or no parking.

        • floorinteger
        • liftboolean
        • carry_minteger

          How far, in metres, things are carried between the door and the vehicle.

      • recipient_namestring
      • recipient_phonestring
      • size_keystring

        One of the firm's active sizes for the type (GET /v1/config job_types); needed for parcels, waste and a house by size; a delivery's is standard when left out; none for office and items.

      • waste_kindsarray of string

        On a waste leg, at least one of the firm's waste kinds; none on other types.

      • window_startstring

        HH:MM, the business's local time. Only on parcels and delivery.

      • window_endstring

        HH:MM, after window_start.

      • load_kginteger

        A waste load's weight, its size's cubic metres at the price book's rubble_kg_per_m3 when it holds rubble_soil, otherwise kg_per_m3. Ignored when a customer sends it.

      • itemsarray of Item
        • item_idinteger (int64)
        • leg_idinteger (int64)

          On a quote, the leg the item travels on. Ignored when sent.

        • typestring
        • categorystring
        • quantityinteger
        • weightinteger

          Kilograms.

        • lengthinteger

          Centimetres.

        • widthinteger
        • heightinteger
        • fragileboolean
        • handling_minutesinteger

          One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

        • floorinteger

          On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

        • roominteger

          On a quote moved room by room, the index in its rooms of the item's room.

        • roomsarray of string

          In the catalogue, the room types the item is usually found in.

        • largeboolean

          In the catalogue, whether the item is large or awkward to move.

    • special_instructionsstring
    • fullnessstring

      For a house by size, how full the property is.

      One of: light average packed

    • roomsarray of Room

      For a house by room, on a quote with one leg, at least one room.

      • typestring, required

        One of: bedroom kitchen lounge dining_room bathroom office loft garage shed

      • floorinteger, required
      • itemsarray of Item

        Sent with a new quote, the room's items; they are stored with the leg's items, on the room's floor and naming the room. Returned rooms have none.

        • item_idinteger (int64)
        • leg_idinteger (int64)

          On a quote, the leg the item travels on. Ignored when sent.

        • typestring
        • categorystring
        • quantityinteger
        • weightinteger

          Kilograms.

        • lengthinteger

          Centimetres.

        • widthinteger
        • heightinteger
        • fragileboolean
        • handling_minutesinteger

          One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

        • floorinteger

          On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

        • roominteger

          On a quote moved room by room, the index in its rooms of the item's room.

        • roomsarray of string

          In the catalogue, the room types the item is usually found in.

        • largeboolean

          In the catalogue, whether the item is large or awkward to move.

    • customerCustomer
      • customer_idinteger (int64)
      • titlestring
      • first_namestring
      • last_namestring
      • emailstring (email)
      • email_confirmed_atstring

        When the customer first signed in by a link sent to the email; cleared when the email changes. Ignored when sent.

      • phonestring

        The latest number given.

      • phonesarray of string

        Every number the customer has given, oldest first, each once however spaced. Ignored when sent.

    • crewinteger or null

      Staff's crew; null works it out from the firm's crew rules. Staff only.

    • vehicle_idinteger (int64) or null

      The job's assignment, set with PUT /v1/admin/job/{id}/assignment; vehicle_id, driver_id, crew_ids and pinned are ignored when sent with a job.

    • hours_minutesinteger or null

      The time staff charge, in minutes; null works it out. Staff only.

    • extrasarray of QuoteExtra or null
      • idinteger (int64), required
      • quantityinteger, required
      • namestring

        As priced. Ignored when sent.

      • priceinteger (int64)

        Pence each, as priced. Ignored when sent.

    • total_valueinteger (int64)

      What the customer pays, in pence.

    • price_linesarray of PriceLine or null

      The price's parts. To customers only when the firm shows its breakdown and staff haven't set the price.

      • kindstring, required

        One of: time fixed miles floors heavy fragile extra adjustment booking_fee road_charges gate_fee free

      • labelstring, required
      • quantitynumber, required
      • unitinteger (int64), required
      • amountinteger (int64), required
    • vatVATPrice

      A price excluding VAT with the VAT the firm adds at the standard 20%; registered is the firm's vat_registered setting, and without it vat is 0 and gross is net.

      • registeredboolean, required
      • netinteger (int64), required
      • vatinteger (int64), required
      • grossinteger (int64), required
    • displayPriceDisplay or null

      How the price is shown to the customer, in pence. An estimate gives the hourly rate; a range its upper end.

      • kindstring, required

        One of: fixed estimate range

      • amountinteger (int64), required
      • upperinteger (int64)
      • hourly_rateinteger (int64)
    • pricedPriced or null

      What a quote was priced with. Staff only.

      • crewinteger
      • vehiclesarray of object
        • vehicle_idinteger (int64)
        • tripsinteger
      • hoursnumber
    • calculatedinteger (int64)

      The worked-out price, beside staff's override. Staff only.

    • estimated_costinteger (int64)

      Staff only.

    • margininteger (int64)

      Staff only.

    • below_marginboolean

      Under the firm's minimum margin. Staff only.

    • price_overrideinteger (int64) or null

      Staff only; set with PUT /v1/admin/quote/{id}/price.

    • deposit_penceinteger (int64)

      The deposit due to book, in pence, from the firm's deposit rule or staff's override, capped at the gross price; 0 when there is none or it is under 30 pence.

    • deposit_onlinestring

      Set by GET /v1/quote/{id} when accepting takes deposit_pence online first, through the checkout_url accepting answers; "pay" takes it at once, "hold" holds it on the card until staff confirm the booking.

      One of: pay hold

    • pay_witharray of string

      Set by GET /v1/quote/{id} with deposit_online; the providers the deposit can be paid with, in the order to offer them.

      One of: stripe paypal

    • card_balanceobject

      Set by GET /v1/quote/{id} when accepting pays the deposit online at a firm that charges the balance to the card before the move; accepting with Stripe then needs agree_card.

      • amount_penceinteger (int64), required
      • onstring (date), required

        The date the balance is taken, from 08:00.

    • deposit_overrideinteger (int64) or null

      Staff only; set with PUT /v1/admin/quote/{id}/deposit.

    • deposit_holdobject

      Set by GET /v1/admin/quote/{id} while the deposit is held on the customer's card, waiting for staff to confirm the booking.

      • amount_penceinteger (int64), required
      • hold_untilstring, required

        UTC, YYYY-MM-DD HH:MM:SS, when the hold lapses.

    • override_reasonstring

      Staff only.

    • statusstring

      "quoted price" when priced. "accepted" when booked or a delivery, once priced. "awaiting route" while HERE can't be reached: the route is tried again every 5 minutes and the customer is emailed the price when it arrives. "needs pricing" when staff must price it by hand (see pricing_reason); the customer is told their price will follow by email. "expired" once a priced quote is past valid_until, worked out when read. "acceptance received" when the customer accepted online and the business confirms bookings itself.

    • distanceinteger

      Metres.

    • durationinteger

      Minutes.

    • duration_in_trafficinteger
    • pricing_reasonstring

      Why staff must price the quote by hand, when its status is "needs pricing".

    • disposal_stopsarray of object

      The sites a waste job's load goes to, in order, with their addresses; the first is its drop. Given on a single job.

      • positioninteger
      • site_idinteger (int64)
      • namestring
      • gate_fee_penceinteger (int64)
      • addressAddress
        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

    • job_idsarray of integer (int64)

      The jobs a quote booked when it was made became, one per leg.

    • created_atstring
    • updated_atstring
    • sent_atstring

      When the quote was last emailed to the customer. A website quote is emailed when priced; a staff quote when staff send it. Ignored when sent, as are valid_until, accepted_at, accepted_by and terms_version.

    • valid_untilstring (date)

      The last day the quote can be accepted, set when it is priced from the business's quote_valid_days and never after the move date.

    • accepted_atstring
    • accepted_bystring

      One of: customer staff

    • terms_versioninteger

      The version of the terms and conditions a customer accepted the quote under.

    • deposit_dueboolean

      Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a sent deposit invoice still owed.

    • balance_dueboolean

      Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a balance invoice, sent before the move, still owed.

    • leg_idinteger (int64) or null
    • window_startstring
    • window_endstring
    • from_yard_idinteger (int64)

      The yard a delivery is collected from.

    • load_kginteger

      A waste load's weight, counted in the cargo's weight_kg.

    • recipient_namestring

      From the job's leg.

    • recipient_phonestring

      From the job's leg.

    • waste_kindsarray of string

      From the job's leg.

    • from_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • to_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • from_property_typestring
    • to_property_typestring
    • from_accessstring
    • to_accessstring
    • from_floorinteger
    • to_floorinteger
    • from_liftboolean
    • to_liftboolean
    • from_carry_minteger
    • to_carry_minteger
    • itemsarray of Item or null

      The leg's items.

      • item_idinteger (int64)
      • leg_idinteger (int64)

        On a quote, the leg the item travels on. Ignored when sent.

      • typestring
      • categorystring
      • quantityinteger
      • weightinteger

        Kilograms.

      • lengthinteger

        Centimetres.

      • widthinteger
      • heightinteger
      • fragileboolean
      • handling_minutesinteger

        One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

      • floorinteger

        On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

      • roominteger

        On a quote moved room by room, the index in its rooms of the item's room.

      • roomsarray of string

        In the catalogue, the room types the item is usually found in.

      • largeboolean

        In the catalogue, whether the item is large or awkward to move.

    • stepsarray of JobStep

      The steps the driver recorded, earliest first. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • kindstring, required

        One of: arrived_collection loaded arrived_delivery delivered arrived_disposal tipped

      • stopinteger

        The disposal stop's position, on arrived_disposal and tipped.

      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • no_signature_reasonstring

        Why a delivery has no signature, when the driver gave one.

      • proofarray of ProofLink

        The photos and signature it names, on staff's job read only.

        • idstring (uuid), required
        • kindstring, required

          One of: photo signature

        • content_typestring, required
        • urlstring, required
        • expires_atstring, required
    • issuesarray of JobIssue

      The issues the driver reported, earliest first. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • notestring, required
      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • proofarray of ProofLink

        The photos and signature it names, on staff's job read only.

        • idstring (uuid), required
        • kindstring, required

          One of: photo signature

        • content_typestring, required
        • urlstring, required
        • expires_atstring, required
    • clockarray of ClockEvent

      The clock events on the job, earliest first, voided ones included. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • job_idinteger (int64), required
      • staff_idinteger (int64), required
      • kindstring, required

        One of: in out

      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • sourcestring, required

        One of: phone office

      • added_byinteger (int64) or null, required

        The staff member who added an office event.

      • notestring or null, required

        Why the office added it.

      • replaces_idinteger (int64) or null, required

        The event an office fix voided.

      • voided_atstring or null, required
      • voided_byinteger (int64) or null, required
      • void_reasonstring or null, required
    • cargoCargo
      • weight_kginteger, required

        From the job's items, by quantity. Ignored when sent.

      • volume_m3number, required

        From the job's items' length by width by height, by quantity. Ignored when sent.

      • hazardous_goodsarray of string, required

        One of: explosive gas flammable combustible organic poison radioactive corrosive poisonousInhalation harmfulToWater other

      • tunnel_categorystring

        The ADR tunnel restriction for what the job carries, B the strictest; left out when there is none.

        One of: B C D E

    • handlingHandling

      Loading and unloading minutes. The estimate is each item's minutes, more for floors and carry, divided by the crew and multiplied by the business's handling_factor; a planner's override replaces it. Ignored when sent with a job.

      • loading_minutesinteger
      • unloading_minutesinteger
      • estimated_loading_minutesinteger
      • estimated_unloading_minutesinteger
      • loading_overrideinteger
      • unloading_overrideinteger
    • signatureSignature

      A job's signature rule, the job's override when set, otherwise the business's. Ignored when sent with a job.

      • rulestring, required

        What a driver must record on Delivered. The business's setting signature_rule is the default (signature_or_reason unless set).

        One of: signature_required signature_or_reason signature_optional

      • overrideSignatureRule or null, required
    • job_idinteger (int64)
    • invoice_idinteger (int64)
    • total_costinteger (int64)

      The estimated cost, in pence, on the first job of a quote.

    • net_totalinteger (int64)
    • status_reasonstring
    • grand_totalinteger (int64)

      What the customer pays, in pence, on the first job of a quote.

    • job_descriptionstring
    • number_of_staffinteger

      The job's crew size, its driver included.

    • driver_idinteger (int64) or null
    • crew_idsarray of integer (int64)

      Staff besides the driver.

    • pinnedboolean
Example response 200
{
  "jobs": [
    {
      "quote_id": 0,
      "uuid": "string",
      "job_type": "house",
      "house_by": "size",
      "service_date": "string",
      "appointment_time": "string",
      "legs": [
        {
          "leg_id": 0,
          "position": 0,
          "from_address": {
            "address_id": 0,
            "customer_id": 0,
            "quote_id": 0,
            "house_number": 0,
            "house_name": "string",
            "street": "string",
            "town": "string",
            "city": "string",
            "county": "string",
            "postcode": "string",
            "latitude": 0,
            "longitude": 0,
            "match_level": "house",
            "needs_check": true
          },
          "to_address": {
            "address_id": 0,
            "customer_id": 0,
            "quote_id": 0,
            "house_number": 0,
            "house_name": "string",
            "street": "string",
            "town": "string",
            "city": "string",
            "county": "string",
            "postcode": "string",
            "latitude": 0,
            "longitude": 0,
            "match_level": "house",
            "needs_check": true
          },
          "from_yard_id": 0,
          "from_access": {
            "property_type": "string",
            "notes": "string",
            "floor": 0,
            "lift": true,
            "carry_m": 0
          },
          "to_access": {
            "property_type": "string",
            "notes": "string",
            "floor": 0,
            "lift": true,
            "carry_m": 0
          },
          "recipient_name": "string",
          "recipient_phone": "string",
          "size_key": "string",
          "waste_kinds": [
            "string"
          ],
          "window_start": "string",
          "window_end": "string",
          "load_kg": 0,
          "items": [
            {
              "item_id": 0,
              "leg_id": 0,
              "type": "string",
              "category": "string",
              "quantity": 0,
              "weight": 0,
              "length": 0,
              "width": 0,
              "height": 0,
              "fragile": true,
              "handling_minutes": 0,
              "floor": 0,
              "room": 0,
              "rooms": [
                "bedroom"
              ],
              "large": true
            }
          ]
        }
      ],
      "special_instructions": "string",
      "fullness": "light",
      "rooms": [
        {
          "type": "bedroom",
          "floor": 0,
          "items": [
            {
              "item_id": 0,
              "leg_id": 0,
              "type": "string",
              "category": "string",
              "quantity": 0,
              "weight": 0,
              "length": 0,
              "width": 0,
              "height": 0,
              "fragile": true,
              "handling_minutes": 0,
              "floor": 0,
              "room": 0,
              "rooms": [
                "bedroom"
              ],
              "large": true
            }
          ]
        }
      ],
      "customer": {
        "customer_id": 0,
        "title": "string",
        "first_name": "string",
        "last_name": "string",
        "email": "email",
        "email_confirmed_at": "string",
        "phone": "string",
        "phones": [
          "string"
        ]
      },
      "crew": 0,
      "vehicle_id": 0,
      "hours_minutes": 0,
      "extras": [
        {
          "id": 0,
          "quantity": 0,
          "name": "string",
          "price": 0
        }
      ],
      "total_value": 0,
      "price_lines": [
        {
          "kind": "time",
          "label": "string",
          "quantity": 0,
          "unit": 0,
          "amount": 0
        }
      ],
      "vat": {
        "registered": true,
        "net": 0,
        "vat": 0,
        "gross": 0
      },
      "display": {
        "kind": "fixed",
        "amount": 0,
        "upper": 0,
        "hourly_rate": 0
      },
      "priced": {
        "crew": 0,
        "vehicles": [
          {
            "vehicle_id": 0,
            "trips": 0
          }
        ],
        "hours": 0
      },
      "calculated": 0,
      "estimated_cost": 0,
      "margin": 0,
      "below_margin": true,
      "price_override": 0,
      "deposit_pence": 0,
      "deposit_online": "pay",
      "pay_with": [
        "stripe"
      ],
      "card_balance": {
        "amount_pence": 0,
        "on": "date"
      },
      "deposit_override": 0,
      "deposit_hold": {
        "amount_pence": 0,
        "hold_until": "string"
      },
      "override_reason": "string",
      "status": "string",
      "distance": 0,
      "duration": 0,
      "duration_in_traffic": 0,
      "pricing_reason": "string",
      "disposal_stops": [
        {
          "position": 0,
          "site_id": 0,
          "name": "string",
          "gate_fee_pence": 0,
          "address": {
            "address_id": 0,
            "customer_id": 0,
            "quote_id": 0,
            "house_number": 0,
            "house_name": "string",
            "street": "string",
            "town": "string",
            "city": "string",
            "county": "string",
            "postcode": "string",
            "latitude": 0,
            "longitude": 0,
            "match_level": "house",
            "needs_check": true
          }
        }
      ],
      "job_ids": [
        0
      ],
      "created_at": "string",
      "updated_at": "string",
      "sent_at": "string",
      "valid_until": "date",
      "accepted_at": "string",
      "accepted_by": "customer",
      "terms_version": 0,
      "deposit_due": true,
      "balance_due": true,
      "leg_id": 0,
      "window_start": "string",
      "window_end": "string",
      "from_yard_id": 0,
      "load_kg": 0,
      "recipient_name": "string",
      "recipient_phone": "string",
      "waste_kinds": [
        "general"
      ],
      "from_address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      },
      "to_address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      },
      "from_property_type": "string",
      "to_property_type": "string",
      "from_access": "string",
      "to_access": "string",
      "from_floor": 0,
      "to_floor": 0,
      "from_lift": true,
      "to_lift": true,
      "from_carry_m": 0,
      "to_carry_m": 0,
      "items": [
        {
          "item_id": 0,
          "leg_id": 0,
          "type": "string",
          "category": "string",
          "quantity": 0,
          "weight": 0,
          "length": 0,
          "width": 0,
          "height": 0,
          "fragile": true,
          "handling_minutes": 0,
          "floor": 0,
          "room": 0,
          "rooms": [
            "bedroom"
          ],
          "large": true
        }
      ],
      "steps": [
        {
          "id": 0,
          "client_id": "string",
          "kind": "arrived_collection",
          "stop": 0,
          "driver_id": 0,
          "happened_at": "string",
          "received_at": "string",
          "no_signature_reason": "string",
          "proof": [
            {
              "id": "uuid",
              "kind": "photo",
              "content_type": "string",
              "url": "string",
              "expires_at": "string"
            }
          ]
        }
      ],
      "issues": [
        {
          "id": 0,
          "client_id": "string",
          "note": "string",
          "driver_id": 0,
          "happened_at": "string",
          "received_at": "string",
          "proof": [
            {
              "id": "uuid",
              "kind": "photo",
              "content_type": "string",
              "url": "string",
              "expires_at": "string"
            }
          ]
        }
      ],
      "clock": [
        {
          "id": 0,
          "client_id": "string",
          "job_id": 0,
          "staff_id": 0,
          "kind": "in",
          "driver_id": 0,
          "happened_at": "string",
          "received_at": "string",
          "source": "phone",
          "added_by": 0,
          "note": "string",
          "replaces_id": 0,
          "voided_at": "string",
          "voided_by": 0,
          "void_reason": "string"
        }
      ],
      "cargo": {
        "weight_kg": 0,
        "volume_m3": 0,
        "hazardous_goods": [
          "explosive"
        ],
        "tunnel_category": "B"
      },
      "handling": {
        "loading_minutes": 0,
        "unloading_minutes": 0,
        "estimated_loading_minutes": 0,
        "estimated_unloading_minutes": 0,
        "loading_override": 0,
        "unloading_override": 0
      },
      "signature": {
        "rule": "signature_required",
        "override": {}
      },
      "job_id": 0,
      "invoice_id": 0,
      "total_cost": 0,
      "net_total": 0,
      "status_reason": "string",
      "grand_total": 0,
      "job_description": "string",
      "number_of_staff": 0,
      "driver_id": 0,
      "crew_ids": [
        0
      ],
      "pinned": true
    }
  ]
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

POST/v1/admin/job

Book a quote's jobs

Needs the jobs.write permission. Accepts the quote and makes a job for each of its legs; a quote already accepted is refused. When the quote has a deposit, deposit says what happens to it: "link" (the default) raises and emails the deposit invoice, with a pay link when the business takes payments online; "paid" records it as taken (the whole deposit); "none" raises nothing.

Request body · object

  • quote_idinteger (int64), required
  • depositstring

    One of: link paid none

  • paymentobject

    For deposit "paid".

    • paid_onstring (date), required
    • methodstring, required

      One of: bank_transfer card cash cheque other paypal

    • referencestring
Example request
{
  "quote_id": 0,
  "deposit": "link",
  "payment": {
    "paid_on": "date",
    "method": "bank_transfer",
    "reference": "string"
  }
}

Response 200 · object

Done.

  • messagestring, required
  • job_idsarray of integer (int64), required
Example response 200
{
  "message": "string",
  "job_ids": [
    0
  ]
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 409 · Error

It clashes with what is stored.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/job/{id}

A job

Needs the jobs.read permission.

Parameters

  • idstring, in the path, required

Response 200 · object

Done.

  • jobJob, required
    • quote_idinteger (int64)
    • uuidstring
    • job_typestring

      One of: house office items parcels waste delivery

    • house_bystring

      For a house, how it is described; the firm's choice when left out. A customer's quote must use the firm's.

      One of: size room

    • service_datestring

      YYYY-MM-DD, the business's day of the job; a timed job's follows its appointment_time.

    • appointment_timestring

      Empty on a parcels or delivery job, whose time the planner sets.

    • legsarray of Leg

      At least one. Several collections or drops only where the firm's job type allows them.

      • leg_idinteger (int64)
      • positioninteger

        The leg's place in the quote, from 0; set from the order sent.

      • from_addressAddress
        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

      • to_addressAddress

        On a waste leg, the first disposal site chosen; a customer can't set it.

        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

      • from_yard_idinteger (int64)

        The yard a delivery sent without a collection address is collected from, the one nearest its drop. Ignored when sent.

      • from_accessAccess

        What a crew meets at one end of a leg.

        • property_typestring
        • notesstring

          Access notes, such as narrow stairs or no parking.

        • floorinteger
        • liftboolean
        • carry_minteger

          How far, in metres, things are carried between the door and the vehicle.

      • to_accessAccess

        What a crew meets at one end of a leg.

        • property_typestring
        • notesstring

          Access notes, such as narrow stairs or no parking.

        • floorinteger
        • liftboolean
        • carry_minteger

          How far, in metres, things are carried between the door and the vehicle.

      • recipient_namestring
      • recipient_phonestring
      • size_keystring

        One of the firm's active sizes for the type (GET /v1/config job_types); needed for parcels, waste and a house by size; a delivery's is standard when left out; none for office and items.

      • waste_kindsarray of string

        On a waste leg, at least one of the firm's waste kinds; none on other types.

      • window_startstring

        HH:MM, the business's local time. Only on parcels and delivery.

      • window_endstring

        HH:MM, after window_start.

      • load_kginteger

        A waste load's weight, its size's cubic metres at the price book's rubble_kg_per_m3 when it holds rubble_soil, otherwise kg_per_m3. Ignored when a customer sends it.

      • itemsarray of Item
        • item_idinteger (int64)
        • leg_idinteger (int64)

          On a quote, the leg the item travels on. Ignored when sent.

        • typestring
        • categorystring
        • quantityinteger
        • weightinteger

          Kilograms.

        • lengthinteger

          Centimetres.

        • widthinteger
        • heightinteger
        • fragileboolean
        • handling_minutesinteger

          One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

        • floorinteger

          On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

        • roominteger

          On a quote moved room by room, the index in its rooms of the item's room.

        • roomsarray of string

          In the catalogue, the room types the item is usually found in.

        • largeboolean

          In the catalogue, whether the item is large or awkward to move.

    • special_instructionsstring
    • fullnessstring

      For a house by size, how full the property is.

      One of: light average packed

    • roomsarray of Room

      For a house by room, on a quote with one leg, at least one room.

      • typestring, required

        One of: bedroom kitchen lounge dining_room bathroom office loft garage shed

      • floorinteger, required
      • itemsarray of Item

        Sent with a new quote, the room's items; they are stored with the leg's items, on the room's floor and naming the room. Returned rooms have none.

        • item_idinteger (int64)
        • leg_idinteger (int64)

          On a quote, the leg the item travels on. Ignored when sent.

        • typestring
        • categorystring
        • quantityinteger
        • weightinteger

          Kilograms.

        • lengthinteger

          Centimetres.

        • widthinteger
        • heightinteger
        • fragileboolean
        • handling_minutesinteger

          One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

        • floorinteger

          On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

        • roominteger

          On a quote moved room by room, the index in its rooms of the item's room.

        • roomsarray of string

          In the catalogue, the room types the item is usually found in.

        • largeboolean

          In the catalogue, whether the item is large or awkward to move.

    • customerCustomer
      • customer_idinteger (int64)
      • titlestring
      • first_namestring
      • last_namestring
      • emailstring (email)
      • email_confirmed_atstring

        When the customer first signed in by a link sent to the email; cleared when the email changes. Ignored when sent.

      • phonestring

        The latest number given.

      • phonesarray of string

        Every number the customer has given, oldest first, each once however spaced. Ignored when sent.

    • crewinteger or null

      Staff's crew; null works it out from the firm's crew rules. Staff only.

    • vehicle_idinteger (int64) or null

      The job's assignment, set with PUT /v1/admin/job/{id}/assignment; vehicle_id, driver_id, crew_ids and pinned are ignored when sent with a job.

    • hours_minutesinteger or null

      The time staff charge, in minutes; null works it out. Staff only.

    • extrasarray of QuoteExtra or null
      • idinteger (int64), required
      • quantityinteger, required
      • namestring

        As priced. Ignored when sent.

      • priceinteger (int64)

        Pence each, as priced. Ignored when sent.

    • total_valueinteger (int64)

      What the customer pays, in pence.

    • price_linesarray of PriceLine or null

      The price's parts. To customers only when the firm shows its breakdown and staff haven't set the price.

      • kindstring, required

        One of: time fixed miles floors heavy fragile extra adjustment booking_fee road_charges gate_fee free

      • labelstring, required
      • quantitynumber, required
      • unitinteger (int64), required
      • amountinteger (int64), required
    • vatVATPrice

      A price excluding VAT with the VAT the firm adds at the standard 20%; registered is the firm's vat_registered setting, and without it vat is 0 and gross is net.

      • registeredboolean, required
      • netinteger (int64), required
      • vatinteger (int64), required
      • grossinteger (int64), required
    • displayPriceDisplay or null

      How the price is shown to the customer, in pence. An estimate gives the hourly rate; a range its upper end.

      • kindstring, required

        One of: fixed estimate range

      • amountinteger (int64), required
      • upperinteger (int64)
      • hourly_rateinteger (int64)
    • pricedPriced or null

      What a quote was priced with. Staff only.

      • crewinteger
      • vehiclesarray of object
        • vehicle_idinteger (int64)
        • tripsinteger
      • hoursnumber
    • calculatedinteger (int64)

      The worked-out price, beside staff's override. Staff only.

    • estimated_costinteger (int64)

      Staff only.

    • margininteger (int64)

      Staff only.

    • below_marginboolean

      Under the firm's minimum margin. Staff only.

    • price_overrideinteger (int64) or null

      Staff only; set with PUT /v1/admin/quote/{id}/price.

    • deposit_penceinteger (int64)

      The deposit due to book, in pence, from the firm's deposit rule or staff's override, capped at the gross price; 0 when there is none or it is under 30 pence.

    • deposit_onlinestring

      Set by GET /v1/quote/{id} when accepting takes deposit_pence online first, through the checkout_url accepting answers; "pay" takes it at once, "hold" holds it on the card until staff confirm the booking.

      One of: pay hold

    • pay_witharray of string

      Set by GET /v1/quote/{id} with deposit_online; the providers the deposit can be paid with, in the order to offer them.

      One of: stripe paypal

    • card_balanceobject

      Set by GET /v1/quote/{id} when accepting pays the deposit online at a firm that charges the balance to the card before the move; accepting with Stripe then needs agree_card.

      • amount_penceinteger (int64), required
      • onstring (date), required

        The date the balance is taken, from 08:00.

    • deposit_overrideinteger (int64) or null

      Staff only; set with PUT /v1/admin/quote/{id}/deposit.

    • deposit_holdobject

      Set by GET /v1/admin/quote/{id} while the deposit is held on the customer's card, waiting for staff to confirm the booking.

      • amount_penceinteger (int64), required
      • hold_untilstring, required

        UTC, YYYY-MM-DD HH:MM:SS, when the hold lapses.

    • override_reasonstring

      Staff only.

    • statusstring

      "quoted price" when priced. "accepted" when booked or a delivery, once priced. "awaiting route" while HERE can't be reached: the route is tried again every 5 minutes and the customer is emailed the price when it arrives. "needs pricing" when staff must price it by hand (see pricing_reason); the customer is told their price will follow by email. "expired" once a priced quote is past valid_until, worked out when read. "acceptance received" when the customer accepted online and the business confirms bookings itself.

    • distanceinteger

      Metres.

    • durationinteger

      Minutes.

    • duration_in_trafficinteger
    • pricing_reasonstring

      Why staff must price the quote by hand, when its status is "needs pricing".

    • disposal_stopsarray of object

      The sites a waste job's load goes to, in order, with their addresses; the first is its drop. Given on a single job.

      • positioninteger
      • site_idinteger (int64)
      • namestring
      • gate_fee_penceinteger (int64)
      • addressAddress
        • address_idinteger (int64)
        • customer_idinteger (int64)
        • quote_idinteger (int64)
        • house_numberinteger
        • house_namestring
        • streetstring
        • townstring
        • citystring
        • countystring
        • postcodestring

          Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

        • latitudenumber

          Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

        • longitudenumber
        • match_levelstring

          How the position was found. postcode means the postcode's centre was used.

          One of: house street postcode manual

        • needs_checkboolean

          Set when staff should check the position. Ignored when sent.

    • job_idsarray of integer (int64)

      The jobs a quote booked when it was made became, one per leg.

    • created_atstring
    • updated_atstring
    • sent_atstring

      When the quote was last emailed to the customer. A website quote is emailed when priced; a staff quote when staff send it. Ignored when sent, as are valid_until, accepted_at, accepted_by and terms_version.

    • valid_untilstring (date)

      The last day the quote can be accepted, set when it is priced from the business's quote_valid_days and never after the move date.

    • accepted_atstring
    • accepted_bystring

      One of: customer staff

    • terms_versioninteger

      The version of the terms and conditions a customer accepted the quote under.

    • deposit_dueboolean

      Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a sent deposit invoice still owed.

    • balance_dueboolean

      Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a balance invoice, sent before the move, still owed.

    • leg_idinteger (int64) or null
    • window_startstring
    • window_endstring
    • from_yard_idinteger (int64)

      The yard a delivery is collected from.

    • load_kginteger

      A waste load's weight, counted in the cargo's weight_kg.

    • recipient_namestring

      From the job's leg.

    • recipient_phonestring

      From the job's leg.

    • waste_kindsarray of string

      From the job's leg.

    • from_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • to_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • from_property_typestring
    • to_property_typestring
    • from_accessstring
    • to_accessstring
    • from_floorinteger
    • to_floorinteger
    • from_liftboolean
    • to_liftboolean
    • from_carry_minteger
    • to_carry_minteger
    • itemsarray of Item or null

      The leg's items.

      • item_idinteger (int64)
      • leg_idinteger (int64)

        On a quote, the leg the item travels on. Ignored when sent.

      • typestring
      • categorystring
      • quantityinteger
      • weightinteger

        Kilograms.

      • lengthinteger

        Centimetres.

      • widthinteger
      • heightinteger
      • fragileboolean
      • handling_minutesinteger

        One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

      • floorinteger

        On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

      • roominteger

        On a quote moved room by room, the index in its rooms of the item's room.

      • roomsarray of string

        In the catalogue, the room types the item is usually found in.

      • largeboolean

        In the catalogue, whether the item is large or awkward to move.

    • stepsarray of JobStep

      The steps the driver recorded, earliest first. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • kindstring, required

        One of: arrived_collection loaded arrived_delivery delivered arrived_disposal tipped

      • stopinteger

        The disposal stop's position, on arrived_disposal and tipped.

      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • no_signature_reasonstring

        Why a delivery has no signature, when the driver gave one.

      • proofarray of ProofLink

        The photos and signature it names, on staff's job read only.

        • idstring (uuid), required
        • kindstring, required

          One of: photo signature

        • content_typestring, required
        • urlstring, required
        • expires_atstring, required
    • issuesarray of JobIssue

      The issues the driver reported, earliest first. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • notestring, required
      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • proofarray of ProofLink

        The photos and signature it names, on staff's job read only.

        • idstring (uuid), required
        • kindstring, required

          One of: photo signature

        • content_typestring, required
        • urlstring, required
        • expires_atstring, required
    • clockarray of ClockEvent

      The clock events on the job, earliest first, voided ones included. Given on a single job.

      • idinteger (int64), required
      • client_idstring, required
      • job_idinteger (int64), required
      • staff_idinteger (int64), required
      • kindstring, required

        One of: in out

      • driver_idinteger (int64) or null, required
      • happened_atstring, required
      • received_atstring, required
      • sourcestring, required

        One of: phone office

      • added_byinteger (int64) or null, required

        The staff member who added an office event.

      • notestring or null, required

        Why the office added it.

      • replaces_idinteger (int64) or null, required

        The event an office fix voided.

      • voided_atstring or null, required
      • voided_byinteger (int64) or null, required
      • void_reasonstring or null, required
    • cargoCargo
      • weight_kginteger, required

        From the job's items, by quantity. Ignored when sent.

      • volume_m3number, required

        From the job's items' length by width by height, by quantity. Ignored when sent.

      • hazardous_goodsarray of string, required

        One of: explosive gas flammable combustible organic poison radioactive corrosive poisonousInhalation harmfulToWater other

      • tunnel_categorystring

        The ADR tunnel restriction for what the job carries, B the strictest; left out when there is none.

        One of: B C D E

    • handlingHandling

      Loading and unloading minutes. The estimate is each item's minutes, more for floors and carry, divided by the crew and multiplied by the business's handling_factor; a planner's override replaces it. Ignored when sent with a job.

      • loading_minutesinteger
      • unloading_minutesinteger
      • estimated_loading_minutesinteger
      • estimated_unloading_minutesinteger
      • loading_overrideinteger
      • unloading_overrideinteger
    • signatureSignature

      A job's signature rule, the job's override when set, otherwise the business's. Ignored when sent with a job.

      • rulestring, required

        What a driver must record on Delivered. The business's setting signature_rule is the default (signature_or_reason unless set).

        One of: signature_required signature_or_reason signature_optional

      • overrideSignatureRule or null, required
    • job_idinteger (int64)
    • invoice_idinteger (int64)
    • total_costinteger (int64)

      The estimated cost, in pence, on the first job of a quote.

    • net_totalinteger (int64)
    • status_reasonstring
    • grand_totalinteger (int64)

      What the customer pays, in pence, on the first job of a quote.

    • job_descriptionstring
    • number_of_staffinteger

      The job's crew size, its driver included.

    • driver_idinteger (int64) or null
    • crew_idsarray of integer (int64)

      Staff besides the driver.

    • pinnedboolean
Example response 200
{
  "job": {
    "quote_id": 0,
    "uuid": "string",
    "job_type": "house",
    "house_by": "size",
    "service_date": "string",
    "appointment_time": "string",
    "legs": [
      {
        "leg_id": 0,
        "position": 0,
        "from_address": {
          "address_id": 0,
          "customer_id": 0,
          "quote_id": 0,
          "house_number": 0,
          "house_name": "string",
          "street": "string",
          "town": "string",
          "city": "string",
          "county": "string",
          "postcode": "string",
          "latitude": 0,
          "longitude": 0,
          "match_level": "house",
          "needs_check": true
        },
        "to_address": {
          "address_id": 0,
          "customer_id": 0,
          "quote_id": 0,
          "house_number": 0,
          "house_name": "string",
          "street": "string",
          "town": "string",
          "city": "string",
          "county": "string",
          "postcode": "string",
          "latitude": 0,
          "longitude": 0,
          "match_level": "house",
          "needs_check": true
        },
        "from_yard_id": 0,
        "from_access": {
          "property_type": "string",
          "notes": "string",
          "floor": 0,
          "lift": true,
          "carry_m": 0
        },
        "to_access": {
          "property_type": "string",
          "notes": "string",
          "floor": 0,
          "lift": true,
          "carry_m": 0
        },
        "recipient_name": "string",
        "recipient_phone": "string",
        "size_key": "string",
        "waste_kinds": [
          "string"
        ],
        "window_start": "string",
        "window_end": "string",
        "load_kg": 0,
        "items": [
          {
            "item_id": 0,
            "leg_id": 0,
            "type": "string",
            "category": "string",
            "quantity": 0,
            "weight": 0,
            "length": 0,
            "width": 0,
            "height": 0,
            "fragile": true,
            "handling_minutes": 0,
            "floor": 0,
            "room": 0,
            "rooms": [
              "bedroom"
            ],
            "large": true
          }
        ]
      }
    ],
    "special_instructions": "string",
    "fullness": "light",
    "rooms": [
      {
        "type": "bedroom",
        "floor": 0,
        "items": [
          {
            "item_id": 0,
            "leg_id": 0,
            "type": "string",
            "category": "string",
            "quantity": 0,
            "weight": 0,
            "length": 0,
            "width": 0,
            "height": 0,
            "fragile": true,
            "handling_minutes": 0,
            "floor": 0,
            "room": 0,
            "rooms": [
              "bedroom"
            ],
            "large": true
          }
        ]
      }
    ],
    "customer": {
      "customer_id": 0,
      "title": "string",
      "first_name": "string",
      "last_name": "string",
      "email": "email",
      "email_confirmed_at": "string",
      "phone": "string",
      "phones": [
        "string"
      ]
    },
    "crew": 0,
    "vehicle_id": 0,
    "hours_minutes": 0,
    "extras": [
      {
        "id": 0,
        "quantity": 0,
        "name": "string",
        "price": 0
      }
    ],
    "total_value": 0,
    "price_lines": [
      {
        "kind": "time",
        "label": "string",
        "quantity": 0,
        "unit": 0,
        "amount": 0
      }
    ],
    "vat": {
      "registered": true,
      "net": 0,
      "vat": 0,
      "gross": 0
    },
    "display": {
      "kind": "fixed",
      "amount": 0,
      "upper": 0,
      "hourly_rate": 0
    },
    "priced": {
      "crew": 0,
      "vehicles": [
        {
          "vehicle_id": 0,
          "trips": 0
        }
      ],
      "hours": 0
    },
    "calculated": 0,
    "estimated_cost": 0,
    "margin": 0,
    "below_margin": true,
    "price_override": 0,
    "deposit_pence": 0,
    "deposit_online": "pay",
    "pay_with": [
      "stripe"
    ],
    "card_balance": {
      "amount_pence": 0,
      "on": "date"
    },
    "deposit_override": 0,
    "deposit_hold": {
      "amount_pence": 0,
      "hold_until": "string"
    },
    "override_reason": "string",
    "status": "string",
    "distance": 0,
    "duration": 0,
    "duration_in_traffic": 0,
    "pricing_reason": "string",
    "disposal_stops": [
      {
        "position": 0,
        "site_id": 0,
        "name": "string",
        "gate_fee_pence": 0,
        "address": {
          "address_id": 0,
          "customer_id": 0,
          "quote_id": 0,
          "house_number": 0,
          "house_name": "string",
          "street": "string",
          "town": "string",
          "city": "string",
          "county": "string",
          "postcode": "string",
          "latitude": 0,
          "longitude": 0,
          "match_level": "house",
          "needs_check": true
        }
      }
    ],
    "job_ids": [
      0
    ],
    "created_at": "string",
    "updated_at": "string",
    "sent_at": "string",
    "valid_until": "date",
    "accepted_at": "string",
    "accepted_by": "customer",
    "terms_version": 0,
    "deposit_due": true,
    "balance_due": true,
    "leg_id": 0,
    "window_start": "string",
    "window_end": "string",
    "from_yard_id": 0,
    "load_kg": 0,
    "recipient_name": "string",
    "recipient_phone": "string",
    "waste_kinds": [
      "general"
    ],
    "from_address": {
      "address_id": 0,
      "customer_id": 0,
      "quote_id": 0,
      "house_number": 0,
      "house_name": "string",
      "street": "string",
      "town": "string",
      "city": "string",
      "county": "string",
      "postcode": "string",
      "latitude": 0,
      "longitude": 0,
      "match_level": "house",
      "needs_check": true
    },
    "to_address": {
      "address_id": 0,
      "customer_id": 0,
      "quote_id": 0,
      "house_number": 0,
      "house_name": "string",
      "street": "string",
      "town": "string",
      "city": "string",
      "county": "string",
      "postcode": "string",
      "latitude": 0,
      "longitude": 0,
      "match_level": "house",
      "needs_check": true
    },
    "from_property_type": "string",
    "to_property_type": "string",
    "from_access": "string",
    "to_access": "string",
    "from_floor": 0,
    "to_floor": 0,
    "from_lift": true,
    "to_lift": true,
    "from_carry_m": 0,
    "to_carry_m": 0,
    "items": [
      {
        "item_id": 0,
        "leg_id": 0,
        "type": "string",
        "category": "string",
        "quantity": 0,
        "weight": 0,
        "length": 0,
        "width": 0,
        "height": 0,
        "fragile": true,
        "handling_minutes": 0,
        "floor": 0,
        "room": 0,
        "rooms": [
          "bedroom"
        ],
        "large": true
      }
    ],
    "steps": [
      {
        "id": 0,
        "client_id": "string",
        "kind": "arrived_collection",
        "stop": 0,
        "driver_id": 0,
        "happened_at": "string",
        "received_at": "string",
        "no_signature_reason": "string",
        "proof": [
          {
            "id": "uuid",
            "kind": "photo",
            "content_type": "string",
            "url": "string",
            "expires_at": "string"
          }
        ]
      }
    ],
    "issues": [
      {
        "id": 0,
        "client_id": "string",
        "note": "string",
        "driver_id": 0,
        "happened_at": "string",
        "received_at": "string",
        "proof": [
          {
            "id": "uuid",
            "kind": "photo",
            "content_type": "string",
            "url": "string",
            "expires_at": "string"
          }
        ]
      }
    ],
    "clock": [
      {
        "id": 0,
        "client_id": "string",
        "job_id": 0,
        "staff_id": 0,
        "kind": "in",
        "driver_id": 0,
        "happened_at": "string",
        "received_at": "string",
        "source": "phone",
        "added_by": 0,
        "note": "string",
        "replaces_id": 0,
        "voided_at": "string",
        "voided_by": 0,
        "void_reason": "string"
      }
    ],
    "cargo": {
      "weight_kg": 0,
      "volume_m3": 0,
      "hazardous_goods": [
        "explosive"
      ],
      "tunnel_category": "B"
    },
    "handling": {
      "loading_minutes": 0,
      "unloading_minutes": 0,
      "estimated_loading_minutes": 0,
      "estimated_unloading_minutes": 0,
      "loading_override": 0,
      "unloading_override": 0
    },
    "signature": {
      "rule": "signature_required",
      "override": {}
    },
    "job_id": 0,
    "invoice_id": 0,
    "total_cost": 0,
    "net_total": 0,
    "status_reason": "string",
    "grand_total": 0,
    "job_description": "string",
    "number_of_staff": 0,
    "driver_id": 0,
    "crew_ids": [
      0
    ],
    "pinned": true
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/job/{id}

Change a job

Needs the jobs.write permission.

Parameters

  • idstring, in the path, required

Request body · Job

  • quote_idinteger (int64)
  • uuidstring
  • job_typestring

    One of: house office items parcels waste delivery

  • house_bystring

    For a house, how it is described; the firm's choice when left out. A customer's quote must use the firm's.

    One of: size room

  • service_datestring

    YYYY-MM-DD, the business's day of the job; a timed job's follows its appointment_time.

  • appointment_timestring

    Empty on a parcels or delivery job, whose time the planner sets.

  • legsarray of Leg

    At least one. Several collections or drops only where the firm's job type allows them.

    • leg_idinteger (int64)
    • positioninteger

      The leg's place in the quote, from 0; set from the order sent.

    • from_addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • to_addressAddress

      On a waste leg, the first disposal site chosen; a customer can't set it.

      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

    • from_yard_idinteger (int64)

      The yard a delivery sent without a collection address is collected from, the one nearest its drop. Ignored when sent.

    • from_accessAccess

      What a crew meets at one end of a leg.

      • property_typestring
      • notesstring

        Access notes, such as narrow stairs or no parking.

      • floorinteger
      • liftboolean
      • carry_minteger

        How far, in metres, things are carried between the door and the vehicle.

    • to_accessAccess

      What a crew meets at one end of a leg.

      • property_typestring
      • notesstring

        Access notes, such as narrow stairs or no parking.

      • floorinteger
      • liftboolean
      • carry_minteger

        How far, in metres, things are carried between the door and the vehicle.

    • recipient_namestring
    • recipient_phonestring
    • size_keystring

      One of the firm's active sizes for the type (GET /v1/config job_types); needed for parcels, waste and a house by size; a delivery's is standard when left out; none for office and items.

    • waste_kindsarray of string

      On a waste leg, at least one of the firm's waste kinds; none on other types.

    • window_startstring

      HH:MM, the business's local time. Only on parcels and delivery.

    • window_endstring

      HH:MM, after window_start.

    • load_kginteger

      A waste load's weight, its size's cubic metres at the price book's rubble_kg_per_m3 when it holds rubble_soil, otherwise kg_per_m3. Ignored when a customer sends it.

    • itemsarray of Item
      • item_idinteger (int64)
      • leg_idinteger (int64)

        On a quote, the leg the item travels on. Ignored when sent.

      • typestring
      • categorystring
      • quantityinteger
      • weightinteger

        Kilograms.

      • lengthinteger

        Centimetres.

      • widthinteger
      • heightinteger
      • fragileboolean
      • handling_minutesinteger

        One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

      • floorinteger

        On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

      • roominteger

        On a quote moved room by room, the index in its rooms of the item's room.

      • roomsarray of string

        In the catalogue, the room types the item is usually found in.

      • largeboolean

        In the catalogue, whether the item is large or awkward to move.

  • special_instructionsstring
  • fullnessstring

    For a house by size, how full the property is.

    One of: light average packed

  • roomsarray of Room

    For a house by room, on a quote with one leg, at least one room.

    • typestring, required

      One of: bedroom kitchen lounge dining_room bathroom office loft garage shed

    • floorinteger, required
    • itemsarray of Item

      Sent with a new quote, the room's items; they are stored with the leg's items, on the room's floor and naming the room. Returned rooms have none.

      • item_idinteger (int64)
      • leg_idinteger (int64)

        On a quote, the leg the item travels on. Ignored when sent.

      • typestring
      • categorystring
      • quantityinteger
      • weightinteger

        Kilograms.

      • lengthinteger

        Centimetres.

      • widthinteger
      • heightinteger
      • fragileboolean
      • handling_minutesinteger

        One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

      • floorinteger

        On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

      • roominteger

        On a quote moved room by room, the index in its rooms of the item's room.

      • roomsarray of string

        In the catalogue, the room types the item is usually found in.

      • largeboolean

        In the catalogue, whether the item is large or awkward to move.

  • customerCustomer
    • customer_idinteger (int64)
    • titlestring
    • first_namestring
    • last_namestring
    • emailstring (email)
    • email_confirmed_atstring

      When the customer first signed in by a link sent to the email; cleared when the email changes. Ignored when sent.

    • phonestring

      The latest number given.

    • phonesarray of string

      Every number the customer has given, oldest first, each once however spaced. Ignored when sent.

  • crewinteger or null

    Staff's crew; null works it out from the firm's crew rules. Staff only.

  • vehicle_idinteger (int64) or null

    The job's assignment, set with PUT /v1/admin/job/{id}/assignment; vehicle_id, driver_id, crew_ids and pinned are ignored when sent with a job.

  • hours_minutesinteger or null

    The time staff charge, in minutes; null works it out. Staff only.

  • extrasarray of QuoteExtra or null
    • idinteger (int64), required
    • quantityinteger, required
    • namestring

      As priced. Ignored when sent.

    • priceinteger (int64)

      Pence each, as priced. Ignored when sent.

  • total_valueinteger (int64)

    What the customer pays, in pence.

  • price_linesarray of PriceLine or null

    The price's parts. To customers only when the firm shows its breakdown and staff haven't set the price.

    • kindstring, required

      One of: time fixed miles floors heavy fragile extra adjustment booking_fee road_charges gate_fee free

    • labelstring, required
    • quantitynumber, required
    • unitinteger (int64), required
    • amountinteger (int64), required
  • vatVATPrice

    A price excluding VAT with the VAT the firm adds at the standard 20%; registered is the firm's vat_registered setting, and without it vat is 0 and gross is net.

    • registeredboolean, required
    • netinteger (int64), required
    • vatinteger (int64), required
    • grossinteger (int64), required
  • displayPriceDisplay or null

    How the price is shown to the customer, in pence. An estimate gives the hourly rate; a range its upper end.

    • kindstring, required

      One of: fixed estimate range

    • amountinteger (int64), required
    • upperinteger (int64)
    • hourly_rateinteger (int64)
  • pricedPriced or null

    What a quote was priced with. Staff only.

    • crewinteger
    • vehiclesarray of object
      • vehicle_idinteger (int64)
      • tripsinteger
    • hoursnumber
  • calculatedinteger (int64)

    The worked-out price, beside staff's override. Staff only.

  • estimated_costinteger (int64)

    Staff only.

  • margininteger (int64)

    Staff only.

  • below_marginboolean

    Under the firm's minimum margin. Staff only.

  • price_overrideinteger (int64) or null

    Staff only; set with PUT /v1/admin/quote/{id}/price.

  • deposit_penceinteger (int64)

    The deposit due to book, in pence, from the firm's deposit rule or staff's override, capped at the gross price; 0 when there is none or it is under 30 pence.

  • deposit_onlinestring

    Set by GET /v1/quote/{id} when accepting takes deposit_pence online first, through the checkout_url accepting answers; "pay" takes it at once, "hold" holds it on the card until staff confirm the booking.

    One of: pay hold

  • pay_witharray of string

    Set by GET /v1/quote/{id} with deposit_online; the providers the deposit can be paid with, in the order to offer them.

    One of: stripe paypal

  • card_balanceobject

    Set by GET /v1/quote/{id} when accepting pays the deposit online at a firm that charges the balance to the card before the move; accepting with Stripe then needs agree_card.

    • amount_penceinteger (int64), required
    • onstring (date), required

      The date the balance is taken, from 08:00.

  • deposit_overrideinteger (int64) or null

    Staff only; set with PUT /v1/admin/quote/{id}/deposit.

  • deposit_holdobject

    Set by GET /v1/admin/quote/{id} while the deposit is held on the customer's card, waiting for staff to confirm the booking.

    • amount_penceinteger (int64), required
    • hold_untilstring, required

      UTC, YYYY-MM-DD HH:MM:SS, when the hold lapses.

  • override_reasonstring

    Staff only.

  • statusstring

    "quoted price" when priced. "accepted" when booked or a delivery, once priced. "awaiting route" while HERE can't be reached: the route is tried again every 5 minutes and the customer is emailed the price when it arrives. "needs pricing" when staff must price it by hand (see pricing_reason); the customer is told their price will follow by email. "expired" once a priced quote is past valid_until, worked out when read. "acceptance received" when the customer accepted online and the business confirms bookings itself.

  • distanceinteger

    Metres.

  • durationinteger

    Minutes.

  • duration_in_trafficinteger
  • pricing_reasonstring

    Why staff must price the quote by hand, when its status is "needs pricing".

  • disposal_stopsarray of object

    The sites a waste job's load goes to, in order, with their addresses; the first is its drop. Given on a single job.

    • positioninteger
    • site_idinteger (int64)
    • namestring
    • gate_fee_penceinteger (int64)
    • addressAddress
      • address_idinteger (int64)
      • customer_idinteger (int64)
      • quote_idinteger (int64)
      • house_numberinteger
      • house_namestring
      • streetstring
      • townstring
      • citystring
      • countystring
      • postcodestring

        Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

      • latitudenumber

        Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

      • longitudenumber
      • match_levelstring

        How the position was found. postcode means the postcode's centre was used.

        One of: house street postcode manual

      • needs_checkboolean

        Set when staff should check the position. Ignored when sent.

  • job_idsarray of integer (int64)

    The jobs a quote booked when it was made became, one per leg.

  • created_atstring
  • updated_atstring
  • sent_atstring

    When the quote was last emailed to the customer. A website quote is emailed when priced; a staff quote when staff send it. Ignored when sent, as are valid_until, accepted_at, accepted_by and terms_version.

  • valid_untilstring (date)

    The last day the quote can be accepted, set when it is priced from the business's quote_valid_days and never after the move date.

  • accepted_atstring
  • accepted_bystring

    One of: customer staff

  • terms_versioninteger

    The version of the terms and conditions a customer accepted the quote under.

  • deposit_dueboolean

    Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a sent deposit invoice still owed.

  • balance_dueboolean

    Set by GET /v1/admin/jobs and GET /v1/admin/job/{id} while the job's quote has a balance invoice, sent before the move, still owed.

  • leg_idinteger (int64) or null
  • window_startstring
  • window_endstring
  • from_yard_idinteger (int64)

    The yard a delivery is collected from.

  • load_kginteger

    A waste load's weight, counted in the cargo's weight_kg.

  • recipient_namestring

    From the job's leg.

  • recipient_phonestring

    From the job's leg.

  • waste_kindsarray of string

    From the job's leg.

  • from_addressAddress
    • address_idinteger (int64)
    • customer_idinteger (int64)
    • quote_idinteger (int64)
    • house_numberinteger
    • house_namestring
    • streetstring
    • townstring
    • citystring
    • countystring
    • postcodestring

      Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

    • latitudenumber

      Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

    • longitudenumber
    • match_levelstring

      How the position was found. postcode means the postcode's centre was used.

      One of: house street postcode manual

    • needs_checkboolean

      Set when staff should check the position. Ignored when sent.

  • to_addressAddress
    • address_idinteger (int64)
    • customer_idinteger (int64)
    • quote_idinteger (int64)
    • house_numberinteger
    • house_namestring
    • streetstring
    • townstring
    • citystring
    • countystring
    • postcodestring

      Must be a live postcode in England, Scotland or Wales; stored as "AB1 2CD".

    • latitudenumber

      Sent with longitude and match_level from a chosen suggestion; otherwise the address is found when saved.

    • longitudenumber
    • match_levelstring

      How the position was found. postcode means the postcode's centre was used.

      One of: house street postcode manual

    • needs_checkboolean

      Set when staff should check the position. Ignored when sent.

  • from_property_typestring
  • to_property_typestring
  • from_accessstring
  • to_accessstring
  • from_floorinteger
  • to_floorinteger
  • from_liftboolean
  • to_liftboolean
  • from_carry_minteger
  • to_carry_minteger
  • itemsarray of Item or null

    The leg's items.

    • item_idinteger (int64)
    • leg_idinteger (int64)

      On a quote, the leg the item travels on. Ignored when sent.

    • typestring
    • categorystring
    • quantityinteger
    • weightinteger

      Kilograms.

    • lengthinteger

      Centimetres.

    • widthinteger
    • heightinteger
    • fragileboolean
    • handling_minutesinteger

      One person's minutes to handle the item; left out, they come from its size (20 a cubic metre).

    • floorinteger

      On a quote, the floor the item is on; -1 is a basement and 0, the default, the ground floor.

    • roominteger

      On a quote moved room by room, the index in its rooms of the item's room.

    • roomsarray of string

      In the catalogue, the room types the item is usually found in.

    • largeboolean

      In the catalogue, whether the item is large or awkward to move.

  • stepsarray of JobStep

    The steps the driver recorded, earliest first. Given on a single job.

    • idinteger (int64), required
    • client_idstring, required
    • kindstring, required

      One of: arrived_collection loaded arrived_delivery delivered arrived_disposal tipped

    • stopinteger

      The disposal stop's position, on arrived_disposal and tipped.

    • driver_idinteger (int64) or null, required
    • happened_atstring, required
    • received_atstring, required
    • no_signature_reasonstring

      Why a delivery has no signature, when the driver gave one.

    • proofarray of ProofLink

      The photos and signature it names, on staff's job read only.

      • idstring (uuid), required
      • kindstring, required

        One of: photo signature

      • content_typestring, required
      • urlstring, required
      • expires_atstring, required
  • issuesarray of JobIssue

    The issues the driver reported, earliest first. Given on a single job.

    • idinteger (int64), required
    • client_idstring, required
    • notestring, required
    • driver_idinteger (int64) or null, required
    • happened_atstring, required
    • received_atstring, required
    • proofarray of ProofLink

      The photos and signature it names, on staff's job read only.

      • idstring (uuid), required
      • kindstring, required

        One of: photo signature

      • content_typestring, required
      • urlstring, required
      • expires_atstring, required
  • clockarray of ClockEvent

    The clock events on the job, earliest first, voided ones included. Given on a single job.

    • idinteger (int64), required
    • client_idstring, required
    • job_idinteger (int64), required
    • staff_idinteger (int64), required
    • kindstring, required

      One of: in out

    • driver_idinteger (int64) or null, required
    • happened_atstring, required
    • received_atstring, required
    • sourcestring, required

      One of: phone office

    • added_byinteger (int64) or null, required

      The staff member who added an office event.

    • notestring or null, required

      Why the office added it.

    • replaces_idinteger (int64) or null, required

      The event an office fix voided.

    • voided_atstring or null, required
    • voided_byinteger (int64) or null, required
    • void_reasonstring or null, required
  • cargoCargo
    • weight_kginteger, required

      From the job's items, by quantity. Ignored when sent.

    • volume_m3number, required

      From the job's items' length by width by height, by quantity. Ignored when sent.

    • hazardous_goodsarray of string, required

      One of: explosive gas flammable combustible organic poison radioactive corrosive poisonousInhalation harmfulToWater other

    • tunnel_categorystring

      The ADR tunnel restriction for what the job carries, B the strictest; left out when there is none.

      One of: B C D E

  • handlingHandling

    Loading and unloading minutes. The estimate is each item's minutes, more for floors and carry, divided by the crew and multiplied by the business's handling_factor; a planner's override replaces it. Ignored when sent with a job.

    • loading_minutesinteger
    • unloading_minutesinteger
    • estimated_loading_minutesinteger
    • estimated_unloading_minutesinteger
    • loading_overrideinteger
    • unloading_overrideinteger
  • signatureSignature

    A job's signature rule, the job's override when set, otherwise the business's. Ignored when sent with a job.

    • rulestring, required

      What a driver must record on Delivered. The business's setting signature_rule is the default (signature_or_reason unless set).

      One of: signature_required signature_or_reason signature_optional

    • overrideSignatureRule or null, required
  • job_idinteger (int64)
  • invoice_idinteger (int64)
  • total_costinteger (int64)

    The estimated cost, in pence, on the first job of a quote.

  • net_totalinteger (int64)
  • status_reasonstring
  • grand_totalinteger (int64)

    What the customer pays, in pence, on the first job of a quote.

  • job_descriptionstring
  • number_of_staffinteger

    The job's crew size, its driver included.

  • driver_idinteger (int64) or null
  • crew_idsarray of integer (int64)

    Staff besides the driver.

  • pinnedboolean
Example request
{
  "quote_id": 0,
  "uuid": "string",
  "job_type": "house",
  "house_by": "size",
  "service_date": "string",
  "appointment_time": "string",
  "legs": [
    {
      "leg_id": 0,
      "position": 0,
      "from_address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      },
      "to_address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      },
      "from_yard_id": 0,
      "from_access": {
        "property_type": "string",
        "notes": "string",
        "floor": 0,
        "lift": true,
        "carry_m": 0
      },
      "to_access": {
        "property_type": "string",
        "notes": "string",
        "floor": 0,
        "lift": true,
        "carry_m": 0
      },
      "recipient_name": "string",
      "recipient_phone": "string",
      "size_key": "string",
      "waste_kinds": [
        "string"
      ],
      "window_start": "string",
      "window_end": "string",
      "load_kg": 0,
      "items": [
        {
          "item_id": 0,
          "leg_id": 0,
          "type": "string",
          "category": "string",
          "quantity": 0,
          "weight": 0,
          "length": 0,
          "width": 0,
          "height": 0,
          "fragile": true,
          "handling_minutes": 0,
          "floor": 0,
          "room": 0,
          "rooms": [
            "bedroom"
          ],
          "large": true
        }
      ]
    }
  ],
  "special_instructions": "string",
  "fullness": "light",
  "rooms": [
    {
      "type": "bedroom",
      "floor": 0,
      "items": [
        {
          "item_id": 0,
          "leg_id": 0,
          "type": "string",
          "category": "string",
          "quantity": 0,
          "weight": 0,
          "length": 0,
          "width": 0,
          "height": 0,
          "fragile": true,
          "handling_minutes": 0,
          "floor": 0,
          "room": 0,
          "rooms": [
            "bedroom"
          ],
          "large": true
        }
      ]
    }
  ],
  "customer": {
    "customer_id": 0,
    "title": "string",
    "first_name": "string",
    "last_name": "string",
    "email": "email",
    "email_confirmed_at": "string",
    "phone": "string",
    "phones": [
      "string"
    ]
  },
  "crew": 0,
  "vehicle_id": 0,
  "hours_minutes": 0,
  "extras": [
    {
      "id": 0,
      "quantity": 0,
      "name": "string",
      "price": 0
    }
  ],
  "total_value": 0,
  "price_lines": [
    {
      "kind": "time",
      "label": "string",
      "quantity": 0,
      "unit": 0,
      "amount": 0
    }
  ],
  "vat": {
    "registered": true,
    "net": 0,
    "vat": 0,
    "gross": 0
  },
  "display": {
    "kind": "fixed",
    "amount": 0,
    "upper": 0,
    "hourly_rate": 0
  },
  "priced": {
    "crew": 0,
    "vehicles": [
      {
        "vehicle_id": 0,
        "trips": 0
      }
    ],
    "hours": 0
  },
  "calculated": 0,
  "estimated_cost": 0,
  "margin": 0,
  "below_margin": true,
  "price_override": 0,
  "deposit_pence": 0,
  "deposit_online": "pay",
  "pay_with": [
    "stripe"
  ],
  "card_balance": {
    "amount_pence": 0,
    "on": "date"
  },
  "deposit_override": 0,
  "deposit_hold": {
    "amount_pence": 0,
    "hold_until": "string"
  },
  "override_reason": "string",
  "status": "string",
  "distance": 0,
  "duration": 0,
  "duration_in_traffic": 0,
  "pricing_reason": "string",
  "disposal_stops": [
    {
      "position": 0,
      "site_id": 0,
      "name": "string",
      "gate_fee_pence": 0,
      "address": {
        "address_id": 0,
        "customer_id": 0,
        "quote_id": 0,
        "house_number": 0,
        "house_name": "string",
        "street": "string",
        "town": "string",
        "city": "string",
        "county": "string",
        "postcode": "string",
        "latitude": 0,
        "longitude": 0,
        "match_level": "house",
        "needs_check": true
      }
    }
  ],
  "job_ids": [
    0
  ],
  "created_at": "string",
  "updated_at": "string",
  "sent_at": "string",
  "valid_until": "date",
  "accepted_at": "string",
  "accepted_by": "customer",
  "terms_version": 0,
  "deposit_due": true,
  "balance_due": true,
  "leg_id": 0,
  "window_start": "string",
  "window_end": "string",
  "from_yard_id": 0,
  "load_kg": 0,
  "recipient_name": "string",
  "recipient_phone": "string",
  "waste_kinds": [
    "general"
  ],
  "from_address": {
    "address_id": 0,
    "customer_id": 0,
    "quote_id": 0,
    "house_number": 0,
    "house_name": "string",
    "street": "string",
    "town": "string",
    "city": "string",
    "county": "string",
    "postcode": "string",
    "latitude": 0,
    "longitude": 0,
    "match_level": "house",
    "needs_check": true
  },
  "to_address": {
    "address_id": 0,
    "customer_id": 0,
    "quote_id": 0,
    "house_number": 0,
    "house_name": "string",
    "street": "string",
    "town": "string",
    "city": "string",
    "county": "string",
    "postcode": "string",
    "latitude": 0,
    "longitude": 0,
    "match_level": "house",
    "needs_check": true
  },
  "from_property_type": "string",
  "to_property_type": "string",
  "from_access": "string",
  "to_access": "string",
  "from_floor": 0,
  "to_floor": 0,
  "from_lift": true,
  "to_lift": true,
  "from_carry_m": 0,
  "to_carry_m": 0,
  "items": [
    {
      "item_id": 0,
      "leg_id": 0,
      "type": "string",
      "category": "string",
      "quantity": 0,
      "weight": 0,
      "length": 0,
      "width": 0,
      "height": 0,
      "fragile": true,
      "handling_minutes": 0,
      "floor": 0,
      "room": 0,
      "rooms": [
        "bedroom"
      ],
      "large": true
    }
  ],
  "steps": [
    {
      "id": 0,
      "client_id": "string",
      "kind": "arrived_collection",
      "stop": 0,
      "driver_id": 0,
      "happened_at": "string",
      "received_at": "string",
      "no_signature_reason": "string",
      "proof": [
        {
          "id": "uuid",
          "kind": "photo",
          "content_type": "string",
          "url": "string",
          "expires_at": "string"
        }
      ]
    }
  ],
  "issues": [
    {
      "id": 0,
      "client_id": "string",
      "note": "string",
      "driver_id": 0,
      "happened_at": "string",
      "received_at": "string",
      "proof": [
        {
          "id": "uuid",
          "kind": "photo",
          "content_type": "string",
          "url": "string",
          "expires_at": "string"
        }
      ]
    }
  ],
  "clock": [
    {
      "id": 0,
      "client_id": "string",
      "job_id": 0,
      "staff_id": 0,
      "kind": "in",
      "driver_id": 0,
      "happened_at": "string",
      "received_at": "string",
      "source": "phone",
      "added_by": 0,
      "note": "string",
      "replaces_id": 0,
      "voided_at": "string",
      "voided_by": 0,
      "void_reason": "string"
    }
  ],
  "cargo": {
    "weight_kg": 0,
    "volume_m3": 0,
    "hazardous_goods": [
      "explosive"
    ],
    "tunnel_category": "B"
  },
  "handling": {
    "loading_minutes": 0,
    "unloading_minutes": 0,
    "estimated_loading_minutes": 0,
    "estimated_unloading_minutes": 0,
    "loading_override": 0,
    "unloading_override": 0
  },
  "signature": {
    "rule": "signature_required",
    "override": {}
  },
  "job_id": 0,
  "invoice_id": 0,
  "total_cost": 0,
  "net_total": 0,
  "status_reason": "string",
  "grand_total": 0,
  "job_description": "string",
  "number_of_staff": 0,
  "driver_id": 0,
  "crew_ids": [
    0
  ],
  "pinned": true
}

Response 200 · Message

Done.

  • messagestring, required
Example response 200
{
  "message": "string"
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 409 · Error

It clashes with what is stored.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/job/{id}/route

A job's route

Needs the jobs.read permission. The job's stored route for its vehicle, or else its quote's stored route. Plans nothing with HERE; 404 when there is neither.

Parameters

  • idstring, in the path, required

Response 200 · object

Done.

  • routeRoute, required
    • quote_idinteger (int64), required
    • from_addressstring
    • to_addressstring
    • appointment_timestring
    • departure_timestring

      When to leave to arrive at the appointment, with traffic.

    • durationinteger

      Minutes without traffic.

    • duration_in_trafficinteger

      Minutes with the traffic expected at the time.

    • distanceinteger

      Metres.

    • fuel_litresnumber

      Litres for the vehicle's fuel and consumption; left out for electric vehicles.

    • co2_kgnumber
    • pointsarray of array of number, required

      The route line as [latitude, longitude] pairs.

    • incidentsarray of object, required
      • typestring
      • criticalitystring
      • descriptionstring
    • noticesarray of object, required

      HERE's warnings, such as a restriction it couldn't avoid.

      • codestring
      • titlestring
      • severitystring
    • vehicle_idinteger (int64)

      The vehicle the route was planned for.

    • generic_vehicleboolean, required

      Set when the route was planned for the generic 3.5 t van because the business has no confirmed default vehicle.

    • road_chargesarray of RoadCharge

      Road charges on the route in pence (tolls, crossings, congestion and clean air zones), when the business passes them on and has road charge lookups left. London's ULEZ is left out for vehicles that meet it.

      • zonestring, required

        london_congestion, london_ulez, dartford, or the toll's own name in snake case.

      • penceinteger (int64), required
Example response 200
{
  "route": {
    "quote_id": 0,
    "from_address": "string",
    "to_address": "string",
    "appointment_time": "string",
    "departure_time": "string",
    "duration": 0,
    "duration_in_traffic": 0,
    "distance": 0,
    "fuel_litres": 0,
    "co2_kg": 0,
    "points": [
      [
        0
      ]
    ],
    "incidents": [
      {
        "type": "string",
        "criticality": "string",
        "description": "string"
      }
    ],
    "notices": [
      {
        "code": "string",
        "title": "string",
        "severity": "string"
      }
    ],
    "vehicle_id": 0,
    "generic_vehicle": true,
    "road_charges": [
      {
        "zone": "string",
        "pence": 0
      }
    ]
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/job/{id}/cargo

Set what limits a job's route

Needs the jobs.write permission. Replaces the job's hazardous goods and tunnel category; weight and volume come from its items.

Parameters

  • idstring, in the path, required

Request body · object

  • hazardous_goodsarray of string
  • tunnel_categorystring
Example request
{
  "hazardous_goods": [
    "string"
  ],
  "tunnel_category": "string"
}

Response 200 · object

Done.

  • cargoCargo, required
    • weight_kginteger, required

      From the job's items, by quantity. Ignored when sent.

    • volume_m3number, required

      From the job's items' length by width by height, by quantity. Ignored when sent.

    • hazardous_goodsarray of string, required

      One of: explosive gas flammable combustible organic poison radioactive corrosive poisonousInhalation harmfulToWater other

    • tunnel_categorystring

      The ADR tunnel restriction for what the job carries, B the strictest; left out when there is none.

      One of: B C D E

Example response 200
{
  "cargo": {
    "weight_kg": 0,
    "volume_m3": 0,
    "hazardous_goods": [
      "explosive"
    ],
    "tunnel_category": "B"
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/job/{id}/handling

Set a job's loading and unloading minutes by hand

Needs the jobs.write permission. Each is from 1 to 1440 minutes; null (or left out) returns that side to the estimate.

Parameters

  • idstring, in the path, required

Request body · object

  • loading_minutesinteger or null
  • unloading_minutesinteger or null
Example request
{
  "loading_minutes": 0,
  "unloading_minutes": 0
}

Response 200 · object

Done.

  • handlingHandling, required

    Loading and unloading minutes. The estimate is each item's minutes, more for floors and carry, divided by the crew and multiplied by the business's handling_factor; a planner's override replaces it. Ignored when sent with a job.

    • loading_minutesinteger
    • unloading_minutesinteger
    • estimated_loading_minutesinteger
    • estimated_unloading_minutesinteger
    • loading_overrideinteger
    • unloading_overrideinteger
Example response 200
{
  "handling": {
    "loading_minutes": 0,
    "unloading_minutes": 0,
    "estimated_loading_minutes": 0,
    "estimated_unloading_minutes": 0,
    "loading_override": 0,
    "unloading_override": 0
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/job/{id}/signature

Set a job's own signature rule

Needs the jobs.write permission. null (or left out) returns the job to the business's signature_rule. Publishes job.updated.

Parameters

  • idstring, in the path, required

Request body · object

  • overrideSignatureRule or null
Example request
{
  "override": {}
}

Response 200 · object

Done.

  • signatureSignature, required

    A job's signature rule, the job's override when set, otherwise the business's. Ignored when sent with a job.

    • rulestring, required

      What a driver must record on Delivered. The business's setting signature_rule is the default (signature_or_reason unless set).

      One of: signature_required signature_or_reason signature_optional

    • overrideSignatureRule or null, required
Example response 200
{
  "signature": {
    "rule": "signature_required",
    "override": {}
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/job/{id}/assignment

Give a job its vehicle, driver and crew

Needs the jobs.write permission. Refused (409) for a retired or unconfirmed vehicle; refused (400) for a driver without the Driver role, the driver also in crew_ids, a repeated crew member or pinning without a vehicle; 404 for staff who aren't active. Days off, absences, bank holidays, the vehicle's hours and capacity, and a short crew come back as warnings with the saved assignment. A new vehicle plans the job's route again with HERE for that vehicle and the job's cargo; when HERE can't, a route_failed warning says why.

Parameters

  • idstring, in the path, required

Request body · Assignment

  • vehicle_idinteger (int64) or null
  • driver_idinteger (int64) or null
  • crew_idsarray of integer (int64)

    Staff besides the driver.

  • crew_sizeinteger, required

    How many people the job needs, the driver included.

  • pinnedboolean

    Keeps the job on its vehicle when the day is planned.

Example request
{
  "vehicle_id": 0,
  "driver_id": 0,
  "crew_ids": [
    0
  ],
  "crew_size": 0,
  "pinned": true
}

Response 200 · object

Done.

  • assignmentobject, required
    • vehicle_idinteger (int64) or null
    • driver_idinteger (int64) or null
    • crew_idsarray of integer (int64)

      Staff besides the driver.

    • crew_sizeinteger, required

      How many people the job needs, the driver included.

    • pinnedboolean

      Keeps the job on its vehicle when the day is planned.

    • warningsarray of Warning, required
      • codestring, required

        One of: closed vehicle_off outside_hours over_payload over_volume away crew_short route_failed

      • messagestring, required
    • routeRoute
      • quote_idinteger (int64), required
      • from_addressstring
      • to_addressstring
      • appointment_timestring
      • departure_timestring

        When to leave to arrive at the appointment, with traffic.

      • durationinteger

        Minutes without traffic.

      • duration_in_trafficinteger

        Minutes with the traffic expected at the time.

      • distanceinteger

        Metres.

      • fuel_litresnumber

        Litres for the vehicle's fuel and consumption; left out for electric vehicles.

      • co2_kgnumber
      • pointsarray of array of number, required

        The route line as [latitude, longitude] pairs.

      • incidentsarray of object, required
        • typestring
        • criticalitystring
        • descriptionstring
      • noticesarray of object, required

        HERE's warnings, such as a restriction it couldn't avoid.

        • codestring
        • titlestring
        • severitystring
      • vehicle_idinteger (int64)

        The vehicle the route was planned for.

      • generic_vehicleboolean, required

        Set when the route was planned for the generic 3.5 t van because the business has no confirmed default vehicle.

      • road_chargesarray of RoadCharge

        Road charges on the route in pence (tolls, crossings, congestion and clean air zones), when the business passes them on and has road charge lookups left. London's ULEZ is left out for vehicles that meet it.

        • zonestring, required

          london_congestion, london_ulez, dartford, or the toll's own name in snake case.

        • penceinteger (int64), required
Example response 200
{
  "assignment": {
    "vehicle_id": 0,
    "driver_id": 0,
    "crew_ids": [
      0
    ],
    "crew_size": 0,
    "pinned": true,
    "warnings": [
      {
        "code": "closed",
        "message": "string"
      }
    ],
    "route": {
      "quote_id": 0,
      "from_address": "string",
      "to_address": "string",
      "appointment_time": "string",
      "departure_time": "string",
      "duration": 0,
      "duration_in_traffic": 0,
      "distance": 0,
      "fuel_litres": 0,
      "co2_kg": 0,
      "points": [
        [
          0
        ]
      ],
      "incidents": [
        {
          "type": "string",
          "criticality": "string",
          "description": "string"
        }
      ],
      "notices": [
        {
          "code": "string",
          "title": "string",
          "severity": "string"
        }
      ],
      "vehicle_id": 0,
      "generic_vehicle": true,
      "road_charges": [
        {
          "zone": "string",
          "pence": 0
        }
      ]
    }
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 409 · Error

It clashes with what is stored.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/schedule

A day's jobs by vehicle

Needs the jobs.read permission. Every active vehicle with its hours that weekday and its jobs, and the jobs with no vehicle, for a date in the business's time zone; each job with its driver, crew, handling minutes, route and the warnings an assignment would give.

Parameters

  • datestring (date), in the query, required

Response 200 · object

Done.

  • scheduleSchedule, required
    • datestring (date)
    • working_dayboolean
    • vehiclesarray of object
      • vehicle_idinteger (int64)
      • namestring
      • registrationstring
      • classstring
      • hoursVehicleHours or null
        • weekdayinteger, required

          1 is Monday.

        • startsstring, required

          HH:MM in the business's time zone.

        • endsstring, required
      • jobsarray of ScheduleJob
        • job_idinteger (int64)
        • job_typestring

          One of: house office items parcels waste delivery

        • service_datestring

          YYYY-MM-DD, the business's day of the job.

        • appointment_timestring

          YYYY-MM-DD HH:MM in the business's time zone. Empty on a parcels or delivery job, whose time the planner sets.

        • window_startstring

          HH:MM in the business's time zone, when the customer gave a window.

        • window_endstring

          HH:MM in the business's time zone, when the customer gave a window.

        • from_addressstring
        • to_addressstring
        • driverPerson or null
          • idinteger (int64), required
          • namestring, required
        • crewarray of Person
          • idinteger (int64), required
          • namestring, required
        • crew_sizeinteger
        • pinnedboolean
        • loading_minutesinteger
        • unloading_minutesinteger
        • route_minutesinteger or null
        • route_distanceinteger or null

          Metres.

        • warningsarray of Warning
          • codestring, required

            One of: closed vehicle_off outside_hours over_payload over_volume away crew_short route_failed

          • messagestring, required
    • unassignedarray of ScheduleJob
      • job_idinteger (int64)
      • job_typestring

        One of: house office items parcels waste delivery

      • service_datestring

        YYYY-MM-DD, the business's day of the job.

      • appointment_timestring

        YYYY-MM-DD HH:MM in the business's time zone. Empty on a parcels or delivery job, whose time the planner sets.

      • window_startstring

        HH:MM in the business's time zone, when the customer gave a window.

      • window_endstring

        HH:MM in the business's time zone, when the customer gave a window.

      • from_addressstring
      • to_addressstring
      • driverPerson or null
        • idinteger (int64), required
        • namestring, required
      • crewarray of Person
        • idinteger (int64), required
        • namestring, required
      • crew_sizeinteger
      • pinnedboolean
      • loading_minutesinteger
      • unloading_minutesinteger
      • route_minutesinteger or null
      • route_distanceinteger or null

        Metres.

      • warningsarray of Warning
        • codestring, required

          One of: closed vehicle_off outside_hours over_payload over_volume away crew_short route_failed

        • messagestring, required
Example response 200
{
  "schedule": {
    "date": "date",
    "working_day": true,
    "vehicles": [
      {
        "vehicle_id": 0,
        "name": "string",
        "registration": "string",
        "class": "string",
        "hours": {
          "weekday": 0,
          "starts": "string",
          "ends": "string"
        },
        "jobs": [
          {
            "job_id": 0,
            "job_type": "house",
            "service_date": "string",
            "appointment_time": "string",
            "window_start": "string",
            "window_end": "string",
            "from_address": "string",
            "to_address": "string",
            "driver": {
              "id": 0,
              "name": "string"
            },
            "crew": [
              {
                "id": 0,
                "name": "string"
              }
            ],
            "crew_size": 0,
            "pinned": true,
            "loading_minutes": 0,
            "unloading_minutes": 0,
            "route_minutes": 0,
            "route_distance": 0,
            "warnings": [
              {
                "code": "closed",
                "message": "string"
              }
            ]
          }
        ]
      }
    ],
    "unassigned": [
      {
        "job_id": 0,
        "job_type": "house",
        "service_date": "string",
        "appointment_time": "string",
        "window_start": "string",
        "window_end": "string",
        "from_address": "string",
        "to_address": "string",
        "driver": {
          "id": 0,
          "name": "string"
        },
        "crew": [
          {
            "id": 0,
            "name": "string"
          }
        ],
        "crew_size": 0,
        "pinned": true,
        "loading_minutes": 0,
        "unloading_minutes": 0,
        "route_minutes": 0,
        "route_distance": 0,
        "warnings": [
          {
            "code": "closed",
            "message": "string"
          }
        ]
      }
    ]
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/plans

A day's plans

Needs the jobs.read permission. The plans newest first, without their runs; what has changed since the approved plan; and the day's nightly run.

Parameters

  • datestring (date), in the query, required

Response 200 · object

Done.

  • plansarray of Plan, required
    • idinteger (int64), required
    • datestring (date), required
    • statusstring, required

      One of: solving proposed failed approved superseded rejected

    • prioritystring, required

      One of: shortest_time lowest_fuel lowest_cost shortest_distance fewest_vehicles

    • failurestring
    • runsarray of PlanRun, required
      • vehicle_idinteger (int64), required
      • vehicle_namestring, required
      • driver_idinteger (int64) or null, required
      • driver_namestring, required
      • stopsarray of PlanStop, required
        • kindstring, required

          One of: departure collection delivery disposal break arrival

        • job_idinteger (int64)
        • disposal_stopinteger

          A disposal stop's position among its job's disposal stops, from 0.

        • addressstring
        • latitudenumber, required
        • longitudenumber, required
        • arrivesstring, required

          The business's local time, YYYY-MM-DD HH:MM.

        • departsstring, required

          The business's local time, YYYY-MM-DD HH:MM.

      • measuresPlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
      • routePlanRoute or null, required

        Set once the plan is approved, unless HERE couldn't route the run.

        • distance_metresinteger, required
        • minutesinteger, required

          With the traffic expected at the time.

        • fuel_litresnumber
        • co2_kgnumber
        • pointsarray of array of number, required

          The route line as [latitude, longitude] pairs.

        • incidentsarray of object, required
          • typestring
          • criticalitystring
          • descriptionstring
        • noticesarray of object, required
          • codestring
          • titlestring
          • severitystring
      • startPlanRunStart

        Where the vehicle starts a plan of today, made from where it is; a plan of a later day has none. kind is gps (its latest position), stop (the place of its driver's latest step), job (the job it is busy at, once done there) or yard. at is when it leaves and seen_at when it was last seen there, the business's local time.

        • kindstring, required

          One of: gps stop job yard

        • latitudenumber, required
        • longitudenumber, required
        • atstring, required
        • seen_atstring
        • addressstring, required
    • unassignedarray of PlanUnassigned, required

      Jobs the plan couldn't fit, with HERE's reasons, or NO_POSITION and PINNED_VEHICLE_UNAVAILABLE for jobs that weren't sent.

      • job_idinteger (int64), required
      • reasonsarray of object, required
        • codestring, required
        • descriptionstring, required
    • left_outarray of PlanLeftOut, required

      Active vehicles the plan couldn't use, with why.

      • vehicle_idinteger (int64), required
      • namestring, required
      • reasonstring, required
    • measuresPlanMeasures or null, required
      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • unplannedPlanMeasures or null, required

      Each planned job as its own round trip from its run's yard, in that vehicle, to compare against.

      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • locationsinteger, required

      The HERE Tour Planning locations charged.

    • requested_byinteger (int64) or null, required
    • created_atstring, required
    • finished_atstring
    • decided_byinteger (int64) or null, required

      Who approved or rejected the proposal.

    • decided_atstring
    • compared_withPlanComparison

      On a proposal for a day with an approved plan, each job whose vehicle or collection time it changes, and its totals less the approved plan's.

      • plan_idinteger (int64), required

        The approved plan.

      • changesarray of PlanChange, required
        • job_idinteger (int64), required
        • from_vehicle_idinteger (int64) or null, required
        • from_vehicle_namestring, required
        • to_vehicle_idinteger (int64) or null, required
        • to_vehicle_namestring, required
        • from_collectionstring, required
        • to_collectionstring, required
      • differencePlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
  • out_of_datearray of string, required

    How the day's jobs and vehicles differ from what its approved plan was made from, worked out now. Empty with no approved plan, nothing changed, or a day that has gone.

  • nightlyNightlyRun or null, required

    The nightly run for the day, if it has looked at it.

    • statusstring, required

      One of: pending solving done skipped failed

    • attemptsinteger, required
    • plan_idinteger (int64) or null, required
    • notestring, required

      Why it skipped the day, or why its last try failed.

Example response 200
{
  "plans": [
    {
      "id": 0,
      "date": "date",
      "status": "solving",
      "priority": "shortest_time",
      "failure": "string",
      "runs": [
        {
          "vehicle_id": 0,
          "vehicle_name": "string",
          "driver_id": 0,
          "driver_name": "string",
          "stops": [
            {
              "kind": "departure",
              "job_id": 0,
              "disposal_stop": 0,
              "address": "string",
              "latitude": 0,
              "longitude": 0,
              "arrives": "string",
              "departs": "string"
            }
          ],
          "measures": {
            "vehicles": 0,
            "jobs": 0,
            "distance_metres": 0,
            "duration_minutes": 0,
            "driving_minutes": 0,
            "fuel_litres": 0,
            "energy_kwh": 0,
            "fuel_cost_pence": 0,
            "co2_kg": 0,
            "running_cost_pence": 0
          },
          "route": {
            "distance_metres": 0,
            "minutes": 0,
            "fuel_litres": 0,
            "co2_kg": 0,
            "points": [
              [
                0
              ]
            ],
            "incidents": [
              {
                "type": "string",
                "criticality": "string",
                "description": "string"
              }
            ],
            "notices": [
              {
                "code": "string",
                "title": "string",
                "severity": "string"
              }
            ]
          },
          "start": {
            "kind": "gps",
            "latitude": 0,
            "longitude": 0,
            "at": "2026-10-07 12:00",
            "seen_at": "2026-10-07 11:52",
            "address": "string"
          }
        }
      ],
      "unassigned": [
        {
          "job_id": 0,
          "reasons": [
            {
              "code": "string",
              "description": "string"
            }
          ]
        }
      ],
      "left_out": [
        {
          "vehicle_id": 0,
          "name": "string",
          "reason": "string"
        }
      ],
      "measures": {
        "vehicles": 0,
        "jobs": 0,
        "distance_metres": 0,
        "duration_minutes": 0,
        "driving_minutes": 0,
        "fuel_litres": 0,
        "energy_kwh": 0,
        "fuel_cost_pence": 0,
        "co2_kg": 0,
        "running_cost_pence": 0
      },
      "unplanned": {
        "vehicles": 0,
        "jobs": 0,
        "distance_metres": 0,
        "duration_minutes": 0,
        "driving_minutes": 0,
        "fuel_litres": 0,
        "energy_kwh": 0,
        "fuel_cost_pence": 0,
        "co2_kg": 0,
        "running_cost_pence": 0
      },
      "locations": 0,
      "requested_by": 0,
      "created_at": "string",
      "finished_at": "string",
      "decided_by": 0,
      "decided_at": "string",
      "compared_with": {
        "plan_id": 0,
        "changes": [
          {
            "job_id": 0,
            "from_vehicle_id": 0,
            "from_vehicle_name": "string",
            "to_vehicle_id": 0,
            "to_vehicle_name": "string",
            "from_collection": "string",
            "to_collection": "string"
          }
        ],
        "difference": {
          "vehicles": 0,
          "jobs": 0,
          "distance_metres": 0,
          "duration_minutes": 0,
          "driving_minutes": 0,
          "fuel_litres": 0,
          "energy_kwh": 0,
          "fuel_cost_pence": 0,
          "co2_kg": 0,
          "running_cost_pence": 0
        }
      }
    }
  ],
  "out_of_date": [
    "string"
  ],
  "nightly": {
    "status": "pending",
    "attempts": 0,
    "plan_id": 0,
    "note": "string"
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

POST/v1/admin/plans

Plan a day

Needs the jobs.write permission. Sends the day's jobs (the business's local time) to HERE Tour Planning with each active, confirmed vehicle that works that weekday and whose usual driver is available, and answers with the plan while HERE solves it. The plan becomes proposed or failed in the background, published as plan.updated. Only today or a later working day; one plan solves at a time. Today is planned from now. Each vehicle starts where it is (each run's start), jobs started stay on their vehicle with only what is left of them, and finished jobs and vehicles whose day has ended are left out.

Request body · object

  • datestring (date), required
Example request
{
  "date": "date"
}

Response 202 · object

Sent to HERE.

  • planPlan, required

    A day plan. While solving it has no runs or measures; once proposed, nothing changes until a planner approves it. Approving one supersedes the day's approved plan.

    • idinteger (int64), required
    • datestring (date), required
    • statusstring, required

      One of: solving proposed failed approved superseded rejected

    • prioritystring, required

      One of: shortest_time lowest_fuel lowest_cost shortest_distance fewest_vehicles

    • failurestring
    • runsarray of PlanRun, required
      • vehicle_idinteger (int64), required
      • vehicle_namestring, required
      • driver_idinteger (int64) or null, required
      • driver_namestring, required
      • stopsarray of PlanStop, required
        • kindstring, required

          One of: departure collection delivery disposal break arrival

        • job_idinteger (int64)
        • disposal_stopinteger

          A disposal stop's position among its job's disposal stops, from 0.

        • addressstring
        • latitudenumber, required
        • longitudenumber, required
        • arrivesstring, required

          The business's local time, YYYY-MM-DD HH:MM.

        • departsstring, required

          The business's local time, YYYY-MM-DD HH:MM.

      • measuresPlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
      • routePlanRoute or null, required

        Set once the plan is approved, unless HERE couldn't route the run.

        • distance_metresinteger, required
        • minutesinteger, required

          With the traffic expected at the time.

        • fuel_litresnumber
        • co2_kgnumber
        • pointsarray of array of number, required

          The route line as [latitude, longitude] pairs.

        • incidentsarray of object, required
          • typestring
          • criticalitystring
          • descriptionstring
        • noticesarray of object, required
          • codestring
          • titlestring
          • severitystring
      • startPlanRunStart

        Where the vehicle starts a plan of today, made from where it is; a plan of a later day has none. kind is gps (its latest position), stop (the place of its driver's latest step), job (the job it is busy at, once done there) or yard. at is when it leaves and seen_at when it was last seen there, the business's local time.

        • kindstring, required

          One of: gps stop job yard

        • latitudenumber, required
        • longitudenumber, required
        • atstring, required
        • seen_atstring
        • addressstring, required
    • unassignedarray of PlanUnassigned, required

      Jobs the plan couldn't fit, with HERE's reasons, or NO_POSITION and PINNED_VEHICLE_UNAVAILABLE for jobs that weren't sent.

      • job_idinteger (int64), required
      • reasonsarray of object, required
        • codestring, required
        • descriptionstring, required
    • left_outarray of PlanLeftOut, required

      Active vehicles the plan couldn't use, with why.

      • vehicle_idinteger (int64), required
      • namestring, required
      • reasonstring, required
    • measuresPlanMeasures or null, required
      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • unplannedPlanMeasures or null, required

      Each planned job as its own round trip from its run's yard, in that vehicle, to compare against.

      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • locationsinteger, required

      The HERE Tour Planning locations charged.

    • requested_byinteger (int64) or null, required
    • created_atstring, required
    • finished_atstring
    • decided_byinteger (int64) or null, required

      Who approved or rejected the proposal.

    • decided_atstring
    • compared_withPlanComparison

      On a proposal for a day with an approved plan, each job whose vehicle or collection time it changes, and its totals less the approved plan's.

      • plan_idinteger (int64), required

        The approved plan.

      • changesarray of PlanChange, required
        • job_idinteger (int64), required
        • from_vehicle_idinteger (int64) or null, required
        • from_vehicle_namestring, required
        • to_vehicle_idinteger (int64) or null, required
        • to_vehicle_namestring, required
        • from_collectionstring, required
        • to_collectionstring, required
      • differencePlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
Example response 202
{
  "plan": {
    "id": 0,
    "date": "date",
    "status": "solving",
    "priority": "shortest_time",
    "failure": "string",
    "runs": [
      {
        "vehicle_id": 0,
        "vehicle_name": "string",
        "driver_id": 0,
        "driver_name": "string",
        "stops": [
          {
            "kind": "departure",
            "job_id": 0,
            "disposal_stop": 0,
            "address": "string",
            "latitude": 0,
            "longitude": 0,
            "arrives": "string",
            "departs": "string"
          }
        ],
        "measures": {
          "vehicles": 0,
          "jobs": 0,
          "distance_metres": 0,
          "duration_minutes": 0,
          "driving_minutes": 0,
          "fuel_litres": 0,
          "energy_kwh": 0,
          "fuel_cost_pence": 0,
          "co2_kg": 0,
          "running_cost_pence": 0
        },
        "route": {
          "distance_metres": 0,
          "minutes": 0,
          "fuel_litres": 0,
          "co2_kg": 0,
          "points": [
            [
              0
            ]
          ],
          "incidents": [
            {
              "type": "string",
              "criticality": "string",
              "description": "string"
            }
          ],
          "notices": [
            {
              "code": "string",
              "title": "string",
              "severity": "string"
            }
          ]
        },
        "start": {
          "kind": "gps",
          "latitude": 0,
          "longitude": 0,
          "at": "2026-10-07 12:00",
          "seen_at": "2026-10-07 11:52",
          "address": "string"
        }
      }
    ],
    "unassigned": [
      {
        "job_id": 0,
        "reasons": [
          {
            "code": "string",
            "description": "string"
          }
        ]
      }
    ],
    "left_out": [
      {
        "vehicle_id": 0,
        "name": "string",
        "reason": "string"
      }
    ],
    "measures": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "unplanned": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "locations": 0,
    "requested_by": 0,
    "created_at": "string",
    "finished_at": "string",
    "decided_by": 0,
    "decided_at": "string",
    "compared_with": {
      "plan_id": 0,
      "changes": [
        {
          "job_id": 0,
          "from_vehicle_id": 0,
          "from_vehicle_name": "string",
          "to_vehicle_id": 0,
          "to_vehicle_name": "string",
          "from_collection": "string",
          "to_collection": "string"
        }
      ],
      "difference": {
        "vehicles": 0,
        "jobs": 0,
        "distance_metres": 0,
        "duration_minutes": 0,
        "driving_minutes": 0,
        "fuel_litres": 0,
        "energy_kwh": 0,
        "fuel_cost_pence": 0,
        "co2_kg": 0,
        "running_cost_pence": 0
      }
    }
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 409 · Error

It clashes with what is stored.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/plans/{id}

A plan with its runs

Needs the jobs.read permission.

Parameters

  • idstring, in the path, required

Response 200 · object

Done.

  • planPlan, required

    A day plan. While solving it has no runs or measures; once proposed, nothing changes until a planner approves it. Approving one supersedes the day's approved plan.

    • idinteger (int64), required
    • datestring (date), required
    • statusstring, required

      One of: solving proposed failed approved superseded rejected

    • prioritystring, required

      One of: shortest_time lowest_fuel lowest_cost shortest_distance fewest_vehicles

    • failurestring
    • runsarray of PlanRun, required
      • vehicle_idinteger (int64), required
      • vehicle_namestring, required
      • driver_idinteger (int64) or null, required
      • driver_namestring, required
      • stopsarray of PlanStop, required
        • kindstring, required

          One of: departure collection delivery disposal break arrival

        • job_idinteger (int64)
        • disposal_stopinteger

          A disposal stop's position among its job's disposal stops, from 0.

        • addressstring
        • latitudenumber, required
        • longitudenumber, required
        • arrivesstring, required

          The business's local time, YYYY-MM-DD HH:MM.

        • departsstring, required

          The business's local time, YYYY-MM-DD HH:MM.

      • measuresPlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
      • routePlanRoute or null, required

        Set once the plan is approved, unless HERE couldn't route the run.

        • distance_metresinteger, required
        • minutesinteger, required

          With the traffic expected at the time.

        • fuel_litresnumber
        • co2_kgnumber
        • pointsarray of array of number, required

          The route line as [latitude, longitude] pairs.

        • incidentsarray of object, required
          • typestring
          • criticalitystring
          • descriptionstring
        • noticesarray of object, required
          • codestring
          • titlestring
          • severitystring
      • startPlanRunStart

        Where the vehicle starts a plan of today, made from where it is; a plan of a later day has none. kind is gps (its latest position), stop (the place of its driver's latest step), job (the job it is busy at, once done there) or yard. at is when it leaves and seen_at when it was last seen there, the business's local time.

        • kindstring, required

          One of: gps stop job yard

        • latitudenumber, required
        • longitudenumber, required
        • atstring, required
        • seen_atstring
        • addressstring, required
    • unassignedarray of PlanUnassigned, required

      Jobs the plan couldn't fit, with HERE's reasons, or NO_POSITION and PINNED_VEHICLE_UNAVAILABLE for jobs that weren't sent.

      • job_idinteger (int64), required
      • reasonsarray of object, required
        • codestring, required
        • descriptionstring, required
    • left_outarray of PlanLeftOut, required

      Active vehicles the plan couldn't use, with why.

      • vehicle_idinteger (int64), required
      • namestring, required
      • reasonstring, required
    • measuresPlanMeasures or null, required
      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • unplannedPlanMeasures or null, required

      Each planned job as its own round trip from its run's yard, in that vehicle, to compare against.

      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • locationsinteger, required

      The HERE Tour Planning locations charged.

    • requested_byinteger (int64) or null, required
    • created_atstring, required
    • finished_atstring
    • decided_byinteger (int64) or null, required

      Who approved or rejected the proposal.

    • decided_atstring
    • compared_withPlanComparison

      On a proposal for a day with an approved plan, each job whose vehicle or collection time it changes, and its totals less the approved plan's.

      • plan_idinteger (int64), required

        The approved plan.

      • changesarray of PlanChange, required
        • job_idinteger (int64), required
        • from_vehicle_idinteger (int64) or null, required
        • from_vehicle_namestring, required
        • to_vehicle_idinteger (int64) or null, required
        • to_vehicle_namestring, required
        • from_collectionstring, required
        • to_collectionstring, required
      • differencePlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
Example response 200
{
  "plan": {
    "id": 0,
    "date": "date",
    "status": "solving",
    "priority": "shortest_time",
    "failure": "string",
    "runs": [
      {
        "vehicle_id": 0,
        "vehicle_name": "string",
        "driver_id": 0,
        "driver_name": "string",
        "stops": [
          {
            "kind": "departure",
            "job_id": 0,
            "disposal_stop": 0,
            "address": "string",
            "latitude": 0,
            "longitude": 0,
            "arrives": "string",
            "departs": "string"
          }
        ],
        "measures": {
          "vehicles": 0,
          "jobs": 0,
          "distance_metres": 0,
          "duration_minutes": 0,
          "driving_minutes": 0,
          "fuel_litres": 0,
          "energy_kwh": 0,
          "fuel_cost_pence": 0,
          "co2_kg": 0,
          "running_cost_pence": 0
        },
        "route": {
          "distance_metres": 0,
          "minutes": 0,
          "fuel_litres": 0,
          "co2_kg": 0,
          "points": [
            [
              0
            ]
          ],
          "incidents": [
            {
              "type": "string",
              "criticality": "string",
              "description": "string"
            }
          ],
          "notices": [
            {
              "code": "string",
              "title": "string",
              "severity": "string"
            }
          ]
        },
        "start": {
          "kind": "gps",
          "latitude": 0,
          "longitude": 0,
          "at": "2026-10-07 12:00",
          "seen_at": "2026-10-07 11:52",
          "address": "string"
        }
      }
    ],
    "unassigned": [
      {
        "job_id": 0,
        "reasons": [
          {
            "code": "string",
            "description": "string"
          }
        ]
      }
    ],
    "left_out": [
      {
        "vehicle_id": 0,
        "name": "string",
        "reason": "string"
      }
    ],
    "measures": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "unplanned": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "locations": 0,
    "requested_by": 0,
    "created_at": "string",
    "finished_at": "string",
    "decided_by": 0,
    "decided_at": "string",
    "compared_with": {
      "plan_id": 0,
      "changes": [
        {
          "job_id": 0,
          "from_vehicle_id": 0,
          "from_vehicle_name": "string",
          "to_vehicle_id": 0,
          "to_vehicle_name": "string",
          "from_collection": "string",
          "to_collection": "string"
        }
      ],
      "difference": {
        "vehicles": 0,
        "jobs": 0,
        "distance_metres": 0,
        "duration_minutes": 0,
        "driving_minutes": 0,
        "fuel_litres": 0,
        "energy_kwh": 0,
        "fuel_cost_pence": 0,
        "co2_kg": 0,
        "running_cost_pence": 0
      }
    }
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

POST/v1/admin/plans/{id}/approve

Approve a proposal

Needs the jobs.write permission. Makes the proposal the day's plan and supersedes the day's approved plan. Each planned job gets its run's vehicle and driver; a job the plan left unassigned loses its vehicle and driver unless pinned. A job on a new vehicle has its route planned again for it, and each run's route through its stops is planned with HERE; when HERE can't, a route_failed or run_route_failed warning says why. Refused (409) for a plan that isn't proposed, a day that has gone, or when the day's jobs (added, cancelled, time, address, load, pin, handling time) or vehicles (usable, driver, hours, yard) have changed since the plan was made; the message names what changed.

Parameters

  • idstring, in the path, required

Response 200 · object

Done.

  • planPlan, required

    A day plan. While solving it has no runs or measures; once proposed, nothing changes until a planner approves it. Approving one supersedes the day's approved plan.

    • idinteger (int64), required
    • datestring (date), required
    • statusstring, required

      One of: solving proposed failed approved superseded rejected

    • prioritystring, required

      One of: shortest_time lowest_fuel lowest_cost shortest_distance fewest_vehicles

    • failurestring
    • runsarray of PlanRun, required
      • vehicle_idinteger (int64), required
      • vehicle_namestring, required
      • driver_idinteger (int64) or null, required
      • driver_namestring, required
      • stopsarray of PlanStop, required
        • kindstring, required

          One of: departure collection delivery disposal break arrival

        • job_idinteger (int64)
        • disposal_stopinteger

          A disposal stop's position among its job's disposal stops, from 0.

        • addressstring
        • latitudenumber, required
        • longitudenumber, required
        • arrivesstring, required

          The business's local time, YYYY-MM-DD HH:MM.

        • departsstring, required

          The business's local time, YYYY-MM-DD HH:MM.

      • measuresPlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
      • routePlanRoute or null, required

        Set once the plan is approved, unless HERE couldn't route the run.

        • distance_metresinteger, required
        • minutesinteger, required

          With the traffic expected at the time.

        • fuel_litresnumber
        • co2_kgnumber
        • pointsarray of array of number, required

          The route line as [latitude, longitude] pairs.

        • incidentsarray of object, required
          • typestring
          • criticalitystring
          • descriptionstring
        • noticesarray of object, required
          • codestring
          • titlestring
          • severitystring
      • startPlanRunStart

        Where the vehicle starts a plan of today, made from where it is; a plan of a later day has none. kind is gps (its latest position), stop (the place of its driver's latest step), job (the job it is busy at, once done there) or yard. at is when it leaves and seen_at when it was last seen there, the business's local time.

        • kindstring, required

          One of: gps stop job yard

        • latitudenumber, required
        • longitudenumber, required
        • atstring, required
        • seen_atstring
        • addressstring, required
    • unassignedarray of PlanUnassigned, required

      Jobs the plan couldn't fit, with HERE's reasons, or NO_POSITION and PINNED_VEHICLE_UNAVAILABLE for jobs that weren't sent.

      • job_idinteger (int64), required
      • reasonsarray of object, required
        • codestring, required
        • descriptionstring, required
    • left_outarray of PlanLeftOut, required

      Active vehicles the plan couldn't use, with why.

      • vehicle_idinteger (int64), required
      • namestring, required
      • reasonstring, required
    • measuresPlanMeasures or null, required
      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • unplannedPlanMeasures or null, required

      Each planned job as its own round trip from its run's yard, in that vehicle, to compare against.

      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • locationsinteger, required

      The HERE Tour Planning locations charged.

    • requested_byinteger (int64) or null, required
    • created_atstring, required
    • finished_atstring
    • decided_byinteger (int64) or null, required

      Who approved or rejected the proposal.

    • decided_atstring
    • compared_withPlanComparison

      On a proposal for a day with an approved plan, each job whose vehicle or collection time it changes, and its totals less the approved plan's.

      • plan_idinteger (int64), required

        The approved plan.

      • changesarray of PlanChange, required
        • job_idinteger (int64), required
        • from_vehicle_idinteger (int64) or null, required
        • from_vehicle_namestring, required
        • to_vehicle_idinteger (int64) or null, required
        • to_vehicle_namestring, required
        • from_collectionstring, required
        • to_collectionstring, required
      • differencePlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
  • warningsarray of Warning, required
    • codestring, required

      One of: closed vehicle_off outside_hours over_payload over_volume away crew_short route_failed

    • messagestring, required
Example response 200
{
  "plan": {
    "id": 0,
    "date": "date",
    "status": "solving",
    "priority": "shortest_time",
    "failure": "string",
    "runs": [
      {
        "vehicle_id": 0,
        "vehicle_name": "string",
        "driver_id": 0,
        "driver_name": "string",
        "stops": [
          {
            "kind": "departure",
            "job_id": 0,
            "disposal_stop": 0,
            "address": "string",
            "latitude": 0,
            "longitude": 0,
            "arrives": "string",
            "departs": "string"
          }
        ],
        "measures": {
          "vehicles": 0,
          "jobs": 0,
          "distance_metres": 0,
          "duration_minutes": 0,
          "driving_minutes": 0,
          "fuel_litres": 0,
          "energy_kwh": 0,
          "fuel_cost_pence": 0,
          "co2_kg": 0,
          "running_cost_pence": 0
        },
        "route": {
          "distance_metres": 0,
          "minutes": 0,
          "fuel_litres": 0,
          "co2_kg": 0,
          "points": [
            [
              0
            ]
          ],
          "incidents": [
            {
              "type": "string",
              "criticality": "string",
              "description": "string"
            }
          ],
          "notices": [
            {
              "code": "string",
              "title": "string",
              "severity": "string"
            }
          ]
        },
        "start": {
          "kind": "gps",
          "latitude": 0,
          "longitude": 0,
          "at": "2026-10-07 12:00",
          "seen_at": "2026-10-07 11:52",
          "address": "string"
        }
      }
    ],
    "unassigned": [
      {
        "job_id": 0,
        "reasons": [
          {
            "code": "string",
            "description": "string"
          }
        ]
      }
    ],
    "left_out": [
      {
        "vehicle_id": 0,
        "name": "string",
        "reason": "string"
      }
    ],
    "measures": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "unplanned": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "locations": 0,
    "requested_by": 0,
    "created_at": "string",
    "finished_at": "string",
    "decided_by": 0,
    "decided_at": "string",
    "compared_with": {
      "plan_id": 0,
      "changes": [
        {
          "job_id": 0,
          "from_vehicle_id": 0,
          "from_vehicle_name": "string",
          "to_vehicle_id": 0,
          "to_vehicle_name": "string",
          "from_collection": "string",
          "to_collection": "string"
        }
      ],
      "difference": {
        "vehicles": 0,
        "jobs": 0,
        "distance_metres": 0,
        "duration_minutes": 0,
        "driving_minutes": 0,
        "fuel_litres": 0,
        "energy_kwh": 0,
        "fuel_cost_pence": 0,
        "co2_kg": 0,
        "running_cost_pence": 0
      }
    }
  },
  "warnings": [
    {
      "code": "closed",
      "message": "string"
    }
  ]
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 409 · Error

It clashes with what is stored.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

POST/v1/admin/plans/{id}/reject

Reject a proposal

Needs the jobs.write permission. The day's approved plan stands. Refused (409) for a plan that isn't proposed.

Parameters

  • idstring, in the path, required

Response 200 · object

Done.

  • planPlan, required

    A day plan. While solving it has no runs or measures; once proposed, nothing changes until a planner approves it. Approving one supersedes the day's approved plan.

    • idinteger (int64), required
    • datestring (date), required
    • statusstring, required

      One of: solving proposed failed approved superseded rejected

    • prioritystring, required

      One of: shortest_time lowest_fuel lowest_cost shortest_distance fewest_vehicles

    • failurestring
    • runsarray of PlanRun, required
      • vehicle_idinteger (int64), required
      • vehicle_namestring, required
      • driver_idinteger (int64) or null, required
      • driver_namestring, required
      • stopsarray of PlanStop, required
        • kindstring, required

          One of: departure collection delivery disposal break arrival

        • job_idinteger (int64)
        • disposal_stopinteger

          A disposal stop's position among its job's disposal stops, from 0.

        • addressstring
        • latitudenumber, required
        • longitudenumber, required
        • arrivesstring, required

          The business's local time, YYYY-MM-DD HH:MM.

        • departsstring, required

          The business's local time, YYYY-MM-DD HH:MM.

      • measuresPlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
      • routePlanRoute or null, required

        Set once the plan is approved, unless HERE couldn't route the run.

        • distance_metresinteger, required
        • minutesinteger, required

          With the traffic expected at the time.

        • fuel_litresnumber
        • co2_kgnumber
        • pointsarray of array of number, required

          The route line as [latitude, longitude] pairs.

        • incidentsarray of object, required
          • typestring
          • criticalitystring
          • descriptionstring
        • noticesarray of object, required
          • codestring
          • titlestring
          • severitystring
      • startPlanRunStart

        Where the vehicle starts a plan of today, made from where it is; a plan of a later day has none. kind is gps (its latest position), stop (the place of its driver's latest step), job (the job it is busy at, once done there) or yard. at is when it leaves and seen_at when it was last seen there, the business's local time.

        • kindstring, required

          One of: gps stop job yard

        • latitudenumber, required
        • longitudenumber, required
        • atstring, required
        • seen_atstring
        • addressstring, required
    • unassignedarray of PlanUnassigned, required

      Jobs the plan couldn't fit, with HERE's reasons, or NO_POSITION and PINNED_VEHICLE_UNAVAILABLE for jobs that weren't sent.

      • job_idinteger (int64), required
      • reasonsarray of object, required
        • codestring, required
        • descriptionstring, required
    • left_outarray of PlanLeftOut, required

      Active vehicles the plan couldn't use, with why.

      • vehicle_idinteger (int64), required
      • namestring, required
      • reasonstring, required
    • measuresPlanMeasures or null, required
      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • unplannedPlanMeasures or null, required

      Each planned job as its own round trip from its run's yard, in that vehicle, to compare against.

      • vehiclesinteger, required
      • jobsinteger, required
      • distance_metresinteger, required
      • duration_minutesinteger, required
      • driving_minutesinteger, required
      • fuel_litresnumber, required
      • energy_kwhnumber, required
      • fuel_cost_penceinteger, required
      • co2_kgnumber, required
      • running_cost_penceinteger, required
    • locationsinteger, required

      The HERE Tour Planning locations charged.

    • requested_byinteger (int64) or null, required
    • created_atstring, required
    • finished_atstring
    • decided_byinteger (int64) or null, required

      Who approved or rejected the proposal.

    • decided_atstring
    • compared_withPlanComparison

      On a proposal for a day with an approved plan, each job whose vehicle or collection time it changes, and its totals less the approved plan's.

      • plan_idinteger (int64), required

        The approved plan.

      • changesarray of PlanChange, required
        • job_idinteger (int64), required
        • from_vehicle_idinteger (int64) or null, required
        • from_vehicle_namestring, required
        • to_vehicle_idinteger (int64) or null, required
        • to_vehicle_namestring, required
        • from_collectionstring, required
        • to_collectionstring, required
      • differencePlanMeasures, required

        Totals. Costs are in pence; fuel_litres is diesel and petrol, energy_kwh electric. The running cost is fuel, crew time and each vehicle's daily cost.

        • vehiclesinteger, required
        • jobsinteger, required
        • distance_metresinteger, required
        • duration_minutesinteger, required
        • driving_minutesinteger, required
        • fuel_litresnumber, required
        • energy_kwhnumber, required
        • fuel_cost_penceinteger, required
        • co2_kgnumber, required
        • running_cost_penceinteger, required
Example response 200
{
  "plan": {
    "id": 0,
    "date": "date",
    "status": "solving",
    "priority": "shortest_time",
    "failure": "string",
    "runs": [
      {
        "vehicle_id": 0,
        "vehicle_name": "string",
        "driver_id": 0,
        "driver_name": "string",
        "stops": [
          {
            "kind": "departure",
            "job_id": 0,
            "disposal_stop": 0,
            "address": "string",
            "latitude": 0,
            "longitude": 0,
            "arrives": "string",
            "departs": "string"
          }
        ],
        "measures": {
          "vehicles": 0,
          "jobs": 0,
          "distance_metres": 0,
          "duration_minutes": 0,
          "driving_minutes": 0,
          "fuel_litres": 0,
          "energy_kwh": 0,
          "fuel_cost_pence": 0,
          "co2_kg": 0,
          "running_cost_pence": 0
        },
        "route": {
          "distance_metres": 0,
          "minutes": 0,
          "fuel_litres": 0,
          "co2_kg": 0,
          "points": [
            [
              0
            ]
          ],
          "incidents": [
            {
              "type": "string",
              "criticality": "string",
              "description": "string"
            }
          ],
          "notices": [
            {
              "code": "string",
              "title": "string",
              "severity": "string"
            }
          ]
        },
        "start": {
          "kind": "gps",
          "latitude": 0,
          "longitude": 0,
          "at": "2026-10-07 12:00",
          "seen_at": "2026-10-07 11:52",
          "address": "string"
        }
      }
    ],
    "unassigned": [
      {
        "job_id": 0,
        "reasons": [
          {
            "code": "string",
            "description": "string"
          }
        ]
      }
    ],
    "left_out": [
      {
        "vehicle_id": 0,
        "name": "string",
        "reason": "string"
      }
    ],
    "measures": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "unplanned": {
      "vehicles": 0,
      "jobs": 0,
      "distance_metres": 0,
      "duration_minutes": 0,
      "driving_minutes": 0,
      "fuel_litres": 0,
      "energy_kwh": 0,
      "fuel_cost_pence": 0,
      "co2_kg": 0,
      "running_cost_pence": 0
    },
    "locations": 0,
    "requested_by": 0,
    "created_at": "string",
    "finished_at": "string",
    "decided_by": 0,
    "decided_at": "string",
    "compared_with": {
      "plan_id": 0,
      "changes": [
        {
          "job_id": 0,
          "from_vehicle_id": 0,
          "from_vehicle_name": "string",
          "to_vehicle_id": 0,
          "to_vehicle_name": "string",
          "from_collection": "string",
          "to_collection": "string"
        }
      ],
      "difference": {
        "vehicles": 0,
        "jobs": 0,
        "distance_metres": 0,
        "duration_minutes": 0,
        "driving_minutes": 0,
        "fuel_litres": 0,
        "energy_kwh": 0,
        "fuel_cost_pence": 0,
        "co2_kg": 0,
        "running_cost_pence": 0
      }
    }
  }
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 409 · Error

It clashes with what is stored.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

GET/v1/admin/day-drivers

A day's drivers for the day

Needs the jobs.read permission. Who drives which vehicle on the day in place of its usual driver.

Parameters

  • datestring (date), in the query, required

Response 200 · object

The day's drivers for the day.

  • day_driversarray of DayDriver, required
    • vehicle_idinteger (int64), required
    • vehicle_namestring, required
    • datestring (date), required
    • driver_idinteger (int64), required
    • driver_namestring, required
Example response 200
{
  "day_drivers": [
    {
      "vehicle_id": 0,
      "vehicle_name": "string",
      "date": "date",
      "driver_id": 0,
      "driver_name": "string"
    }
  ]
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/day-drivers/{date}/{vehicle_id}

Give a vehicle another driver for a day

Needs the jobs.write permission. The driver drives the vehicle on the day in place of its usual driver, and day plans use them. Only today or a later day; refused (400) for a driver who isn't active staff with the Driver role.

Parameters

  • datestring (date), in the path, required
  • vehicle_idstring, in the path, required

Request body · object

  • driver_idinteger (int64), required
Example request
{
  "driver_id": 0
}

Response 200 · object

The day's drivers for the day.

  • day_driversarray of DayDriver, required
    • vehicle_idinteger (int64), required
    • vehicle_namestring, required
    • datestring (date), required
    • driver_idinteger (int64), required
    • driver_namestring, required
Example response 200
{
  "day_drivers": [
    {
      "vehicle_id": 0,
      "vehicle_name": "string",
      "date": "date",
      "driver_id": 0,
      "driver_name": "string"
    }
  ]
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

DELETE/v1/admin/day-drivers/{date}/{vehicle_id}

Return a vehicle to its usual driver for a day

Needs the jobs.write permission. Only today or a later day.

Parameters

  • datestring (date), in the path, required
  • vehicle_idstring, in the path, required

Response 200 · object

The day's drivers for the day.

  • day_driversarray of DayDriver, required
    • vehicle_idinteger (int64), required
    • vehicle_namestring, required
    • datestring (date), required
    • driver_idinteger (int64), required
    • driver_namestring, required
Example response 200
{
  "day_drivers": [
    {
      "vehicle_id": 0,
      "vehicle_name": "string",
      "date": "date",
      "driver_id": 0,
      "driver_name": "string"
    }
  ]
}

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs

PUT/v1/admin/job/{id}/status

Change a job's status

Needs the jobs.write permission.

Parameters

  • idstring, in the path, required
  • statusstring, in the query, required

Response 200 · Message

Done.

Fields as in Change a job

Response 400 · Error

The request is not valid.

Fields as in A customer's jobs

Response 401 · Error

No tenant key, or no valid session.

Fields as in A customer's jobs

Response 403 · Error

The session may not do this.

Fields as in A customer's jobs

Response 404 · Error

Not found, or not yours.

Fields as in A customer's jobs

Response 500 · Error

Something failed on our side.

Fields as in A customer's jobs