CDK Global · Arazzo Workflow

CDK Global Reschedule Service Appointment

Version 1.0.0

Read an existing appointment, update its date/time, then confirm the change.

1 workflow 1 source API 1 provider
View Spec View on GitHub AutomotiveDealer ManagementDMSAuto RetailF&IFixed OperationsPartsCRMDigital RetailMarketplaceDeveloper PlatformEventsWebhooksAsyncAPIArazzoWorkflows

Provider

cdk-global

Workflows

reschedule-appointment
Move an existing service appointment to a new date and time.
Loads the current appointment, applies a new date/time while retaining the originally requested services, and verifies the rescheduled time by reading the appointment again.
3 steps inputs: appointmentId, authorization, newDateTime, requestId, subscriptionId outputs: appointmentId, dateTime
1
loadAppointment
queryAppointment
Read the existing appointment to capture the requested services that must be carried over into the update.
2
applyNewTime
updateAppointment
Post the appointment update carrying the new date/time and the previously requested services so the booking is moved rather than emptied.
3
confirmReschedule
queryAppointment
Read the appointment back to confirm the new date/time has been applied.

Source API Descriptions

Arazzo Workflow Specification

cdk-global-reschedule-appointment-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: CDK Global Reschedule Service Appointment
  summary: Read an existing appointment, update its date/time, then confirm the change.
  description: >-
    Reschedules a vehicle service appointment by first reading the existing
    appointment to capture its current services, posting an update that carries
    the new date/time while preserving the requested services, and finally
    reading the appointment back to confirm the new time. Every step spells out
    its request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: appointmentsApi
  url: ../openapi/fortellis-appointments-openapi.yml
  type: openapi
workflows:
- workflowId: reschedule-appointment
  summary: Move an existing service appointment to a new date and time.
  description: >-
    Loads the current appointment, applies a new date/time while retaining the
    originally requested services, and verifies the rescheduled time by reading
    the appointment again.
  inputs:
    type: object
    required:
    - subscriptionId
    - requestId
    - authorization
    - appointmentId
    - newDateTime
    properties:
      subscriptionId:
        type: string
        description: The Fortellis Marketplace subscription identifier.
      requestId:
        type: string
        description: A correlation GUID echoed back across systems.
      authorization:
        type: string
        description: The Fortellis OAuth 2.0 bearer token (or Basic auth on the simulator).
      appointmentId:
        type: string
        description: The identifier of the appointment to reschedule.
      newDateTime:
        type: string
        description: The new ISO 8601 encoded date and time for the appointment.
  steps:
  - stepId: loadAppointment
    description: >-
      Read the existing appointment to capture the requested services that must
      be carried over into the update.
    operationId: queryAppointment
    parameters:
    - name: appointmentId
      in: path
      value: $inputs.appointmentId
    - name: Request-Id
      in: header
      value: $inputs.requestId
    - name: Subscription-Id
      in: header
      value: $inputs.subscriptionId
    - name: Authorization
      in: header
      value: $inputs.authorization
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      requestedServices: $response.body#/requestedServices
      vehicleHref: $response.body#/vehicleHref
      customerHref: $response.body#/customerHref
  - stepId: applyNewTime
    description: >-
      Post the appointment update carrying the new date/time and the previously
      requested services so the booking is moved rather than emptied.
    operationId: updateAppointment
    parameters:
    - name: appointmentId
      in: path
      value: $inputs.appointmentId
    - name: Request-Id
      in: header
      value: $inputs.requestId
    - name: Subscription-Id
      in: header
      value: $inputs.subscriptionId
    - name: Authorization
      in: header
      value: $inputs.authorization
    requestBody:
      contentType: application/json
      payload:
        dateTime: $inputs.newDateTime
        requestedServices: $steps.loadAppointment.outputs.requestedServices
        vehicleHref: $steps.loadAppointment.outputs.vehicleHref
        customerHref: $steps.loadAppointment.outputs.customerHref
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      appointmentId: $response.body#/appointmentId
  - stepId: confirmReschedule
    description: >-
      Read the appointment back to confirm the new date/time has been applied.
    operationId: queryAppointment
    parameters:
    - name: appointmentId
      in: path
      value: $inputs.appointmentId
    - name: Request-Id
      in: header
      value: $inputs.requestId
    - name: Subscription-Id
      in: header
      value: $inputs.subscriptionId
    - name: Authorization
      in: header
      value: $inputs.authorization
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      dateTime: $response.body#/dateTime
  outputs:
    appointmentId: $steps.applyNewTime.outputs.appointmentId
    dateTime: $steps.confirmReschedule.outputs.dateTime