Skip to content

All the Locked Doors

Module 1 of 7 in the chapter Salesforce as an API Provider, chapter 8 of the Integration Architect course. Each module stands on its own. Next: REST First

The question this module answers: What are all the ways into Salesforce, and how do you find out which ones are being used?

Part 1 ended with a pattern for every arrow. Now we turn the arrows around and look at Salesforce as the server. Every call-in from chapter 7 has to come through a door.

Think of Salesforce as a building with locked doors. You’re a process outside of Salesforce. You could be a server, a mobile phone, a gateway, your own middleware. You want to reach into the box called Salesforce core and get things, put things, update things. Salesforce won’t come out and find you. You have to reach in. You have to start the connection.

Count the doors the way I do, one row for every endpoint you can call, and Salesforce has well over 100 of them. We keep that count in our own catalog: on Winter ‘27, between 107 and 120 live doors, depending on how strictly you count. Salesforce’s own API Library (opens in a new tab) answers a different question. It groups the doors into products, and it lists 56 APIs (both checked 2026-11-07).

Neither number is the one to remember. What matters is this: my rule of thumb is that about 99% of what you can do in Salesforce through a browser, you can do from outside through an API. When I made my video tour of the APIs in 2023, I put it this way: anything you see in Salesforce, you can also access through one of the APIs. So when someone asks “can we get to that from outside?”, the answer is almost always yes. The real question is which door, and who holds the key.

And Salesforce is working on the last 1%. Its Winter ‘27 developer guide puts it this way: “Every major Salesforce capability is available as an API, a Model Context Protocol (MCP) tool, or a CLI command. Any authenticated caller can use it, whether that’s an app, a human, or an AI agent” (The Salesforce Developer’s Guide to the Winter ‘27 Release (opens in a new tab), 2026-10-05, checked 2026-10-31). Salesforce calls this a headless architecture: the capability without the screen. The direction is clear. The goal is 100%, everything you can do in a browser, available to a program or an AI agent through a door. That’s why the newest doors, the MCP servers, are built for agents. Chapter 22 (coming soon) is about them.

Our public guide, The API Guide, lists the documented doors one by one, each with a link to Salesforce’s own guide. Every door in the right-hand column of the next picture is in it.

Every way in Every way into Salesforce, in four kinds of row. Who's calling is on the left, the door in the middle, and what's behind it on the right, in Steve Trucking's org. First, a person in a browser, staff or Retail Partners in their portal, signs in and then works on the org's own address, its My Domain: screens and portals, with the phone pop-up running in the same page. Second, anyone on the website submits a form, through public pages and web forms, Web-to-Lead and Web-to-Case, marked in amber: no sign-in. It creates a new case or lead, and assignment rules run on every one. Third, anyone with email writes to the support address, through Email-to-Case and email services, also amber, no sign-in, which create a case or run your own code. Fourth, a client program, such as Redrock's system, the crews' app or the weekly export, first proves who it is to the token server, the External Client App and its integration user, then calls with the token: either Salesforce's doors, with a version in the address (REST, GraphQL, the UI API, Bulk, Pub/Sub, SOAP, Metadata, MCP), or your own doors, custom Apex REST and SOAP services, which you version yourself. The legend: amber means nobody signs in, so the door needs a guard. Underneath: over 100 doors, counted one endpoint at a time; each one is listed in The API Guide. {"author": "Steve Simpson", "blueprint": "1.0.0", "builder": "standard 1.57.1", "built": "2026-10-31", "id": "DGM-INT-SP-01", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "cells 0.5.0", "theme": "stevetecharc 1.4.0"} WHO'S CALLING THE DOOR INSIDE STEVE TRUCKING'S ORG A person in a browser staff, and Retail Partners in their portal Sign in then the org's own address, its My Domain Screens and portals the phone pop-up runs in the same page Anyone on the website a delivery-problem form Public pages and web forms a site's guest user, Web-to-Lead, Web-to-Case no sign-in A new case or lead assignment rules run on every one Anyone with email writes to the support address Email-to-Case and email services or your own Apex email handler no sign-in A case, or your code runs A client program Redrock's system, the crews' app, the weekly export The token server the External Client App and its integration user Salesforce's doors REST, GraphQL, UI API, Bulk, Pub/Sub, SOAP, Metadata, MCP a version in the address Your own doors custom Apex REST and SOAP services you version it signs in works submits creates sends creates proves who it is calls with the token calls with the token Over 100 doors, counted one endpoint at a time (2026-10-27). Each one is listed in The API Guide, stevetecharc.com/courses/api-guide. HOW TO READ IT nobody signs in: the door needs a guard © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Every way in. Four kinds of caller, four kinds of door.

