{"id":3991,"date":"2022-08-04T07:34:45","date_gmt":"2022-08-04T07:34:45","guid":{"rendered":"https:\/\/ccbill.com\/kb\/?p=3991"},"modified":"2023-03-07T11:52:31","modified_gmt":"2023-03-07T11:52:31","slug":"what-is-a-rest-api","status":"publish","type":"post","link":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api","title":{"rendered":"What is a REST API?"},"content":{"rendered":"<p class=\"h3\">Introduction<\/p>\n\n\n<p>APIs are changing the way companies design, build, and implement software applications.<\/p>\n\n\n\n<p>Monolithic architecture has given way to solutions based on loosely coupled <a href=\"https:\/\/phoenixnap.com\/kb\/introduction-to-microservices-architecture\" target=\"_blank\" rel=\"noreferrer noopener\">microservices<\/a>. Developers can focus on core functionalities while using different <a href=\"https:\/\/ccbill.com\/kb\/types-of-api\" target=\"_blank\" rel=\"noreferrer noopener\">types of APIs<\/a> to access and incorporate functions and features created by other specialists.<\/p>\n\n\n\n<p>REST has quickly become one of the most popular architectural styles for creating web-based apps and services.<\/p>\n\n\n\n<p>Find out how REST APIs work and use them to develop innovative business and customer-facing solutions.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"400\" src=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png\" alt=\"Developing RESTful API.\" class=\"wp-image-3993\" srcset=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png 800w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api-300x150.png 300w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api-768x384.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">REST API Definition<\/h2>\n\n\n\n<p>Representational State Transfer (REST) is a hybrid architectural style for developing network-based applications. REST defines a set of constraints (principles) that need to be applied to architectural elements (components, connectors, and data) and the relationship among those elements.<\/p>\n\n\n\n<p><a href=\"https:\/\/ccbill.com\/kb\/what-is-an-api\" target=\"_blank\" rel=\"noreferrer noopener\">APIs<\/a> that adhere to REST constraints are called REST or RESTful APIs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">REST API Constraints<\/h2>\n\n\n\n<p>REST has six (6) architectural constraints that serve as high-level guidelines for designing distributed software systems.<\/p>\n\n\n\n<p>By applying REST constraints, developers can induce and improve the non-functional properties of a software system. These include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Portability<\/li>\n\n\n\n<li>Scalability<\/li>\n\n\n\n<li>Visibility<\/li>\n\n\n\n<li>Reliability<\/li>\n\n\n\n<li>Network efficiency<\/li>\n\n\n\n<li>User-perceived performance<\/li>\n\n\n\n<li>Simplicity<\/li>\n\n\n\n<li>Evolvability<\/li>\n\n\n\n<li>Extensibility<\/li>\n<\/ul>\n\n\n\n<p>Many HTTP APIs are advertised as RESTful even though they do not comply with all the formal REST constraints outlined in <a href=\"https:\/\/www.ics.uci.edu\/~fielding\/pubs\/dissertation\/rest_arch_style.htm\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Roy Fielding\u2019s dissertation<\/a>. This has led to lively discussions in the developer community about what constitutes a truly RESTful API.<\/p>\n\n\n\n<p>Developers typically refer to the <a href=\"https:\/\/martinfowler.com\/articles\/richardsonMaturityModel.html\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Richardson Maturity Model<\/a> to determine the level to which an API adheres to RESTful principles.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Client-Server Separation<\/h3>\n\n\n\n<p>In a client-server architecture, the client component uses a connector to send requests to a server component.<\/p>\n\n\n\n<p>The server performs or rejects the requested service and sends a response to the client. A server continually listens to requests and typically serves multiple clients.<\/p>\n\n\n\n<p>Client and server applications are not contingent on each other and can be developed, modified, or replaced independently.<\/p>\n\n\n\n<p>This <em>separation of concerns<\/em> enhances the portability of a user interface, like a <a href=\"https:\/\/phoenixnap.com\/glossary\/web-browser-definition\" target=\"_blank\" rel=\"noreferrer noopener\">web browser<\/a>, across multiple platforms and improves the scalability of server components, such as <a href=\"https:\/\/phoenixnap.com\/kb\/what-is-a-database\" target=\"_blank\" rel=\"noreferrer noopener\">databases<\/a>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Stateless Communication<\/h3>\n\n\n\n<p>The server must understand each client request individually without deriving context or information from previous requests. This type of client-server communication, where the receiver does not retain the session state from previous requests, is called a stateless communication protocol.<\/p>\n\n\n\n<p>Statelessness improves:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Visibility<\/strong> - The server does not need to look beyond a single request.<\/li>\n\n\n\n<li><strong>Reliability <\/strong>- The system can recover from failures more efficiently.<\/li>\n\n\n\n<li><strong>Scalability<\/strong> - Servers require fewer resources as there is no need to store prior session data.<\/li>\n\n\n\n<li><strong>Simplicity <\/strong>- It is no longer necessary to manage resources across multiple requests.<\/li>\n<\/ul>\n\n\n\n<p>However, stateless protocols also inflate the number of client-server interactions and may increase per-interaction overhead. Client-side caching is used to mitigate this issue.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Caching<\/h3>\n\n\n\n<p>Client applications can cache server responses and reuse them for later requests to improve network efficiency and user-perceived performance.<\/p>\n\n\n\n<p>Caching in a <a href=\"https:\/\/phoenixnap.com\/glossary\/what-is-a-cdn\" target=\"_blank\" rel=\"noreferrer noopener\">Content Delivery Network (CDN)<\/a>, device memory, or in a browser cache storage significantly reduces the number of client-server interactions.<\/p>\n\n\n\n<p>Keep in mind that caching can decrease reliability as the cached data may differ from data obtained by sending a new request to the server.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Uniform Interface<\/h3>\n\n\n\n<p>The uniform interface is a fundamental constraint of the REST architectural style.<\/p>\n\n\n\n<p>Server responses do not give clients access to a resource but a decoupled resource representation. For example, the client does not receive a database from the server but a JSON, HTML, or XML web document that represents the database records in the format outlined in the client request.&nbsp;<\/p>\n\n\n\n<p>The uniform interface is based on four principles:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Resource identification <\/strong>- To simplify and enhance the visibility of interactions, each resource within a system should have a unique URI. Resource representations must adhere to specific guidelines, including data formats, naming conventions, and link formats.<\/li>\n\n\n\n<li><strong>Resource manipulation through representations<\/strong> \u2013 The resource representation must contain enough data so that the client can modify or delete the resource\u2019s state. Resources should be accessible and alterable through a common approach, like an HTTP method (i.e., POST, GET).<\/li>\n\n\n\n<li><strong>Self-descriptive messages<\/strong> - Each message should be self-descriptive and include enough information to describe how to process the message. Clients can obtain the necessary data by checking the semantics without knowing the application-specific data structure.<\/li>\n\n\n\n<li><strong>Hypermedia as the engine of application state<\/strong> (HATEOAS) - Clients send a message that includes a header, body, and query-string parameters to the resource URI. Services respond via response headers, body content, and response codes. In addition to the described process, the HATEOS principle states that (when necessary) the returned body (or header) hypertext needs to contain hyperlinks the client can use to dynamically discover all the available resources it needs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Layered System<\/h3>\n\n\n\n<p>Deploying web services, data storage, and security logic in separate and hierarchical layers allows developers to impose limits on how these components interact.<\/p>\n\n\n\n<p>Restricting the \u201cknowledge\u201d of a resource results in a less complex system with independent and controllable layers.<\/p>\n\n\n\n<p>A layered system is essential for enforcing security policies in modern web architecture. It also improves scalability and enables resources to call multiple intermediary servers when generating a client response.<\/p>\n\n\n\n<p>The messages between the client and target server should always be formatted and processed the same way, regardless of the layers between them. Additional layers should not affect client-server interactions.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code On Demand (Optional)<\/h3>\n\n\n\n<p>The REST Code on Demand constraint is optional. REST allows client apps to extend functionality by downloading and executing widgets or scripts. For example, a merchant can use a payment processor\u2019s widget to facilitate strong customer authentication.<\/p>\n\n\n\n<p>However, code on demand also reduces visibility. It is left up to the developer to apply or disregard this constraint depending on the intended use case and context.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How Does REST API Work?<\/h2>\n\n\n\n<p>REST API providers typically supply exhaustive documentation that lists <a href=\"https:\/\/ccbill.com\/kb\/what-is-an-api-endpoint\" target=\"_blank\" rel=\"noreferrer noopener\">API endpoints<\/a> and explains how to structure <a href=\"https:\/\/ccbill.com\/kb\/what-is-an-api-call\" target=\"_blank\" rel=\"noreferrer noopener\">an API call<\/a>.<\/p>\n\n\n\n<p>The endpoint URL represents the resource location API users use to send requests and interact with resources.<\/p>\n\n\n\n<p>Even though REST supports many communication protocols, the HTTP protocol has become a standard for most modern applications.<\/p>\n\n\n\n<p>Client HTTP requests have 5 separate elements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Verb<\/strong> \u2212 Defines the HTTP request method (i.e., GET, POST, DELETE, PUT, PATCH). <\/li>\n\n\n\n<li><strong>URI (Uniform Resource Identifier)<\/strong> \u2212 The URI identifies the resource on the server.<\/li>\n\n\n\n<li><strong>HTTP Version<\/strong> \u2212 Specifies the HTTP version (for example, <strong>v1<\/strong> or <strong>v2<\/strong>).<\/li>\n\n\n\n<li><strong>Request Headers<\/strong> \u2212 An HTTP header is a name-value pair separated by a colon (:). Headers contain more information about the resource or the client sending the request. This may include the browser type, formats supported by the client, authorization, authentication methods, etc.<\/li>\n\n\n\n<li><strong>Request Body<\/strong> \u2212 The request message content in the specified data format.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"374\" src=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-request-structure.jpg\" alt=\"REST API request elements.\" class=\"wp-image-4011\" srcset=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-request-structure.jpg 800w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-request-structure-300x140.jpg 300w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-request-structure-768x359.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n<p>HTTP responses consist of 4 elements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Response Code\/Resource Status<\/strong> \u2212 The response code indicates the status of the requested server resource. For example, response <strong>200<\/strong> implies that the request was successful, while the <strong>415 <\/strong>error code suggests that the data format in the request message is not supported.<\/li>\n\n\n\n<li><strong>HTTP Version<\/strong> \u2212 Specifies the HTTP version.<\/li>\n\n\n\n<li><strong>Response Headers<\/strong> \u2212 The HTTP Response metadata. It can indicate if a message is cacheable or non-cacheable, server type, response data, content type, etc.<\/li>\n\n\n\n<li><strong>Response Body<\/strong> \u2212 The response message content (resource representation).<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"368\" src=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/response-api-elements.jpg\" alt=\"REST API response elements.\" class=\"wp-image-4012\" srcset=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/response-api-elements.jpg 800w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/response-api-elements-300x138.jpg 300w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/response-api-elements-768x353.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n<p>HTTP request methods, also called HTTP Verbs, enable clients to specify the type of action they want to perform on a given resource. Each method triggers a different process, but they can be grouped based on common features.<\/p>\n\n\n\n<p><strong><em>Safe<\/em><\/strong> HTTP methods, like GET or HEAD, prompt read-only operations that do not modify server resources. Verbs that allow clients to send the same request many times over without changing the server resource state are called <strong><em>idempotent<\/em><\/strong> verbs.<\/p>\n\n\n\n<p>Frequently used RESTful HTTP methods include:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table class=\"has-background\" style=\"background-color:#e7f5fe\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">HTTP METHOD<br>(VERB)<\/th><th class=\"has-text-align-center\" data-align=\"center\">DESCRIPTION<\/th><th class=\"has-text-align-center\" data-align=\"center\">SAFE<\/th><th class=\"has-text-align-center\" data-align=\"center\">IDEMPOTENT<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>GET<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">The GET verb is used to retrieve a resource from a server. The data is only read and not modified.<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>HEAD<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Like GET, HEAD retrieves a resource. However, the response only contains the resource status and header and does not return a body. It is used to check what a GET request might potentially return.<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>POST<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Used to send a request to create or update a server resource. POST requests are not cached and do not remain in the browser history.<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>PUT<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">The PUT verb replaces the existing representation of the target resource with newly uploaded content. Sending the same PUT request multiple times produces the same result.<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>DELETE<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Removes the specified resource.<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>PATCH<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Makes partial changes to an existing resource.<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><td class=\"has-text-align-center\" data-align=\"center\">No<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>OPTIONS<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">The OPTIONS verb helps clients learn which communication options are associated with a resource.<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>TRACE<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">Performs a message loop-back test along the path to the target resource.<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><td class=\"has-text-align-center\" data-align=\"center\">Yes<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>REST APIs support multiple formats for exchanging and storing data like JSON, XML, HTML, <a href=\"https:\/\/phoenixnap.com\/blog\/what-is-yaml-with-examples\" target=\"_blank\" rel=\"noreferrer noopener\">YAML<\/a>, etc. This wide array of different data formats makes REST a popular architectural style for building public APIs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Is REST API Used For?<\/h2>\n\n\n\n<p>The REST architectural style allows software solutions to communicate regardless of their size and complexity. It supports several transfer protocols, with HTTP being the most common, and multiple data formats that are machine- and human-readable.<\/p>\n\n\n\n<p>The ability to deploy and scale components independently makes RESTful APIs ideal for systems that serve large numbers of diverse clients, like <a rel=\"noreferrer noopener\" href=\"https:\/\/phoenixnap.com\/blog\/web-server-vs-application-server\" target=\"_blank\">web servers and web apps<\/a>.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"555\" src=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-client-server.jpg\" alt=\"High-level REST API model.\" class=\"wp-image-4000\" srcset=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-client-server.jpg 800w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-client-server-300x208.jpg 300w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/rest-api-client-server-768x533.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n<p>With the capacity to enforce security, decrease latency, and encapsulate legacy systems, REST APIs can be applied to almost any use case. They are especially well-suited for:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Automating the delivery and use of financial services (Fintech).<\/li>\n\n\n\n<li><a href=\"https:\/\/ccbill.com\/kb\/progressive-web-apps-for-ecommerce\" target=\"_blank\" rel=\"noreferrer noopener\">Progressive Web Apps<\/a> (PWA).<\/li>\n\n\n\n<li><a href=\"https:\/\/ccbill.com\/payment-processing\" target=\"_blank\" rel=\"noreferrer noopener\">Payment processing<\/a> and customer authentication.<\/li>\n\n\n\n<li>Social media platforms.<\/li>\n\n\n\n<li><a href=\"https:\/\/ccbill.com\/kb\/headless-commerce\" target=\"_blank\" rel=\"noreferrer noopener\">Headless commerce<\/a>.<\/li>\n\n\n\n<li>Project management tools.<\/li>\n\n\n\n<li>Customer Relationship Management (CRM) platforms.<\/li>\n\n\n\n<li><a href=\"https:\/\/phoenixnap.com\/blog\/what-is-cloud-computing\" target=\"_blank\" rel=\"noreferrer noopener\">Cloud computing<\/a> and <a href=\"https:\/\/phoenixnap.com\/blog\/cloud-services-msp\" target=\"_blank\" rel=\"noreferrer noopener\">cloud services<\/a>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">REST API Examples<\/h3>\n\n\n\n<p>Some of the world\u2019s largest brands use RESTful APIs to expose their services to other businesses and end-users. High-profile examples include:<\/p>\n\n\n\n<p><strong>Salesforce<\/strong><\/p>\n\n\n\n<p>The Salesforce REST API enables users to create, analyze, and modify customer data without accessing the Salesforce user interface.<\/p>\n\n\n\n<p>Businesses can integrate Salesforce services into their applications and streamline business processes by sending HTTP requests to Salesforce API endpoints.<\/p>\n\n\n\n<p>The different endpoints give client applications access and permission to operate on query results, metadata, records, and other resources.<\/p>\n\n\n\n<p>The integration process is supported by comprehensive and user-friendly documentation. The REST API can be integrated with other Salesforce APIs and used to develop custom UIs for generating list views, actions, and dependent picklists.<\/p>\n\n\n\n<p><strong>Twitter<\/strong><\/p>\n\n\n\n<p>Twitter uses a series of API endpoints to expose a multitude of different services. Companies can use these endpoints to programmatically retrieve data users post on Twitter and data Twitter aggregates about its users.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-vivid-cyan-blue-color has-css-opacity has-vivid-cyan-blue-background-color has-background is-style-wide\"\/>\n\n\n\n<p><strong>Note: <\/strong>Twitter\u2019s HTTP-based Web API does not strictly adhere to all six REST constraints.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-text-color has-vivid-cyan-blue-color has-css-opacity has-vivid-cyan-blue-background-color has-background is-style-wide\"\/>\n\n\n\n<p>The number of available endpoints and features on the Twitter API can make it challenging to determine which API endpoint is relevant for a specific use case. Twitter\u2019s API allows organizations to:&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Track and react to posts, conversations, and perceptions surrounding a company, brand, or service.<\/li>\n\n\n\n<li>Retrieve Tweets, Direct Messages, and other activities related to an account.<\/li>\n\n\n\n<li>Resolve issues by reaching out to customers in real-time.<\/li>\n\n\n\n<li>Track Return of Investment (ROI) on targeted marketing campaigns.<\/li>\n\n\n\n<li>Curate and recommend content.<\/li>\n\n\n\n<li>Analyze trends, customer preferences, and the competition\u2019s marketing strategies.<\/li>\n\n\n\n<li>Filter, retrieve, and analyze relevant Tweets.<\/li>\n<\/ul>\n\n\n\n<p>Organizations can use vast amounts of real-time data to build applications for evaluating and even reacting to Tweets related to specific topics.<\/p>\n\n\n\n<p><strong>CCBill<\/strong><\/p>\n\n\n\n<p>The <a href=\"https:\/\/ccbill.com\/doc\/ccbill-restful-transaction-api\" target=\"_blank\" rel=\"noreferrer noopener\">CCBill RESTful Transaction API<\/a> allows merchants to access and utilize CCBill\u2019s payment platform and charge customers with a payment token. Merchants can develop custom purchase flows without using CCBill\u2019s hosted payment forms.<\/p>\n\n\n\n<p>CCBill provides detailed API documentation that lists all the relevant API endpoints, resources, and query examples.<\/p>\n\n\n\n<p>To streamline the implementation process, CCBill developed an Advanced Widget for automating payment token requests. The CCBill Advanced Widget also enables merchants to integrate with CCBill's 3DS vendor and incorporate <a href=\"https:\/\/ccbill.com\/kb\/strong-customer-authentication\" target=\"_blank\" rel=\"noreferrer noopener\">strong customer authentication<\/a> in their transactions.<\/p>\n\n\n\n<p><strong>Trello<\/strong><\/p>\n\n\n\n<p>Trello is a project management tool that provides a simple RESTful web API. Each type of API resource (e.g., Board, List, Card, Member, Action) has a unique URI with which client apps can interact.<\/p>\n\n\n\n<p>Trello handles the authentication and authorization process, so that client apps do not have to store usernames or passwords. Apps temporarily delegate user authentication to Trello via an <a href=\"https:\/\/ccbill.com\/kb\/what-is-an-api-key\" target=\"_blank\" rel=\"noreferrer noopener\">API key<\/a>. The control, along with an API token, is returned to the user application once the user successfully signs in.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">REST API Best Practices<\/h2>\n\n\n\n<p>Designing an API based on REST architectural constraints is challenging. Apply the following practices to ensure that an API is easy to view, read, and consume:<\/p>\n\n\n\n<ol class=\"wp-block-list\" type=\"1\">\n<li><strong>Use the JSON data format for requests and responses<\/strong> - Most programming environments have the capacity to parse and generate JSON. Its linguistic structure also allows humans to read and understand JSON syntax easily.<\/li>\n\n\n\n<li><strong>Apply standard API versioning <\/strong>- If the API service has multiple versions, ensure that the version number is included in the REST API URI. This streamlines the development process and ensures changes do not break client applications.<\/li>\n\n\n\n<li><strong>Do not use verbs in endpoint paths - <\/strong>Since HTTP request methods already contain verbs, inserting them in endpoint paths is inefficient. Only use nouns in endpoint URIs.<\/li>\n\n\n\n<li><strong>Use standard HTTP status error codes and messages<\/strong> - Using standard HTTP error codes like the <a rel=\"noreferrer noopener\" href=\"https:\/\/phoenixnap.com\/kb\/503-service-unavailable\" target=\"_blank\">503 service unavailable error<\/a> or the <a rel=\"noreferrer noopener\" href=\"https:\/\/phoenixnap.com\/kb\/403-forbidden\" target=\"_blank\">403 error code<\/a> helps API users instantly understand what type of error occurred. The error message should contain enough information to facilitate troubleshooting but also prevent potential attackers from exploiting the error message content.<\/li>\n<\/ol>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"800\" height=\"451\" src=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/http-response-status-code.jpg\" alt=\"HTTP response status codes and messages.\" class=\"wp-image-4027\" srcset=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/http-response-status-code.jpg 800w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/http-response-status-code-300x169.jpg 300w, https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/http-response-status-code-768x433.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure><\/div>\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li><strong>Design consistent and logical endpoints <\/strong>- Define and group endpoints to reflect the logical structure and hierarchy of database objects. However, avoid revealing the exact database structure as attackers may be able to exploit this information.<\/li>\n\n\n\n<li><strong>Employ good security practices<\/strong> - A security breach may cause an irreparable loss of revenue and reputation. Organizations that expose their services using APIs must develop strict security procedures, train staff, and implement advanced technical solutions:\n<ul class=\"wp-block-list\">\n<li>Get an <a rel=\"noreferrer noopener\" href=\"https:\/\/phoenixnap.com\/kb\/what-is-an-ssl-certificate\" target=\"_blank\">SSL Certificate<\/a>.<\/li>\n\n\n\n<li>Prevent access from unknown IP addresses and domains.<\/li>\n\n\n\n<li>Block unusually large payloads.<\/li>\n\n\n\n<li>Log all requests and thoroughly investigate failed requests.<\/li>\n\n\n\n<li>Strictly define user roles and restrict user access according to the principles of least privilege.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Keep database load and response times under check<\/strong> - API databases grow over time, increasing the time it takes to search and retrieve data. Use pagination, sorting, and filtered endpoints to streamline searches and data retrieval from REST API collections.<\/li>\n\n\n\n<li><strong>Allow client-side caching <\/strong>- Caching reduces latency, bandwidth, and server loads. Add a <code>&lt;strong&gt;&lt;em&gt;Cache-Control&lt;\/em&gt;&lt;\/strong&gt;<\/code> directive to response headers to explicitly allow client-side caching.<\/li>\n\n\n\n<li><strong>Ensure that the API documentation is comprehensive and accurate<\/strong> - API documentation is a developer\u2019s principal resource for implementing a third-party API solution. The documentation should convey:\n<ul class=\"wp-block-list\">\n<li>The relevant API endpoints.<\/li>\n\n\n\n<li>Instructions on how to structure an API request (including multiple HTTP methods and examples of acceptable data formats).<\/li>\n\n\n\n<li>Examples of expected responses.<\/li>\n\n\n\n<li>List of potential error codes and messages.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<p>Applying these recommendations enables API users to consume your RESTful API solution easily and safely.<\/p>\n\n\n<p class=\"h3\">Conclusion<\/p>\n\n\n<p>You know how RESTful systems work, their architectural constraints, and the types of projects they are best suited for.<\/p>\n\n\n\n<p>New REST API developers need to work hard to come up with a working implementation. API development is a best practice-driven approach, and articles like this are the only first step toward creating a clean and sharp API design.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The article explains the principles of the REST architectural style and how REST APIs work.<\/p>\n","protected":false},"author":6,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[13,14],"tags":[],"class_list":["post-3991","post","type-post","status-publish","format-standard","hentry","category-payment-processing","category-web-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What Is a REST API? {Constraints, Uses &amp; Practices} | CCBill KB<\/title>\n<meta name=\"description\" content=\"Learn about the 6 principles of REST architectural design, how REST APIs work, and what types of projects benefit from RESTful APIs the most.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What Is a REST API? {Constraints, Uses &amp; Practices} | CCBill KB\" \/>\n<meta property=\"og:description\" content=\"Learn about the 6 principles of REST architectural design, how REST APIs work, and what types of projects benefit from RESTful APIs the most.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\" \/>\n<meta property=\"og:site_name\" content=\"CCBill Knowledge Base\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ccbillBIZ\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-04T07:34:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-07T11:52:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png\" \/>\n<meta name=\"author\" content=\"Vladimir Kaplarevic\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@CCBillBIZ\" \/>\n<meta name=\"twitter:site\" content=\"@CCBillBIZ\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vladimir Kaplarevic\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#article\",\"isPartOf\":{\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\"},\"author\":{\"name\":\"Vladimir Kaplarevic\",\"@id\":\"https:\/\/ccbill.com\/kb\/#\/schema\/person\/1f198b1218f6343a2682022ac4395644\"},\"headline\":\"What is a REST API?\",\"datePublished\":\"2022-08-04T07:34:45+00:00\",\"dateModified\":\"2023-03-07T11:52:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\"},\"wordCount\":2555,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ccbill.com\/kb\/#organization\"},\"image\":{\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png\",\"articleSection\":[\"Payment Processing\",\"Web Development\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\",\"url\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\",\"name\":\"What Is a REST API? {Constraints, Uses & Practices} | CCBill KB\",\"isPartOf\":{\"@id\":\"https:\/\/ccbill.com\/kb\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png\",\"datePublished\":\"2022-08-04T07:34:45+00:00\",\"dateModified\":\"2023-03-07T11:52:31+00:00\",\"description\":\"Learn about the 6 principles of REST architectural design, how REST APIs work, and what types of projects benefit from RESTful APIs the most.\",\"breadcrumb\":{\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage\",\"url\":\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png\",\"contentUrl\":\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png\",\"width\":800,\"height\":400,\"caption\":\"Developing RESTful API.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"KB Home\",\"item\":\"https:\/\/ccbill.com\/kb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Web Development\",\"item\":\"https:\/\/ccbill.com\/kb\/category\/web-development\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"What is a REST API?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ccbill.com\/kb\/#website\",\"url\":\"https:\/\/ccbill.com\/kb\/\",\"name\":\"CCBill Knowledge Base\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/ccbill.com\/kb\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ccbill.com\/kb\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ccbill.com\/kb\/#organization\",\"name\":\"CCBill\",\"url\":\"https:\/\/ccbill.com\/kb\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ccbill.com\/kb\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2020\/10\/ccbill-logo.png\",\"contentUrl\":\"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2020\/10\/ccbill-logo.png\",\"width\":160,\"height\":70,\"caption\":\"CCBill\"},\"image\":{\"@id\":\"https:\/\/ccbill.com\/kb\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/ccbillBIZ\/\",\"https:\/\/x.com\/CCBillBIZ\",\"https:\/\/www.linkedin.com\/company\/ccbill\",\"https:\/\/www.youtube.com\/c\/CCBillBiz\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ccbill.com\/kb\/#\/schema\/person\/1f198b1218f6343a2682022ac4395644\",\"name\":\"Vladimir Kaplarevic\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ccbill.com\/kb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc08885e8fec32585bae8a0f5a1aef92f8c8c4fc33692e74e0ec2e63633d2478?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cc08885e8fec32585bae8a0f5a1aef92f8c8c4fc33692e74e0ec2e63633d2478?s=96&d=mm&r=g\",\"caption\":\"Vladimir Kaplarevic\"},\"description\":\"Vladimir is a resident Tech Writer at CCBill. He has more than 8 years of experience in implementing e-commerce and online payment solutions with various global IT services providers. His engaging writing style provides practical advice and aims to spark curiosity for innovative technologies.\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What Is a REST API? {Constraints, Uses & Practices} | CCBill KB","description":"Learn about the 6 principles of REST architectural design, how REST APIs work, and what types of projects benefit from RESTful APIs the most.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api","og_locale":"en_US","og_type":"article","og_title":"What Is a REST API? {Constraints, Uses & Practices} | CCBill KB","og_description":"Learn about the 6 principles of REST architectural design, how REST APIs work, and what types of projects benefit from RESTful APIs the most.","og_url":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api","og_site_name":"CCBill Knowledge Base","article_publisher":"https:\/\/www.facebook.com\/ccbillBIZ\/","article_published_time":"2022-08-04T07:34:45+00:00","article_modified_time":"2023-03-07T11:52:31+00:00","og_image":[{"url":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png","type":"","width":"","height":""}],"author":"Vladimir Kaplarevic","twitter_card":"summary_large_image","twitter_creator":"@CCBillBIZ","twitter_site":"@CCBillBIZ","twitter_misc":{"Written by":"Vladimir Kaplarevic","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#article","isPartOf":{"@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api"},"author":{"name":"Vladimir Kaplarevic","@id":"https:\/\/ccbill.com\/kb\/#\/schema\/person\/1f198b1218f6343a2682022ac4395644"},"headline":"What is a REST API?","datePublished":"2022-08-04T07:34:45+00:00","dateModified":"2023-03-07T11:52:31+00:00","mainEntityOfPage":{"@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api"},"wordCount":2555,"commentCount":0,"publisher":{"@id":"https:\/\/ccbill.com\/kb\/#organization"},"image":{"@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage"},"thumbnailUrl":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png","articleSection":["Payment Processing","Web Development"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ccbill.com\/kb\/what-is-a-rest-api#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api","url":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api","name":"What Is a REST API? {Constraints, Uses & Practices} | CCBill KB","isPartOf":{"@id":"https:\/\/ccbill.com\/kb\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage"},"image":{"@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage"},"thumbnailUrl":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png","datePublished":"2022-08-04T07:34:45+00:00","dateModified":"2023-03-07T11:52:31+00:00","description":"Learn about the 6 principles of REST architectural design, how REST APIs work, and what types of projects benefit from RESTful APIs the most.","breadcrumb":{"@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ccbill.com\/kb\/what-is-a-rest-api"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#primaryimage","url":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png","contentUrl":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2022\/08\/what-is-rest-api.png","width":800,"height":400,"caption":"Developing RESTful API."},{"@type":"BreadcrumbList","@id":"https:\/\/ccbill.com\/kb\/what-is-a-rest-api#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"KB Home","item":"https:\/\/ccbill.com\/kb\/"},{"@type":"ListItem","position":2,"name":"Web Development","item":"https:\/\/ccbill.com\/kb\/category\/web-development"},{"@type":"ListItem","position":3,"name":"What is a REST API?"}]},{"@type":"WebSite","@id":"https:\/\/ccbill.com\/kb\/#website","url":"https:\/\/ccbill.com\/kb\/","name":"CCBill Knowledge Base","description":"","publisher":{"@id":"https:\/\/ccbill.com\/kb\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ccbill.com\/kb\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ccbill.com\/kb\/#organization","name":"CCBill","url":"https:\/\/ccbill.com\/kb\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ccbill.com\/kb\/#\/schema\/logo\/image\/","url":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2020\/10\/ccbill-logo.png","contentUrl":"https:\/\/ccbill.com\/kb\/wp-content\/uploads\/2020\/10\/ccbill-logo.png","width":160,"height":70,"caption":"CCBill"},"image":{"@id":"https:\/\/ccbill.com\/kb\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ccbillBIZ\/","https:\/\/x.com\/CCBillBIZ","https:\/\/www.linkedin.com\/company\/ccbill","https:\/\/www.youtube.com\/c\/CCBillBiz"]},{"@type":"Person","@id":"https:\/\/ccbill.com\/kb\/#\/schema\/person\/1f198b1218f6343a2682022ac4395644","name":"Vladimir Kaplarevic","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ccbill.com\/kb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cc08885e8fec32585bae8a0f5a1aef92f8c8c4fc33692e74e0ec2e63633d2478?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc08885e8fec32585bae8a0f5a1aef92f8c8c4fc33692e74e0ec2e63633d2478?s=96&d=mm&r=g","caption":"Vladimir Kaplarevic"},"description":"Vladimir is a resident Tech Writer at CCBill. He has more than 8 years of experience in implementing e-commerce and online payment solutions with various global IT services providers. His engaging writing style provides practical advice and aims to spark curiosity for innovative technologies."}]}},"_links":{"self":[{"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/posts\/3991","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/comments?post=3991"}],"version-history":[{"count":39,"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/posts\/3991\/revisions"}],"predecessor-version":[{"id":4875,"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/posts\/3991\/revisions\/4875"}],"wp:attachment":[{"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/media?parent=3991"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/categories?post=3991"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ccbill.com\/kb\/wp-json\/wp\/v2\/tags?post=3991"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}