<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Victor San Martin</title>
    <description>The latest articles on DEV Community by Victor San Martin (@victorsanmartin).</description>
    <link>https://dev.to/victorsanmartin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F400027%2F4d2f6b91-7c47-4e2a-9522-f4dd674c6509.jpeg</url>
      <title>DEV Community: Victor San Martin</title>
      <link>https://dev.to/victorsanmartin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/victorsanmartin"/>
    <language>en</language>
    <item>
      <title>API Rest patentes de autos en Chile</title>
      <dc:creator>Victor San Martin</dc:creator>
      <pubDate>Fri, 29 Dec 2023 03:42:47 +0000</pubDate>
      <link>https://dev.to/boostr/api-rest-patentes-de-autos-en-chile-477a</link>
      <guid>https://dev.to/boostr/api-rest-patentes-de-autos-en-chile-477a</guid>
      <description>&lt;p&gt;En Chile, si quieres saber más sobre un auto y su dueño, normalmente tienes que navegar por el sitio web del Registro Civil y solicitar el certificado de anotaciones vigentes o el padrón, además ambos tienes un costo. Es la fuente más actualizada que tenemos en el país, pero si no estás para descargar PDFs (después de proceso de varios clicks) y solo necesitas revisar una patente rápidamente, hay opciones más ágiles, como pantentechile.com o volanteomaleta.com.&lt;/p&gt;

&lt;p&gt;Ahora, aquí viene el problema: ni el Registro Civil ni esos sitios populares tienen una API para revisar la info. De hecho, uno de ellos en su formulario de contacto te dice directamente que toda solicitud de acceso a sus datos será ignorado de inmediato.&lt;/p&gt;

&lt;p&gt;Entonces, me puse a rastrear cómo sacar info de fuentes públicas. La idea es crear una API para que desarrolladores como tú y yo puedan sacarle partido y construir apps increíbles con toda esa data.&lt;/p&gt;

&lt;p&gt;¡Y así nace nuestra &lt;a href="https://docs.boostr.cl/reference/car-plate"&gt;API de Patentes&lt;/a&gt;! Ahora, ¡manos a la obra! 🚗💨&lt;/p&gt;

&lt;h2&gt;
  
  
  API para consultar información de un vehículo de acuerdo a su patente.
&lt;/h2&gt;

&lt;p&gt;El uso es súper sencillo y basta con hacer una simple consulta indicando la patente en la URL, aquí tienes un ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fetch&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;node-fetch&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.boostr.cl/vehicle/CPRL32.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;accept&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}};&lt;/span&gt;

&lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;error:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Por el momento la información que entrega el servicio es la siguiente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"plate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"dv"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"engine"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"owner"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"fullname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"documentNumber"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Consideraciones
&lt;/h3&gt;

&lt;p&gt;¿Hay límites?&lt;br&gt;
¡Claro que sí! En este momento, puedes revisar hasta 5 patentes cada 10 segundos. Pero, ojo, este límite puede variar si veo que se abusa del servicio. Si te pasas del límite, el sistema te bloqueará por unos segundos. Si insistes en el abuso, el bloqueo podría ser para siempre.&lt;/p&gt;

&lt;p&gt;¿Es gratuito?&lt;br&gt;
Sí, por ahora lo es. Estoy pensando en aplicar un modelo freemium, con una versión gratuita y un plan que tendría un bajo costo. Este plan te permitirá aumentar la cantidad de consultas mensuales, peticiones por segundo o acceder a más información. Así que, si usas el servicio, mantente al tanto de los cambios que publicaremos en nuestro changelog.&lt;/p&gt;

&lt;p&gt;¿De dónde sacas la información?&lt;br&gt;
La sacamos de diversas fuentes totalmente públicas. Nuestro servicio automáticamente busca la patente en varias fuentes, y si no arroja datos, es porque esa patente aún no figura en sus registros.&lt;/p&gt;

