Save handover details

Save the sales-to-onboarding handover details on one contracted product line: the systems in use, platforms, website, markets, languages and notes.

POSThttps://api.spyne.ai/console/v1/contracting/onboarding/update-handover-details-v2
AuthBearer token (console user)Rate limitNot documentedProcessingSynchronous; one read and one update of the product line record.

The call updates one product line record. Only the fields you send change:

  • website_url, spyne_rooftops, potential_rooftops, markets_serving, languages_spoken and notes are merged into the stored onboarding data,
  • input_medium and output_medium replace the stored input or output side,
  • platforms replaces the stored platform list.

It makes no other calls and sends no events.

Send the bearer token of a signed-in Spyne Console user in Authorization: Bearer YOUR_TOKEN. The token is checked against the user validation endpoint on every call. There is no extra permission check.

Before you call it

  • The contract must be Contracted, so the product line record exists.
  • You need the product line ID (product_line_details_id). The contracted-stage dashboard rows carry it.
  • In the console, this call runs when the handover sub-stage is set to "Meet Scheduled" or "Meet Rescheduled", before the meeting details are entered. The console also uses it with only platforms to change the platform list.
  • The call is synchronous: one read and one update of the product line record. The rate limit is not documented.

Request

Requiredalways sendOptionalcan be left out
Request checklist
  1. Authenticate: send the Authorization: Bearer YOUR_TOKEN and Content-Type: application/json headers.
  2. Name the product line: send product_line_details_id.
  3. Complete the mediums: if you send input_medium or output_medium, include both ims_dms and website_provider keys in it.
  4. Send only changes: send only the fields you want to change.

Headers

ParameterTypeRequiredDescription
AuthorizationstringRequiredBearer YOUR_TOKEN
Content-TypestringRequiredapplication/json

Body

ParameterTypeRequiredDescription
product_line_details_idstringRequiredProduct line ID.
input_mediumobjectOptionalSystems the rooftop's data comes from. Must contain ims_dms and website_provider. Value types are not documented in code.
output_mediumobjectOptionalSystems the output goes to. Must contain ims_dms and website_provider.
platformsstring[]OptionalPlatform list. Allowed values are not documented in code.
website_urlstringOptionalDealer website URL.
spyne_rooftopsnumberOptionalNumber of rooftops on Spyne.
potential_rooftopsnumberOptionalNumber of potential rooftops.
markets_servingstringOptionalMarkets the dealer serves.
languages_spokenstring[]OptionalLanguages spoken.
notesstringOptionalHandover notes.

Sample request

curl -X POST "https://api.spyne.ai/console/v1/contracting/onboarding/update-handover-details-v2" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "product_line_details_id": "PRODUCT_LINE_ID",
    "input_medium": { "ims_dms": "IMS_DMS", "website_provider": "WEBSITE_PROVIDER" },
    "output_medium": { "ims_dms": "IMS_DMS", "website_provider": "WEBSITE_PROVIDER" },
    "platforms": ["PLATFORM"],
    "website_url": "https://www.example.com",
    "spyne_rooftops": 1,
    "potential_rooftops": 1,
    "markets_serving": "Example City",
    "languages_spoken": ["English"],
    "notes": "Example handover notes"
  }'
import requests

res = requests.post(
    "https://api.spyne.ai/console/v1/contracting/onboarding/update-handover-details-v2",
    json={
        "product_line_details_id": "PRODUCT_LINE_ID",
        "input_medium": {"ims_dms": "IMS_DMS", "website_provider": "WEBSITE_PROVIDER"},
        "output_medium": {"ims_dms": "IMS_DMS", "website_provider": "WEBSITE_PROVIDER"},
        "platforms": ["PLATFORM"],
        "website_url": "https://www.example.com",
        "languages_spoken": ["English"],
        "notes": "Example handover notes",
    },
    headers={"Authorization": "Bearer YOUR_TOKEN"},
)
print(res.status_code, res.json())
const res = await fetch(
  "https://api.spyne.ai/console/v1/contracting/onboarding/update-handover-details-v2",
  {
    method: "POST",
    headers: { Authorization: "Bearer YOUR_TOKEN", "Content-Type": "application/json" },
    body: JSON.stringify({
      product_line_details_id: "PRODUCT_LINE_ID",
      platforms: ["PLATFORM"],
      notes: "Example handover notes",
    }),
  }
);
console.log(res.status, await res.json());

Sample response

{ "message": "Success", "error": false, "code": "", "details": null, "data": null }
{ "message": "No fields provided to update", "error": false, "code": "", "details": null, "data": null }
{ "message": "Invalid Token", "error": true, "code": "ERROR_AUTH_401", "details": null, "data": null }
{ "message": "Product line details not found", "error": true, "code": "", "details": null, "data": null }
{ "message": "General API error. Please try again later.", "error": true, "code": "ERROR_SERVER_500", "details": {} }

Response parameters

ParameterTypeDescription
messagestringSuccess, or No fields provided to update when only the ID was sent.
errorbooleanfalse on success.
datanullNo data is returned.

Errors

StatusReasonWhen it happens
200No fields provided to updateOnly product_line_details_id was sent. Nothing changes.
400(framework)product_line_details_id is missing, a field has the wrong type, or input_medium / output_medium lacks ims_dms or website_provider. The body is not documented in code.
401Invalid or missing tokenNo Bearer token, or the token failed validation.
404Product line details not foundNo product line has this ID.
408Request timed outThe token validation call could not connect.
500General API errorA database error.

What happens next

In the console, the user then enters the meeting details, and the sub-stage is set with Update handover sub-stage. When the sub-stage reaches "Meet Done" (with an onboarding manager assigned), the product line moves to Onboarding and the checklist is created by Create the onboarding checklist.

Called before: Receive DocuSign events. Called after: Update handover sub-stage, Schedule an onboarding meeting.


Did this page help you?