{"id":16594,"date":"2012-08-01T10:13:40","date_gmt":"2012-08-01T08:13:40","guid":{"rendered":"https:\/\/mamchenkov.net\/wordpress\/?p=16594"},"modified":"2012-08-01T10:13:40","modified_gmt":"2012-08-01T08:13:40","slug":"on-using-third-party-apis","status":"publish","type":"post","link":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/","title":{"rendered":"On using third-party APIs"},"content":{"rendered":"<!-- google_ad_section_start -->\n<p>In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. \u00a0 The variety of the systems is pretty much irrelevant &#8211; anything from back office systems and CRMs to trading platforms and CMSs. \u00a0The common factor between them is the integration is often done through some form of the API.<\/p>\n<p>The most important lesson I&#8217;ve learned while working with third-party APIs is this:<\/p>\n<blockquote><p>Never ever use a third-party API directly from your application. \u00a0Instead, create an abstraction layer between your application and third-party API.<\/p><\/blockquote>\n<p>This might seem like a bit of extra work, but, trust me, it&#8217;s not. \u00a0It will save you plenty of time and frustration. \u00a0Here are my reasons:<\/p>\n<ol>\n<li>Your own abstraction layer will help smooth out API&#8217;s edges. \u00a0If you are using third-party API, chances are, it feels weird at times. \u00a0It doesn&#8217;t matter what sets you off &#8211; function names, or required obvious parameters, or maybe the logic or order of calls that you have to make. \u00a0Instead of getting annoyed every time, you can abstract all that weirdness into a separate layer, which will probably not change all too often. \u00a0And your application coding will be more fun.<\/li>\n<li>Easier maintenance. \u00a0Even the best APIs change. \u00a0And when it happens, you don&#8217;t really want to go through all of your application and change all calls to the old version of the API. \u00a0Especially, if the updated version is not fully backward compatible. \u00a0Instead, you&#8217;d just rather update your API abstraction layer and be done with it. \u00a0And if you do, like you should, have unit tests covering your API abstraction layer, it will be trivial for you to see if you broke anything or not.<\/li>\n<li>Easier reuse and more control. \u00a0One of the biggest problems with third-party APIs is that you don&#8217;t control them. \u00a0Third-party introduces features, bugfixes, upgrades, and maintenance down-times whenever THEY want. \u00a0You rarely have much say in it. \u00a0When you have a layer in between the third-party API and your application, you have more control as to how all those things affect your application.<\/li>\n<li>Easier migration to another third-party API. \u00a0And you know that these things do happen. \u00a0You&#8217;ve been using one provider of the service, and now there is a better one. \u00a0If you were using first provider&#8217;s API directly from your application, you are pretty much in trouble now. \u00a0Going through the whole application replacing calls to the new API, with different set of parameters, data types, and return values, is a huge undertaking. \u00a0If only you had an abstraction layer, all you&#8217;d have to do now would be to change that instead. Sure, you might need to extend it a bit, or introduce changes to the currently used functionality. \u00a0But, from my experience, such changes would be much smaller and simpler (since you are working with your code on both ends).<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<!-- google_ad_section_end -->\n","protected":false},"excerpt":{"rendered":"<!-- google_ad_section_start -->\n<p>In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. \u00a0 The variety of the systems is pretty much irrelevant &#8211; anything from back office systems and CRMs to trading platforms and CMSs. \u00a0The common factor between them is the integration is often done &hellip; <a href=\"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">On using third-party APIs<\/span><\/a><\/p>\n<!-- google_ad_section_end -->\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_links_to":"","_links_to_target":""},"categories":[1,18,62],"tags":[2404,1264],"keyring_services":[],"class_list":["post-16594","post","type-post","status-publish","format-standard","hentry","category-general","category-programming","category-technology","tag-api","tag-integration"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Leonid Mamchenkov\"\/>\n\t<meta name=\"google-site-verification\" content=\"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Leonid Mamchenkov - Life, universe, and everything else\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"On using third-party APIs - Leonid Mamchenkov\" \/>\n\t\t<meta property=\"og:description\" content=\"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2012-08-01T08:13:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2012-08-01T08:13:40+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MamchenkovBlog\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:title\" content=\"On using third-party APIs - Leonid Mamchenkov\" \/>\n\t\t<meta name=\"twitter:description\" content=\"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@mamchenkov\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#blogposting\",\"name\":\"On using third-party APIs - Leonid Mamchenkov\",\"headline\":\"On using third-party APIs\",\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#articleImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"},\"datePublished\":\"2012-08-01T10:13:40+02:00\",\"dateModified\":\"2012-08-01T10:13:40+02:00\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#webpage\"},\"articleSection\":\"All, Programming, Technology, API, integration\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"position\":2,\"name\":\"Technology\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"position\":3,\"name\":\"Programming\",\"item\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#listItem\",\"name\":\"On using third-party APIs\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/#listItem\",\"name\":\"Technology\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#listItem\",\"position\":4,\"name\":\"On using third-party APIs\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/category\\\/technology\\\/programming\\\/#listItem\",\"name\":\"Programming\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/\",\"name\":\"Leonid Mamchenkov\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g\",\"width\":96,\"height\":96,\"caption\":\"Leonid Mamchenkov\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#webpage\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/\",\"name\":\"On using third-party APIs - Leonid Mamchenkov\",\"description\":\"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/2012\\\/08\\\/01\\\/on-using-third-party-apis\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/author\\\/leonid\\\/#author\"},\"datePublished\":\"2012-08-01T10:13:40+02:00\",\"dateModified\":\"2012-08-01T10:13:40+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/\",\"name\":\"Blog of Leonid Mamchenkov\",\"description\":\"Life, universe, and everything else\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mamchenkov.net\\\/wordpress\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"On using third-party APIs - Leonid Mamchenkov","description":"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done","canonical_url":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"google-site-verification":"VHvdD0_usx1_4DzKy_QCVcICVgX2EgA2ybELT-wl7kQ","miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#blogposting","name":"On using third-party APIs - Leonid Mamchenkov","headline":"On using third-party APIs","author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"},"image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#articleImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"},"datePublished":"2012-08-01T10:13:40+02:00","dateModified":"2012-08-01T10:13:40+02:00","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#webpage"},"isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#webpage"},"articleSection":"All, Programming, Technology, API, integration"},{"@type":"BreadcrumbList","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","position":1,"name":"Home","item":"https:\/\/mamchenkov.net\/wordpress","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","position":2,"name":"Technology","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","position":3,"name":"Programming","item":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#listItem","name":"On using third-party APIs"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/#listItem","name":"Technology"}},{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#listItem","position":4,"name":"On using third-party APIs","previousItem":{"@type":"ListItem","@id":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/#listItem","name":"Programming"}}]},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/#person","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"Person","@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author","url":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/","name":"Leonid Mamchenkov","image":{"@type":"ImageObject","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/3cf6df002a284d78fb6e9d8222ca4d102e0832035ed6bc8447008bd234e131a4?s=96&d=identicon&r=g","width":96,"height":96,"caption":"Leonid Mamchenkov"}},{"@type":"WebPage","@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#webpage","url":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/","name":"On using third-party APIs - Leonid Mamchenkov","description":"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#website"},"breadcrumb":{"@id":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/#breadcrumblist"},"author":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"creator":{"@id":"https:\/\/mamchenkov.net\/wordpress\/author\/leonid\/#author"},"datePublished":"2012-08-01T10:13:40+02:00","dateModified":"2012-08-01T10:13:40+02:00"},{"@type":"WebSite","@id":"https:\/\/mamchenkov.net\/wordpress\/#website","url":"https:\/\/mamchenkov.net\/wordpress\/","name":"Blog of Leonid Mamchenkov","description":"Life, universe, and everything else","inLanguage":"en-US","publisher":{"@id":"https:\/\/mamchenkov.net\/wordpress\/#person"}}]},"og:locale":"en_US","og:site_name":"Leonid Mamchenkov - Life, universe, and everything else","og:type":"article","og:title":"On using third-party APIs - Leonid Mamchenkov","og:description":"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done","og:url":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/","og:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:secure_url":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg","og:image:width":1024,"og:image:height":1024,"article:published_time":"2012-08-01T08:13:40+00:00","article:modified_time":"2012-08-01T08:13:40+00:00","article:publisher":"https:\/\/www.facebook.com\/MamchenkovBlog","twitter:card":"summary_large_image","twitter:site":"@mamchenkov","twitter:title":"On using third-party APIs - Leonid Mamchenkov","twitter:description":"In the few jobs I had, I was responsible for creating a new system and integrating it with some other systems. The variety of the systems is pretty much irrelevant - anything from back office systems and CRMs to trading platforms and CMSs. The common factor between them is the integration is often done","twitter:creator":"@mamchenkov","twitter:image":"https:\/\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2026\/03\/leonid-sailing-beer.jpg"},"aioseo_meta_data":{"post_id":"16594","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-07-20 00:25:38","updated":"2026-01-15 08:06:52","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/\" title=\"Technology\">Technology<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/\" title=\"Programming\">Programming<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tOn using third-party APIs\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/mamchenkov.net\/wordpress"},{"label":"Technology","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/"},{"label":"Programming","link":"https:\/\/mamchenkov.net\/wordpress\/category\/technology\/programming\/"},{"label":"On using third-party APIs","link":"https:\/\/mamchenkov.net\/wordpress\/2012\/08\/01\/on-using-third-party-apis\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":18308,"url":"https:\/\/mamchenkov.net\/wordpress\/2013\/06\/04\/bitcoin-is-a-money-platform-with-many-apis\/","url_meta":{"origin":16594,"position":0},"title":"Bitcoin is a money platform with many APIs","author":"Leonid Mamchenkov","date":"June 4, 2013","format":"link","excerpt":"Bitcoin is a money platform with many APIs Bitcoin is much more than just a digital currency. It is a protocol, a network, a currency and a transaction language. Most of all, though, it is an application programming interface (API) for money. Nowadays, bathroom scales and fridges have APIs, so\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":27293,"url":"https:\/\/mamchenkov.net\/wordpress\/2017\/02\/05\/visualising-complex-apis-using-api-map\/","url_meta":{"origin":16594,"position":1},"title":"Visualising complex APIs using API Map","author":"Leonid Mamchenkov","date":"February 5, 2017","format":false,"excerpt":"Suhas Chatekar explains how they use API maps to visualizing complex APIs, resources those API expose and how those resources relate to each other. If only there was a tool that would help with this ...","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2017\/02\/api-map-500x161.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":23194,"url":"https:\/\/mamchenkov.net\/wordpress\/2014\/12\/22\/http-api-design-guide\/","url_meta":{"origin":16594,"position":2},"title":"HTTP API Design Guide","author":"Leonid Mamchenkov","date":"December 22, 2014","format":"link","excerpt":"HTTP API Design Guide This guide describes a set of HTTP+JSON API design practices, originally extracted from work on the Heroku Platform API. This guide informs additions to that API and also guides new internal APIs at Heroku. We hope it\u2019s also of interest to API designers outside of Heroku.\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":28861,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/10\/15\/documenting-lists-with-swagger\/","url_meta":{"origin":16594,"position":3},"title":"Documenting lists with Swagger","author":"Leonid Mamchenkov","date":"October 15, 2018","format":false,"excerpt":"Swagger is a great tool for documenting APIs.\u00a0 Not only it helps with keeping the documentation complete and up-to-date, but it also provides a handy sandbox for developers to play around with the API directly from the documentation. We use Swagger a lot at work.\u00a0 We've even pushed the bar\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mamchenkov.net\/wordpress\/wp-content\/uploads\/2018\/10\/swagger-500x345.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26132,"url":"https:\/\/mamchenkov.net\/wordpress\/2016\/05\/26\/openapi-specification\/","url_meta":{"origin":16594,"position":4},"title":"OpenAPI Specification","author":"Leonid Mamchenkov","date":"May 26, 2016","format":false,"excerpt":"OpenAPI Specification v2.0 - formerly known as\u00a0Swagger RESTful API Documentation Specification. Swagger\u2122 is a project used to describe and document RESTful APIs. The Swagger specification defines a set of files required to describe such an API. These files can then be used by the Swagger-UI project to display the API\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":29027,"url":"https:\/\/mamchenkov.net\/wordpress\/2018\/11\/25\/crell-apiproblem-a-simple-implementation-of-the-api-problem-specification\/","url_meta":{"origin":16594,"position":5},"title":"Crell\/ApiProblem &#8211; a simple implementation of the api-problem specification","author":"Leonid Mamchenkov","date":"November 25, 2018","format":false,"excerpt":"I've been working with REST\/RESTful APIs for a while now.\u00a0 They are usually a lot better than the SOAP or XML-RPC stuff we had before.\u00a0 But they are also not perfect.\u00a0 Error handling and reporting is a common area between many implementations that needs more attention and consistency.\u00a0 Turns out,\u2026","rel":"","context":"In &quot;All&quot;","block_context":{"text":"All","link":"https:\/\/mamchenkov.net\/wordpress\/category\/general\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/16594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/comments?post=16594"}],"version-history":[{"count":0,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/posts\/16594\/revisions"}],"wp:attachment":[{"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/media?parent=16594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/categories?post=16594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/tags?post=16594"},{"taxonomy":"keyring_services","embeddable":true,"href":"https:\/\/mamchenkov.net\/wordpress\/wp-json\/wp\/v2\/keyring_services?post=16594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}