CDK Global website screenshot

CDK Global

CDK Global is the dominant U.S. dealer management system (DMS) provider, serving roughly 15,000 automotive dealerships with software covering sales, F&I, fixed operations, parts, CRM, and digital retail. CDK was spun out of ADP in 2014 and acquired by Brookfield Business Partners in July 2022 for $8.3B (taken private). The company operates the Fortellis platform — a developer marketplace and integration hub with 135+ published APIs, 425+ marketplace apps, 82,000+ dealer integrations, and 6.7B+ API transactions per year — exposing CDK DMS data to ISVs, OEMs, and third-party automotive systems. CDK suffered a major BlackSuit ransomware attack on June 19, 2024, paying ~$25M in bitcoin to restore service over roughly two weeks; the outage caused an estimated $605M in dealer losses and triggered numerous lawsuits.

8 APIs 0 Features
AutomotiveDealer ManagementDMSAuto RetailF&IFixed OperationsPartsCRMDigital RetailMarketplaceDeveloper PlatformEventsWebhooksAsyncAPI

APIs

Fortellis Platform

Fortellis is CDK Global's open automotive commerce platform — an API gateway, app marketplace, and developer community that brokers data flow between dealerships, ISVs, OEMs, he...

Fortellis Service Appointments API

Service-appointments API for booking, querying, updating, and cancelling vehicle service appointments at a dealership service department. Used by scheduling systems integrating ...

Fortellis User / Booking Sessions API

Booking-sessions API illustrating Fortellis's REST conventions: session creation, item management, store availability, and slot reservation for service scheduling workflows.

Fortellis Parts Store API

Parts-store reference API exposing product info, sizing, and ping/health for dealership parts inventory and procurement integrations.

Fortellis Reference Pet Adoption API

Reference / tutorial API distributed by Fortellis for developers learning the platform's OpenAPI conventions, OAuth flows, and admin-API patterns.

Fortellis Event Relay Webhook

