<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://docs.motiontools.io/announcements/feed/Deprecations.xml" rel="self" type="application/atom+xml" /><link href="https://docs.motiontools.io/announcements/" rel="alternate" type="text/html" /><updated>2026-08-12T06:41:00+00:00</updated><id>https://docs.motiontools.io/announcements/feed/Deprecations.xml</id><title type="html">MotionTools API Announcements | Deprecations</title><subtitle>This site provides updates about MotionTools API changes and related new features as well as upcoming and past deprecations.</subtitle><entry><title type="html">Deprecation of the completion_requirements.fail indicator</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/07/15/deprecation-of-completion-requirements-fail-indicator.html" rel="alternate" type="text/html" title="Deprecation of the completion_requirements.fail indicator" /><published>2026-07-15T00:00:00+00:00</published><updated>2026-07-15T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/07/15/deprecation-of-completion-requirements-fail-indicator</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/07/15/deprecation-of-completion-requirements-fail-indicator.html"><![CDATA[<p>The boolean <code class="language-plaintext highlighter-rouge">fail</code> indicator inside the <code class="language-plaintext highlighter-rouge">completion_requirements</code> object on
stop payloads is now deprecated and will be removed on <strong>2026-10-07</strong>.</p>

<p>The replacement is the new <code class="language-plaintext highlighter-rouge">failure_options</code> object on the same stop payloads
(for example on <a href="https://docs.motiontools.io/#operation/ShowHailingBooking" class="openapi-inline" data-tooltip="GET /api/hailing/bookings/{id}">Show Booking</a>):
<code class="language-plaintext highlighter-rouge">failure_options.outcomes.skip_recovery.allowed</code> carries the same signal, and
the object additionally indicates the availability of every other recovery
outcome together with a localized reason when one is not available.</p>

<p>Until removal, <code class="language-plaintext highlighter-rouge">completion_requirements.fail</code> continues to work unchanged.
Migrate by reading <code class="language-plaintext highlighter-rouge">failure_options.outcomes.skip_recovery.allowed</code> instead — note that
<code class="language-plaintext highlighter-rouge">failure_options</code> renders on tour stops in failable states (<code class="language-plaintext highlighter-rouge">approaching</code> or
<code class="language-plaintext highlighter-rouge">arrived</code>), so treat an absent object the same as <code class="language-plaintext highlighter-rouge">fail: false</code>.</p>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The boolean fail indicator inside the completion_requirements object on stop payloads is now deprecated and will be removed on 2026-10-07.]]></summary></entry><entry><title type="html">Deprecation of the admin.places permission indicator</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/06/24/deprecation-of-admin-places-permission-indicator.html" rel="alternate" type="text/html" title="Deprecation of the admin.places permission indicator" /><published>2026-06-24T00:00:00+00:00</published><updated>2026-06-24T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/06/24/deprecation-of-admin-places-permission-indicator</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/06/24/deprecation-of-admin-places-permission-indicator.html"><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">admin.places</code> indicator on the permissions endpoint (<code class="language-plaintext highlighter-rouge">GET /api/user/permissions</code>) is now
deprecated and will be removed on <strong>2026-09-30</strong>.</p>

<p><a href="/announcements/changelog/2026/06/24/top-level-places-permission.html">The replacement is the new top-level <code class="language-plaintext highlighter-rouge">places</code> flag</a>,
which reflects access for every role that can use places — not just administrators. The detailed
(per-action) shape is identical, so existing per-action checks map over directly.</p>