Start with the doors people walk through, because they’re doors too.

  • Sign in. A person goes to the login page, authenticates, and is sent on to the org’s own address, its My Domain. Everything they click after that is a request to that server.
  • The phone. A computer telephony integration, the thing that pops up the right customer when a call comes in, runs as JavaScript inside the browser page. It comes in through the same door the person did.
  • Experience Cloud sites. Portals and communities, which can sit on your own domain. Steve Trucking’s Retail Partners sign in to theirs.
  • Public pages. A site page can be set up with no sign-in at all. There’s no person to check, only a guest user.
  • Web forms. Web-to-Lead and Web-to-Case turn a form on any website into a record. No sign-in either.
  • Email. Email-to-Case turns an email into a case, and Apex email services let your own code handle mail sent to an address Salesforce gives you.

The last three have something in common: nobody signs in. So what protects you from someone pointing a script at your web form and pounding on it?

I had a client whose web-to-case form had a broken CAPTCHA. The spam started coming in at about 10,000 cases an hour. Every one of them was a real case, so every one went through assignment rules and landed with an agent. It filled up their whole case management system. One broken check on one public form, and the support team was buried.

Salesforce’s own setting for this is in Web-to-Case setup: “Require reCAPTCHA Verification (Recommended)”. With it turned on, “requests without reCAPTCHA verification don’t generate cases” (Turn On and Customize Web-to-Case (opens in a new tab), checked 2026-10-31). An open door still needs a guard. Steve Trucking’s delivery-problem form on its public website gets one.

Now the other side: a client that isn’t a person. When I say client, I don’t mean a customer. I mean the client in client and server, from chapter 2: a server, a process, a phone app, anything that makes the call.

A client program takes two steps. First it stops at the token server and proves who it is. You set that up in chapter 4: an External Client App, and an integration user it runs as. What it gets back is a token, a long string it carries in the header of every call. Then, with the token, it goes to a door.

The doors themselves come in two kinds.

Salesforce’s doors, with a version in the address. These are Salesforce’s own APIs, and each one is versioned:

  • REST, the one most programs use: records, queries, describes. The next three modules.
  • GraphQL and the UI API, for asking for exactly what you need, or for everything a screen shows. Module 4.
  • Bulk, for moving large amounts of data. Chapter 10.
  • Pub/Sub, for events. Chapter 11.
  • Metadata and Tooling, for configuration and code rather than records.
  • Connect, for features like files, feeds and many of the industry clouds.
  • SOAP, the older XML door. It’s still on the exam, and people still use it. In my 2024 class, one student called in by SOAP to start territory management, and another kept ten-year-old .NET code running on it. Chapter 17 tells the story.
  • The newest door: Salesforce Hosted MCP Servers, generally available since April 2026, for AI agents (announcement (opens in a new tab)). Chapter 22.

Your own doors, with no Salesforce version. When you write a custom Apex REST or Apex SOAP service, Salesforce doesn’t version it. It is you who’s releasing it, so it’s you who versions it. Module 5 is about building one.

Steve Trucking already uses several of these. Redrock’s system reads deliveries through REST. The crews’ mobile app signs each person in and calls REST. Every week, the analytics team’s Snowflake export pulls from Salesforce through the Bulk API. Three clients, each with its own key.