Webhook contract that event-sink applications implement to receive asynchronous events from Fortellis Event Relay. Defines payload envelope, required headers (X-Request-Id, Fort...

Fortellis Event Relay Data Plane Proxy (AsyncAPI)

AsyncAPI specification for the Fortellis Event Relay data-plane proxy used by event sources to publish events into Fortellis for fan-out to subscribers.

Fortellis AsyncAPI Hello World Reference

Hello World AsyncAPI reference distributed by Fortellis to teach the asynchronous API pattern, channel topology, and message envelope conventions used across Fortellis event APIs.

Collections

appointments

POSTMAN

Pet Adoption

POSTMAN

Arazzo Workflows

CDK Global Add Service Session Item

Create a booking session, add a requested service item, and read it back.

ARAZZO

CDK Global Book Service Session

Create a booking session, discover an available store and slot, and book it.

ARAZZO

CDK Global Cancel Service Appointment

Find a customer's appointment, confirm it exists, then cancel it with a reason.

ARAZZO

CDK Global Create Data Record

Add a record to the data domain store and read it back by its identifier.

ARAZZO

CDK Global Inspect Available Slot

List a store's open slots and pull the full detail of the first slot.

ARAZZO

CDK Global Parts Availability Check

Health-check the parts store, then look up a product only when it is up.

ARAZZO

CDK Global Parts Inventory Lookup

List parts inventory, pull a product's detail, then read its size.

ARAZZO

CDK Global Relay Appointment Event

Read a service appointment, then relay it as an event to an event sink.

ARAZZO

CDK Global Remove Service Session Item

Confirm a booking session item exists, then remove it from the session.

ARAZZO

CDK Global Reschedule Service Appointment

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

ARAZZO

CDK Global Schedule Service Appointment

Create a service appointment for a vehicle and read it back to confirm.

ARAZZO

CDK Global Update Data Record

Read a data-domain record, branch on whether it exists, then update it.

ARAZZO

CDK Global Update Service Session Item

Create a booking session, query a requested item, and update its details.

ARAZZO

Pricing Plans

Cdk Global Plans Pricing

6 plans

PLANS

Rate Limits

Cdk Global Rate Limits

4 limits

RATE LIMITS

FinOps

Event Specifications

Fortellis Event Relay Data API

Provides an Event Source (Publisher) the ability to post event through Fortellis Event Relay.

ASYNCAPI

Hello World

This is the example hellos world asynchronous API.

ASYNCAPI

Semantic Vocabularies

Cdk Global Context

0 classes · 9 properties

JSON-LD

API Governance Rules

CDK Global API Rules

10 rules · 2 errors 5 warnings

SPECTRAL

JSON Structure

Fortellis Event Structure

0 properties

JSON STRUCTURE

Fortellis Service Appointment Structure

0 properties

JSON STRUCTURE

Example Payloads

Resources

🔗
PostmanWorkspace
PostmanWorkspace
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Arazzo
Arazzo
🔗
Website
Website
🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
APIReference
APIReference
📝
Signup
Signup
🔗
Marketplace
Marketplace
🔗
Community
Community
🔑
Authentication
Authentication
👥
GitHubOrganization
GitHubOrganization
📦
SDKs
SDKs
🔗
CLI
CLI
💻
VSCodeExtension
VSCodeExtension
👥
GitHubAction
GitHubAction
👥
GitHubAction
GitHubAction
🔗
SpecLinter
SpecLinter
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
🔗
Sample
Sample
🔗
Sample
Sample
🔗
Sample
Sample
🔗
Sample
Sample
🔗
LinkedIn
LinkedIn
🔗
Twitter
Twitter
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps
🔗
Vocabulary
Vocabulary
🔗
JSONLDContext
JSONLDContext
🔗
SpectralRules
SpectralRules

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Booking Sessions
  version: 45.0.0
items:
- info:
    name: Service Booking
    type: folder
  items:
  - info:
      name: Create a bookingSession
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/booking-sessions'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      - name: Content-Type
        value: ''
    docs: Creates a Booking Session. This session encapsulates the process of establishing the vehicle to be serviced, what
      services will be performed, what customer transportation is requested, and which available appointment slots are available.
  - info:
      name: Queries the service items of the Booking Session
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/items'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
    docs: Queries the requested service items of the Booking Session
  - info:
      name: Adds a requested service item to the Booking Session
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/items'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      - name: Content-Type
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
    docs: Adds a requested service item to the Booking Session
  - info:
      name: Queries a requested service item by identifier
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/items/:itemId'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
      - name: itemId
        value: ''
        type: path
        description: The identifier of the item
    docs: Queries a requested service item by identifier
  - info:
      name: Updates a requested service item to the Booking Session
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/items/:itemId'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      - name: Content-Type
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
      - name: itemId
        value: ''
        type: path
        description: The identifier of the item
    docs: Updates a requested service item to the Booking Session
  - info:
      name: Removes a service item from the Booking Session
      type: http
    http:
      method: DELETE
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/items/:itemId'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      - name: Content-Type
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
      - name: itemId
        value: ''
        type: path
        description: The identifier of the item
    docs: Removes a service item from the Booking Session
  - info:
      name: Queries the store availability for appointments for booking
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/available-stores'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
    docs: Queries the store availability for appointments for booking
  - info:
      name: Queries the available appointment slots by store
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/available-stores/:storeId/slots'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
      - name: storeId
        value: ''
        type: path
        description: The store identifier => 000001
    docs: Queries the available appointment slots by store
  - info:
      name: Queries an available appointment slot
      type: http
    http:
      method: GET
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/available-stores/:storeId/slots/:slotId'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
      - name: storeId
        value: ''
        type: path
        description: The store identifier => 000001
      - name: slotId
        value: ''
        type: path
        description: The slot identifier
    docs: Queries an available appointment slot
  - info:
      name: Books an appointment slot. This is the final step in the appointment booking process.
      type: http
    http:
      method: POST
      url: '{{baseUrl}}/booking-sessions/:bookingSessionId/available-stores/:storeId/slots/:slotId'
      headers:
      - name: Request-Id
        value: ''
      - name: Subscription-Id
        value: ''
      - name: Authorization
        value: ''
      - name: Content-Type
        value: ''
      params:
      - name: bookingSessionId
        value: ''
        type: path
        description: The identifier of the bookingSession
      - name: storeId
        value: ''
        type: path
        description: The store identifier => 000001
      - name: slotId
        value: ''
        type: path
        description: The slot identifier
    docs: Books an appointment slot. This is the final step in the appointment booking process.
bundled: true