<p>Until removal, <code class="language-plaintext highlighter-rouge">admin.places</code> continues to work unchanged. Migrate by reading <code class="language-plaintext highlighter-rouge">permissions.places</code>
instead of <code class="language-plaintext highlighter-rouge">permissions.admin.places</code>.</p>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The admin.places indicator on the permissions endpoint (GET /api/user/permissions) is now deprecated and will be removed on 2026-09-30.]]></summary></entry><entry><title type="html">Removal of the Fleet management feature</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/05/27/removal-of-fleet-management.html" rel="alternate" type="text/html" title="Removal of the Fleet management feature" /><published>2026-05-27T00:00:00+00:00</published><updated>2026-05-27T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/05/27/removal-of-fleet-management</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/05/27/removal-of-fleet-management.html"><![CDATA[<p>The Fleet management feature has been removed from the MotionTools platform,
effective with the production release on <strong>2026-05-27</strong>.</p>

<p>This wraps up a phased retirement that already removed Fleet management from
our web dashboard and mobile apps earlier this year. The capability covered
vehicle inventory, operational status tracking, damage reports, and lock and
unlock interactions through integrations with vehicle telematics providers
such as Invers, NIU, MapTex and others. After removal, calls to the
corresponding API endpoints respond with <code class="language-plaintext highlighter-rouge">404 Not Found</code>.</p>

<p>Going forward, the MotionTools platform focuses on the booking, tour and
package delivery flows that power day-to-day operations for our customers.</p>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The Fleet management feature has been removed from the MotionTools platform, effective with the production release on 2026-05-27.]]></summary></entry><entry><title type="html">Deprecation of tour earnings attribute and webhook</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/05/07/tour-earnings-attribute-and-webhook.html" rel="alternate" type="text/html" title="Deprecation of tour earnings attribute and webhook" /><published>2026-05-07T00:00:00+00:00</published><updated>2026-05-07T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/05/07/tour-earnings-attribute-and-webhook</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/05/07/tour-earnings-attribute-and-webhook.html"><![CDATA[<p>The legacy tour earnings surface — the
<code class="language-plaintext highlighter-rouge">PUT /api/hailing/bookings/:booking_id/earnings</code> endpoint, the
<code class="language-plaintext highlighter-rouge">tour.earnings_updated</code> webhook, and the <code class="language-plaintext highlighter-rouge">earnings</code> field on tour
responses — is now deprecated and will be removed on <strong>2026-11-06</strong>.</p>

<p><a href="/announcements/changelog/2026/05/07/tour-compensation-object.html">The replacement is the new Tour Compensation API</a>:
a single source of truth for what a driver is paid out for a tour,
exposed as a structured, auto-totalled view across base earnings,
bonuses, and tips, with a dedicated webhook for change notifications.
The new surface covers everything the legacy <code class="language-plaintext highlighter-rouge">earnings</code> attribute did
and adds the structure 3PL operations need — kept efficient on
the wire by the new webhook’s quiet-window debounce, which collapses
bursts of edits into a single delivery.</p>

<p>Until removal, the legacy endpoint, webhook, and field continue to fire
unchanged. Migrate at your own pace within the deprecation window.</p>

<p><strong>What’s deprecated:</strong></p>

<ul>
  <li><a href="https://docs.motiontools.io/#operation/UpdateEarnings" class="openapi-inline" data-tooltip="Deprecated PUT /api/hailing/bookings/{booking_id}/earnings">⚠️ Update driver earnings</a> — replaced by
<a href="https://docs.motiontools.io/#operation/SetTourBaseEarnings" class="openapi-inline" data-tooltip="PUT /api/tours/{tour_id}/compensation/base">Set tour base earnings</a> /
<a href="https://docs.motiontools.io/#operation/SetTourBonus" class="openapi-inline" data-tooltip="PUT /api/tours/{tour_id}/compensation/bonus/{key}">Set tour bonus</a> /
<a href="https://docs.motiontools.io/#operation/DeleteTourBaseEarnings" class="openapi-inline" data-tooltip="DELETE /api/tours/{tour_id}/compensation/base">Delete tour base earnings</a> /
<a href="https://docs.motiontools.io/#operation/DeleteTourBonus" class="openapi-inline" data-tooltip="DELETE /api/tours/{tour_id}/compensation/bonus/{key}">Delete tour bonus</a>.</li>
  <li>The <a href="https://docs.motiontools.io/#operation/webhook.tour.earnings_updated" class="openapi-inline openapi-inline--webhook" data-tooltip="Deprecated · Published when the tour's earnings are updated.">⚠️ <code>tour.earnings_updated</code></a> webhook —
replaced by <a href="https://docs.motiontools.io/#operation/webhook.tour.compensation_updated" class="openapi-inline openapi-inline--webhook" data-tooltip="Published when a tour's compensation has been updated, debounced over a short quiet window."><code>tour.compensation_updated</code></a>,
which carries the full structured breakdown and is debounced over a
120s quiet window so bursts of edits collapse into a single delivery
reflecting the final state.</li>
  <li>The <code class="language-plaintext highlighter-rouge">earnings</code> field on tour / booking responses — read the
structured breakdown via <a href="https://docs.motiontools.io/#operation/ShowTourCompensation" class="openapi-inline" data-tooltip="GET /api/tours/{tour_id}/compensation">Get tour compensation</a>
instead. The compensation breakdown is intentionally not embedded in
the list/detail tour responses to keep those payloads focused — fetch
it on-demand from the dedicated endpoint.</li>
</ul>

<p><strong>What stays unchanged for the deprecation window:</strong></p>

<ul>
  <li>The legacy endpoint, webhook, and field continue to behave exactly as
before — same payload shape, same firing conditions, same persistence.
No data migration runs and no values are mirrored across the two
surfaces. Pick whichever surface fits your integration today and switch
over before the deadline.</li>
</ul>

<p><strong>Migration:</strong></p>

<p>Replace single-value writes against the legacy endpoint with structured
component writes against the compensation API. Each component is
addressed and updated independently:</p>

<div class="language-jsonc highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Before — PUT /api/hailing/bookings/&lt;tour_id&gt;/earnings</span><span class="w">
</span><span class="p">{</span><span class="w">
  </span><span class="nl">"earnings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">4200</span><span class="p">,</span><span class="w">
    </span><span class="nl">"currency"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EUR"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">

</span><span class="c1">// After — PUT /api/tours/&lt;tour_id&gt;/compensation/base</span><span class="w">
</span><span class="p">{</span><span class="w">
  </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">4000</span><span class="p">,</span><span class="w">
  </span><span class="nl">"currency"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EUR"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Base rate"</span><span class="w">
</span><span class="p">}</span><span class="w">

</span><span class="c1">// After (incentive) — PUT /api/tours/&lt;tour_id&gt;/compensation/bonus/peak_hours</span><span class="w">
</span><span class="p">{</span><span class="w">
  </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="p">,</span><span class="w">
  </span><span class="nl">"currency"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EUR"</span><span class="p">,</span><span class="w">
  </span><span class="nl">"label"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Peak-hour multiplier"</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>The <code class="language-plaintext highlighter-rouge">total_amount</code> is recomputed automatically as components change — no
need to maintain a running total client-side.</p>

<p>Webhook subscribers swap from a single amount/currency payload to the
full structured breakdown:</p>

<div class="language-jsonc highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Before — tour.earnings_updated</span><span class="w">
</span><span class="p">{</span><span class="w">
  </span><span class="nl">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"tour_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"…"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"service_area_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"…"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">4200</span><span class="p">,</span><span class="w">
    </span><span class="nl">"currency"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EUR"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">

</span><span class="c1">// After — tour.compensation_updated</span><span class="w">
</span><span class="p">{</span><span class="w">
  </span><span class="nl">"data"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
    </span><span class="nl">"tour_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"…"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"service_area_id"</span><span class="p">:</span><span class="w"> </span><span class="s2">"…"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"currency"</span><span class="p">:</span><span class="w"> </span><span class="s2">"EUR"</span><span class="p">,</span><span class="w">
    </span><span class="nl">"total_amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">4200</span><span class="p">,</span><span class="w">
    </span><span class="nl">"breakdown"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
      </span><span class="nl">"base_earnings"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">4000</span><span class="w"> </span><span class="p">},</span><span class="w">
      </span><span class="nl">"bonuses"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="nl">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"peak_hours"</span><span class="p">,</span><span class="w"> </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">200</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">],</span><span class="w">
      </span><span class="nl">"tips"</span><span class="p">:</span><span class="w">    </span><span class="p">{</span><span class="w"> </span><span class="nl">"amount"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="p">}</span><span class="w">
    </span><span class="p">},</span><span class="w">
    </span><span class="nl">"compensation_updated_at"</span><span class="p">:</span><span class="w"> </span><span class="s2">"2026-05-07T10:23:45Z"</span><span class="w">
  </span><span class="p">}</span><span class="w">
</span><span class="p">}</span><span class="w">
</span></code></pre></div></div>

<p>The new webhook payload excludes labels and metadata so subscribers can
act on amounts without round-tripping to our backend.</p>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateEarnings" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/hailing/bookings/{booking_id}/earnings</span>
        <span class="openapi-deprecated-badge">Deprecated</span>
      </div>
      <div><span class="name">Update driver earnings</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.earnings_updated" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.earnings_updated</span>
        <span class="openapi-deprecated-badge">Deprecated</span>
      </div>
      <div><span class="name">Published when the tour's earnings are updated.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/SetTourBaseEarnings" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/tours/{tour_id}/compensation/base</span>
        
      </div>
      <div><span class="name">Set tour base earnings</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/SetTourBonus" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/tours/{tour_id}/compensation/bonus/{key}</span>
        
      </div>
      <div><span class="name">Set tour bonus</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.compensation_updated" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.compensation_updated</span>
        
      </div>
      <div><span class="name">Published when a tour's compensation has been updated, debounced over a short quiet window.</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The legacy tour earnings surface — the PUT /api/hailing/bookings/:booking_id/earnings endpoint, the tour.earnings_updated webhook, and the earnings field on tour responses — is now deprecated and will be removed on 2026-11-06.]]></summary></entry><entry><title type="html">Deprecation of hailing/failure_reasons endpoint</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/04/29/deprecation-of-hailing-failure-reasons-endpoint.html" rel="alternate" type="text/html" title="Deprecation of hailing/failure_reasons endpoint" /><published>2026-04-29T00:00:00+00:00</published><updated>2026-04-29T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/04/29/deprecation-of-hailing-failure-reasons-endpoint</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/04/29/deprecation-of-hailing-failure-reasons-endpoint.html"><![CDATA[<p>The public <code class="language-plaintext highlighter-rouge">GET /api/hailing/failure_reasons</code> endpoint is now deprecated and will be
removed on <strong>2026-09-16</strong>. Package failure reasons are now served through the unified
reasons API at <code class="language-plaintext highlighter-rouge">GET /api/reasons/package_failure</code>, in the same shape used by the other
reason categories such as stop failure reasons.</p>

<p>The unified API gives operators and integrators a single, consistent format for all
configurable reasons across the platform, with localised labels and category-specific
metadata kept neatly in a <code class="language-plaintext highlighter-rouge">properties</code> bag — so adding new categories in the future
won’t require new response shapes on the client side.</p>

<p><strong>Changes:</strong></p>
<ul>
  <li>A new <code class="language-plaintext highlighter-rouge">GET /api/reasons/package_failure</code> endpoint is available and returns the same
tenant-configurable reasons the legacy endpoint did, in the unified reasons shape</li>
  <li>The legacy <code class="language-plaintext highlighter-rouge">GET /api/hailing/failure_reasons</code> endpoint continues to work but is
deprecated</li>
  <li>The <code class="language-plaintext highlighter-rouge">id</code> → <code class="language-plaintext highlighter-rouge">key</code> rename and moving <code class="language-plaintext highlighter-rouge">note_required</code> / <code class="language-plaintext highlighter-rouge">triggers_reattempt</code> under a
<code class="language-plaintext highlighter-rouge">properties</code> sub-object aligns this category with the rest of the unified reasons API</li>
</ul>

<p><strong>Field mapping:</strong></p>

<table>
  <thead>
    <tr>
      <th>Legacy response field</th>
      <th>New response field</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">id</code></td>
      <td><code class="language-plaintext highlighter-rouge">key</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">title</code></td>
      <td><code class="language-plaintext highlighter-rouge">label</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">note_required</code></td>
      <td><code class="language-plaintext highlighter-rouge">properties.note_required</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">triggers_reattempt</code></td>
      <td><code class="language-plaintext highlighter-rouge">properties.triggers_reattempt</code></td>
    </tr>
    <tr>
      <td><code class="language-plaintext highlighter-rouge">applies_to</code></td>
      <td><code class="language-plaintext highlighter-rouge">applies_to.package_interactions</code></td>
    </tr>
  </tbody>
</table>

<p><strong>Migration:</strong></p>

<p>Replace calls to the legacy endpoint with the new one and adapt to the unified shape:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Before — GET /api/hailing/failure_reasons</span>
<span class="p">{</span>
  <span class="dl">"</span><span class="s2">failure_reasons</span><span class="dl">"</span><span class="p">:</span> <span class="p">[</span>
    <span class="p">{</span>
      <span class="dl">"</span><span class="s2">id</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">550e8400-e29b-41d4-a716-446655440000</span><span class="dl">"</span><span class="p">,</span>
      <span class="dl">"</span><span class="s2">title</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Recipient not at home</span><span class="dl">"</span><span class="p">,</span>
      <span class="dl">"</span><span class="s2">applies_to</span><span class="dl">"</span><span class="p">:</span> <span class="p">[</span><span class="dl">"</span><span class="s2">dropoff</span><span class="dl">"</span><span class="p">],</span>
      <span class="dl">"</span><span class="s2">note_required</span><span class="dl">"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
      <span class="dl">"</span><span class="s2">triggers_reattempt</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span>
    <span class="p">}</span>
  <span class="p">]</span>
<span class="p">}</span>

<span class="c1">// After — GET /api/reasons/package_failure</span>
<span class="p">{</span>
  <span class="dl">"</span><span class="s2">reasons</span><span class="dl">"</span><span class="p">:</span> <span class="p">[</span>
    <span class="p">{</span>
      <span class="dl">"</span><span class="s2">category</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">package_failure</span><span class="dl">"</span><span class="p">,</span>
      <span class="dl">"</span><span class="s2">key</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">550e8400-e29b-41d4-a716-446655440000</span><span class="dl">"</span><span class="p">,</span>
      <span class="dl">"</span><span class="s2">label</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">Recipient not at home</span><span class="dl">"</span><span class="p">,</span>
      <span class="dl">"</span><span class="s2">applies_to</span><span class="dl">"</span><span class="p">:</span> <span class="p">{</span>
        <span class="dl">"</span><span class="s2">stop_types</span><span class="dl">"</span><span class="p">:</span> <span class="p">[],</span>
        <span class="dl">"</span><span class="s2">package_interactions</span><span class="dl">"</span><span class="p">:</span> <span class="p">[</span><span class="dl">"</span><span class="s2">dropoff</span><span class="dl">"</span><span class="p">]</span>
      <span class="p">},</span>
      <span class="dl">"</span><span class="s2">properties</span><span class="dl">"</span><span class="p">:</span> <span class="p">{</span>
        <span class="dl">"</span><span class="s2">note_required</span><span class="dl">"</span><span class="p">:</span> <span class="kc">false</span><span class="p">,</span>
        <span class="dl">"</span><span class="s2">triggers_reattempt</span><span class="dl">"</span><span class="p">:</span> <span class="kc">true</span>
      <span class="p">}</span>
    <span class="p">}</span>
  <span class="p">]</span>
<span class="p">}</span>
</code></pre></div></div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/HailingFailureReasonsDetection" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">get</span>
        <span class="path">/api/hailing/failure_reasons</span>
        <span class="openapi-deprecated-badge">Deprecated</span>
      </div>
      <div><span class="name">Package Failure Reasons Detection</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/ListPackageFailureReasons" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">get</span>
        <span class="path">/api/reasons/package_failure</span>
        
      </div>
      <div><span class="name">List Package Failure Reasons</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The public GET /api/hailing/failure_reasons endpoint is now deprecated and will be removed on 2026-09-16. Package failure reasons are now served through the unified reasons API at GET /api/reasons/package_failure, in the same shape used by the other reason categories such as stop failure reasons.]]></summary></entry><entry><title type="html">Deprecation of active_hailing_booking_ids user field</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/03/11/deprecation-of-active-hailing-booking-ids.html" rel="alternate" type="text/html" title="Deprecation of active_hailing_booking_ids user field" /><published>2026-03-11T00:00:00+00:00</published><updated>2026-03-11T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/03/11/deprecation-of-active-hailing-booking-ids</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/03/11/deprecation-of-active-hailing-booking-ids.html"><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">active_hailing_booking_ids</code> field on the User resource is now deprecated and will be removed in a future release. This only affects List Users and Show User endpoints.</p>

