Salesforce · Communications Cloud

An API is a promise about behaviour. Most outages are broken promises.

This is the engineering layer beneath telecom integration: how endpoints are specified, secured, versioned, made safe to retry and made observable. Twopir Consulting builds the API surface around Salesforce Communications Cloud — TM Forum Open API shapes where they apply, event design where synchronous calls will not do, and the reliability semantics that decide what happens on a bad day. Specified first, then built, then tested against the specification.

API Layer
API CONSUMERS Communications Cloud Catalog · Ordering · CPQ Partner & Wholesale Machine-to-machine ordering Digital channels Care consoles AI agents TWOPIR API LAYER Contracts TMF shapes where they exist Reliability Idempotency · Retry Timeouts · Events Security AuthN · AuthZ Versioning SPECIFIED FIRST · TESTED AGAINST THE SPEC 2πr SYSTEM INTERFACES Standard Where Possible Published shapes, not bespoke ones Vendor Specifics Isolated Swap a platform, not every consumer Every Call Observable Traced, logged and alertable SPECIFY · SECURE · VERSION · OBSERVE · EVOLVE
12+
Years of delivery
500+
Clients served
40+
Consultants & architects
250+
Deployments delivered

Trusted by 500+ organizations — including connectivity and communications providers building standards-shaped API layers with Twopir Consulting.

Kacific
Mitratech
Client A
Client R
Client
Ultra's

API Capabilities

  • Salesforce Partner
  • TM Forum Open APIs
  • API-Led Connectivity
  • MuleSoft
  • Event & Webhook Design
  • Idempotency & Retry
  • OAuth & mTLS
  • Observability
Where API Layers Fail

Six failures that only appear in production

None of these shows up in functional testing. Every one of them shows up under load, at the worst possible time, in a system somebody else owns.

Nothing is idempotent

A timeout produces a retry, the retry produces a second activation or a second charge, and because it only happens when a downstream system is slow, it looks intermittent and untraceable for months.

The contract lives in the implementation

There is no specification, so the API is whatever the code currently does. Consumers integrate against observed behaviour, and any change — including a bug fix — becomes a breaking change for somebody.

There is no versioning strategy

Every consumer has to upgrade simultaneously because there is only ever one version. In practice that means the API stops changing, and the platform ossifies around its first mistake.

Everything is synchronous

Long-running telecom operations are modelled as request-response, so callers block and time out on work that legitimately takes minutes or hours. The result is retries against operations that were actually succeeding.

Failures cannot be traced

No correlation identifier follows a request across systems, so diagnosing a single failed order means four teams searching four log systems and comparing timestamps by hand.

Security was added at the end

Authentication, authorisation and rate limiting arrive as a late phase, which is when it emerges that the token model does not fit the partner use case and the whole surface needs revisiting.

What This Layer Is

The contract, not the connector

API and systems integration for Communications Cloud is the engineering discipline underneath the integration architecture: specifying, building, securing, versioning and observing the interfaces that the architecture assumes exist. The architecture decides that Communications Cloud must tell billing about an activated order. This layer decides what that message looks like, what a successful response means, how long the caller waits, what happens on a timeout, whether the same message can safely arrive twice, how the interface will change next year, and how anyone will diagnose it at three in the morning.

In telecom, much of this does not have to be invented. The TM Forum Open APIs are the industry's standard interface specifications, covering domains such as product catalog, product ordering and service ordering, and Salesforce Communications Cloud conforms to them — its Enterprise Product Catalog is certified against the TM Forum Information Framework, the industry's standard information model. Building to those published shapes reduces rework, shortens the negotiation with downstream vendors who also implement them, and keeps a platform swap a bounded change rather than a second transformation.

What standards do not give you is behaviour. A conformant endpoint can still lack idempotency, block for ninety seconds, return an error shape nobody can act on, or be impossible to trace. Twopir Consulting specifies the behavioural contract alongside the structural one, builds to it, and tests against the specification rather than against the implementation — which is the only way to find out that the two have diverged.

Where this page starts. This page is the engineering layer. Which systems connect, what data moves in which direction and who owns each failure is covered one level up on Communications Cloud integration. If you are choosing what to connect, start there; if you are deciding how the endpoints should behave, stay here.

The Contract Checklist

Nine things an interface contract has to state

We agree these per interface, in writing, with the team that owns the other side. An interface specified by only one party is an assumption with a deployment date.

What every interface contract must specify

