Published June 2026
Talking to OCLC WorldShare is less mysterious than many people expect. It is not necessarily a giant middleware project, and it does not need to start as a sprawling enterprise integration. In many cases, what you really need is a disciplined service that can authenticate properly, send the right SCIM payloads, and keep your business system and OCLC in sync without manual rekeying.
One real-world version of this problem was integrating a college library workflow with an open-source CRM, most likely CiviCRM or something close to it. That is a good example of why this work matters. The problem is usually not “can I hit an API endpoint”. The problem is “can I keep patron or identity data moving cleanly between two systems that were not designed together, without creating duplicate records, broken updates, or manual admin overhead”.
If you need help with that kind of work, this is exactly the sort of integration I can help design, stabilise, modernise, or build around your existing CRM, library workflow, or internal system.
At a practical level, a clean OCLC WorldShare integration usually needs to do a few simple things well:
Users endpoint with a bearer tokenThe auth endpoint is the OCLC OAuth token service, and the API endpoint follows the WorldShare tenant pattern: your institution-specific share.worldcat.org/idaas/scim/v2/ base URL.
If you are searching for OCLC integrations, you may be expecting WSDL files, XML envelopes, and classic SOAP client tooling. For WorldShare API work, the pattern is HTTP, JSON, OAuth, and SCIM-style resources. That is good news. It means the shape is much closer to modern web integration work than to old-school SOAP plumbing.
So the mental model should be: authenticate, get token, send JSON payloads to resource endpoints, handle responses cleanly.
A common pattern here is OAuth client credentials. That means you need:
For this pattern, the scopes were things like read, create, update, and delete user access through the SCIM API. Get that right first. If scopes are wrong, everything downstream gets confusing fast.
The token request is built by base64-encoding client_id:client_secret into the Authorization: Basic ... header, then posting form data with:
grant_type=client_credentialsscope=...That gives you the access token used for every later API call.
$headers = [
'Authorization: Basic ' . base64_encode($clientId . ':' . $clientSecret),
'Content-Type: application/x-www-form-urlencoded'
];
$body = http_build_query([
'grant_type' => 'client_credentials',
'scope' => $scope
]);
If you can reliably get and reuse that token, you are through the first real gate.
Users endpoint as the core integration surfaceFrom there, you talk to the Users resource under the WorldShare SCIM base URL. That gives you a clean CRUD model:
POST /Users/ to createGET /Users/{id} to readPUT /Users/{id} to updateDELETE /Users/{id} to removeThat is a much saner shape than many people expect from library software integrations.
This is the bit that catches people. The request body is not just a tiny generic user record. A real implementation usually includes the core SCIM user schema plus OCLC-specific persona extensions for things like institution, circulation info, and ILL info.
Practically, that means your payload usually needs to include:
A practical create-user payload usually includes a barcode, institution ID, branch ID, and the OCLC persona namespaces needed for WorldShare to accept and enrich the record.
One of the smartest parts of a good integration is that it does not pretend OCLC is your source of truth for everything. The returned data can include correlation information tying the record back to the originating system.
That is how these integrations should be built. Your CRM, membership system, student system, or internal workflow should keep its own durable identifier, and your bridge should map that to the OCLC-side identity. Otherwise later updates become fragile.
A good integration should include a small test script or harness that:
This is the right way to approach OCLC work. Do not start by burying API calls inside a giant production workflow. Start by proving the integration lifecycle in a tiny testable script. Once that works, wrap it into the system that actually needs it.
If I were building this again now for a production business system, I would still keep the same basic pattern, but I would make one architectural choice more explicit: put OCLC behind a small internal service boundary.
That internal bridge or proxy should be responsible for:
Then your application talks to your clean interface, not directly to OCLC from random controller actions or UI code. That makes later changes much less painful.
That is usually where I come in: not just writing the request code, but helping shape the integration so it is supportable by a real organisation after go-live.
If your organisation needs to talk to OCLC or WorldShare, I can help with:
This is a good fit when the hard part is not just “how do I call an endpoint”, but “how do I make this integration dependable enough that staff can trust it”.
Send the current system, what needs to sync, which OCLC records are involved, and where the current bottleneck sits. A rough brief is enough.
Discuss the OCLC integration See inherited software takeover support
A lot of valuable integration work is not glamorous. It is careful credential handling, clear payloads, repeatable CRUD tests, and enough structure that the business stops depending on luck.
That is also why this kind of work is commercially useful. If you can make a library platform, CRM, or internal system talk cleanly to OCLC, you remove manual admin, reduce record drift, and make the surrounding workflow calmer. That is worth more than the API wrapper itself.