<p>As part of the ongoing transition from booking to tour terminology, this field has been replaced by <code class="language-plaintext highlighter-rouge">active_tour_id</code>, which returns the ID of the driver’s currently active tour as a single value (or null when idle).</p>

<p><strong>Changes:</strong></p>
<ul>
  <li>A new <code class="language-plaintext highlighter-rouge">active_tour_id</code> field is now available on the User resource when the resource is a driver</li>
  <li>The existing <code class="language-plaintext highlighter-rouge">active_hailing_booking_ids</code> array field continues to work but is deprecated</li>
  <li><code class="language-plaintext highlighter-rouge">active_tour_id</code> returns a single UUID or null, replacing the array which only ever contained zero or one element</li>
</ul>

<p><strong>Migration:</strong>
Replace usage of <code class="language-plaintext highlighter-rouge">active_hailing_booking_ids</code> with <code class="language-plaintext highlighter-rouge">active_tour_id</code>:</p>

<div class="language-js highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">// Before (active_hailing_booking_ids — array, always 0 or 1 elements)</span>
<span class="p">{</span> <span class="dl">"</span><span class="s2">active_hailing_booking_ids</span><span class="dl">"</span><span class="p">:</span> <span class="p">[</span><span class="dl">"</span><span class="s2">550e8400-e29b-41d4-a716-446655440000</span><span class="dl">"</span><span class="p">]</span> <span class="p">}</span>