Over 100 doors is too many to hold in your head, so I group them by what the caller is doing. Ten sets cover them all, and every door on the map says where in the course it’s taught. The first four sets are this chapter: records one at a time, many in one call, asking for a shape, and your own doors. The rest have chapters of their own.

The doors into Salesforce, in sets The doors into Salesforce, in ten sets, one per row, named for what the caller is doing. Records, one at a time, with REST: query, sObject rows, upsert by external ID, describe, and updated and deleted, all in chapter 8 module 2. Many in one call: sObject Collections, sObject Tree, Composite and Composite graph, chapter 8 module 3. Ask for a shape: GraphQL and the UI API, chapter 8 module 4. Your own doors: Apex REST, chapter 8 modules 5 and 6, and Apex SOAP, chapter 17. Big volumes: Bulk API 2.0, chapter 10, and Bulk API 1.0, legacy. Events: the Pub/Sub API, chapter 11, and the Streaming API, legacy. Configuration and code: the Metadata API, App Development, and the Tooling API, chapter 8 module 7. Products on the platform: Connect REST, reports and dashboards, and product APIs off core, all in The API Guide. Agents: hosted MCP servers and the Agent API, chapter 22. The older XML door: the SOAP API with its Enterprise and Partner WSDLs, legacy, chapter 17. Blue doors are taught in this chapter, slate in another chapter or The API Guide, amber are legacy or retiring. Underneath: every call starts at the token server; over 100 doors, counted one endpoint at a time, each one in The API Guide. {"author": "Steve Simpson", "blueprint": "1.0.1", "builder": "standard 1.58.0", "built": "2026-11-03", "id": "DGM-INT-SP-07", "rights": "\u00a9 2026 Twinshark LLC. All rights reserved.", "template": "cells 0.5.0", "theme": "stevetecharc 1.4.0"} THE SET: WHAT THE CALLER IS DOING THE DOORS Records, one at a time REST: the everyday call Query SOQL, page by page · ch 8.2 sObject rows get, create, update, delete · ch 8.2 Upsert by external ID the caller's own key · ch 8.2 Describe the shape of an object · ch 8.2 Updated and deleted what changed since · ch 8.2 Many in one call one call against the allowance sObject Collections 200 to write, 2,000 to read · ch 8.3 sObject Tree parents with children · ch 8.3 Composite 25 steps, values passed along · ch 8.3 Composite graph 500 per graph, all or nothing · ch 8.3 Ask for a shape the client or the org decides GraphQL exactly the fields listed · ch 8.4 UI API the whole screen for this user · ch 8.4 Your own doors you write them, you version them Apex REST your contract · ch 8.5, 8.6 Apex SOAP your WSDL · ch 16 Big volumes thousands to millions Bulk API 2.0 jobs, in the background · ch 10 Bulk API 1.0 no longer enhanced · ch 10, 16 Events publish and subscribe Pub/Sub API events in and out · ch 11 Streaming API legacy, still supported · ch 16 Configuration and code the org's setup, not its records Metadata API deploy and retrieve · App Development Tooling API tests, logs, code from outside · ch 8.7 Products on the platform a door per feature Connect REST files, feeds, sites, industries · The API Guide Reports and dashboards run a report from outside · The API Guide Product APIs off core Commerce, Tableau, Data 360 · The API Guide Agents AI as the caller Hosted MCP servers tools for AI agents · ch 21 Agent API talk to an Agentforce agent · ch 21 The older XML door still on the exam SOAP API, Enterprise WSDL your org's objects, typed · ch 16 SOAP API, Partner WSDL any org, generic · ch 16 Every call starts at the token server first. Over 100 doors, counted one endpoint at a time (2026-10-27); each one is in The API Guide. HOW TO READ IT taught in this chapter taught in another chapter, or listed in The API Guide legacy or retiring: still there, not for new work © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

The doors into Salesforce, in sets. Blue is this chapter.