ElementWhat it statesWhat goes wrong without it
ShapeRequest and response structure, aligned to a TMF API where one appliesConsumers integrate against observed behaviour; every fix is a breaking change
SemanticsWhat each field means and which are genuinely requiredTwo teams agree on the payload and disagree on the meaning
TimingExpected latency, timeout, and whether the operation is long-runningCallers block and time out on work that is actually succeeding
IdempotencyThe key that makes a repeat safe, and how long it is honouredDuplicate activations, charges and engineer visits under load
ErrorsThe error taxonomy, which errors are retryable, and the shape they arrive inCallers retry unretryable failures and give up on transient ones
EventsWhich state changes are published, with what guarantee and orderingConsumers poll, or miss transitions, or process them out of order
SecurityAuthentication, authorisation scope, and rate limits per consumerA late security phase that invalidates the token model for partners
VersioningHow versions are expressed and how long old ones are supportedThe API stops changing because every consumer must move at once
ObservabilityCorrelation identifiers, what is logged, and what raises an alertA single failed order takes four teams and a shared spreadsheet

This checklist is the deliverable clients tell us they reuse most, including on integrations that have nothing to do with Salesforce. It is short on purpose: nine items that can genuinely be agreed in a working session, rather than a template nobody completes.

What We Build

The API work, piece by piece

Usually delivered alongside an implementation or an integration programme, occasionally as a standalone remediation of an API estate that has grown without governance.

API Specification & Governance

Contract-first design, so the specification exists before the implementation and stays the source of truth afterwards.

  • Contract-first specification per interface
  • TM Forum Open API alignment where it applies
  • Error taxonomy and retryability classification
  • Naming, pagination and filtering standards
  • Review practice that keeps the estate coherent

TM Forum Open API Implementation

Building and consuming standards-shaped endpoints so both sides work to a published specification instead of negotiating a bespoke one.

  • TMF API selection for each integration domain
  • Conformance gap analysis against the standard
  • Extension patterns that do not break conformance
  • Mapping between TMF shapes and internal models
  • Partner-facing API surface for wholesale

API-Led Connectivity

Layered architecture — system, process and experience APIs — where the estate is large enough or volatile enough to justify it.

  • System APIs over legacy BSS and OSS
  • Process APIs for multi-system orchestration
  • Experience APIs per channel and consumer
  • MuleSoft implementation where it is warranted
  • An honest assessment when it is not

Event & Asynchronous Design

For the long-running operations that dominate telecom, where request-response is the wrong shape.

  • Event taxonomy and payload design
  • Delivery guarantees and ordering semantics
  • Callback, webhook and polling fallback
  • Replay and late-arrival handling
  • Consumer-side idempotent processing

Security & Access

Designed at specification time rather than added as a late phase that invalidates the model.

  • OAuth flows and token lifetime per consumer type
  • Mutual TLS for machine-to-machine partners
  • Authorisation scopes and least privilege
  • Rate limiting and quota per consumer
  • Audit logging for regulated interfaces

Observability & Testing

Making the estate diagnosable, and proving the implementation still matches the specification.

  • Correlation identifiers across every hop
  • Contract testing against the specification
  • Fault injection and hostile-stub testing
  • Volume and sustained-load testing
  • Dashboards and alerting operations can use
How We Deliver

Specification first, and tested against it

The sequence matters more than it sounds: building before specifying is how an implementation quietly becomes the contract.

Step 01

Inventory & Assess

What interfaces exist, what they actually do under load, where they diverge from their documentation, and which of them have no documentation at all. Inherited estates usually have more interfaces than anyone expects.

Step 02

Specify

Contract-first design against the nine-point checklist, aligned to TM Forum shapes where they apply, and agreed with the team that owns the other side rather than assumed on their behalf.

Step 03

Build & Contract-Test

Implementation with contract tests that assert the specification, so the spec and the code cannot quietly diverge. Hostile stubs — slow, wrong, silent — exercise the failure semantics from the first sprint.

Step 04

Harden

Fault injection, sustained-load testing and idempotency verification under real concurrency. This is where timeout, retry and idempotency decisions are actually validated; functional testing will never find those defects.

Step 05

Instrument & Hand Over

Correlation identifiers, dashboards, alerting and runbooks — plus the specification as a maintained artefact rather than a document that was true once, at the start.

What You Get

What a specified API estate changes

Mostly it changes what happens on bad days, which is the only time an API layer is really evaluated.

Safety

Retries stop causing damage

Idempotency designed into each contract means a timeout produces a retry rather than a duplicate activation, a duplicate charge or a second engineer at the door.

Clarity

The specification is the source of truth

Contract tests assert the spec, so implementation and documentation cannot silently diverge and a consumer can integrate without reverse-engineering behaviour.

Evolution

The API can change without a summit

A versioning strategy with a stated support window means one consumer upgrading does not require all of them to move on the same weekend.

Diagnosis

One identifier follows the request

Correlation identifiers across every hop turn a four-team investigation into a single query, which is the difference between minutes and a morning.

Portability

Vendor specifics stay isolated