<span class="c1">// After (active_tour_id — single value or null)</span>
<span class="p">{</span> <span class="dl">"</span><span class="s2">active_tour_id</span><span class="dl">"</span><span class="p">:</span> <span class="dl">"</span><span class="s2">550e8400-e29b-41d4-a716-446655440000</span><span class="dl">"</span> <span class="p">}</span>
</code></pre></div></div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/ListUsers" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">get</span>
        <span class="path">/api/users</span>
        
      </div>
      <div><span class="name">List Users</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/ShowUser" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">get</span>
        <span class="path">/api/users/{id}</span>
        
      </div>
      <div><span class="name">Show a user</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The active_hailing_booking_ids field on the User resource is now deprecated and will be removed in a future release. This only affects List Users and Show User endpoints.]]></summary></entry><entry><title type="html">Deprecation of on_active_hailing_booking users filter</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/02/24/deprecation-of-on-active-hailing-booking-filter.html" rel="alternate" type="text/html" title="Deprecation of on_active_hailing_booking users filter" /><published>2026-02-24T00:00:00+00:00</published><updated>2026-02-24T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/02/24/deprecation-of-on-active-hailing-booking-filter</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/02/24/deprecation-of-on-active-hailing-booking-filter.html"><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">on_active_hailing_booking</code> filter parameter on the List Users endpoint is now deprecated and will be removed in a future release.</p>