&lt;p&gt;¿Qué significa que esté en beta?&lt;br&gt;
Quiere decir que es un servicio nuevo que podría cambiar sin previo aviso. Pueden haber cambios en el contenido, límites de consultas o incluso en la licencia de uso. ¡Así que mantente alerta! 🚀&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sobre Boostr&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Somos una empresa joven pero con gente con muchos años de experiencia en el desarrollo de soluciones tecnológicas. Si tienes una idea en mente, o sólo nos quieres saludar, escríbenos a &lt;a href="mailto:hola@boostr.cl"&gt;hola@boostr.cl&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>español</category>
      <category>api</category>
      <category>patentes</category>
      <category>chile</category>
    </item>
    <item>
      <title>API días feriados</title>
      <dc:creator>Victor San Martin</dc:creator>
      <pubDate>Thu, 14 Dec 2023 03:31:50 +0000</pubDate>
      <link>https://dev.to/boostr/api-dias-feriados-1k28</link>
      <guid>https://dev.to/boostr/api-dias-feriados-1k28</guid>
      <description>&lt;p&gt;Cuando tienes que planificar un proyecto, calcular turnos, estimar comisiones entre otros tantos casos de usos, debes tener claridad de los días libres o feriados existentes en el período que estás analizando.&lt;/p&gt;

&lt;p&gt;Desde &lt;a href="https://boostr.cl/"&gt;Boostr&lt;/a&gt;, sabemos la importancia de contar con esta información porque nosotros hemos pasado por esta situación, en más de un proyecto hemos necesitado contar con los feriados para hacer cálculos automáticos, por ejemplo, para planificar turnos del siguiente mes.&lt;/p&gt;

&lt;p&gt;Para lograr esto, tienes al menos dos estrategias:&lt;/p&gt;

&lt;h3&gt;
  
  
  Armar tu propia base de datos.
&lt;/h3&gt;

&lt;p&gt;Si bien te da mayor flexibilidad para incluir quizás algunos días importantes de la empresa, como su aniversario o celebraciones internas, te obliga a armar un módulo de gestión de días feriados y que alguien tenga la dedicación de mantener esta base de datos vigente con los feriados tantos del año en curso como el siguiente. Y si alguna fecha cambia o se agrega un feriado nuevo durante el año, esta persona debe estar atenta para incluirlo antes de generar nuevos cálculos.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J4wN5HWM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/64tt3yez9hpq98frzb61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J4wN5HWM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/64tt3yez9hpq98frzb61.png" alt="Administración de feriados en Zendesk" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como dije antes, si la empresa cuenta con días particulares que se pueden considerar como días libres a considerar, es una buena estrategia, pero ten en cuenta el costo que significa mantener la base de datos y el impacto negativo que puede generar el no contar con información vigente.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conectarte a una API.
&lt;/h3&gt;

&lt;p&gt;Si ya desarrollaste tu propia base de datos o aún no lo has hecho, considerar obtener la información de una API externa es una buena estrategia, siempre y cuando estés consumiendo un servicio online que te de la seguridad que no lo darán de baja de la noche a la mañana, puede pasar a pago o no cuente con información vigente, ya que esto te a va generar problemas en el futuro que no tienes estimado enfrentar.&lt;/p&gt;

&lt;p&gt;En &lt;a href="https://boostr.cl/"&gt;Boostr&lt;/a&gt;, somos desarrolladores al igual que tu, y decidimos levantar nuestro propio &lt;a href="https://apis-chile.readme.io/reference/holidays"&gt;servicio REST con todos los feriados legales en Chile&lt;/a&gt;, y la usamos en los sistemas que hemos desarrollado. Al igual que tú, no nos sirve dar de baja el servicio ni mucho menos que esté desactualizada.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;https://api.boostr.cl/holidays.json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;accept&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;axios&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si ya armaste tu base de datos, también te puedes ahorrar la necesidad que una persona mantenga actualizada la información, con un simple cron job que consulte la información cada X tiempo y actualice su base, te ahorras esta tarea y mantienes la flexibilidad de incluir tus propios días festivos.&lt;br&gt;
Ahora si aún no has armado tu propia base de datos, puedes sin problemas consultar a &lt;a href="https://apis-chile.readme.io/reference/holidays"&gt;nuestra API&lt;/a&gt; cada vez que necesites realizar algún cálculo.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sobre Boostr&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Somos una empresa joven pero con gente con muchos años de experiencia en el desarrollo de soluciones tecnológicas. Si tienes una idea en mente, o sólo nos quieres saludar, escríbenos a &lt;a href="mailto:hola@boostr.cl"&gt;hola@boostr.cl&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>restapi</category>
      <category>chile</category>
      <category>feriados</category>
      <category>español</category>
    </item>
  </channel>
</rss>
