{"id":2958,"date":"2024-01-10T16:53:14","date_gmt":"2024-01-10T16:53:14","guid":{"rendered":"https:\/\/www.infobip.com\/developers\/?p=2958"},"modified":"2024-01-10T16:53:47","modified_gmt":"2024-01-10T16:53:47","slug":"you-should-build-an-sdk","status":"publish","type":"post","link":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk","title":{"rendered":"You should build an SDK"},"content":{"rendered":"\n<p>Over the last little while in my career, I\u2019ve been either involved in building or building SDKs, especially here at Infobip with the huge array of tools we have on offer. And this leads me down a rabbit hole of wondering why organisations don\u2019t build them by default once they reach a certain size if they follow an API-first design approach.<\/p>\n\n\n\n<p>I\u2019ve actually given talks on this subject a few times, if you want to skip reading, you can watch the last recording at<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"\ud83d\udd27 You Should Build an SDK with Mike Elsmore \ud83d\udd27\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/FM30Z1uPq2E?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">You should build an SDK talk for Treblle Hacktoberfest 2023<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">What is an SDK?<\/h2>\n\n\n\n<p>Let\u2019s cover the basics: what is an SDK? The acronym itself means Software Development Kit, so it\u2019s a toolkit for developing software. According to Wikipedia, the definition of an SDK is<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><em>A software development kit (SDK) is a collection of software development tools in one installable package. They facilitate the creation of applications by having a compiler, debugger and sometimes a software framework. They are normally specific to a hardware platform and operating system combination. To create applications with advanced functionalities such as advertisements, push notifications, etc; most application software developers use specific software development kits.<\/em><\/p>\n<cite><a href=\"https:\/\/en.wikipedia.org\/wiki\/Software_development_kit\"><em>https:\/\/en.wikipedia.org\/wiki\/Software_development_kit<\/em><\/a><\/cite><\/blockquote>\n\n\n\n<p>This means that I, and many like me who have treated SDKs as whatever the package manager installs, are a bit wrong (not totally, just a bit). \u00a0What I mean by this, is that Client Libraries, like those that wrap an HTTP API, are not the SDK but a part of an SDK. An SDK is a collection of tools; this can include your client libraries, but also other dev tools. It could include testing tooling, webhook definitions, or even mathematical models for doing a task. Those of us who build primarily for the web or for mobile applications forget that they can also be physical SDKs. Game developers working on next-gen hardware regularly get access to kits like these for the PS5<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"620\" height=\"375\" src=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image.png\" alt=\"\" class=\"wp-image-2961\" srcset=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image.png 620w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-300x181.png 300w\" sizes=\"auto, (max-width: 620px) 100vw, 620px\" \/><\/figure>\n\n\n\n<p>At Infobip, we have a lot of SDKs, you can check them out here on <a href=\"https:\/\/www.infobip.com\/developers\/sdks\">our SDK page<\/a>, but what I\u2019ve been calling our NodeJS SDK is just a client library for now.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why bother building an SDK?<\/h2>\n\n\n\n<p>Most people I know who are building SDKs are trying to enable a developer outside of their organisation, be it open source or proprietary, to consume the tools and products being built. I think this is wrong, and for a very simple reason, internal &amp; external developers deserve the same tools.<\/p>\n\n\n\n<p>Yes, external developers need help and ease of onboarding or use to engage with technology. But so do internal developers, it\u2019s not uncommon for organisations to be running different services, with different technologies, and differing knowledge or experience levels.<\/p>\n\n\n\n<p>Say the organisation you are in has some \u201clegacy\u201d systems running that no one actively works on but are used to grab information or tools that have been brought in over years and never updated. An internal client library providing a consistent set of functions to use them, as well as ETL tooling to make sure older standards are converted to the currently used ones, is a great SDK to build internally and manage. Or you could have REST, GraphQL, and WSDL systems that don\u2019t have specification files or complete documentation on how to handle everything. A well-made SDK could solve that for teams.<\/p>\n\n\n\n<p>Essentially, for internal and external developers, an SDK can lower the learning curve, which leads to speeding up implementation and provides consistency across everything being built.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How can you build one?<\/h2>\n\n\n\n<p>SDKs are meant to make life easier for the person using them, so the advice around developing them is rather straightforward.<\/p>\n\n\n\n<p>If you are developing a wrapper library or code to be used or to be imported and used in a code base, follow the instructions and best practices for the languages or frameworks it\u2019s being developed for. For example, if you\u2019re creating it for the Express framework in NodeJS then you\u2019ll need to follow the middleware pattern that it requires.<\/p>\n\n\n\n<p>Where possible, use a namespace structure to allow people to only include the parts of the SDK they require if they do not need to use the whole thing. For example, <a href=\"https:\/\/fastify.dev\/\">fastify<\/a> is a web framework in NodeJS and only the core structure needed for routing and requests are within the main <code>fastify<\/code> module. For everything else, that is expected of a full nuts and bolts framework, they\u2019re included as an ecosystem of <code>@fastify<\/code> modules<ins>,<\/ins> like so<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1372\" height=\"1674\" src=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-1.png\" alt=\"\" class=\"wp-image-2962\" srcset=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-1.png 1372w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-1-246x300.png 246w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-1-839x1024.png 839w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-1-768x937.png 768w, https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/image-1-1259x1536.png 1259w\" sizes=\"auto, (max-width: 1372px) 100vw, 1372px\" \/><\/figure>\n\n\n\n<p>If you are developing a client library, follow a standard. Don\u2019t hop about code styles, etc., as it\u2019ll defeat the point of being easy to consume. And whenever you have to break the standard, make it known. Most languages and development environments allow you to easily see things like <a href=\"https:\/\/en.wikipedia.org\/wiki\/Docblock\">DocBlocks<\/a> to explain why and also how to consume this edge case.<\/p>\n\n\n\n<p>Let\u2019s move on to something controversial among my peers. Personally, I think it is totally OK to use generators to produce client libraries. If you\u2019re using standards like the OpenAPI Specification, you can use a plethora of generators to produce the first version of your client library codebase. And most importantly, where it isn\u2019t fit for your purposes, you can modify the template, or completely extend the generator to give you the library you want. I definitely endorse this practice, as it\u2019s something we do here at Infobip.<\/p>\n\n\n\n<p>And now for some best practice tips, just to make everyone\u2019s life a little easier to maintain them. Use version control on the code base that\u2019s in-line with the language it\u2019s been developed in. Additionally, where possible, use dependency management tooling and static analysis tools to make the maintenance and security risks manageable.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Over the last little while in my career, I\u2019ve [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":2964,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[28,253],"tags":[144,76],"coauthors":[159],"class_list":["post-2958","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-post","category-developer-experience","tag-developer-ecosystem","tag-sdk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>You should build an SDK - Infobip Developers Hub<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"You should build an SDK - Infobip Developers Hub\" \/>\n<meta property=\"og:description\" content=\"Over the last little while in my career, I\u2019ve [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\" \/>\n<meta property=\"og:site_name\" content=\"Infobip Developers Hub\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/infobip\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-10T16:53:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-01-10T16:53:47+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Mike Elsmore\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ukmadlz\" \/>\n<meta name=\"twitter:site\" content=\"@InfobipDev\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Elsmore\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\"},\"author\":{\"name\":\"Mike Elsmore\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/a6504af4499dc084e90f3be383eb162e\"},\"headline\":\"You should build an SDK\",\"datePublished\":\"2024-01-10T16:53:14+00:00\",\"dateModified\":\"2024-01-10T16:53:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\"},\"wordCount\":985,\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg\",\"keywords\":[\"developer ecosystem\",\"SDK\"],\"articleSection\":[\"Blog Post\",\"Developer Experience\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\",\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\",\"name\":\"You should build an SDK - Infobip Developers Hub\",\"isPartOf\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg\",\"datePublished\":\"2024-01-10T16:53:14+00:00\",\"dateModified\":\"2024-01-10T16:53:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.infobip.com\/developers\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"You should build an SDK\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#website\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"name\":\"Infobip Developers Hub\",\"description\":\"Build meaningful customer relationships across any channel\",\"publisher\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.infobip.com\/developers\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#organization\",\"name\":\"Infobip Developers Hub\",\"url\":\"https:\/\/www.infobip.com\/developers\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"contentUrl\":\"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png\",\"width\":696,\"height\":696,\"caption\":\"Infobip Developers Hub\"},\"image\":{\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/infobip\/\",\"https:\/\/x.com\/InfobipDev\",\"https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ\",\"https:\/\/github.com\/infobip-community\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/a6504af4499dc084e90f3be383eb162e\",\"name\":\"Mike Elsmore\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/85b707c5a776629da2d1a4d1351458da\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9efc383301494436192baf1334b72e6e6a874a490075cdc8a4121764f337874a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9efc383301494436192baf1334b72e6e6a874a490075cdc8a4121764f337874a?s=96&d=mm&r=g\",\"caption\":\"Mike Elsmore\"},\"description\":\"Mike has been causing chaos on the internet for more than a decade. He\u2019s been around to see a lot happen (and sometimes help it along). He loves building and learning in the open and sharing what he gains along the way. Currently, he's a developer advocate working with the SDKs at Infobip.\",\"sameAs\":[\"https:\/\/x.com\/ukmadlz\"],\"url\":\"https:\/\/www.infobip.com\/developers\/blog\/author\/mike\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"You should build an SDK - Infobip Developers Hub","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:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk","og_locale":"en_US","og_type":"article","og_title":"You should build an SDK - Infobip Developers Hub","og_description":"Over the last little while in my career, I\u2019ve [&hellip;]","og_url":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk","og_site_name":"Infobip Developers Hub","article_publisher":"https:\/\/www.facebook.com\/infobip\/","article_published_time":"2024-01-10T16:53:14+00:00","article_modified_time":"2024-01-10T16:53:47+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg","type":"image\/jpeg"}],"author":"Mike Elsmore","twitter_card":"summary_large_image","twitter_creator":"@ukmadlz","twitter_site":"@InfobipDev","twitter_misc":{"Written by":"Mike Elsmore","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#article","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk"},"author":{"name":"Mike Elsmore","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/a6504af4499dc084e90f3be383eb162e"},"headline":"You should build an SDK","datePublished":"2024-01-10T16:53:14+00:00","dateModified":"2024-01-10T16:53:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk"},"wordCount":985,"publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg","keywords":["developer ecosystem","SDK"],"articleSection":["Blog Post","Developer Experience"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk","url":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk","name":"You should build an SDK - Infobip Developers Hub","isPartOf":{"@id":"https:\/\/www.infobip.com\/developers\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage"},"thumbnailUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg","datePublished":"2024-01-10T16:53:14+00:00","dateModified":"2024-01-10T16:53:47+00:00","breadcrumb":{"@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#primaryimage","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2024\/01\/mitchell-luo-FWoq_ldWlNQ-unsplash-scaled.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.infobip.com\/developers\/blog\/you-should-build-an-sdk#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infobip.com\/developers\/"},{"@type":"ListItem","position":2,"name":"You should build an SDK"}]},{"@type":"WebSite","@id":"https:\/\/www.infobip.com\/developers\/#website","url":"https:\/\/www.infobip.com\/developers\/","name":"Infobip Developers Hub","description":"Build meaningful customer relationships across any channel","publisher":{"@id":"https:\/\/www.infobip.com\/developers\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infobip.com\/developers\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infobip.com\/developers\/#organization","name":"Infobip Developers Hub","url":"https:\/\/www.infobip.com\/developers\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/","url":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","contentUrl":"https:\/\/www.infobip.com\/developers\/wp-content\/uploads\/2023\/03\/Infobip_logo_favicon.png","width":696,"height":696,"caption":"Infobip Developers Hub"},"image":{"@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/infobip\/","https:\/\/x.com\/InfobipDev","https:\/\/www.youtube.com\/channel\/UCUPSTy53VecI5GIir3J3ZbQ","https:\/\/github.com\/infobip-community"]},{"@type":"Person","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/a6504af4499dc084e90f3be383eb162e","name":"Mike Elsmore","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infobip.com\/developers\/#\/schema\/person\/image\/85b707c5a776629da2d1a4d1351458da","url":"https:\/\/secure.gravatar.com\/avatar\/9efc383301494436192baf1334b72e6e6a874a490075cdc8a4121764f337874a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9efc383301494436192baf1334b72e6e6a874a490075cdc8a4121764f337874a?s=96&d=mm&r=g","caption":"Mike Elsmore"},"description":"Mike has been causing chaos on the internet for more than a decade. He\u2019s been around to see a lot happen (and sometimes help it along). He loves building and learning in the open and sharing what he gains along the way. Currently, he's a developer advocate working with the SDKs at Infobip.","sameAs":["https:\/\/x.com\/ukmadlz"],"url":"https:\/\/www.infobip.com\/developers\/blog\/author\/mike"}]}},"_links":{"self":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2958","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/comments?post=2958"}],"version-history":[{"count":2,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2958\/revisions"}],"predecessor-version":[{"id":2963,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/posts\/2958\/revisions\/2963"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media\/2964"}],"wp:attachment":[{"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/media?parent=2958"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/categories?post=2958"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/tags?post=2958"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.infobip.com\/developers\/wp-json\/wp\/v2\/coauthors?post=2958"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}