<p>As part of the ongoing split between bookings and tours as distinct concepts, this filter has been replaced by <code class="language-plaintext highlighter-rouge">on_active_tour</code>, which provides the same functionality with naming that better reflects the underlying domain model.</p>

<p><strong>Changes:</strong></p>
<ul>
  <li>A new <code class="language-plaintext highlighter-rouge">on_active_tour</code> boolean filter is now available on the List Users endpoint</li>
  <li>The existing <code class="language-plaintext highlighter-rouge">on_active_hailing_booking</code> filter continues to work but is deprecated</li>
  <li>Both filters behave identically — filtering drivers by whether they currently have an active tour</li>
</ul>

<p><strong>Migration:</strong>
Replace <code class="language-plaintext highlighter-rouge">on_active_hailing_booking</code> with <code class="language-plaintext highlighter-rouge">on_active_tour</code> in your API calls:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Before
GET /api/users?filters[on_active_hailing_booking]=true

# After
GET /api/users?filters[on_active_tour]=true
</code></pre></div></div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/ListUsers" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">get</span>
        <span class="path">/api/users</span>
        
      </div>
      <div><span class="name">List Users</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The on_active_hailing_booking filter parameter on the List Users endpoint is now deprecated and will be removed in a future release.]]></summary></entry><entry><title type="html">Deprecation of gradual_rollout_frequency_seconds</title><link href="https://docs.motiontools.io/announcements/deprecations/2026/01/28/deprecation-of-gradual-rollout-frequency-seconds.html" rel="alternate" type="text/html" title="Deprecation of gradual_rollout_frequency_seconds" /><published>2026-01-28T00:00:00+00:00</published><updated>2026-01-28T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2026/01/28/deprecation-of-gradual-rollout-frequency-seconds</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2026/01/28/deprecation-of-gradual-rollout-frequency-seconds.html"><![CDATA[<p>The <code class="language-plaintext highlighter-rouge">gradual_rollout_frequency_seconds</code> field on scheduling configs is now deprecated and will be removed in a future release.</p>

