API

[1] A document or standard that describes how to build such a connection or interface is called an API specification.

It is not intended to be used directly by a person (the end user) other than a computer programmer who is incorporating it into software.

It allows two software systems to communicate across a boundary — an interface — using mutually agreed-upon signals.

It represents an agreement between parties: a service provider who offers the API and the software developers who rely upon it.

The subroutines in this library were stored on punched paper tape organized in a filing cabinet.

This cabinet also contained what Wilkes and Wheeler called a "library catalog" of notes about each subroutine and how to incorporate it into a program.

[10] Wilkes and Wheeler's book The Preparation of Programs for an Electronic Digital Computer contains the first published API specification.

[10] The term "application program interface" (without an -ing suffix) is first recorded in a paper called Data structures and techniques for remote computer graphics presented at an AFIPS conference in 1968.

[12][10] The authors of this paper use the term to describe the interaction of an application—a graphics program in this case—with the rest of the computer system.

Date[13] in a 1974 paper called The Relational and Network Approaches: Comparison of the Application Programming Interface.

By 1990, the API was defined simply as "a set of services available to a programmer for performing certain tasks" by technologist Carl Malamud.

In the 1990s, with the spread of the internet, standards like CORBA, COM, and DCOM competed to become the most common way to expose API services.

[16] Roy Fielding's dissertation Architectural Styles and the Design of Network-based Software Architectures at UC Irvine in 2000 outlined Representational state transfer (REST) and described the idea of a "network-based Application Programming Interface" that Fielding contrasted with traditional "library-based" APIs.

The API describes and prescribes the "expected behavior" (a specification) while the library is an "actual implementation" of this set of rules.

A single API can have multiple implementations (or none, being abstract) in the form of different libraries that share the same programming interface.

An API for a procedural language such as Lua could consist primarily of basic routines to execute code, manipulate data or handle errors while an API for an object-oriented language, such as Java, would provide a specification of classes and its class methods.

[20][21] Hyrum's law states that "With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.

Linux and Berkeley Software Distribution are examples of operating systems that implement the POSIX APIs.

[35] Web APIs are the defined interfaces through which interactions happen between an enterprise and applications that use its assets, which also is a Service Level Agreement (SLA) to specify the functional provider and expose the service path or URL for its API users.

[36] When used in the context of web development, an API is typically defined as a set of specifications, such as Hypertext Transfer Protocol (HTTP) request messages, along with a definition of the structure of response messages, usually in an Extensible Markup Language (XML) or JavaScript Object Notation (JSON) format.

[37] Part of this trend is related to the Semantic Web movement toward Resource Description Framework (RDF), a concept to promote web-based ontology engineering technologies.

In this way, content that is created in one place dynamically can be posted and updated to multiple locations on the web.

Changes to the API—for example adding new parameters to a function call—could break compatibility with the clients that depend on that API.

For example, in the Google Guava library, the parts that are considered unstable, and that might change soon, are marked with the Java annotation @Beta.

This usually means that part of the API should be considered a candidate for being removed, or modified in a backward incompatible way.

In other words, for a library with a significant user base, when an element becomes part of the public API, it may be used in diverse ways.

[51] On February 19, 2020, Akamai published their annual “State of the Internet” report, showcasing the growing trend of cybercriminals targeting public API platforms at financial services worldwide.

In 2010, Oracle Corporation sued Google for having distributed a new implementation of Java embedded in the Android operating system.

[62][63] In 2016, following a two-week trial, a jury determined that Google's reimplementation of the Java API constituted fair use, but Oracle vowed to appeal the decision.

Metaphorically, APIs connect software like interlocking blocks.
A diagram from 1978 proposing the expansion of the idea of the API to become a general programming interface, beyond application programs alone [ 9 ]
Although the people who coined the term API were implementing software on a Univac 1108 , the goal of their API was to make hardware independent programs possible. [ 11 ]
Screenshot of Web API documentation written by NASA