{"id":17869,"date":"2017-02-10T14:05:36","date_gmt":"2017-02-10T12:05:36","guid":{"rendered":"https:\/\/blog.basetis.com\/article_basic\/api-keys-en-proyectos-android-open-source\/"},"modified":"2024-03-12T13:42:28","modified_gmt":"2024-03-12T11:42:28","slug":"api-keys-en-proyectos-android-open-source","status":"publish","type":"article_basic","link":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/","title":{"rendered":"API keys en proyectos Android open source"},"content":{"rendered":"<p><meta charset=\"utf-8\"><\/p>\n<p dir=\"ltr\" id=\"docs-internal-guid-7bb18092-2857-3711-be24-e39d16a32f79\">En nuestros proyectos es habitual usar APIs de terceros que nos permiten a\u00f1adir funcionalidades sin tener que desarrollarlas nosotros mismos.<\/p>\n<p dir=\"ltr\">Muchas APIs&nbsp;requieren el uso de keys que habremos obtenido al registrarnos como <em>developers <\/em>en alg\u00fan servicio (Twitter, Facebook, Instagram, etc\u2026) y solemos almacenar dichas keys en la t\u00edpica utils.class o apiKeys.class&#8230;<\/p>\n<p dir=\"ltr\">Cuando subimos nuestro c\u00f3digo a un repositorio p\u00fablico cambiamos las keys de estos archivos por el <strong>famoso <\/strong>\u201cYOUR_POCKET_APIKEY_HERE\u201d, y como son clases que en alg\u00fan momento vamos modificando, no las ponemos en <em>ignore<\/em>, por lo que cada vez que <em>comiteamos <\/em>tenemos que tenerlo presente.<br \/>\n&nbsp;<\/p>\n<h2 dir=\"ltr\">Un d\u00eda, por descuido, subir\u00e1s tus keys, y lo sabes\u2026<\/h2>\n<p dir=\"ltr\">\u00bfC\u00f3mo evitarlo? Pues en un proyecto <em>open source<\/em> vi&nbsp;el m\u00e9todo que os explico a continuaci\u00f3n y me gust\u00f3 mucho. Ver\u00e9is que es muy f\u00e1cil de implementar, vamos all\u00e1&#8230;<\/p>\n<p dir=\"ltr\">Pongamos que nuestra app de Android tiene dos keys, CUSTOMER_KEY y CUSTOMER_SECRET, almacenadas en una utils.class <em>like this<\/em>:<\/p>\n<p dir=\"ltr\">&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"93\" src=\"https:\/\/lh3.googleusercontent.com\/Jq5glzJ5IJCXx7wLb2HJhGsIDU3vJf85BYkmR9lmLwrnXxAA5RnB7WLqBEEF-EhoL1hh687hpmJdp-NzaofEMLb1kAHq0uSkW8_cLH_PQQ59UnS7C7nPEQRiUuA33nHJPb_FFM6t\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"485\" \/><\/span><\/span><\/span><\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"2.jpg\" height=\"450\" src=\"https:\/\/lh4.googleusercontent.com\/hbPyT0qeL9yqoDkIVXPZAIYuTaLx_DOSZ5DtfIgd5sVVjkP8PgojcgAe-2J0IcCe9RfiqKRC87Xb5mtGorNtI8b1nr0vz81xWTdhaYY0GwjFhLIAwwm1BoBUVHb2m-US2o9scGUs\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"233\" \/><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">La idea es tener un archivo de texto en el proyecto, que en el repositorio marcaremos como <em>ignore<\/em>, y configuraremos Gradle para que compruebe la existencia de este archivo. Si existe recoger\u00e1 las keys correspondientes y si no crear\u00e1 unas que definamos nosotros.<\/p>\n<p dir=\"ltr\">Primero configuraremos Gradle (build.gradle \u201cModule app\u201d). A\u00f1adiendo en Android -&gt; defaultConfig el siguiente c\u00f3digo:<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;\">&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"224\" src=\"https:\/\/lh6.googleusercontent.com\/PHS5Or9N-ZFY8HFX49onE-6WBlnTgfhL_JDycsEvBcCwaXfBXmbnPyzUjWRtlFL7hFYSE8ce_i2pvNjM24JYo_hl1FiPK238IwrtY8qdu9Qs4mY-Jl3l-YtOhQ3M58e5IsevqsPM\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"602\" \/><\/span><\/span><\/span><\/p>\n<p dir=\"ltr\">\nsecrets.properties ser\u00e1 el archivo de texto que contendr\u00e1 las keys y se encontrar\u00e1 en el <em>root <\/em>del proyecto.<\/p>\n<p>Con <em>if <\/em>(secretsExists.exists()) comprobamos si existe y si es as\u00ed a\u00f1adimos tantos campos como keys tengamos en el archivo, en este caso CONSUMER_KEY y CONSUMER_SECRET de tipo String.<\/p>\n<p>Si el archivo secrets.properties no existe crearemos dos campos con los mismos nombres pero con valores inventados.<\/p>\n<p>Siguiente paso ser\u00e1 modificar nuestra utils.class para que recoja de buildconfig las propiedades creadas.<br \/>\n&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"79\" src=\"https:\/\/lh3.googleusercontent.com\/Cz3nXq6qCYDvEaYdvORvy4Gs1Jmrl73BDwYQGrBa1rVAIldioyhXx0aFkqTiq8w8DkMfZmSvsRzYPJBHoLWIEnXSeZMIzYyYuvBpsl0IEUTUPyOoa2ETCVcPt5kMub2gZEw71pqg\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"506\" \/><\/span><\/span><\/span><\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;\">\nSi ahora ejecutamos nuestra app, y al no existir a\u00fan el archivo que contiene las keys, ver\u00edamos lo siguiente:<\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"463\" src=\"https:\/\/lh4.googleusercontent.com\/Z8LxRAwTzHNcT3LqL-wvzalBOy_CPznY9-XVWNcSzECmOdh1hgSGS5pzQJfgrFmCc-RXcw5-5b5xVup3Bh2qP-aNl4-9qJmAnFQ2xaOhlCpfGexU2ehKYez2eWsKU654Y4p14xeH\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"260\" \/><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;\">Por \u00faltimo a\u00f1adimos nuestro secrets.properties en el root del proyecto<br \/>\n&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"80\" src=\"https:\/\/lh3.googleusercontent.com\/4V5mbmk1MHJeZRySz1V3VSxbOU4xgbEihKVqvWYnXhSTQE9t_EXDclq2-gEfY9M4_JStPjOV-MahkNGp3IGDQT5m_cwuKdSPxO7xJSfyCkwhdS5OXO7gy38Wd1oh2mSPCZf1fAXq\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"412\" \/><\/span><\/span><\/span><\/p>\n<p dir=\"ltr\">\ny una vez creado el archivo si volvemos a ejecutar nuestra app\u2026<\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:0pt;text-align: center;\"><span style=\"font-size:14px;\"><span style=\"font-family: Arial;\"><span style=\"color: rgb(0, 0, 0); background-color: transparent; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline;\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" height=\"445\" src=\"https:\/\/lh4.googleusercontent.com\/x-itytrYaik3o1V6lQkPcBUb2YYUuuW0qxGGvUv6xe2Gg4Ue9G4BhJUnBFNg5BPV6zdiA_2q5rD9Ca5wRQxQZ8hCuEEXSXvxkxLvuQvLJ6eIJtI6WA4XwnhMmyJN_2rYgVR-wbe_\" style=\"border: none; transform: rotate(0.00rad); -webkit-transform: rotate(0.00rad);\" width=\"251\" \/><\/span><\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<p dir=\"ltr\">Recordar marcar como <em>ignore <\/em>en nuestro repositorio este archivo. Cuando alguien se descargue nuestro proyecto deber\u00e1 crearse su propio secrets.properties, lo indicaremos en el read.me del repositorio indicando el formato que ha de tener.<br \/>\n&nbsp;<\/p>\n<h2>Easy \ud83d\ude42<\/h2>\n<h5 class=\"rteright\">Foto de cabecera: <a href=\"https:\/\/www.flickr.com\/photos\/intelfreepress\/8229504229\/in\/photolist-7jnsoH-8N3ioD-842EQM-5tCNKM-6GooXo-axYpqw-cXXqXy-6GjiBn-chxG9S-cvNwF3-6GowNJ-dxdmTX-tXNpT-cdM6PJ-5DxQiv-mj9c2R-cXXqVW-cXXqUw-dcKB5G-dcKyKe-nzPZE8-dwtYqF-nS2GwT-n1VfKw-5oQrqE\" target=\"_blank\" rel=\"noopener\">Intel Free Press \/ Flickr<\/a><\/h5>\n","protected":false},"excerpt":{"rendered":"<p>En nuestros proyectos es habitual usar APIs de terceros que nos permiten a\u00f1adir funcionalidades sin tener que desarrollarlas nosotros mismos. Muchas APIs&nbsp;requieren el uso de keys que habremos obtenido al registrarnos como developers en alg\u00fan servicio (Twitter, Facebook, Instagram, etc\u2026) y solemos almacenar dichas keys en la t\u00edpica utils.class o apiKeys.class&#8230; Cuando subimos nuestro c\u00f3digo [&hellip;]<\/p>\n","protected":false},"author":866,"featured_media":1313,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"","template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1562],"tags":[1593,1637,1813,1644],"etiquetes":[],"categorias":[],"class_list":["post-17869","article_basic","type-article_basic","status-publish","format-standard","has-post-thumbnail","hentry","category-tecnologia","tag-android","tag-medalla-blogger","tag-open","tag-programacion"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>API keys en proyectos Android open source - Basetis<\/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:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"API keys en proyectos Android open source - Basetis\" \/>\n<meta property=\"og:description\" content=\"En nuestros proyectos es habitual usar APIs de terceros que nos permiten a\u00f1adir funcionalidades sin tener que desarrollarlas nosotros mismos. Muchas APIs&nbsp;requieren el uso de keys que habremos obtenido al registrarnos como developers en alg\u00fan servicio (Twitter, Facebook, Instagram, etc\u2026) y solemos almacenar dichas keys en la t\u00edpica utils.class o apiKeys.class&#8230; Cuando subimos nuestro c\u00f3digo [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/\" \/>\n<meta property=\"og:site_name\" content=\"Basetis\" \/>\n<meta property=\"article:modified_time\" content=\"2024-03-12T11:42:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.basetis.com\/wp-content\/uploads\/2018\/10\/Keys_on_Keyboard.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1\" \/>\n\t<meta property=\"og:image:height\" content=\"1\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/es\\\/article_basic\\\/api-keys-en-proyectos-android-open-source\\\/\",\"url\":\"https:\\\/\\\/blog.basetis.com\\\/es\\\/article_basic\\\/api-keys-en-proyectos-android-open-source\\\/\",\"name\":\"API keys en proyectos Android open source - Basetis\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/es\\\/article_basic\\\/api-keys-en-proyectos-android-open-source\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/es\\\/article_basic\\\/api-keys-en-proyectos-android-open-source\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.basetis.com\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/Keys_on_Keyboard.jpg\",\"datePublished\":\"2017-02-10T12:05:36+00:00\",\"dateModified\":\"2024-03-12T11:42:28+00:00\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.basetis.com\\\/es\\\/article_basic\\\/api-keys-en-proyectos-android-open-source\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/es\\\/article_basic\\\/api-keys-en-proyectos-android-open-source\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.basetis.com\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/Keys_on_Keyboard.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.basetis.com\\\/wp-content\\\/uploads\\\/2018\\\/10\\\/Keys_on_Keyboard.jpg\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/#website\",\"url\":\"https:\\\/\\\/blog.basetis.com\\\/\",\"name\":\"Basetis\",\"description\":\"Testing\",\"publisher\":{\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.basetis.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/#organization\",\"name\":\"Basetis\",\"url\":\"https:\\\/\\\/blog.basetis.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blog.basetis.com\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/blog.basetis.com\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/logo.svg\",\"width\":187,\"height\":29,\"caption\":\"Basetis\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.basetis.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"API keys en proyectos Android open source - Basetis","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:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/","og_locale":"es_ES","og_type":"article","og_title":"API keys en proyectos Android open source - Basetis","og_description":"En nuestros proyectos es habitual usar APIs de terceros que nos permiten a\u00f1adir funcionalidades sin tener que desarrollarlas nosotros mismos. Muchas APIs&nbsp;requieren el uso de keys que habremos obtenido al registrarnos como developers en alg\u00fan servicio (Twitter, Facebook, Instagram, etc\u2026) y solemos almacenar dichas keys en la t\u00edpica utils.class o apiKeys.class&#8230; Cuando subimos nuestro c\u00f3digo [&hellip;]","og_url":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/","og_site_name":"Basetis","article_modified_time":"2024-03-12T11:42:28+00:00","og_image":[{"url":"https:\/\/blog.basetis.com\/wp-content\/uploads\/2018\/10\/Keys_on_Keyboard.jpg","width":1,"height":1,"type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/","url":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/","name":"API keys en proyectos Android open source - Basetis","isPartOf":{"@id":"https:\/\/blog.basetis.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/#primaryimage"},"image":{"@id":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.basetis.com\/wp-content\/uploads\/2018\/10\/Keys_on_Keyboard.jpg","datePublished":"2017-02-10T12:05:36+00:00","dateModified":"2024-03-12T11:42:28+00:00","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blog.basetis.com\/es\/article_basic\/api-keys-en-proyectos-android-open-source\/#primaryimage","url":"https:\/\/blog.basetis.com\/wp-content\/uploads\/2018\/10\/Keys_on_Keyboard.jpg","contentUrl":"https:\/\/blog.basetis.com\/wp-content\/uploads\/2018\/10\/Keys_on_Keyboard.jpg"},{"@type":"WebSite","@id":"https:\/\/blog.basetis.com\/#website","url":"https:\/\/blog.basetis.com\/","name":"Basetis","description":"Testing","publisher":{"@id":"https:\/\/blog.basetis.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.basetis.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blog.basetis.com\/#organization","name":"Basetis","url":"https:\/\/blog.basetis.com\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blog.basetis.com\/#\/schema\/logo\/image\/","url":"https:\/\/blog.basetis.com\/wp-content\/uploads\/2024\/02\/logo.svg","contentUrl":"https:\/\/blog.basetis.com\/wp-content\/uploads\/2024\/02\/logo.svg","width":187,"height":29,"caption":"Basetis"},"image":{"@id":"https:\/\/blog.basetis.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/article_basic\/17869","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/article_basic"}],"about":[{"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/types\/article_basic"}],"author":[{"embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/users\/866"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/comments?post=17869"}],"version-history":[{"count":1,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/article_basic\/17869\/revisions"}],"predecessor-version":[{"id":17870,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/article_basic\/17869\/revisions\/17870"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/media\/1313"}],"wp:attachment":[{"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/media?parent=17869"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/categories?post=17869"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/tags?post=17869"},{"taxonomy":"etiquetes","embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/etiquetes?post=17869"},{"taxonomy":"categorias","embeddable":true,"href":"https:\/\/blog.basetis.com\/es\/wp-json\/wp\/v2\/categorias?post=17869"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}