<p>This field was previously used to configure the frequency at which the next driver would be looked up for marking as preferred during gradual rollout. With the removal of the <code class="language-plaintext highlighter-rouge">per_tour</code> gradual rollout mode, this configuration is no longer used - the frequency is now controlled by an environment variable.</p>

<p><strong>Changes:</strong></p>
<ul>
  <li>The field now always returns <code class="language-plaintext highlighter-rouge">null</code> regardless of the stored value</li>
  <li>Providing this field in create/update requests is still accepted but has no effect</li>
</ul>

<p><strong>Migration:</strong>
No action is required. The field will continue to be returned in API responses (with the value <code class="language-plaintext highlighter-rouge">null</code>) until it is removed.</p>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/ShowSchedulingConfig" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">get</span>
        <span class="path">/api/admin/hailing/scheduling_configs/{id}</span>
        
      </div>
      <div><span class="name">Show a scheduling config</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateSchedulingConfig" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/admin/hailing/scheduling_configs/{id}</span>
        
      </div>
      <div><span class="name">Update a scheduling config</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[The gradual_rollout_frequency_seconds field on scheduling configs is now deprecated and will be removed in a future release.]]></summary></entry><entry><title type="html">Removal of hailing_booking/preferred_drivers endpoint</title><link href="https://docs.motiontools.io/announcements/deprecations/2025/11/19/removal-of-hailing-bookings-preferred-drivers-endpoint.html" rel="alternate" type="text/html" title="Removal of hailing_booking/preferred_drivers endpoint" /><published>2025-11-19T00:00:00+00:00</published><updated>2025-11-19T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2025/11/19/removal-of-hailing-bookings-preferred-drivers-endpoint</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2025/11/19/removal-of-hailing-bookings-preferred-drivers-endpoint.html"><![CDATA[<p>To align the existing endpoints with our new naming conventions,
we are removing the <code class="language-plaintext highlighter-rouge">/api/hailing_bookings/:id/preferred_drivers</code> endpoint.</p>

<p>Instead, you should switch to the dedicated endpoint for tours or bookings.</p>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/TourAddPreferredDrivers" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/tours/{id}/preferred_drivers</span>
        
      </div>
      <div><span class="name">Set preferred drivers</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/BookingAddPreferredDrivers" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/bookings/{id}/preferred_drivers</span>
        
      </div>
      <div><span class="name">Set preferred drivers</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[To align the existing endpoints with our new naming conventions, we are removing the /api/hailing_bookings/:id/preferred_drivers endpoint.]]></summary></entry><entry><title type="html">Removal of return_to_hub property on tour response</title><link href="https://docs.motiontools.io/announcements/deprecations/2025/06/19/removal-of-tour-return_to_hub-property.html" rel="alternate" type="text/html" title="Removal of return_to_hub property on tour response" /><published>2025-06-19T00:00:00+00:00</published><updated>2025-06-19T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2025/06/19/removal-of-tour-return_to_hub-property</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2025/06/19/removal-of-tour-return_to_hub-property.html"><![CDATA[<p>We are removing the <code class="language-plaintext highlighter-rouge">return_to_hub</code> property returned on the standard response for bookings &amp; tours.</p>

<p>This property has become obsolete in early 2024 with the introduction of our flexible package tours product,
allowing any tour to have arbitrary stops as desired, and hasn’t been used for some time. We are now fully
removing it from our API responses.</p>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[We are removing the return_to_hub property returned on the standard response for bookings &amp; tours.]]></summary></entry><entry><title type="html">Removal of generic force_delivery package transition</title><link href="https://docs.motiontools.io/announcements/deprecations/2025/05/22/removal-of-generic-force_delivery.html" rel="alternate" type="text/html" title="Removal of generic force_delivery package transition" /><published>2025-05-22T00:00:00+00:00</published><updated>2025-05-22T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2025/05/22/removal-of-generic-force_delivery</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2025/05/22/removal-of-generic-force_delivery.html"><![CDATA[<p>Due to the introduction of configurable off-tour package delivery proofs we are replacing the generic <code class="language-plaintext highlighter-rouge">force_delivery</code> 
transition with a dedicated endpoint.</p>

