{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-@l10n/es/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Autenticación","description":"Documentação oficial, guias e referência da API Auvo v2.","siteUrl":"https://developers.auvo.com.br","lang":"pt-BR","keywords":"auvo, api, documentação, developers, field service, workforce","meta":[{"name":"og:site_name","content":"Auvo Developers"},{"name":"og:locale","content":"pt_BR"},{"name":"og:locale:alternate","content":"es_ES"},{"name":"og:locale:alternate","content":"en_US"},{"name":"twitter:card","content":"summary_large_image"},{"name":"twitter:site","content":"@auvoapp"}],"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"autenticación","__idx":0},"children":["Autenticación"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["La API Auvo usa ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Bearer JWT"]}," de 30 minutos emitido por ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /login"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"flujo-básico","__idx":1},"children":["Flujo básico"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["El cliente llama a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /login"]}," con ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKey"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiToken"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["La API responde con ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["result.accessToken"]}," y ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["result.expiration"]}," (ISO-8601)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["El cliente envía ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Authorization: Bearer <accessToken>"]}," en cada solicitud."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Antes de ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["expiration"]},", repite ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /login"]}," para renovar."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"ejemplo","__idx":2},"children":["Ejemplo"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"curl -X POST https://api.auvo.com.br/v2/login \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"apiKey\":\"...\",\"apiToken\":\"...\"}'\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"buenas-prácticas","__idx":3},"children":["Buenas prácticas"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Guarda credenciales en un gestor de secretos"]}," (AWS Secrets Manager, Doppler,"," ","1Password). Nunca en el código."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Un token por aplicación"]},": evita compartir el mismo ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["accessToken"]}," entre"," ","procesos distintos; cada worker debe renovar el suyo."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Margen de seguridad"]},": renueva el token 2 minutos antes para cubrir desfase de reloj."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Rotación"]},": ejecuta ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /login"]}," ante 401 y vuelve a intentar la llamada"," ","original solo una vez para evitar bucles."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Evita ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /login"]}]}," en producción — las credenciales aparecen en logs de URL."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"errores-comunes","__idx":4},"children":["Errores comunes"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Código"},"children":["Código"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Causa"},"children":["Causa"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Acción"},"children":["Acción"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["400"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiKey"]}," o ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["apiToken"]}," vacíos"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Revisa el body/query."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["401"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Token expirado"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Renueva con ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /login"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["403"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Límite de tasa excedido"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Espera 60 s o aplica backoff."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["404"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Credenciales incorrectas"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Verifica en ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Menú > Integración"]},"."]}]}]}]}]}]},"headings":[{"value":"Autenticación","id":"autenticación","depth":1},{"value":"Flujo básico","id":"flujo-básico","depth":2},{"value":"Ejemplo","id":"ejemplo","depth":2},{"value":"Buenas prácticas","id":"buenas-prácticas","depth":2},{"value":"Errores comunes","id":"errores-comunes","depth":2}],"frontmatter":{"title":"Autenticación","description":"Flujo de Bearer JWT, rotación de token y buenas prácticas.","seo":{"title":"Autenticación"}},"lastModified":"2026-04-24T13:01:34.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/es/guides/authentication","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}