====== 2.1.1 Definition: Application Programming Interface (API) ====== [[dido:public:s_cli:05_contents:01_prt:02_basics:01_commondef:start| Return to Common Definitions]] An [[dido:public:ra:xapend:xapend.a_glossary:a:api]] defines a formal set of reusable digital protocols, routines, functions and/or commands for for independent computer components to interact with each other. (( GeeksForGeeks, __Introduction to APIs__, 17 January 2019, Accessed: 16 April 2021, [[https://www.geeksforgeeks.org/introduction-to-apis/]] )) Sometimes the API is a standard developed independently of any specific component. Other times the API is developed by a "utility" component for use by may other components. Examples of standardized APIs are [[dido:public:ra:xapend:xapend.a_glossary:s:sql | SQL]] and [[dido:public:ra:xapend:xapend.b_stds:tech:ieee:1003.1| POSIX]]. Examples of a component centric API are [[https://developers.google.com/sheets/api | Google Sheets]], the [[https://www.grapecity.com/documents-api-word | MS Word .NET API]], or the [[https://tomcat.apache.org/tomcat-9.0-doc/api/org/apache/catalina/startup/Tomcat.html | Tomcat API]]. APIs should not be confused with [[dido:public:ra:xapend:xapend.a_glossary:g:gui]]. (( GeeksForGeeks, __Difference between API and GUI__, 22 December 2020, Accessed: 16 April 2021, [[https://www.geeksforgeeks.org/difference-between-api-and-gui/]] )). GUIs define the interaction between humans and Graphical Presentation Software while APIs define the interaction between software or hardware components.
{{ dido:public:s_cli:05_contents:01_prt:02_basics:screen_shot_2021-04-17_at_12.22.56_pm.png?400 |}}
In Figure {{ref>ApiUsage}}, the API is comprised of methods (i.e., procedures or functions) and [[dido:public:ra:xapend:xapend.a_glossary:c:communication_protocol | protocols]]. The APIs provide an interface between components within the system, the can access utilities (i.e., [[dido:public:ra:xapend:xapend.d_opsys:start||Operating System]], [[dido:public:ra:xapend:xapend.a_glossary:d:dbms]], etc.) or they can provide a service (i.e, Geographic Location, Credit Card Authorization or access to address books, etc.). Depending on the system being built, the Component, Utility or Service can be part of the same computer or distributed to other computers usually using TCP networks, but could also be [[dido:public:ra:xapend:xapend.a_glossary:b:bluetooth]], [[dido:public:ra:xapend:xapend.a_glossary:z:zigbee]], [[dido:public:ra:xapend:xapend.a_glossary:n:nfc]], etc.) /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~