{"id":2789683,"date":"2026-09-23T11:52:50","date_gmt":"2026-09-23T18:52:50","guid":{"rendered":"https:\/\/oportundev3.wpengine.com\/?post_type=engineering_blog&#038;p=2789683"},"modified":"2026-09-23T11:58:34","modified_gmt":"2026-09-23T18:58:34","slug":"retencion-de-datos-en-databricks-como-oportun-anonimiza-la-pii","status":"publish","type":"engineering_blog","link":"https:\/\/oportun.com\/es\/careers\/engineering-blog\/retencion-de-datos-en-databricks-como-oportun-anonimiza-la-pii\/","title":{"rendered":"Retenci\u00f3n de datos en Databricks: c\u00f3mo Oportun anonimiza la PII"},"content":{"rendered":"<p>C\u00f3mo la anonimizaci\u00f3n irreversible de datos y la actualizaci\u00f3n controlada de Bronze a Gold cumplen los requisitos de retenci\u00f3n de Oportun relacionados con la FTC.<br \/>\nEste es un caso de estudio de Databricks que explica c\u00f3mo anonimizamos de forma irreversible informaci\u00f3n de identificaci\u00f3n personal (o PII por sus siglas en ingl\u00e9s) relacionada con requisitos, asociada con clientes potenciales, solicitantes y miembros, y conservamos solo las caracter\u00edsticas de datos aprobadas que se requieren para el an\u00e1lisis.<br \/>\nLa misma informaci\u00f3n puede servir a diferentes prop\u00f3sitos en un ecosistema de datos. Como parte de nuestro proceso de retenci\u00f3n relacionado con la FTC, eliminamos la PII calificadora de las bases de datos operativas. En el lakehouse (una arquitectura que combina las bondades de un data lake y un data warehouse), eliminar un registro completo tambi\u00e9n remover\u00eda caracter\u00edsticas y relaciones aprobadas que siguen siendo \u00fatiles para el an\u00e1lisis estad\u00edstico. Necesit\u00e1bamos reemplazar los valores originales que identifican a una persona en las tablas en estado activo de Databricks, conservar \u00fanicamente la estructura anal\u00edtica aprobada y, m\u00e1s adelante, eliminar archivos obsoletos elegibles mediante mantenimiento.<br \/>\nAbordamos ese desaf\u00edo combinando nuestro servicio de Sanitizaci\u00f3n de Datos con un flujo de trabajo controlado de Delta Live Tables. Delta Live Tables, o DLT, ahora se denomina Lakeflow pipelines. El dise\u00f1o transforma la PII calificadora en Bronze para generar resultados anonimizados irreversibles; vuelve a construir Silver y Gold a partir de ese estado transformado y usa el mantenimiento de DLT para eliminar los archivos obsoletos elegibles despu\u00e9s de que se cumplan las condiciones de retenci\u00f3n configuradas.<\/p>\n<p><strong>Esto es lo que vamos a cubrir<\/strong><\/p>\n<ul>\n<li>Por qu\u00e9 la retenci\u00f3n de datos pasa a ser en un reto de ingenier\u00eda para un lakehouse<\/li>\n<li>Por qu\u00e9 los cambios hist\u00f3ricos en Bronze requieren un rec\u00e1lculo controlado<\/li>\n<li>El flujo de trabajo exacto de producci\u00f3n en cuatro pasos<\/li>\n<li>C\u00f3mo la Sanitizaci\u00f3n de Datos de Oportun realiza una anonimizaci\u00f3n irreversible<\/li>\n<li>C\u00f3mo el estado transformado llega a Silver y Gold<\/li>\n<li>Qu\u00e9 aprendimos al llevar el dise\u00f1o a producci\u00f3n<\/li>\n<li>Preguntas frecuentes<\/li>\n<\/ul>\n<p><strong>Puntos clave<\/strong><\/p>\n<ul>\n<li>Eliminamos la PII calificadora de las bases de datos operativas y anonimizamos de manera irreversible la PII correspondiente en Bronze, conservando \u00fanicamente las caracter\u00edsticas anal\u00edticas aprobadas.<\/li>\n<li>El flujo de trabajo de producci\u00f3n detiene DLT, anonimiza Bronze, realiza una actualizaci\u00f3n completa de Silver y Gold, y espera el mantenimiento autom\u00e1tico de VACUUM (limpieza de datos).<\/li>\n<li>El etiquetado basado en configuraci\u00f3n aplica una transformaci\u00f3n consistente en Bronze, y el recomputo posterior lleva consigo ese estado a Silver y Gold.<\/li>\n<\/ul>\n<h2>Por qu\u00e9 la retenci\u00f3n de datos pasa a ser un reto de ingenier\u00eda para un lakehouse<\/h2>\n<p>Los sistemas operativos y los sistemas anal\u00edticos no usan los registros de la misma manera. Las bases de datos operativas respaldan clientes activos y procesos comerciales. El lakehouse respalda an\u00e1lisis estad\u00edsticos aprobados y caracter\u00edsticas posteriores del flujo.<br \/>\nNuestro proceso de retenci\u00f3n identifica la PII calificadora asociada a clientes potenciales, solicitantes y miembros. Las reglas de elegibilidad espec\u00edficas se rigen por pol\u00edticas y procedimientos operativos, por lo que la arquitectura p\u00fablica no codifica el umbral ni la frecuencia de ejecuci\u00f3n.<br \/>\nPara los registros calificadores, el resultado operativo es eliminar la PII de las bases de datos de origen. El resultado anal\u00edtico es distinto. Remover el registro completo del lakehouse tambi\u00e9n eliminar\u00eda atributos, caracter\u00edsticas y relaciones no identificables que siguen aprobados para el an\u00e1lisis.<br \/>\nPor lo tanto, el objetivo de ingenier\u00eda fue preciso: reemplazar los valores originales que identifican a una persona en las tablas de Databricks en estado activo, conservar solo la estructura anal\u00edtica aprobada, propagar ese estado a cada capa posterior del lakehouse y, m\u00e1s adelante, eliminar los archivos obsoletos elegibles mediante mantenimiento.<br \/>\nEste es un problema de anonimizaci\u00f3n, no un problema de control de acceso. Para este flujo, nuestro servicio de Sanitizaci\u00f3n de Datos devuelve resultados transformados irreversibles. La PII original no puede reconstruirse a partir de esos resultados.<\/p>\n<h2>Por qu\u00e9 los cambios hist\u00f3ricos en Bronze requieren una recalculo controlado<\/h2>\n<p>Organizamos los datos del lakehouse en las capas Bronze, Silver y Gold. Bronze contiene la representaci\u00f3n Delta que utiliza el procesamiento posterior. Silver transforma los eventos de Bronze en conjuntos de datos refinados y combinados. Gold proporciona datos y caracter\u00edsticas curados y aprobados para el consumo.<br \/>\nEl procesamiento incremental normal maneja la informaci\u00f3n nueva de forma eficiente. El flujo de trabajo de retenci\u00f3n es diferente, porque cambia registros que las tablas posteriores ya procesaron.<br \/>\nEn esta implementaci\u00f3n, las actualizaciones de los registros de Bronze procesados previamente entraban en conflicto con el comportamiento de las tablas de transmisi\u00f3n posteriores de Silver. Cambiar un valor hist\u00f3rico en Bronze no reconstru\u00eda por s\u00ed solo todos los resultados de Silver o Gold que se hab\u00edan derivado del valor anterior.<br \/>\nLa soluci\u00f3n fue hacer que el estado transformado de Bronze fuera la fuente autorizada para las capas posteriores del lakehouse y, despu\u00e9s, la reconstrucci\u00f3n deliberada del estado derivado. Anonimizamos la PII aplicable una sola vez en Bronze y usamos una actualizaci\u00f3n completa controlada para propagar esos valores a Silver y Gold.<\/p>\n<h2>El flujo de trabajo exacto de producci\u00f3n en cuatro pasos<\/h2>\n<p>El orden es importante porque cada paso establece el estado que requiere el siguiente.<\/p>\n<ol>\n<li><strong>Detener el flujo de DLT<\/strong><br \/>\nEl flujo se detiene antes de modificar los registros hist\u00f3ricos de Bronze. Esto crea un l\u00edmite controlado entre el procesamiento incremental normal y la operaci\u00f3n de retenci\u00f3n.<\/li>\n<li><strong>Anonimizar la PII de las tablas Bronze<\/strong><br \/>\nIdentificamos los registros elegibles de Bronze y los filtramos en un DataFrame de Spark. Pasamos el DataFrame a nuestro servicio de Sanitizaci\u00f3n de Datos, que devuelve valores anonimizados irreversibles. Luego escribimos esos valores transformados de vuelta en Bronze.<\/li>\n<li><strong>Iniciar el flujo en modo de actualizaci\u00f3n completa y esperar a que los datos anonimizados se propaguen a Silver y Gold<\/strong><br \/>\nEl flujo se reinicia en modo de actualizaci\u00f3n completa para que Silver se reconstruya a partir del estado transformado de Bronze y el resultado contin\u00fae hacia Gold. Bronze est\u00e1 configurado con <code>pipeline.reset.allow = false<\/code>, lo que lo protege de un rec\u00e1lculo completo mientras se actualizan las capas posteriores.<\/li>\n<li><strong>Esperar a que VACUUM se ejecute autom\u00e1ticamente como parte del mantenimiento de DLT<\/strong><br \/>\nEl mantenimiento de DLT ejecuta VACUUM autom\u00e1ticamente. Los archivos obsoletos elegibles se eliminan despu\u00e9s de que se cumplan las condiciones de retenci\u00f3n configuradas. Actualizar el estado activo de una tabla Delta y eliminar archivos f\u00edsicos reemplazados son partes distintas del ciclo de vida.<\/li>\n<\/ol>\n<p>Flujo de trabajo de Oportun en cuatro pasos: detener DLT, anonimizar de forma irreversible la PII aplicable en Bronze, realizar una actualizaci\u00f3n completa de Silver y Gold, y esperar el mantenimiento autom\u00e1tico de VACUUM.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/oportun.com\/wp-content\/uploads\/2026\/09\/Oportun_DLT_Engineering_blog_graphic_ES.png\" alt=\"\" width=\"1379\" height=\"563\" class=\"alignnone size-full wp-image-2789684\" \/><\/p>\n<p>Flujo de trabajo controlado de Oportun para la anonimizaci\u00f3n irreversible de PII y el recomputo posterior en Bronze, Silver y Gold.<\/p>\n<h2>Dentro de la Sanitizaci\u00f3n de Datos de Oportun<\/h2>\n<p>La Sanitizaci\u00f3n de Datos es el elemento central de nuestra adaptaci\u00f3n. Su funci\u00f3n en el Paso 2 puede entenderse como cuatro operaciones: filtrar los registros aplicables de Bronze, llamar a Sanitizaci\u00f3n de Datos, recibir resultados anonimizados irreversibles y actualizar Bronze.<br \/>\nComenzamos filtrando los registros elegibles en un DataFrame de Spark. Pasamos ese DataFrame a Sanitizaci\u00f3n de Datos junto con el esquema y la configuraci\u00f3n de etiquetas de PII. El servicio devuelve valores transformados a partir de los cuales no es posible recuperar la PII original. Luego escribimos esos valores en las tablas Bronze.<br \/>\nEl servicio est\u00e1 basado en la configuraci\u00f3n. Un esquema describe la estructura de los datos de entrada y los propietarios etiquetan las rutas de los campos sensibles. Las etiquetas est\u00e1ndar definen c\u00f3mo se transforman las categor\u00edas de PII compatibles. Cuando se incorporan campos compatibles, los equipos pueden ampliar la configuraci\u00f3n de etiquetas sin integrar una l\u00f3gica de transformaci\u00f3n espec\u00edfica para cada campo en el flujo de trabajo.<\/p>\n<p>El objetivo es conservar solo lo que el procesamiento posterior leg\u00edtimamente necesita. Eso puede incluir la estructura de datos aprobada, las caracter\u00edsticas compatibles y las relaciones requeridas entre registros. No incluye una forma de volver a la PII original.<\/p>\n<h2>C\u00f3mo el estado transformado llega a Silver y Gold<\/h2>\n<p>Despu\u00e9s de actualizar Bronze, la actualizaci\u00f3n completa posterior restablece la coherencia en todas las capas del modelo medallion. Silver se reconstruye para que su estado refinado refleje los valores anonimizados de Bronze en lugar de los valores procesados antes de la operaci\u00f3n de retenci\u00f3n.<br \/>\nLuego, Gold se vuelve a calcular a partir del estado posterior actualizado. Esto permite que los datos transformados est\u00e9n disponibles para los an\u00e1lisis aprobados y los flujos de caracter\u00edsticas, sin retener la PII original en el estado activo del lakehouse.<br \/>\nLa configuraci\u00f3n pipeline.reset.allow = false establece un l\u00edmite importante. Bronze no se restablece como parte de la actualizaci\u00f3n completa. Permanece como la fuente transformada para el procesamiento posterior del lakehouse, mientras se reconstruyen las tablas Silver y las vistas Gold.<br \/>\nEsta divisi\u00f3n del trabajo facilita el razonamiento del dise\u00f1o. La Sanitizaci\u00f3n de Datos realiza la transformaci\u00f3n irreversible. La actualizaci\u00f3n completa propaga el estado l\u00f3gico transformado. El mantenimiento de DLT se encarga de los archivos obsoletos elegibles posteriormente.<\/p>\n<h2>Qu\u00e9 aprendimos al llevar el dise\u00f1o a producci\u00f3n<\/h2>\n<p><strong>Aplicar la anonimizaci\u00f3n irreversible en la fuente posterior al lakehouse<\/strong><br \/>\nTransformar Bronze una sola vez proporciona un estado autorizado para Silver y Gold. Modificar cada capa por separado duplicar\u00eda la l\u00f3gica y aumentar\u00eda la posibilidad de un tratamiento inconsistente.<\/p>\n<p><strong>Recomponer el estado derivado cuando los cambios hist\u00f3ricos entran en conflicto con el comportamiento de la transmisi\u00f3n<\/strong><br \/>\nEl procesamiento incremental es eficiente para los eventos nuevos. Una modificaci\u00f3n hist\u00f3rica cambia un registro que las tablas posteriores pueden haber consumido previamente. Una actualizaci\u00f3n completa y controlada permite reconstruir esas capas a partir del estado de origen corregido.<\/p>\n<p><strong>Conservar la utilidad anal\u00edtica aprobada, no la identidad<\/strong><br \/>\nUna transformaci\u00f3n de retenci\u00f3n debe conservar \u00fanicamente la estructura de datos, las caracter\u00edsticas y las relaciones aprobadas para el an\u00e1lisis. No debe conservar la PII original ni una representaci\u00f3n reversible de ella.<\/p>\n<p><strong>Tratar las actualizaciones l\u00f3gicas y la limpieza f\u00edsica como etapas separadas<\/strong><br \/>\nEscribir valores anonimizados cambia el estado activo de la tabla. M\u00e1s tarde, VACUUM elimina los archivos obsoletos elegibles despu\u00e9s de que se cumplan las condiciones de retenci\u00f3n configuradas. Ambas etapas son importantes al explicar el ciclo de vida completo de los datos.<\/p>\n<h2>Conclusi\u00f3n: un patr\u00f3n repetible de retenci\u00f3n de datos en Databricks<\/h2>\n<p>El resultado m\u00e1s importante no fue una funci\u00f3n de anonimizaci\u00f3n ni una configuraci\u00f3n de flujo. Fue un patr\u00f3n operativo repetible para la retenci\u00f3n de datos en el lakehouse.<br \/>\nIdentificamos los registros cubiertos por nuestros criterios de retenci\u00f3n relacionados con la FTC, eliminamos la PII calificadora de las bases de datos operativas y transformamos de forma irreversible la PII correspondiente en la fuente Bronze para el procesamiento posterior del lakehouse. Una actualizaci\u00f3n completa y controlada reconstruye Silver y Gold a partir de ese estado transformado. Despu\u00e9s, el mantenimiento de DLT elimina los archivos obsoletos elegibles una vez que se cumplen las condiciones de retenci\u00f3n configuradas.<br \/>\nEste dise\u00f1o respalda nuestros requisitos de retenci\u00f3n y conserva \u00fanicamente las caracter\u00edsticas anal\u00edticas aprobadas que el lakehouse a\u00fan necesita proporcionar. Tambi\u00e9n establece una clara separaci\u00f3n de responsabilidades entre la selecci\u00f3n basada en pol\u00edticas, la anonimizaci\u00f3n irreversible, el recomputo posterior y el mantenimiento de archivos f\u00edsicos.<\/p>\n<h2>Preguntas frecuentes<\/h2>\n    <div class=\"oportun-accordion\" data-accordion-id=\"faq_acc_0\">\n        <div class=\"items\">\n            <br \/>\n    <div class=\"oportun-accordion-item\">\n        <div class=\"item\">\n            <span\n                class=\"title\"\n                tabindex=\"0\"\n                role=\"button\"\n                id=\"faq_acc_btn_base_0\"\n                aria-labelledby=\"faq_acc_lbl_base_0\"\n                aria-controls=\"faq_acc_panel_base_0\"\n                aria-expanded=\"false\"\n            >\n                <div class=\"title block\" id=\"faq_acc_lbl_base_0\">\n                    \u00bfQu\u00e9 problema resuelve este flujo de trabajo de Databricks?                <\/div>\n\n                <oportun-icon name=\"positive\" aria-hidden=\"true\"><\/oportun-icon>\n            <\/span>\n\n            <div\n                class=\"content\"\n                style=\"max-height: 0px; visibility: hidden;\"\n                id=\"faq_acc_panel_base_0\"\n                role=\"region\"\n                aria-labelledby=\"faq_acc_btn_base_0\"\n            >\n                <span class=\"answer\">\n                    <p>\nNos ayuda a aplicar de manera consistente un requisito de retenci\u00f3n relacionado con la FTC en los datos operativos y anal\u00edticos. La PII calificadora se elimina de las bases de datos de origen y se transforma de manera irreversible en Databricks, mientras se conservan solo las caracter\u00edsticas anal\u00edticas aprobadas.<\/p>\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n    <\/p>\n<p>    <div class=\"oportun-accordion-item\">\n        <div class=\"item\">\n            <span\n                class=\"title\"\n                tabindex=\"0\"\n                role=\"button\"\n                id=\"faq_acc_btn_base_1\"\n                aria-labelledby=\"faq_acc_lbl_base_1\"\n                aria-controls=\"faq_acc_panel_base_1\"\n                aria-expanded=\"false\"\n            >\n                <div class=\"title block\" id=\"faq_acc_lbl_base_1\">\n                    \u00bfPor qu\u00e9 no eliminar el registro completo de Databricks?                <\/div>\n\n                <oportun-icon name=\"positive\" aria-hidden=\"true\"><\/oportun-icon>\n            <\/span>\n\n            <div\n                class=\"content\"\n                style=\"max-height: 0px; visibility: hidden;\"\n                id=\"faq_acc_panel_base_1\"\n                role=\"region\"\n                aria-labelledby=\"faq_acc_btn_base_1\"\n            >\n                <span class=\"answer\">\n                    <p>\nEliminar el registro completo tambi\u00e9n remover\u00eda las caracter\u00edsticas y relaciones no identificables requeridas para el an\u00e1lisis estad\u00edstico aprobado. El flujo de trabajo elimina los valores originales que identifican a un individuo y conserva solo las caracter\u00edsticas de datos que siguen aprobadas. <\/p>\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n    <br \/>\n    <div class=\"oportun-accordion-item\">\n        <div class=\"item\">\n            <span\n                class=\"title\"\n                tabindex=\"0\"\n                role=\"button\"\n                id=\"faq_acc_btn_base_2\"\n                aria-labelledby=\"faq_acc_lbl_base_2\"\n                aria-controls=\"faq_acc_panel_base_2\"\n                aria-expanded=\"false\"\n            >\n                <div class=\"title block\" id=\"faq_acc_lbl_base_2\">\n                    \u00bfPor qu\u00e9 se necesita una actualizaci\u00f3n completa despu\u00e9s de anonimizar Bronze?                <\/div>\n\n                <oportun-icon name=\"positive\" aria-hidden=\"true\"><\/oportun-icon>\n            <\/span>\n\n            <div\n                class=\"content\"\n                style=\"max-height: 0px; visibility: hidden;\"\n                id=\"faq_acc_panel_base_2\"\n                role=\"region\"\n                aria-labelledby=\"faq_acc_btn_base_2\"\n            >\n                <span class=\"answer\">\n                    <p>\nSilver y Gold pueden contener un estado derivado de los valores anteriores de Bronze. La actualizaci\u00f3n completa reconstruye esas capas posteriores a partir del estado transformado de Bronze para que la arquitectura medallion vuelva a ser coherente. <\/p>\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n    <br \/>\n    <div class=\"oportun-accordion-item\">\n        <div class=\"item\">\n            <span\n                class=\"title\"\n                tabindex=\"0\"\n                role=\"button\"\n                id=\"faq_acc_btn_base_3\"\n                aria-labelledby=\"faq_acc_lbl_base_3\"\n                aria-controls=\"faq_acc_panel_base_3\"\n                aria-expanded=\"false\"\n            >\n                <div class=\"title block\" id=\"faq_acc_lbl_base_3\">\n                    \u00bfSe puede recuperar la PII original a partir de los resultados de Sanitizaci\u00f3n de Datos?                <\/div>\n\n                <oportun-icon name=\"positive\" aria-hidden=\"true\"><\/oportun-icon>\n            <\/span>\n\n            <div\n                class=\"content\"\n                style=\"max-height: 0px; visibility: hidden;\"\n                id=\"faq_acc_panel_base_3\"\n                role=\"region\"\n                aria-labelledby=\"faq_acc_btn_base_3\"\n            >\n                <span class=\"answer\">\n                    <p>\nNo. Para este flujo de trabajo, la Sanitizaci\u00f3n de Datos de Oportun devuelve resultados transformados irreversibles. La PII original no puede reconstruirse a partir de esos resultados. <\/p>\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n    <br \/>\n    <div class=\"oportun-accordion-item\">\n        <div class=\"item\">\n            <span\n                class=\"title\"\n                tabindex=\"0\"\n                role=\"button\"\n                id=\"faq_acc_btn_base_4\"\n                aria-labelledby=\"faq_acc_lbl_base_4\"\n                aria-controls=\"faq_acc_panel_base_4\"\n                aria-expanded=\"false\"\n            >\n                <div class=\"title block\" id=\"faq_acc_lbl_base_4\">\n                    \u00bfQu\u00e9 hace pipeline.reset.allow = false?                <\/div>\n\n                <oportun-icon name=\"positive\" aria-hidden=\"true\"><\/oportun-icon>\n            <\/span>\n\n            <div\n                class=\"content\"\n                style=\"max-height: 0px; visibility: hidden;\"\n                id=\"faq_acc_panel_base_4\"\n                role=\"region\"\n                aria-labelledby=\"faq_acc_btn_base_4\"\n            >\n                <span class=\"answer\">\n                    <p>\nEvita que Bronze se restablezca durante la actualizaci\u00f3n completa posterior. Bronze permanece como la fuente transformada para el procesamiento posterior del lakehouse mientras Silver y Gold se reconstruyen. <\/p>\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/div>\n    <br \/>\n        <\/div>\n    <\/div>\n    \n","protected":false},"excerpt":{"rendered":"<p>C\u00f3mo la anonimizaci\u00f3n irreversible de datos y la actualizaci\u00f3n controlada de Bronze a Gold cumplen los requisitos de retenci\u00f3n de Oportun relacionados con la FTC. Este es un caso de estudio de Databricks que explica c\u00f3mo anonimizamos de forma irreversible informaci\u00f3n de identificaci\u00f3n personal (o PII por sus siglas en ingl\u00e9s) relacionada con requisitos, asociada [&hellip;]<\/p>\n","protected":false},"author":25,"featured_media":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"engineering_category":[],"engineering_post_tag":[],"class_list":["post-2789683","engineering_blog","type-engineering_blog","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/engineering_blog\/2789683","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/engineering_blog"}],"about":[{"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/types\/engineering_blog"}],"author":[{"embeddable":true,"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/users\/25"}],"version-history":[{"count":3,"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/engineering_blog\/2789683\/revisions"}],"predecessor-version":[{"id":2789689,"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/engineering_blog\/2789683\/revisions\/2789689"}],"wp:attachment":[{"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/media?parent=2789683"}],"wp:term":[{"taxonomy":"engineering_category","embeddable":true,"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/engineering_category?post=2789683"},{"taxonomy":"engineering_post_tag","embeddable":true,"href":"https:\/\/oportun.com\/es\/wp-json\/wp\/v2\/engineering_post_tag?post=2789683"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}