Many of the features that we use on a daily basis are running APIs – Application Interface Programming.
In a very basic approach, an API allows a piece of software interacts with another piece of software to provide a solution, a feature or functionality.
API is intermediate software that interacts with another software to share data between each other resulting in a specific service.
In terms of architecture, the most common APIs can be a SOAP API – Simple Object Access Protocol – that uses XML messages as a data exchange format, and REST API – Representational State Transfer, the most used API architecture theses days,was first presented by Roy Fielding in 2000.
There are 6 principles of RESTs APIS:
- Client–server – By separating the user interface concerns from the data storage concerns, we improve the portability of the user interface across multiple platforms and improve scalability by simplifying the server components.
- Stateless – Each request from client to server must contain all of the information necessary to understand the request, and cannot take advantage of any stored context on the server. Session state is therefore kept entirely on the client.
- Cacheable – Cache constraints require that the data within a response to a request be implicitly or explicitly labeled as cacheable or non-cacheable. If a response is cacheable, then a client cache is given the right to reuse that response data for later, equivalent requests.
- Uniform interface – By applying the software engineering principle of generality to the component interface, the overall system architecture is simplified and the visibility of interactions is improved. In order to obtain a uniform interface, multiple architectural constraints are needed to guide the behavior of components. REST is defined by four interface constraints: identification of resources; manipulation of resources through representations; self-descriptive messages; and, hypermedia as the engine of application state.
- Layered system – The layered system style allows an architecture to be composed of hierarchical layers by constraining component behavior such that each component cannot “see” beyond the immediate layer with which they are interacting.
- Code on demand (optional) – REST allows client functionality to be extended by downloading and executing code in the form of applets or scripts. This simplifies clients by reducing the number of features required to be pre-implemented.
The data exchange on REST API is made with use of JASON.
Open APIs and Closed APIs
An API may be closed or open.
Open API’s are characterized by their free availability to developers, often backed with access to open data. They allow developers outside of the proprietary organization to access backend data that can then be used to enhance their own applications or create new ones.
As an Open API example, we have the Git Lab API. Nothing new when you consider that APIs are directed to developers.
Open APIs allow businesses to create new applications or connect applications without having to invest development time in starting from scratch.
There are no doubts that fully Open APis are powerful tools to create new services, but we are experiencing a movement of closing partially or totally APIs resources. Most APIs are or are becoming private.
Let’s check the Instagram APIs. In a statement published at October, 15th, it declares:
“To continuously improve Instagram users’ privacy and security, we are accelerating the deprecation of Instagram API Platform, making the following changes effective immediately. We understand that this may affect your business or services, and we appreciate your support in keeping our platform secure.
These capabilities will be disabled immediately (previously set for July 31, 2018 or December 11, 2018 deprecation). The following will be deprecated according to the timeline we shared previously:
- Public Content – all remaining capabilities to read public media on a user’s behalf on December 11, 2018
- Basic – to read a user’s own profile info and media in early 2020
For your reference, information on the new Instagram Graph API.”
This is a clear trend in APis landscape, closing some capabilities of an Open API with massive use like Instagram is normal nowadays. There are companies using its API to build new services, like Followgram, Instaprint, Eventstag,
Replacing the open for managed, invite-only structures is a reality and unfortunately some business are closing doors after this, like Gramfeed.
Even with the fact that closing is now a trend, the benefits in access a documentation of an API and get to know immediately if it serves or not for any business is immense.
The access of a Closed API requests are usually made through a firewall or VPN, with an access key.
A large part of a Closed API remains opened.
TechCrunch made a report in 2011 explaining this pattern of enclosing proprietary systems, turning the open in a type of wallet garden.
The same pattern verified in Instagram example above.
APIs driven business
Commercial applications of APIs are the normal pattern like we have been noticed with many solutions launching APIs based on the features of their business models. So, we are experiencing the rise of the open.
APIs are the trend topic of this open world, providing the optimal set of tools for new models and turning innovation easy than never.
It is an open world
But what “open” means in terms of software?
It is all about data.
According to Open Data Handbook, the definition of open data is:
Open data is data that can be freely used, re-used and redistributed by anyone – subject only, at most, to the requirement to attribute and sharealike.
The main elements of an open data system are:
- Availability and Access: the data must be available as a whole and at no more than a reasonable reproduction cost, preferably by downloading over the internet. The data must also be available in a convenient and modifiable form.
- Re-use and Redistribution: the data must be provided under terms that permit re-use and redistribution including the intermixing with other datasets.
- Universal Participation: everyone must be able to use, re-use and redistribute – there should be no discrimination against fields of endeavour or against persons or groups. For example, ‘non-commercial’ restrictions that would prevent ‘commercial’ use, or restrictions of use for certain purposes (e.g. only in education), are not allowed.
If you’re wondering why it is so important to be clear about what open means and why this definition is used, there’s a simple answer: interoperability.
The capacity to interoperate systems and information is the fundament of open data world.
Open data applications
There are multiple uses concerning open data concept, the most evident being in government initiatives and private sectors as well.
To list the most relevant ones:
The UK Office for National Statistics presents a dataset which contains contains 9 tables with data from the year 2000 to 2010 and covers following topics: internet access, activities on the internet, social networking, cyberbullying, internet for school- and homework, e-commerce and e-government.
The US Census Bureau, Department of Commerce, provides the dataset. The data contain estimates of quarterly revenue for most common service industries.
Dataset on Eurostat website, under the education and training statistics. The data come from the Programme for International Student Assessment (PISA) “which is an internationally standardised assessment that was developed by the OECD and administered to 15-year-olds in schools.”
UK is one of the firsts countries to regulate the activities of open banking, as stated on their official website:
“Open Banking is the secure way to give providers access to your financial information.
It opens the way to new products and services that could help customers and small to medium-sized businesses get a better deal. It could also give you a more detailed understanding of your accounts, and help you find new ways to make the most of your money.”
APIs providers must adhere to the UK system regulations and requirements, and are listed here.
The benefits of flexibility, meeting the final consumer demands, streamlining processes, freedom to create and less dependency of external coders are solid.
The open world is a reality.