<p>This change became necessary since depending on the configuration a forced delivery now requires additional
data for proofs to be provided, which wasn’t possible with the generic transition.</p>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/ForceDeliverHailingPackage" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">post</span>
        <span class="path">/api/hailing/packages/{id}/force_delivery</span>
        
      </div>
      <div><span class="name">Mark package as delivered</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[Due to the introduction of configurable off-tour package delivery proofs we are replacing the generic force_delivery transition with a dedicated endpoint.]]></summary></entry><entry><title type="html">Adjusted indication for ability to remove package from tour</title><link href="https://docs.motiontools.io/announcements/deprecations/2025/02/26/package-lookup-removal-permissions.html" rel="alternate" type="text/html" title="Adjusted indication for ability to remove package from tour" /><published>2025-02-26T00:00:00+00:00</published><updated>2025-02-26T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2025/02/26/package-lookup-removal-permissions</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2025/02/26/package-lookup-removal-permissions.html"><![CDATA[<p>On the package lookup endpoint we are renaming the <code class="language-plaintext highlighter-rouge">removable_from_dropoff_tour</code> permission indicator
to the standardized <code class="language-plaintext highlighter-rouge">permissions.removable</code> property.</p>

<p>We normally indicate granular permissions for specific interactions in the <code class="language-plaintext highlighter-rouge">permissions</code> object on responses. While
the permission to remove a certain package was already indicated, it doesn’t only apply to dropoff tours, and wasn’t
in the right namespace to ease API consumption, therefore we are replacing it with this new standardized property.</p>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/LookupPackage" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">post</span>
        <span class="path">/api/hailing/packages/lookup</span>
        
      </div>
      <div><span class="name">Lookup package by shortcode or external label</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[On the package lookup endpoint we are renaming the removable_from_dropoff_tour permission indicator to the standardized permissions.removable property.]]></summary></entry><entry><title type="html">Removal of hailing_booking.* webhooks</title><link href="https://docs.motiontools.io/announcements/deprecations/2025/01/15/removal-of-hailing_booking-webhook-namespace.html" rel="alternate" type="text/html" title="Removal of hailing_booking.* webhooks" /><published>2025-01-15T00:00:00+00:00</published><updated>2025-01-15T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2025/01/15/removal-of-hailing_booking-webhook-namespace</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2025/01/15/removal-of-hailing_booking-webhook-namespace.html"><![CDATA[<p>Due to the ongoing split between bookings and tours, we are deprecating a wide range of webhook events that were shared between
both bookings and tours in the past, replacing them with booking and tour specific replacements where suitable.</p>

<p>In early 2024 we have changed the behaviour of our platform to make the distinction between bookings and tours clearer - bookings represent
customer demand, while tours are responsible for the (optionally optimized) execution of such bookings by drivers. As a consequence of this,
since then drivers cannot directly accept regular bookings anymore, with wide-ranging consequences to the events and flow a booking and a tour
can have.</p>

<p>So far, many of our webhook events were shared between bookings and tours however, in the <code class="language-plaintext highlighter-rouge">hailing_booking.*</code> namespace. We are replacing these
with dedicated events that more closely reflect the actual possibilities and lifecycles of their corresponding data models.</p>

<p>Please update all your webhook receiving endpoints and configurations accordingly to utilize the new events instead:</p>

<h4 id="booking-events">Booking events</h4>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.booking.created" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">booking.created</span>
        
      </div>
      <div><span class="name">Published when a new booking has been created</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.booking.etas_recalculated" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">booking.etas_recalculated</span>
        
      </div>
      <div><span class="name">Published when the ETAs for the booking's stops have been recalculated.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.booking.modified" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">booking.modified</span>
        
      </div>
      <div><span class="name">Published when some part of booking is modified, e.g. when stops are changed.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.booking.route_changed" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">booking.route_changed</span>
        
      </div>
      <div><span class="name">Published when the route of a booking has changed, i.e. by adding or removing stops, changing
their locations, changing their order and so on.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.booking.transition" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">booking.transition</span>
        
      </div>
      <div><span class="name">Indicates a change of status of a booking.</span></div>
    </div>
  </a>
</div>

<h4 id="tour-events">Tour events</h4>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.active_status_changed" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.active_status_changed</span>
        
      </div>
      <div><span class="name">Notifies drivers about change of active status of a tour.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.created" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.created</span>
        
      </div>
      <div><span class="name">Published when a new tour has been created</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.driver_location_updated" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.driver_location_updated</span>
        
      </div>
      <div><span class="name">Published when a driver sent an updated GPS location that affects an ongoing tour.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.etas_recalculated" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.etas_recalculated</span>
        
      </div>
      <div><span class="name">Published when the ETAs for the tour's stops have been recalculated.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.force_assigned" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.force_assigned</span>
        
      </div>
      <div><span class="name">Notifies about a tour being forcefully assigned to a driver.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.force_unassigned" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.force_unassigned</span>
        
      </div>
      <div><span class="name">Notifies about tour being forcefully un-assigned from a driver.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.modified" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.modified</span>
        
      </div>
      <div><span class="name">Published when some part of the tour is modified, e.g. when stops are changed.