Salesforce has its own short version of this, a page called Which API Do I Use? (opens in a new tab) (Salesforce Help, checked 2026-10-31). It lists twelve of the main APIs with three facts each: the protocol (REST, SOAP, GraphQL, or gRPC for Pub/Sub), the data format, and whether the answer comes back at once or later. Read it beside the map. It’s where I send people who ask which door to use, and it’s the first place to look when a new one appears.

You don’t have to guess. With a token, ask:

  • GET /services/data/ returns every API version the org still serves.
  • GET /services/data/v68.0/ returns the REST doors on that version.

Chapter 3 taught that a version is a promise: it acts the same until it’s retired. Here’s what that promise costs a caller who stays behind. We asked one org the same question on five versions, on 2026-10-31:

API versionReleasedTop-level REST doors
31.0201432
40.0201742
50.0202047
60.0202451
68.0Winter ‘2757

When I made the video tour in 2023, version 31 showed about 34 doors and version 58 about 50. The count only goes one way. A program on version 31 still sees today’s accounts and today’s deliveries. It just can’t see them in any new way, and 25 of today’s doors aren’t there for it at all. You want your version at the bottom of that list, not the top.

And the top of the list is closing. Versions 31.0 to 40.0 are deprecated from Summer ‘27 and retired in Summer ‘28. After that, a call to them fails: the REST API answers 410 GONE (Salesforce Platform API Versions 31.0 through 40.0 Retirement (opens in a new tab), checked 2026-10-31).

Chapter 3 told the story of a team that got Salesforce’s warning: calls were still coming in on versions about to be retired, and they had to find out who was making them. In 2024, I called it a crazy little report you had to dig for. Today it has a name.

Salesforce’s answer is the API Total Usage event log. In Salesforce’s words, it “consolidates API request information across the SOAP, Bulk, and REST APIs, including version information” (same article). Each line is one call, and it tells you:

  • Which version and which door: the API family, the resource called, the API version.
  • Who: the user, and the app name where the caller came through one.
  • From where: the caller’s IP address.

That’s enough to go from “something is calling version 38” to “it’s the weekly export, running as this user, through this app”, and from there to the team that owns it.

Two things to plan for:

  • The free log only covers a day. Every org with API access gets the API Total Usage log for the previous 24 hours. With Event Monitoring, it’s kept 30 days (same article). Without it, if you’re hunting old callers, download it every day, or a weekly job will slip past you. You can browse and download it in Setup, under Security, Event Monitoring, Event Log Browser.
  • Your own doors aren’t on the list. Salesforce’s retirement “does not impact… Custom Apex REST & SOAP Web Services” (same article). That’s good news, and it’s also a responsibility. Nobody will retire your old versions for you, and nobody will warn you who’s still calling them.

In 2023 I made two videos on this: a tour of the doors into Salesforce, and a summary of all its APIs, sorted by what they work on. The notes under the videos say what’s still right and what’s changed since.

STA 1.2 · Mastering Salesforce APIs: Reaching into the Cloud Like a Pro! · 11:24 · published 2023-09-04 · plays from YouTube when you click it · Watch on YouTube · More videos: Salesforce Integration Architecture Videos
STA 1.9 · Across the APIs: Summary of the Salesforce APIs · 10:10 · published 2023-10-10 · plays from YouTube when you click it · Watch on YouTube · More videos: Salesforce Integration Architecture Videos
  • Which set each caller belongs in, then which door. Start from the map: what is the caller doing?
  • Which door each caller uses. For every arrow coming in, name the door: REST, Bulk, Pub/Sub, GraphQL, your own Apex service. The rest of this chapter, and the next three, help you choose.
  • Which doors are open with nobody signing in. Public pages, web forms and email addresses. Each one needs a guard: reCAPTCHA on forms, a guest user with almost nothing, rules on what email can create.
  • The version every caller is on, written down. Put it in the landscape inventory from chapter 5, beside the door and the integration user. When Salesforce announces a retirement, you look it up instead of hunting.
  • How you’ll find the callers you didn’t write down. Download the API Total Usage log on a schedule, or have Event Monitoring keep it for you.