Standards-shaped contracts with vendor detail contained mean replacing a billing or provisioning platform changes one interface, not every consumer of it.

Partners

Wholesale can self-serve

A specified, secured, versioned partner API turns machine-to-machine ordering into a product capability rather than a bespoke project per partner.

Why Twopir

We specify the bad day before we build the good one

Every API works in the demo. What separates an estate that runs from one that pages people is whether timeout, retry, idempotency and error semantics were decided deliberately or inherited from whatever the first implementation happened to do.

Contract-first, always

The specification exists before the implementation and is asserted by contract tests afterwards. Without that, the code becomes the contract and every fix turns into somebody else's breaking change.

We use the standard where one exists

TM Forum Open APIs are published, widely implemented and conformed to by Communications Cloud. Inventing a bespoke shape where a standard applies costs negotiation time now and portability later.

We are honest about when API-led is overkill

A layered API architecture earns its place on a large or volatile estate and is pure overhead on a small stable one. We will tell you which you have rather than defaulting to the larger answer.

We test against hostile conditions

Slow, wrong and silent stubs from the first sprint, then fault injection and sustained load. Idempotency defects only appear under real concurrency, so that is where we look for them.

We leave the estate diagnosable

Correlation identifiers, dashboards, alerting and runbooks. An API layer nobody can trace is an API layer that will consume an operations team indefinitely.

Common Questions

Answers before the first call

TM Forum Open APIs are the telecommunications industry's standard interface specifications, maintained by the TM Forum and covering domains such as product catalog, product ordering and service ordering. Salesforce Communications Cloud conforms to them, and its Enterprise Product Catalog is certified against the TM Forum Information Framework, the industry's standard information model. The practical benefit is that both sides of an integration can build to a published shape instead of negotiating a bespoke one, which reduces rework and customisation, shortens the conversation with downstream vendors who also implement the standard, and keeps replacing a vendor a bounded change rather than a second transformation programme.

No, and this is the most useful thing to understand about standards. Conformance governs the structural contract — the shape of the request and response. It says nothing about behaviour: whether an endpoint is idempotent, how long it blocks, what its error taxonomy looks like, which errors are worth retrying, whether state changes are published as events, or how anyone traces a failure across systems. Those are the properties that determine whether an integration survives a bad day, and they have to be specified separately. We agree them per interface against a nine-point contract checklist alongside the structural specification.

Idempotency, designed into the contract rather than added later. Each request carries a key that lets the receiving system recognise a repeat and return the original result instead of performing the action again, and the contract states how long that key is honoured. Without it, a timeout against a slow downstream system produces a retry that becomes a second activation, a second charge or a second engineer visit. Because it only manifests under load it looks intermittent and is extremely hard to diagnose after the fact, so we verify idempotency explicitly under real concurrency rather than in functional testing, which will not find it.

It depends on the size and volatility of the estate, and we would rather tell you it is unnecessary than sell you the larger answer. API-led connectivity — system APIs over the legacy estate, process APIs orchestrating them, experience APIs per channel — earns its place when several systems must be reached for a single business operation, when the estate will change and you want consumers insulated from that, or when multiple parts of the business need the same underlying data. On a small, stable estate with few consumers, direct integration is simpler, cheaper and easier to diagnose. We assess which you actually have during the inventory step.

Asynchronously, in most cases. Service activation, provisioning and engineer visits legitimately take minutes to days, and modelling them as synchronous request-response means callers block and time out on operations that are succeeding — then retry them, which is where duplicate work comes from. The usual pattern is an accepted-and-acknowledged response followed by events or callbacks as state changes, with polling available as a fallback for consumers that cannot receive callbacks. That design also needs replay and late-arrival handling and idempotent consumer-side processing, because events do arrive twice and occasionally out of order.

Decide the strategy before the first consumer integrates, because retrofitting versioning to a live API is considerably harder. The essentials are a stated way of expressing a version, a defined support window for older versions, a clear distinction between additive changes that do not break consumers and breaking changes that do, and a deprecation process with real notice. Without this, in practice there is only ever one version, every consumer has to move simultaneously, and the rational response is to stop changing the API at all — which means the platform ossifies around its earliest design mistakes.

The integration page answers the architecture question: which systems connect to Communications Cloud, what data moves in which direction, in what sequence, and who owns the failure. This page answers the engineering question underneath it: how each of those interfaces is specified, secured, versioned, made safe to retry and made observable. If you are deciding what to connect and in what order, start on the integration page. If you are deciding how the endpoints themselves should behave and be operated, this is the right one.

Next Step

Send us the interface list. We will tell you which ones will bite.

An API review inventories what exists, tests how it behaves under hostile conditions, and produces the specifications the estate should have had — prioritised by the interfaces most likely to fail expensively.

Speak with a team that specifies the timeout, not just the payload