For **drivers** it's only published while the booking is in `en_route` state.

When the tour doesn't have a driver yet, then it's published to the service area drivers channel.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.route_changed" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.route_changed</span>
        
      </div>
      <div><span class="name">Published when the route of a tour has changed, i.e. by adding or removing stops, changing
their locations, changing their order and so on.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.stats_updated" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.stats_updated</span>
        
      </div>
      <div><span class="name">Published when the tour's statistic or the route estimate gets changed.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.stop_transition" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.stop_transition</span>
        
      </div>
      <div><span class="name">Indicates a change of status for a specific stop of a tour.</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/webhook.tour.transition" data-tooltip="Open webhook documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">Webhook</span>
        <span class="path">tour.transition</span>
        
      </div>
      <div><span class="name">Indicates a change of status of a tour.</span></div>
    </div>
  </a>
</div>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[Due to the ongoing split between bookings and tours, we are deprecating a wide range of webhook events that were shared between both bookings and tours in the past, replacing them with booking and tour specific replacements where suitable.]]></summary></entry><entry><title type="html">Simplified stop update routes</title><link href="https://docs.motiontools.io/announcements/deprecations/2024/08/13/simplified-stop-update-routes.html" rel="alternate" type="text/html" title="Simplified stop update routes" /><published>2024-08-13T00:00:00+00:00</published><updated>2024-08-13T00:00:00+00:00</updated><id>https://docs.motiontools.io/announcements/deprecations/2024/08/13/simplified-stop-update-routes</id><content type="html" xml:base="https://docs.motiontools.io/announcements/deprecations/2024/08/13/simplified-stop-update-routes.html"><![CDATA[<p>We have added simplified routes for granular stop data editing endpoints.</p>

<p>Historically, to update a stop’s information you had to also supply the corresponding booking ID, for example
at <code class="language-plaintext highlighter-rouge">/api/hailing/bookings/:booking_id/stops/:stop_id/metadata</code>. Due to the ongoing split between bookings and tours 
you would also in the future have needed to call different endpoints depending on whether it’s a tour or booking stop.</p>

<p>To simplify this, we have removed the booking and tour namespacing from endpoints related to editing stop data, linked below.
All of the endpoints now follow the route schema <code class="language-plaintext highlighter-rouge">/api/stops/:id/[endpoint]</code>.</p>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateStopAdditionalInformation" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">patch</span>
        <span class="path">/api/stops/{stop_id}/additional_information</span>
        
      </div>
      <div><span class="name">Update Additional Information</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateStopArrivalTimes" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">patch</span>
        <span class="path">/api/stops/{stop_id}/arrival_times</span>
        
      </div>
      <div><span class="name">Update Arrival Times</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateStopContact" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">patch</span>
        <span class="path">/api/stops/{stop_id}/contact</span>
        
      </div>
      <div><span class="name">Update Contact Details</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateHailingStopContent" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/stops/{stop_id}/content</span>
        
      </div>
      <div><span class="name">Update Custom Content</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/HailingCompleteStop" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">post</span>
        <span class="path">/api/stops/{stop_id}/complete</span>
        
      </div>
      <div><span class="name">Complete stop</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/HailingFailStop" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">post</span>
        <span class="path">/api/stops/{stop_id}/fail</span>
        
      </div>
      <div><span class="name">Fail stop</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateStopLocation" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">patch</span>
        <span class="path">/api/stops/{stop_id}/location</span>
        
      </div>
      <div><span class="name">Update Location</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/OverwriteStopMetadata" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/stops/{stop_id}/metadata</span>
        
      </div>
      <div><span class="name">Update Stop's Metadata</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/PatchStopMetadata" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">patch</span>
        <span class="path">/api/stops/{stop_id}/metadata</span>
        
      </div>
      <div><span class="name">Partially Update Stop's Metadata</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/UpdateStopProperties" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">patch</span>
        <span class="path">/api/stops/{stop_id}/properties</span>
        
      </div>
      <div><span class="name">Update Stop Properties</span></div>
    </div>
  </a>
</div>

<div class="openapi-endpoint">
  <a href="https://docs.motiontools.io/#operation/TransitionHailingBookingStop" data-tooltip="Open endpoint documentation in OpenAPI">
    <div class="grid">
      <div>
        <span class="request-method">put</span>
        <span class="path">/api/stops/{stop_id}/transition</span>
        
      </div>
      <div><span class="name">Perform Stop Transition</span></div>
    </div>
  </a>
</div>

<p><br /></p>

<p>The old routes remain supported for the time being but will be removed in the future.</p>]]></content><author><name></name></author><category term="Deprecations" /><summary type="html"><![CDATA[We have added simplified routes for granular stop data editing endpoints.]]></summary></entry></feed>