[{"data":1,"prerenderedAt":378},["ShallowReactive",2],{"navigation_docs":3,"-referencia-api-backend":125,"-referencia-api-backend-surround":373},[4,24,56,80,106],{"title":5,"path":6,"stem":7,"children":8},"Getting Started","\u002Fgetting-started","1.getting-started",[9,12,16,20],{"title":10,"path":6,"stem":11},"Primeros pasos","1.getting-started\u002Findex",{"title":13,"path":14,"stem":15},"Buscar servicios","\u002Fgetting-started\u002Fbuscar-servicios","1.getting-started\u002Fbuscar-servicios",{"title":17,"path":18,"stem":19},"Crear cuenta","\u002Fgetting-started\u002Fcrear-cuenta","1.getting-started\u002Fcrear-cuenta",{"title":21,"path":22,"stem":23},"Preguntas frecuentes","\u002Fgetting-started\u002Fpreguntas-frecuentes","1.getting-started\u002Fpreguntas-frecuentes",{"title":25,"path":26,"stem":27,"children":28},"Guias","\u002Fguias","2.guias",[29,32,36,40,44,48,52],{"title":30,"path":26,"stem":31},"Guías de uso","2.guias\u002Findex",{"title":33,"path":34,"stem":35},"Cuenta de empresa","\u002Fguias\u002Fcuenta-empresa","2.guias\u002Fcuenta-empresa",{"title":37,"path":38,"stem":39},"Favoritos","\u002Fguias\u002Ffavoritos","2.guias\u002Ffavoritos",{"title":41,"path":42,"stem":43},"Horarios","\u002Fguias\u002Fhorarios","2.guias\u002Fhorarios",{"title":45,"path":46,"stem":47},"Reviews y calificaciones","\u002Fguias\u002Freviews","2.guias\u002Freviews",{"title":49,"path":50,"stem":51},"Servicios","\u002Fguias\u002Fservicios","2.guias\u002Fservicios",{"title":53,"path":54,"stem":55},"Sucursales","\u002Fguias\u002Fsucursales","2.guias\u002Fsucursales",{"title":57,"path":58,"stem":59,"children":60},"Referencia","\u002Freferencia","3.referencia",[61,64,68,72,76],{"title":62,"path":58,"stem":63},"Referencia técnica","3.referencia\u002Findex",{"title":65,"path":66,"stem":67},"API del backend","\u002Freferencia\u002Fapi-backend","3.referencia\u002Fapi-backend",{"title":69,"path":70,"stem":71},"App mobile","\u002Freferencia\u002Fapp-mobile","3.referencia\u002Fapp-mobile",{"title":73,"path":74,"stem":75},"Arquitectura general","\u002Freferencia\u002Farquitectura","3.referencia\u002Farquitectura",{"title":77,"path":78,"stem":79},"Glosario","\u002Freferencia\u002Fglosario","3.referencia\u002Fglosario",{"title":81,"path":82,"stem":83,"children":84},"Changelog","\u002Fchangelog","4.changelog",[85,87,97],{"title":81,"path":82,"stem":86},"4.changelog\u002Findex",{"title":88,"path":89,"stem":90,"children":91},"Backend — Changelog","\u002Fchangelog\u002Fbackend","4.changelog\u002Fbackend\u002Findex",[92,93],{"title":88,"path":89,"stem":90},{"title":94,"path":95,"stem":96},"v0.0.1","\u002Fchangelog\u002Fbackend\u002Fv0.0.1","4.changelog\u002Fbackend\u002Fv0.0.1",{"title":98,"path":99,"stem":100,"children":101},"Mobile — Changelog","\u002Fchangelog\u002Fmobile","4.changelog\u002Fmobile\u002Findex",[102,103],{"title":98,"path":99,"stem":100},{"title":94,"path":104,"stem":105},"\u002Fchangelog\u002Fmobile\u002Fv0.0.1","4.changelog\u002Fmobile\u002Fv0.0.1",{"title":107,"path":108,"stem":109,"children":110},"Empresa","\u002Fempresa","5.empresa",[111,113,117,121],{"title":107,"path":108,"stem":112},"5.empresa\u002Findex",{"title":114,"path":115,"stem":116},"Disclaimer","\u002Fempresa\u002Fdisclaimer","5.empresa\u002Fdisclaimer",{"title":118,"path":119,"stem":120},"Roadmap","\u002Fempresa\u002Froadmap","5.empresa\u002Froadmap",{"title":122,"path":123,"stem":124},"Sobre nosotros","\u002Fempresa\u002Fsobre-nosotros","5.empresa\u002Fsobre-nosotros",{"id":126,"title":65,"body":127,"description":366,"extension":367,"links":368,"meta":369,"navigation":370,"path":66,"seo":371,"stem":67,"__hash__":372},"docs\u002F3.referencia\u002Fapi-backend.md",{"type":128,"value":129,"toc":339},"minimark",[130,134,138,143,154,158,166,171,177,181,187,190,196,200,206,210,213,216,222,226,232,236,242,246,252,256,259,265,269,275,279,282,288,291,297,301,307,311,317,320,326,329],[131,132,65],"h1",{"id":133},"api-del-backend",[135,136,137],"p",{},"La API del backend está documentada con OpenAPI (Swagger). Esta guía ofrece una visión general de los principales endpoints disponibles.",[139,140,142],"h2",{"id":141},"base-url","Base URL",[144,145,150],"pre",{"className":146,"code":148,"language":149},[147],"language-text","https:\u002F\u002Fapi.serviciosapp.com\u002Fapi\n","text",[151,152,148],"code",{"__ignoreMap":153},"",[139,155,157],{"id":156},"autenticación","Autenticación",[135,159,160,161,165],{},"La API utiliza ",[162,163,164],"strong",{},"JWT (JSON Web Tokens)"," para autenticación. Los tokens se envían como cookies HTTP-only.",[167,168,170],"h3",{"id":169},"registro","Registro",[144,172,175],{"className":173,"code":174,"language":149},[147],"POST \u002Fauth\u002Fregister\nContent-Type: application\u002Fjson\n\n{\n  \"email\": \"usuario@correo.com\",\n  \"password\": \"mi-contraseña\",\n  \"firstName\": \"Juan\",\n  \"lastName\": \"Pérez\",\n  \"secondLastName\": \"García\",\n  \"municipalityId\": \"uuid-del-municipio\"\n}\n",[151,176,174],{"__ignoreMap":153},[167,178,180],{"id":179},"inicio-de-sesión","Inicio de sesión",[144,182,185],{"className":183,"code":184,"language":149},[147],"POST \u002Fauth\u002Flogin\nContent-Type: application\u002Fjson\n\n{\n  \"email\": \"usuario@correo.com\",\n  \"password\": \"mi-contraseña\"\n}\n",[151,186,184],{"__ignoreMap":153},[135,188,189],{},"También puedes iniciar sesión con número de teléfono:",[144,191,194],{"className":192,"code":193,"language":149},[147],"{\n  \"cellphone\": \"6671234567\",\n  \"password\": \"mi-contraseña\"\n}\n",[151,195,193],{"__ignoreMap":153},[167,197,199],{"id":198},"refrescar-token","Refrescar token",[144,201,204],{"className":202,"code":203,"language":149},[147],"POST \u002Fauth\u002Frefresh-access-token\n",[151,205,203],{"__ignoreMap":153},[139,207,209],{"id":208},"endpoints-públicos","Endpoints públicos",[135,211,212],{},"Estos endpoints no requieren autenticación:",[167,214,13],{"id":215},"buscar-servicios",[144,217,220],{"className":218,"code":219,"language":149},[147],"GET \u002Fpublic\u002Fservices\u002Fsearch?query=peluquería&categoryId=uuid&minPrice=10&maxPrice=100&minRating=4&page=0&size=20&sort=relevance\n",[151,221,219],{"__ignoreMap":153},[167,223,225],{"id":224},"buscar-categorías","Buscar categorías",[144,227,230],{"className":228,"code":229,"language":149},[147],"GET \u002Fpublic\u002Fcategories\u002Fsearch?query=salud\n",[151,231,229],{"__ignoreMap":153},[167,233,235],{"id":234},"buscar-subcategorías","Buscar subcategorías",[144,237,240],{"className":238,"code":239,"language":149},[147],"GET \u002Fpublic\u002Fcategories\u002F{parentId}\u002Fsubcategories?query=belleza\n",[151,241,239],{"__ignoreMap":153},[167,243,245],{"id":244},"ver-sucursales-de-un-servicio","Ver sucursales de un servicio",[144,247,250],{"className":248,"code":249,"language":149},[147],"GET \u002Fpublic\u002Fservices\u002F{serviceId}\u002Fbranches?userLat=25.0&userLng=-100.0\n",[151,251,249],{"__ignoreMap":153},[139,253,255],{"id":254},"endpoints-autenticados-usuario","Endpoints autenticados (usuario)",[167,257,37],{"id":258},"favoritos",[144,260,263],{"className":261,"code":262,"language":149},[147],"GET  \u002Ffavorite-services?page=0&size=20          # Listar favoritos\nPOST \u002Ffavorite-services                         # Agregar favorito\nDELETE \u002Ffavorite-services\u002F{serviceId}           # Eliminar favorito\nGET  \u002Ffavorite-services\u002F{serviceId}\u002Fstatus      # Ver estado del favorito\n",[151,264,262],{"__ignoreMap":153},[167,266,268],{"id":267},"reviews","Reviews",[144,270,273],{"className":271,"code":272,"language":149},[147],"POST   \u002Fcompany-service-reviews                 # Crear review\nDELETE \u002Fcompany-service-reviews\u002F{reviewId}       # Eliminar review\nGET    \u002Fcompany-service-reviews\u002F{serviceId}\u002Flimit-status  # Ver límite\n",[151,274,272],{"__ignoreMap":153},[139,276,278],{"id":277},"endpoints-autenticados-empresa","Endpoints autenticados (empresa)",[167,280,107],{"id":281},"empresa",[144,283,286],{"className":284,"code":285,"language":149},[147],"POST   \u002Fcompanies                              # Crear empresa\nPUT    \u002Fcompanies                              # Actualizar empresa\nGET    \u002Fcompanies\u002F{id}                         # Obtener empresa\nGET    \u002Fcompanies\u002Factive-counts                # Contar sucursales y servicios activos\n",[151,287,285],{"__ignoreMap":153},[167,289,53],{"id":290},"sucursales",[144,292,295],{"className":293,"code":294,"language":149},[147],"POST   \u002Fcompanies\u002Fbranches                     # Crear sucursal\nPUT    \u002Fcompanies\u002Fbranches                     # Actualizar sucursal\nGET    \u002Fcompanies\u002Fbranches                     # Listar sucursales\nGET    \u002Fcompanies\u002Fbranches\u002F{id}                # Obtener sucursal por ID\nDELETE \u002Fcompanies\u002Fbranches\u002F{id}                # Eliminar sucursal\nPOST   \u002Fcompanies\u002Fbranches\u002F{id}\u002Fdeactivate     # Desactivar sucursal\nPOST   \u002Fcompanies\u002Fbranches\u002F{id}\u002Freactivate     # Reactivar sucursal\nPOST   \u002Fcompanies\u002Fbranches\u002Fwith-images         # Crear sucursal con imágenes\nPUT    \u002Fcompanies\u002Fbranches\u002Fwith-images         # Actualizar sucursal con imágenes\n",[151,296,294],{"__ignoreMap":153},[167,298,300],{"id":299},"servicios-de-empresa","Servicios de empresa",[144,302,305],{"className":303,"code":304,"language":149},[147],"POST   \u002Fcompanies\u002Fservices                     # Crear servicio\nPUT    \u002Fcompanies\u002Fservices                     # Actualizar servicio\nGET    \u002Fcompanies\u002Fservices                     # Listar servicios de la empresa\nGET    \u002Fcompanies\u002Fservices\u002F{id}                # Obtener servicio por ID\nGET    \u002Fcompanies\u002Fservices\u002Fby-branch\u002F{branchId} # Servicios por sucursal\nPOST   \u002Fcompanies\u002Fservices\u002F{id}\u002Factivate       # Activar servicio\nPOST   \u002Fcompanies\u002Fservices\u002F{id}\u002Fdeactivate     # Desactivar servicio\nDELETE \u002Fcompanies\u002Fservices                     # Eliminar servicio\n",[151,306,304],{"__ignoreMap":153},[167,308,310],{"id":309},"canales-de-servicio","Canales de servicio",[144,312,315],{"className":313,"code":314,"language":149},[147],"POST   \u002Fcompanies\u002Fservice-channels             # Crear canal\nPUT    \u002Fcompanies\u002Fservice-channels             # Actualizar canal\nDELETE \u002Fcompanies\u002Fservice-channels\u002F{id}        # Eliminar canal\nGET    \u002Fcompanies\u002Fservice-channels\u002F{id}        # Obtener canal por ID\nPOST   \u002Fcompanies\u002Fservice-channels\u002F{id}\u002Factivate\nPOST   \u002Fcompanies\u002Fservice-channels\u002F{id}\u002Fdeactivate\n",[151,316,314],{"__ignoreMap":153},[167,318,41],{"id":319},"horarios",[144,321,324],{"className":322,"code":323,"language":149},[147],"# Horarios de sucursal\nPOST   \u002Fcompanies\u002Fbranch-schedules             # Crear horario\nPUT    \u002Fcompanies\u002Fbranch-schedules             # Actualizar horario\nDELETE \u002Fcompanies\u002Fbranch-schedules\u002F{id}        # Eliminar horario\nPOST   \u002Fcompanies\u002Fbranch-schedules\u002Fsync        # Sincronizar horarios\n\n# Horarios de canal de servicio\nPOST   \u002Fcompanies\u002Fservice-channel-schedules    # Crear horario de canal\nDELETE \u002Fcompanies\u002Fservice-channel-schedules\u002F{id} # Eliminar horario de canal\n",[151,325,323],{"__ignoreMap":153},[327,328],"hr",{},[135,330,331,335,336],{},[332,333,334],"a",{"href":58},"← Volver a referencia"," · ",[332,337,338],{"href":70},"Siguiente: App mobile →",{"title":153,"searchDepth":340,"depth":340,"links":341},2,[342,343,349,355,359],{"id":141,"depth":340,"text":142},{"id":156,"depth":340,"text":157,"children":344},[345,347,348],{"id":169,"depth":346,"text":170},3,{"id":179,"depth":346,"text":180},{"id":198,"depth":346,"text":199},{"id":208,"depth":340,"text":209,"children":350},[351,352,353,354],{"id":215,"depth":346,"text":13},{"id":224,"depth":346,"text":225},{"id":234,"depth":346,"text":235},{"id":244,"depth":346,"text":245},{"id":254,"depth":340,"text":255,"children":356},[357,358],{"id":258,"depth":346,"text":37},{"id":267,"depth":346,"text":268},{"id":277,"depth":340,"text":278,"children":360},[361,362,363,364,365],{"id":281,"depth":346,"text":107},{"id":290,"depth":346,"text":53},{"id":299,"depth":346,"text":300},{"id":309,"depth":346,"text":310},{"id":319,"depth":346,"text":41},"Endpoints y autenticación de la API de ServiciosApp","md",null,{},true,{"title":65,"description":366},"i_hjPjJ-UVppS2nrzeuBVVbJ1m8NvR9SKvTHiwVp8RM",[374,376],{"title":62,"path":58,"stem":63,"description":375,"children":-1},"Documentación técnica de ServiciosApp",{"title":69,"path":70,"stem":71,"description":377,"children":-1},"Arquitectura y estructura de la aplicación móvil de ServiciosApp",1779775004910]