SAP Subscription Billing uses a specific type of API called Representational State Transfer Application Programming Interfaces, also known as REST APIs.
Let’s talk about APIs first.
An API acts as a communication protocol between different software programs. It explains how they should interact with each other, providing a set of rules and instructions. Think of an API as a "middleman" that allows software programs to communicate in an efficient way. Without APIs, it would not be possible to enjoy the simple task of booking a hotel room online or updating software via the cloud.
Before REST APIs are discussed, let’s see how an API works. Watch the following video.
Now that you understand the role of APIs, let's dive into REST APIs.
REST stands for Representational State Transfer. It is an architectural style for designing networked applications. A REST API uses HTTP — a foundational technology of the internet — to request and send data. This data can work within a variety of formats, including XML and JSON.
The concept of REST is based on resources. A resource in REST API is the fundamental concept for information description; it's any information that can be named. For example, when talking about SAP Subscription Billing, a subscription can be one resource and a customer can be another. The significance of using resources instead of a large database is that each resource has a unique URL that you can link or reference.
A robust feature of REST APIs is their utilization of standard HTTP methods. These include POST which adds a new resource; GET retrieves a resource; PUT updates a resource; PATCH allows a partial update; and DELETE removes a resource.

The PUT and PATCH methods are similar as they both update a resource. For example, if you have a user profile with fields like name, e-mail, and password, a PUT request would require you to send all fields even if you only want to change the password. Using PATCH over PUT helps avoid reducing system performance with unnecessary changes when dealing with large resources or frequent updates.
Idempotence in REST APIs
Most REST API request methods are considered idempotent.
What does the term idempotence mean?
An API call or operation is idempotent if it has the same result no matter how many times it's applied. An idempotent operation provides protection against accidental duplicate calls causing unintended consequences.
For example, if you repeatedly send the same DELETE request to a specific URL, the following attempts will likely fail because the data has already been deleted. The final state of the server with the deleted data stays the same after the first DELETE request. Even if the second request fails, the DELETE method is still considered idempotent because the desired end-state has been achieved and will not change with repeated requests.
Note
The PATCH method is NOT idempotent.For example, consider a resource that counts for each time a PATCH request is made. The PATCH request to increase the counter by 1 does not replace the counter history. Each subsequent PATCH request will increment the counter. If you apply the same PATCH request again, the outcome will differ each time and increase the counter.
Choosing an idempotent REST API method depends on your application or service.
The beauty of REST APIs lies in their simplicity. REST APIs are stateless, meaning the server does not need to know the state of the client. A request from a client already contains the information needed to fulfill a request.
Note that REST methods are not considered a standard. REST methods are a set of guiding principles and are embraced by most developers as a powerful tool to structure APIs due to their simplicity, scalability, and compatibility with the web.
APIs (Application Programming Interfaces) and REST APIs (Representational State Transfer APIs) play a crucial role in modern software development and digital interactions. APIs provide a way for different software systems to communicate and interact with each other. REST APIs have become a popular and widely adopted architecture style for designing networked systems, especially in the context of Web services and cloud-based applications.