diff --git a/404.html b/404.html index 707b9ba74..6e43ad2c6 100644 --- a/404.html +++ b/404.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
App Builder
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file diff --git a/404/index.html b/404/index.html index 645604366..335b31a2b 100644 --- a/404/index.html +++ b/404/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
App Builder
Overview Getting Started Guides Resources

Error 404: Page not found

Sorry, that page can't be found.

\ No newline at end of file diff --git a/chunk-map.json b/chunk-map.json index 5dc300735..0c3d89fdb 100644 --- a/chunk-map.json +++ b/chunk-map.json @@ -1 +1 @@ -{"app":["/app-6c7561cede6de74d17ad.js"],"component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md":["/component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md-e8287b7ee1e877d41721.js"],"component---src-pages-getting-started-common-troubleshooting-md":["/component---src-pages-getting-started-common-troubleshooting-md-56eeea4c2ebf3eaa29fd.js"],"component---src-pages-getting-started-first-app-md":["/component---src-pages-getting-started-first-app-md-a275e6843c3be27b1a62.js"],"component---src-pages-getting-started-index-md":["/component---src-pages-getting-started-index-md-67f0bb99c4b391d437e6.js"],"component---src-pages-getting-started-publish-app-md":["/component---src-pages-getting-started-publish-app-md-80069dbdc154384390af.js"],"component---src-pages-guides-app-hooks-md":["/component---src-pages-guides-app-hooks-md-651dfac8b673be713bc4.js"],"component---src-pages-guides-application-logging-azure-log-analytics-md":["/component---src-pages-guides-application-logging-azure-log-analytics-md-968dc7a663059e2057c7.js"],"component---src-pages-guides-application-logging-index-md":["/component---src-pages-guides-application-logging-index-md-5457d259a683db121834.js"],"component---src-pages-guides-application-logging-new-relic-md":["/component---src-pages-guides-application-logging-new-relic-md-0bd4b50b02725f4b1d7c.js"],"component---src-pages-guides-application-logging-splunk-cloud-md":["/component---src-pages-guides-application-logging-splunk-cloud-md-59307f947f76305d80bd.js"],"component---src-pages-guides-application-logging-splunk-enterprise-md":["/component---src-pages-guides-application-logging-splunk-enterprise-md-75c73659c7c771c74940.js"],"component---src-pages-guides-application-state-md":["/component---src-pages-guides-application-state-md-cdd47de4c6079d7a779d.js"],"component---src-pages-guides-configuration-index-md":["/component---src-pages-guides-configuration-index-md-518ed5cd8602838e72e6.js"],"component---src-pages-guides-configuration-webpack-configuration-md":["/component---src-pages-guides-configuration-webpack-configuration-md-12d5fd03b560dd5c030c.js"],"component---src-pages-guides-contribution-guides-index-md":["/component---src-pages-guides-contribution-guides-index-md-0105c12375a1ea8157b8.js"],"component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md":["/component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md-ae98ee5b7279877c033d.js"],"component---src-pages-guides-deployment-credential-rotation-md":["/component---src-pages-guides-deployment-credential-rotation-md-1c322abfc09c9f0216ed.js"],"component---src-pages-guides-deployment-index-md":["/component---src-pages-guides-deployment-index-md-0b91206fcab62b2fd73a.js"],"component---src-pages-guides-deployment-setting-response-headers-md":["/component---src-pages-guides-deployment-setting-response-headers-md-991da7b81ceaf46090c2.js"],"component---src-pages-guides-development-index-md":["/component---src-pages-guides-development-index-md-ba0e47b9e300a3bbb8de.js"],"component---src-pages-guides-distribution-index-md":["/component---src-pages-guides-distribution-index-md-d60f372ea2f4847cd127.js"],"component---src-pages-guides-distribution-private-md":["/component---src-pages-guides-distribution-private-md-bb44e5421d25df3fc198.js"],"component---src-pages-guides-distribution-public-md":["/component---src-pages-guides-distribution-public-md-e1911f05840dd003b75e.js"],"component---src-pages-guides-events-custom-events-md":["/component---src-pages-guides-events-custom-events-md-9f9348cf7cd303e544d6.js"],"component---src-pages-guides-events-webhooks-md":["/component---src-pages-guides-events-webhooks-md-bedf4d5612175c3e2a6b.js"],"component---src-pages-guides-exc-app-index-md":["/component---src-pages-guides-exc-app-index-md-784a940668cc5a09cc2c.js"],"component---src-pages-guides-exc-app-interfaces-index-md":["/component---src-pages-guides-exc-app-interfaces-index-md-9d8eee529728b7a19785.js"],"component---src-pages-guides-exc-app-interfaces-index-runtime-md":["/component---src-pages-guides-exc-app-interfaces-index-runtime-md-122a3e0e1c1c32cdcd55.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md-784a4cd22e6f8eea3f97.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md-ff53a924900563bd02e4.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapi-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapi-md-a67967ab519e3cba7e94.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md-e9097f8baa6264d401c5.js"],"component---src-pages-guides-exc-app-interfaces-topbar-callback-md":["/component---src-pages-guides-exc-app-interfaces-topbar-callback-md-b964e0d8f679e579f4fd.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md-6701e50b7f386406cde1.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md-3a640dfd9300c3191b21.js"],"component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md-2ede3fec155684444f30.js"],"component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md-f11d506f7ceac5ccaa52.js"],"component---src-pages-guides-exc-app-interfaces-topbar-solution-md":["/component---src-pages-guides-exc-app-interfaces-topbar-solution-md-d188806d44fc577ba711.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md-7c353933926a956b08ee.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md-bc42f320fd353a910004.js"],"component---src-pages-guides-exc-app-interfaces-user-userapi-md":["/component---src-pages-guides-exc-app-interfaces-user-userapi-md-430bb9475820c727f376.js"],"component---src-pages-guides-exc-app-interfaces-user-userinfo-md":["/component---src-pages-guides-exc-app-interfaces-user-userinfo-md-64e555b22cece068c3aa.js"],"component---src-pages-guides-exc-app-modules-index-md":["/component---src-pages-guides-exc-app-modules-index-md-4f226d91b7d574120dc2.js"],"component---src-pages-guides-exc-app-modules-page-md":["/component---src-pages-guides-exc-app-modules-page-md-b0c97e49e29b00a52493.js"],"component---src-pages-guides-exc-app-modules-topbar-md":["/component---src-pages-guides-exc-app-modules-topbar-md-66870a00b0e1c63f6c90.js"],"component---src-pages-guides-exc-app-modules-user-md":["/component---src-pages-guides-exc-app-modules-user-md-30da1f6a33cdceca488b.js"],"component---src-pages-guides-extensions-extension-migration-guide-md":["/component---src-pages-guides-extensions-extension-migration-guide-md-3433afa60d003e77b4a2.js"],"component---src-pages-guides-extensions-index-md":["/component---src-pages-guides-extensions-index-md-2820a3fbf5085f976103.js"],"component---src-pages-guides-extensions-ui-extensibility-md":["/component---src-pages-guides-extensions-ui-extensibility-md-70b5620535129800c671.js"],"component---src-pages-guides-index-md":["/component---src-pages-guides-index-md-23d777e9cf8d8d8d607f.js"],"component---src-pages-guides-introduction-to-react-spectrum-md":["/component---src-pages-guides-introduction-to-react-spectrum-md-65f101721c46d363026b.js"],"component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md":["/component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md-76016cd313d277b33b73.js"],"component---src-pages-guides-reference-documentation-index-md":["/component---src-pages-guides-reference-documentation-index-md-748da52cdb69509e135a.js"],"component---src-pages-guides-security-index-md":["/component---src-pages-guides-security-index-md-7bc0800f5d5e4108bc16.js"],"component---src-pages-guides-security-understanding-authentication-md":["/component---src-pages-guides-security-understanding-authentication-md-437302ab4822c9d7b42e.js"],"component---src-pages-guides-telemetry-md":["/component---src-pages-guides-telemetry-md-03fdd46dcc36b853a893.js"],"component---src-pages-guides-tips-tricks-md":["/component---src-pages-guides-tips-tricks-md-b7be511ac3f3c8b74b54.js"],"component---src-pages-guides-using-sdks-md":["/component---src-pages-guides-using-sdks-md-76c9e7351110967b6201.js"],"component---src-pages-overview-community-md":["/component---src-pages-overview-community-md-ca8914738c6436ec9fae.js"],"component---src-pages-overview-faq-md":["/component---src-pages-overview-faq-md-0ea869083f049832031d.js"],"component---src-pages-overview-firefly-and-runtime-md":["/component---src-pages-overview-firefly-and-runtime-md-363740f11048fa646542.js"],"component---src-pages-overview-getting-access-md":["/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js"],"component---src-pages-overview-how-it-works-md":["/component---src-pages-overview-how-it-works-md-0a899a5e4f304d7fbe02.js"],"component---src-pages-overview-index-md":["/component---src-pages-overview-index-md-e312e6a2d948c48ab09e.js"],"component---src-pages-resources-asset-compute-worker-ps-api-index-md":["/component---src-pages-resources-asset-compute-worker-ps-api-index-md-32f13bb686ace3b431b1.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md-cabb9e55964aeb34e196.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md-1b95b10f94951a3c436d.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md-329425e1ac48c5a069bc.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md-5c125d78fa9ad03cf6c2.js"],"component---src-pages-resources-asset-compute-worker-ps-api-requirements-md":["/component---src-pages-resources-asset-compute-worker-ps-api-requirements-md-2b0d9262b95f9e85c199.js"],"component---src-pages-resources-asset-compute-worker-ps-api-welldone-md":["/component---src-pages-resources-asset-compute-worker-ps-api-welldone-md-cd28014a890a95bc05f9.js"],"component---src-pages-resources-barcode-reader-barcode-md":["/component---src-pages-resources-barcode-reader-barcode-md-186f8b2137f84641964f.js"],"component---src-pages-resources-barcode-reader-bootstrap-md":["/component---src-pages-resources-barcode-reader-bootstrap-md-9521f6636e077bc18837.js"],"component---src-pages-resources-barcode-reader-index-md":["/component---src-pages-resources-barcode-reader-index-md-a1b0bcd61092d946c108.js"],"component---src-pages-resources-barcode-reader-requirements-md":["/component---src-pages-resources-barcode-reader-requirements-md-1441a6da691226935850.js"],"component---src-pages-resources-barcode-reader-test-md":["/component---src-pages-resources-barcode-reader-test-md-7b9572f37c3ae113fe2d.js"],"component---src-pages-resources-barcode-reader-welldone-md":["/component---src-pages-resources-barcode-reader-welldone-md-08ba9c20b6a21d4738a8.js"],"component---src-pages-resources-blog-articles-md":["/component---src-pages-resources-blog-articles-md-e6074b1927cfa03e5d03.js"],"component---src-pages-resources-ci-cd-index-md":["/component---src-pages-resources-ci-cd-index-md-c8e5113dc46e92dffe95.js"],"component---src-pages-resources-ci-cd-lesson-1-md":["/component---src-pages-resources-ci-cd-lesson-1-md-49e88f25479c9e9d6800.js"],"component---src-pages-resources-ci-cd-lesson-2-md":["/component---src-pages-resources-ci-cd-lesson-2-md-d9e24c98097332d31b22.js"],"component---src-pages-resources-ci-cd-lesson-3-md":["/component---src-pages-resources-ci-cd-lesson-3-md-db130b0ddae3e6d3f35a.js"],"component---src-pages-resources-ci-cd-requirements-md":["/component---src-pages-resources-ci-cd-requirements-md-cdd558c79395898b61b3.js"],"component---src-pages-resources-ci-cd-welldone-md":["/component---src-pages-resources-ci-cd-welldone-md-e3f352b55563968e627a.js"],"component---src-pages-resources-cron-jobs-index-md":["/component---src-pages-resources-cron-jobs-index-md-7f89c5512495918c05a6.js"],"component---src-pages-resources-cron-jobs-lesson-1-md":["/component---src-pages-resources-cron-jobs-lesson-1-md-9409579d14c5dd0904db.js"],"component---src-pages-resources-cron-jobs-lesson-2-md":["/component---src-pages-resources-cron-jobs-lesson-2-md-85e0dda5abf8f9f5aa23.js"],"component---src-pages-resources-cron-jobs-lesson-3-md":["/component---src-pages-resources-cron-jobs-lesson-3-md-961925e6e88974f76e7d.js"],"component---src-pages-resources-cron-jobs-requirements-md":["/component---src-pages-resources-cron-jobs-requirements-md-e361641480c565fee49e.js"],"component---src-pages-resources-cron-jobs-welldone-md":["/component---src-pages-resources-cron-jobs-welldone-md-3a9a52b0bde1fa04ca64.js"],"component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md":["/component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md-701efcaaf4f7ecef99e8.js"],"component---src-pages-resources-custom-asset-compute-worker-index-md":["/component---src-pages-resources-custom-asset-compute-worker-index-md-45b05ccbe27fb1a6ae58.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-1-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-1-md-e82aaef898f1d677bb5d.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-2-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-2-md-277fdee99fa2a4c8e43a.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-3-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-3-md-ace00ebafe6da928ac09.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-4-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-4-md-aeb8067da5b0593b52d7.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-5-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js"],"component---src-pages-resources-custom-asset-compute-worker-our-worker-md":["/component---src-pages-resources-custom-asset-compute-worker-our-worker-md-b60a27296e901d8dbd8d.js"],"component---src-pages-resources-custom-asset-compute-worker-requirements-md":["/component---src-pages-resources-custom-asset-compute-worker-requirements-md-e64918cfdca252cfc65b.js"],"component---src-pages-resources-custom-asset-compute-worker-welldone-md":["/component---src-pages-resources-custom-asset-compute-worker-welldone-md-3a48e15a72aab5109734.js"],"component---src-pages-resources-customer-dashboard-index-md":["/component---src-pages-resources-customer-dashboard-index-md-74325c934ec263f79e8a.js"],"component---src-pages-resources-customer-dashboard-lesson-1-md":["/component---src-pages-resources-customer-dashboard-lesson-1-md-4d4c1719ef3b46d46c74.js"],"component---src-pages-resources-customer-dashboard-lesson-2-md":["/component---src-pages-resources-customer-dashboard-lesson-2-md-65dd5459b94acfd6dabd.js"],"component---src-pages-resources-customer-dashboard-lesson-3-md":["/component---src-pages-resources-customer-dashboard-lesson-3-md-dec0cdd5a2e117b08df9.js"],"component---src-pages-resources-customer-dashboard-lesson-4-md":["/component---src-pages-resources-customer-dashboard-lesson-4-md-05e221b170026fabbf1e.js"],"component---src-pages-resources-customer-dashboard-lesson-5-md":["/component---src-pages-resources-customer-dashboard-lesson-5-md-d2edc493ee062f06b7da.js"],"component---src-pages-resources-customer-dashboard-requirements-md":["/component---src-pages-resources-customer-dashboard-requirements-md-cfe913380bfe910baec5.js"],"component---src-pages-resources-customer-dashboard-welldone-md":["/component---src-pages-resources-customer-dashboard-welldone-md-76e7e421096c568ad613.js"],"component---src-pages-resources-debugging-index-md":["/component---src-pages-resources-debugging-index-md-3e7225f5932e967ec118.js"],"component---src-pages-resources-debugging-lesson-1-md":["/component---src-pages-resources-debugging-lesson-1-md-312d881c097a10d405c2.js"],"component---src-pages-resources-debugging-lesson-2-md":["/component---src-pages-resources-debugging-lesson-2-md-65b79a91814522d23da6.js"],"component---src-pages-resources-debugging-lesson-3-md":["/component---src-pages-resources-debugging-lesson-3-md-3ca5b2f139b98e84ef46.js"],"component---src-pages-resources-debugging-requirements-md":["/component---src-pages-resources-debugging-requirements-md-6736bf12d6bbeb1f2a06.js"],"component---src-pages-resources-debugging-welldone-md":["/component---src-pages-resources-debugging-welldone-md-b31cfebaaeb8eeccfccc.js"],"component---src-pages-resources-event-driven-index-md":["/component---src-pages-resources-event-driven-index-md-fb16543eae8475287d95.js"],"component---src-pages-resources-event-driven-lesson-1-md":["/component---src-pages-resources-event-driven-lesson-1-md-d9cd3c7a02f50ed3010c.js"],"component---src-pages-resources-event-driven-lesson-2-md":["/component---src-pages-resources-event-driven-lesson-2-md-52375f09c89df8f0329f.js"],"component---src-pages-resources-event-driven-lesson-3-md":["/component---src-pages-resources-event-driven-lesson-3-md-b250d176fe7ec5ccf8ce.js"],"component---src-pages-resources-event-driven-lesson-4-md":["/component---src-pages-resources-event-driven-lesson-4-md-aa6abd539bf9e8a0fa6f.js"],"component---src-pages-resources-event-driven-requirements-md":["/component---src-pages-resources-event-driven-requirements-md-f4be671d3fb58ae75d76.js"],"component---src-pages-resources-event-driven-welldone-md":["/component---src-pages-resources-event-driven-welldone-md-1e16d48419b5953c5cb9.js"],"component---src-pages-resources-events-runtime-index-md":["/component---src-pages-resources-events-runtime-index-md-6a637359adf514a2384d.js"],"component---src-pages-resources-events-runtime-lesson-1-md":["/component---src-pages-resources-events-runtime-lesson-1-md-75ec6648c317e5c6b0fc.js"],"component---src-pages-resources-events-runtime-lesson-2-md":["/component---src-pages-resources-events-runtime-lesson-2-md-15c71750218c486dc22c.js"],"component---src-pages-resources-events-runtime-requirements-md":["/component---src-pages-resources-events-runtime-requirements-md-4445f0d4efb01d5fff6f.js"],"component---src-pages-resources-events-runtime-welldone-md":["/component---src-pages-resources-events-runtime-welldone-md-c3ee017479ebdf5de561.js"],"component---src-pages-resources-index-md":["/component---src-pages-resources-index-md-b2c1a1c0842ae7f045ef.js"],"component---src-pages-resources-journaling-events-index-md":["/component---src-pages-resources-journaling-events-index-md-19686602b0f07e21d5ed.js"],"component---src-pages-resources-journaling-events-lesson-1-md":["/component---src-pages-resources-journaling-events-lesson-1-md-2c48bff053703a6c6905.js"],"component---src-pages-resources-journaling-events-lesson-2-md":["/component---src-pages-resources-journaling-events-lesson-2-md-05f28e1b8b5195e597d0.js"],"component---src-pages-resources-journaling-events-lesson-3-md":["/component---src-pages-resources-journaling-events-lesson-3-md-8566781d4f6eb04dbda9.js"],"component---src-pages-resources-journaling-events-requirements-md":["/component---src-pages-resources-journaling-events-requirements-md-c88f8e55b6e521ea65e7.js"],"component---src-pages-resources-journaling-events-welldone-md":["/component---src-pages-resources-journaling-events-welldone-md-0e6f9b427d4cc0575a77.js"],"component---src-pages-resources-sample-apps-code-snippets-analytics-md":["/component---src-pages-resources-sample-apps-code-snippets-analytics-md-5f65b2f92f17cdfcaa35.js"],"component---src-pages-resources-sample-apps-code-snippets-events-md":["/component---src-pages-resources-sample-apps-code-snippets-events-md-9574b5710ca5a047a69a.js"],"component---src-pages-resources-sample-apps-code-snippets-files-md":["/component---src-pages-resources-sample-apps-code-snippets-files-md-adc9e8f6be74df4f2a16.js"],"component---src-pages-resources-sample-apps-code-snippets-index-md":["/component---src-pages-resources-sample-apps-code-snippets-index-md-54c254755f8d697d3355.js"],"component---src-pages-resources-sample-apps-code-snippets-state-md":["/component---src-pages-resources-sample-apps-code-snippets-state-md-3eb29ca55b874ea4e968.js"],"component---src-pages-resources-sample-apps-demo-md":["/component---src-pages-resources-sample-apps-demo-md-3c63a5c1e0c933f221a3.js"],"component---src-pages-resources-sample-apps-index-md":["/component---src-pages-resources-sample-apps-index-md-0cb3c5625603e7bf9e7e.js"],"component---src-pages-resources-spectrum-intro-index-md":["/component---src-pages-resources-spectrum-intro-index-md-f195bd7a5cb6e9a0099d.js"],"component---src-pages-resources-spectrum-intro-lesson-1-md":["/component---src-pages-resources-spectrum-intro-lesson-1-md-5fbf1c02c312dc1f71c3.js"],"component---src-pages-resources-spectrum-intro-lesson-2-md":["/component---src-pages-resources-spectrum-intro-lesson-2-md-5b1fe4f172a1ef1f7145.js"],"component---src-pages-resources-spectrum-intro-lesson-3-md":["/component---src-pages-resources-spectrum-intro-lesson-3-md-e931836db27bdfd93956.js"],"component---src-pages-resources-spectrum-intro-lesson-4-md":["/component---src-pages-resources-spectrum-intro-lesson-4-md-3edd55ee76309d1ac6c9.js"],"component---src-pages-resources-spectrum-intro-requirements-md":["/component---src-pages-resources-spectrum-intro-requirements-md-3df99d4649ee5690e41b.js"],"component---src-pages-resources-spectrum-intro-welldone-md":["/component---src-pages-resources-spectrum-intro-welldone-md-f10cc750fbc019acf112.js"],"component---src-pages-resources-todo-app-index-md":["/component---src-pages-resources-todo-app-index-md-6b8122b188baae344f86.js"],"component---src-pages-resources-todo-app-lesson-1-md":["/component---src-pages-resources-todo-app-lesson-1-md-f1070bdf2a69b5a3daf1.js"],"component---src-pages-resources-todo-app-lesson-2-md":["/component---src-pages-resources-todo-app-lesson-2-md-be74b0aafba06e08b1d4.js"],"component---src-pages-resources-todo-app-lesson-3-md":["/component---src-pages-resources-todo-app-lesson-3-md-3eb878fff1f1e0bfdbfd.js"],"component---src-pages-resources-todo-app-lesson-4-md":["/component---src-pages-resources-todo-app-lesson-4-md-14cd70628d5f269ce65a.js"],"component---src-pages-resources-todo-app-lesson-5-md":["/component---src-pages-resources-todo-app-lesson-5-md-0f99a69cda202c1cf2f2.js"],"component---src-pages-resources-todo-app-lesson-6-md":["/component---src-pages-resources-todo-app-lesson-6-md-62db9344545908c0b9c7.js"],"component---src-pages-resources-todo-app-requirements-md":["/component---src-pages-resources-todo-app-requirements-md-c75ad368418a1559ad4b.js"],"component---src-pages-resources-todo-app-welldone-md":["/component---src-pages-resources-todo-app-welldone-md-17a80e5958a71b635e4b.js"],"component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md":["/component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md-a6f5bb534104ff0f9d81.js"],"component---src-pages-resources-videos-developers-live-deep-dive-md":["/component---src-pages-resources-videos-developers-live-deep-dive-md-13b96a3284411b567eff.js"],"component---src-pages-resources-videos-developers-live-extend-experience-cloud-md":["/component---src-pages-resources-videos-developers-live-extend-experience-cloud-md-c5a72b3fe61e9a17b681.js"],"component---src-pages-resources-videos-exploring-ci-cd-md":["/component---src-pages-resources-videos-exploring-ci-cd-md-35b37eae4f5bead66e0a.js"],"component---src-pages-resources-videos-exploring-custom-events-md":["/component---src-pages-resources-videos-exploring-custom-events-md-be2bd7ac7d90c0f1d7c4.js"],"component---src-pages-resources-videos-exploring-dashboard-case-study-md":["/component---src-pages-resources-videos-exploring-dashboard-case-study-md-26843d8e7bc12cbec7bf.js"],"component---src-pages-resources-videos-exploring-debugging-md":["/component---src-pages-resources-videos-exploring-debugging-md-c1dcec6216923213f748.js"],"component---src-pages-resources-videos-exploring-deep-dive-use-cases-md":["/component---src-pages-resources-videos-exploring-deep-dive-use-cases-md-9ed9da611db5de2e997d.js"],"component---src-pages-resources-videos-exploring-learning-resources-md":["/component---src-pages-resources-videos-exploring-learning-resources-md-524e3d96652ed6017adc.js"],"component---src-pages-resources-videos-exploring-live-wired-sneak-md":["/component---src-pages-resources-videos-exploring-live-wired-sneak-md-ded5e1eff8eb72636d3c.js"],"component---src-pages-resources-videos-exploring-ode-case-study-md":["/component---src-pages-resources-videos-exploring-ode-case-study-md-4d9940dc9281076c484f.js"],"component---src-pages-resources-videos-exploring-projects-and-workspaces-md":["/component---src-pages-resources-videos-exploring-projects-and-workspaces-md-7d03d08697f1defd4f53.js"],"component---src-pages-resources-videos-exploring-react-spectrum-md":["/component---src-pages-resources-videos-exploring-react-spectrum-md-aa9c118a44ac3d328a38.js"],"component---src-pages-resources-videos-exploring-softcrylic-showcase-md":["/component---src-pages-resources-videos-exploring-softcrylic-showcase-md-c28fa74d9c6062c7dee8.js"],"component---src-pages-resources-videos-index-md":["/component---src-pages-resources-videos-index-md-407eebad1752452472cb.js"],"component---src-pages-resources-videos-overview-architecture-md":["/component---src-pages-resources-videos-overview-architecture-md-25b3b9adc2a5f59bfb73.js"],"component---src-pages-resources-videos-overview-e-2-e-user-journey-md":["/component---src-pages-resources-videos-overview-e-2-e-user-journey-md-d6803bc1097239885290.js"],"component---src-pages-resources-videos-overview-getting-started-md":["/component---src-pages-resources-videos-overview-getting-started-md-4c73157b68b44aaeef2f.js"],"component---src-pages-resources-videos-overview-introduction-md":["/component---src-pages-resources-videos-overview-introduction-md-2db8e902b8b7a7c44aa3.js"],"component---src-pages-resources-videos-overview-security-md":["/component---src-pages-resources-videos-overview-security-md-e61ae0df14f68cd88380.js"]} \ No newline at end of file +{"app":["/app-6c7561cede6de74d17ad.js"],"component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md":["/component---node-modules-adobe-gatsby-theme-aio-src-pages-404-md-e8287b7ee1e877d41721.js"],"component---src-pages-getting-started-common-troubleshooting-md":["/component---src-pages-getting-started-common-troubleshooting-md-56eeea4c2ebf3eaa29fd.js"],"component---src-pages-getting-started-first-app-md":["/component---src-pages-getting-started-first-app-md-a275e6843c3be27b1a62.js"],"component---src-pages-getting-started-index-md":["/component---src-pages-getting-started-index-md-67f0bb99c4b391d437e6.js"],"component---src-pages-getting-started-publish-app-md":["/component---src-pages-getting-started-publish-app-md-80069dbdc154384390af.js"],"component---src-pages-guides-app-hooks-md":["/component---src-pages-guides-app-hooks-md-651dfac8b673be713bc4.js"],"component---src-pages-guides-application-logging-azure-log-analytics-md":["/component---src-pages-guides-application-logging-azure-log-analytics-md-968dc7a663059e2057c7.js"],"component---src-pages-guides-application-logging-index-md":["/component---src-pages-guides-application-logging-index-md-5457d259a683db121834.js"],"component---src-pages-guides-application-logging-new-relic-md":["/component---src-pages-guides-application-logging-new-relic-md-0bd4b50b02725f4b1d7c.js"],"component---src-pages-guides-application-logging-splunk-cloud-md":["/component---src-pages-guides-application-logging-splunk-cloud-md-59307f947f76305d80bd.js"],"component---src-pages-guides-application-logging-splunk-enterprise-md":["/component---src-pages-guides-application-logging-splunk-enterprise-md-75c73659c7c771c74940.js"],"component---src-pages-guides-application-state-md":["/component---src-pages-guides-application-state-md-cdd47de4c6079d7a779d.js"],"component---src-pages-guides-configuration-index-md":["/component---src-pages-guides-configuration-index-md-518ed5cd8602838e72e6.js"],"component---src-pages-guides-configuration-webpack-configuration-md":["/component---src-pages-guides-configuration-webpack-configuration-md-12d5fd03b560dd5c030c.js"],"component---src-pages-guides-contribution-guides-index-md":["/component---src-pages-guides-contribution-guides-index-md-0105c12375a1ea8157b8.js"],"component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md":["/component---src-pages-guides-deployment-ci-cd-for-firefly-apps-md-ae98ee5b7279877c033d.js"],"component---src-pages-guides-deployment-credential-rotation-md":["/component---src-pages-guides-deployment-credential-rotation-md-1c322abfc09c9f0216ed.js"],"component---src-pages-guides-deployment-index-md":["/component---src-pages-guides-deployment-index-md-0b91206fcab62b2fd73a.js"],"component---src-pages-guides-deployment-setting-response-headers-md":["/component---src-pages-guides-deployment-setting-response-headers-md-991da7b81ceaf46090c2.js"],"component---src-pages-guides-development-index-md":["/component---src-pages-guides-development-index-md-ba0e47b9e300a3bbb8de.js"],"component---src-pages-guides-distribution-index-md":["/component---src-pages-guides-distribution-index-md-d60f372ea2f4847cd127.js"],"component---src-pages-guides-distribution-private-md":["/component---src-pages-guides-distribution-private-md-bb44e5421d25df3fc198.js"],"component---src-pages-guides-distribution-public-md":["/component---src-pages-guides-distribution-public-md-e1911f05840dd003b75e.js"],"component---src-pages-guides-events-custom-events-md":["/component---src-pages-guides-events-custom-events-md-9f9348cf7cd303e544d6.js"],"component---src-pages-guides-events-webhooks-md":["/component---src-pages-guides-events-webhooks-md-bedf4d5612175c3e2a6b.js"],"component---src-pages-guides-exc-app-index-md":["/component---src-pages-guides-exc-app-index-md-784a940668cc5a09cc2c.js"],"component---src-pages-guides-exc-app-interfaces-index-md":["/component---src-pages-guides-exc-app-interfaces-index-md-9d8eee529728b7a19785.js"],"component---src-pages-guides-exc-app-interfaces-index-runtime-md":["/component---src-pages-guides-exc-app-interfaces-index-runtime-md-122a3e0e1c1c32cdcd55.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithhref-md-784a4cd22e6f8eea3f97.js"],"component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md":["/component---src-pages-guides-exc-app-interfaces-page-objectwithpath-md-ff53a924900563bd02e4.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapi-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapi-md-a67967ab519e3cba7e94.js"],"component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-page-pageapiproperties-md-e9097f8baa6264d401c5.js"],"component---src-pages-guides-exc-app-interfaces-topbar-callback-md":["/component---src-pages-guides-exc-app-interfaces-topbar-callback-md-b964e0d8f679e579f4fd.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customfeedbackconfig-md-6701e50b7f386406cde1.js"],"component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-customsearchconfig-md-3a640dfd9300c3191b21.js"],"component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-externalfeedbackconfig-md-2ede3fec155684444f30.js"],"component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md":["/component---src-pages-guides-exc-app-interfaces-topbar-helpcenterfeedbackconfig-md-f11d506f7ceac5ccaa52.js"],"component---src-pages-guides-exc-app-interfaces-topbar-solution-md":["/component---src-pages-guides-exc-app-interfaces-topbar-solution-md-d188806d44fc577ba711.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapi-md-7c353933926a956b08ee.js"],"component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md":["/component---src-pages-guides-exc-app-interfaces-topbar-topbarapiproperties-md-bc42f320fd353a910004.js"],"component---src-pages-guides-exc-app-interfaces-user-userapi-md":["/component---src-pages-guides-exc-app-interfaces-user-userapi-md-430bb9475820c727f376.js"],"component---src-pages-guides-exc-app-interfaces-user-userinfo-md":["/component---src-pages-guides-exc-app-interfaces-user-userinfo-md-64e555b22cece068c3aa.js"],"component---src-pages-guides-exc-app-modules-index-md":["/component---src-pages-guides-exc-app-modules-index-md-4f226d91b7d574120dc2.js"],"component---src-pages-guides-exc-app-modules-page-md":["/component---src-pages-guides-exc-app-modules-page-md-b0c97e49e29b00a52493.js"],"component---src-pages-guides-exc-app-modules-topbar-md":["/component---src-pages-guides-exc-app-modules-topbar-md-66870a00b0e1c63f6c90.js"],"component---src-pages-guides-exc-app-modules-user-md":["/component---src-pages-guides-exc-app-modules-user-md-30da1f6a33cdceca488b.js"],"component---src-pages-guides-extensions-extension-migration-guide-md":["/component---src-pages-guides-extensions-extension-migration-guide-md-3433afa60d003e77b4a2.js"],"component---src-pages-guides-extensions-index-md":["/component---src-pages-guides-extensions-index-md-2820a3fbf5085f976103.js"],"component---src-pages-guides-extensions-ui-extensibility-md":["/component---src-pages-guides-extensions-ui-extensibility-md-70b5620535129800c671.js"],"component---src-pages-guides-index-md":["/component---src-pages-guides-index-md-23d777e9cf8d8d8d607f.js"],"component---src-pages-guides-introduction-to-react-spectrum-md":["/component---src-pages-guides-introduction-to-react-spectrum-md-65f101721c46d363026b.js"],"component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md":["/component---src-pages-guides-migrations-standalone-to-dx-experience-cloud-spa-md-76016cd313d277b33b73.js"],"component---src-pages-guides-reference-documentation-index-md":["/component---src-pages-guides-reference-documentation-index-md-748da52cdb69509e135a.js"],"component---src-pages-guides-security-index-md":["/component---src-pages-guides-security-index-md-7bc0800f5d5e4108bc16.js"],"component---src-pages-guides-security-understanding-authentication-md":["/component---src-pages-guides-security-understanding-authentication-md-437302ab4822c9d7b42e.js"],"component---src-pages-guides-telemetry-md":["/component---src-pages-guides-telemetry-md-03fdd46dcc36b853a893.js"],"component---src-pages-guides-tips-tricks-md":["/component---src-pages-guides-tips-tricks-md-b7be511ac3f3c8b74b54.js"],"component---src-pages-guides-using-sdks-md":["/component---src-pages-guides-using-sdks-md-76c9e7351110967b6201.js"],"component---src-pages-overview-community-md":["/component---src-pages-overview-community-md-ca8914738c6436ec9fae.js"],"component---src-pages-overview-faq-md":["/component---src-pages-overview-faq-md-0ea869083f049832031d.js"],"component---src-pages-overview-firefly-and-runtime-md":["/component---src-pages-overview-firefly-and-runtime-md-363740f11048fa646542.js"],"component---src-pages-overview-getting-access-md":["/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js"],"component---src-pages-overview-how-it-works-md":["/component---src-pages-overview-how-it-works-md-0a899a5e4f304d7fbe02.js"],"component---src-pages-overview-index-md":["/component---src-pages-overview-index-md-e312e6a2d948c48ab09e.js"],"component---src-pages-resources-asset-compute-worker-ps-api-index-md":["/component---src-pages-resources-asset-compute-worker-ps-api-index-md-32f13bb686ace3b431b1.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-1-md-cabb9e55964aeb34e196.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-2-md-1b95b10f94951a3c436d.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-3-md-329425e1ac48c5a069bc.js"],"component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md":["/component---src-pages-resources-asset-compute-worker-ps-api-lesson-4-md-5c125d78fa9ad03cf6c2.js"],"component---src-pages-resources-asset-compute-worker-ps-api-requirements-md":["/component---src-pages-resources-asset-compute-worker-ps-api-requirements-md-2b0d9262b95f9e85c199.js"],"component---src-pages-resources-asset-compute-worker-ps-api-welldone-md":["/component---src-pages-resources-asset-compute-worker-ps-api-welldone-md-cd28014a890a95bc05f9.js"],"component---src-pages-resources-barcode-reader-barcode-md":["/component---src-pages-resources-barcode-reader-barcode-md-186f8b2137f84641964f.js"],"component---src-pages-resources-barcode-reader-bootstrap-md":["/component---src-pages-resources-barcode-reader-bootstrap-md-9521f6636e077bc18837.js"],"component---src-pages-resources-barcode-reader-index-md":["/component---src-pages-resources-barcode-reader-index-md-a1b0bcd61092d946c108.js"],"component---src-pages-resources-barcode-reader-requirements-md":["/component---src-pages-resources-barcode-reader-requirements-md-1441a6da691226935850.js"],"component---src-pages-resources-barcode-reader-test-md":["/component---src-pages-resources-barcode-reader-test-md-7b9572f37c3ae113fe2d.js"],"component---src-pages-resources-barcode-reader-welldone-md":["/component---src-pages-resources-barcode-reader-welldone-md-08ba9c20b6a21d4738a8.js"],"component---src-pages-resources-blog-articles-md":["/component---src-pages-resources-blog-articles-md-e6074b1927cfa03e5d03.js"],"component---src-pages-resources-ci-cd-index-md":["/component---src-pages-resources-ci-cd-index-md-c8e5113dc46e92dffe95.js"],"component---src-pages-resources-ci-cd-lesson-1-md":["/component---src-pages-resources-ci-cd-lesson-1-md-49e88f25479c9e9d6800.js"],"component---src-pages-resources-ci-cd-lesson-2-md":["/component---src-pages-resources-ci-cd-lesson-2-md-d9e24c98097332d31b22.js"],"component---src-pages-resources-ci-cd-lesson-3-md":["/component---src-pages-resources-ci-cd-lesson-3-md-db130b0ddae3e6d3f35a.js"],"component---src-pages-resources-ci-cd-requirements-md":["/component---src-pages-resources-ci-cd-requirements-md-cdd558c79395898b61b3.js"],"component---src-pages-resources-ci-cd-welldone-md":["/component---src-pages-resources-ci-cd-welldone-md-e3f352b55563968e627a.js"],"component---src-pages-resources-cron-jobs-index-md":["/component---src-pages-resources-cron-jobs-index-md-7f89c5512495918c05a6.js"],"component---src-pages-resources-cron-jobs-lesson-1-md":["/component---src-pages-resources-cron-jobs-lesson-1-md-9409579d14c5dd0904db.js"],"component---src-pages-resources-cron-jobs-lesson-2-md":["/component---src-pages-resources-cron-jobs-lesson-2-md-85e0dda5abf8f9f5aa23.js"],"component---src-pages-resources-cron-jobs-lesson-3-md":["/component---src-pages-resources-cron-jobs-lesson-3-md-961925e6e88974f76e7d.js"],"component---src-pages-resources-cron-jobs-requirements-md":["/component---src-pages-resources-cron-jobs-requirements-md-e361641480c565fee49e.js"],"component---src-pages-resources-cron-jobs-welldone-md":["/component---src-pages-resources-cron-jobs-welldone-md-3a9a52b0bde1fa04ca64.js"],"component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md":["/component---src-pages-resources-custom-asset-compute-worker-aem-cloud-assets-md-701efcaaf4f7ecef99e8.js"],"component---src-pages-resources-custom-asset-compute-worker-index-md":["/component---src-pages-resources-custom-asset-compute-worker-index-md-45b05ccbe27fb1a6ae58.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-1-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-1-md-e82aaef898f1d677bb5d.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-2-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-2-md-277fdee99fa2a4c8e43a.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-3-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-3-md-ace00ebafe6da928ac09.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-4-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-4-md-aeb8067da5b0593b52d7.js"],"component---src-pages-resources-custom-asset-compute-worker-lesson-5-md":["/component---src-pages-resources-custom-asset-compute-worker-lesson-5-md-37c1cfe965d9bd5b5edc.js"],"component---src-pages-resources-custom-asset-compute-worker-our-worker-md":["/component---src-pages-resources-custom-asset-compute-worker-our-worker-md-b60a27296e901d8dbd8d.js"],"component---src-pages-resources-custom-asset-compute-worker-requirements-md":["/component---src-pages-resources-custom-asset-compute-worker-requirements-md-e64918cfdca252cfc65b.js"],"component---src-pages-resources-custom-asset-compute-worker-welldone-md":["/component---src-pages-resources-custom-asset-compute-worker-welldone-md-3a48e15a72aab5109734.js"],"component---src-pages-resources-customer-dashboard-index-md":["/component---src-pages-resources-customer-dashboard-index-md-74325c934ec263f79e8a.js"],"component---src-pages-resources-customer-dashboard-lesson-1-md":["/component---src-pages-resources-customer-dashboard-lesson-1-md-4d4c1719ef3b46d46c74.js"],"component---src-pages-resources-customer-dashboard-lesson-2-md":["/component---src-pages-resources-customer-dashboard-lesson-2-md-65dd5459b94acfd6dabd.js"],"component---src-pages-resources-customer-dashboard-lesson-3-md":["/component---src-pages-resources-customer-dashboard-lesson-3-md-dec0cdd5a2e117b08df9.js"],"component---src-pages-resources-customer-dashboard-lesson-4-md":["/component---src-pages-resources-customer-dashboard-lesson-4-md-05e221b170026fabbf1e.js"],"component---src-pages-resources-customer-dashboard-lesson-5-md":["/component---src-pages-resources-customer-dashboard-lesson-5-md-d2edc493ee062f06b7da.js"],"component---src-pages-resources-customer-dashboard-requirements-md":["/component---src-pages-resources-customer-dashboard-requirements-md-cfe913380bfe910baec5.js"],"component---src-pages-resources-customer-dashboard-welldone-md":["/component---src-pages-resources-customer-dashboard-welldone-md-76e7e421096c568ad613.js"],"component---src-pages-resources-debugging-index-md":["/component---src-pages-resources-debugging-index-md-3e7225f5932e967ec118.js"],"component---src-pages-resources-debugging-lesson-1-md":["/component---src-pages-resources-debugging-lesson-1-md-312d881c097a10d405c2.js"],"component---src-pages-resources-debugging-lesson-2-md":["/component---src-pages-resources-debugging-lesson-2-md-65b79a91814522d23da6.js"],"component---src-pages-resources-debugging-lesson-3-md":["/component---src-pages-resources-debugging-lesson-3-md-3ca5b2f139b98e84ef46.js"],"component---src-pages-resources-debugging-requirements-md":["/component---src-pages-resources-debugging-requirements-md-6736bf12d6bbeb1f2a06.js"],"component---src-pages-resources-debugging-welldone-md":["/component---src-pages-resources-debugging-welldone-md-b31cfebaaeb8eeccfccc.js"],"component---src-pages-resources-event-driven-index-md":["/component---src-pages-resources-event-driven-index-md-fb16543eae8475287d95.js"],"component---src-pages-resources-event-driven-lesson-1-md":["/component---src-pages-resources-event-driven-lesson-1-md-d9cd3c7a02f50ed3010c.js"],"component---src-pages-resources-event-driven-lesson-2-md":["/component---src-pages-resources-event-driven-lesson-2-md-52375f09c89df8f0329f.js"],"component---src-pages-resources-event-driven-lesson-3-md":["/component---src-pages-resources-event-driven-lesson-3-md-b250d176fe7ec5ccf8ce.js"],"component---src-pages-resources-event-driven-lesson-4-md":["/component---src-pages-resources-event-driven-lesson-4-md-aa6abd539bf9e8a0fa6f.js"],"component---src-pages-resources-event-driven-requirements-md":["/component---src-pages-resources-event-driven-requirements-md-f4be671d3fb58ae75d76.js"],"component---src-pages-resources-event-driven-welldone-md":["/component---src-pages-resources-event-driven-welldone-md-1e16d48419b5953c5cb9.js"],"component---src-pages-resources-events-runtime-index-md":["/component---src-pages-resources-events-runtime-index-md-6a637359adf514a2384d.js"],"component---src-pages-resources-events-runtime-lesson-1-md":["/component---src-pages-resources-events-runtime-lesson-1-md-75ec6648c317e5c6b0fc.js"],"component---src-pages-resources-events-runtime-lesson-2-md":["/component---src-pages-resources-events-runtime-lesson-2-md-15c71750218c486dc22c.js"],"component---src-pages-resources-events-runtime-requirements-md":["/component---src-pages-resources-events-runtime-requirements-md-4445f0d4efb01d5fff6f.js"],"component---src-pages-resources-events-runtime-welldone-md":["/component---src-pages-resources-events-runtime-welldone-md-c3ee017479ebdf5de561.js"],"component---src-pages-resources-index-md":["/component---src-pages-resources-index-md-b2c1a1c0842ae7f045ef.js"],"component---src-pages-resources-journaling-events-index-md":["/component---src-pages-resources-journaling-events-index-md-19686602b0f07e21d5ed.js"],"component---src-pages-resources-journaling-events-lesson-1-md":["/component---src-pages-resources-journaling-events-lesson-1-md-2c48bff053703a6c6905.js"],"component---src-pages-resources-journaling-events-lesson-2-md":["/component---src-pages-resources-journaling-events-lesson-2-md-05f28e1b8b5195e597d0.js"],"component---src-pages-resources-journaling-events-lesson-3-md":["/component---src-pages-resources-journaling-events-lesson-3-md-8566781d4f6eb04dbda9.js"],"component---src-pages-resources-journaling-events-requirements-md":["/component---src-pages-resources-journaling-events-requirements-md-c88f8e55b6e521ea65e7.js"],"component---src-pages-resources-journaling-events-welldone-md":["/component---src-pages-resources-journaling-events-welldone-md-0e6f9b427d4cc0575a77.js"],"component---src-pages-resources-sample-apps-code-snippets-analytics-md":["/component---src-pages-resources-sample-apps-code-snippets-analytics-md-5f65b2f92f17cdfcaa35.js"],"component---src-pages-resources-sample-apps-code-snippets-events-md":["/component---src-pages-resources-sample-apps-code-snippets-events-md-9574b5710ca5a047a69a.js"],"component---src-pages-resources-sample-apps-code-snippets-files-md":["/component---src-pages-resources-sample-apps-code-snippets-files-md-adc9e8f6be74df4f2a16.js"],"component---src-pages-resources-sample-apps-code-snippets-index-md":["/component---src-pages-resources-sample-apps-code-snippets-index-md-54c254755f8d697d3355.js"],"component---src-pages-resources-sample-apps-code-snippets-state-md":["/component---src-pages-resources-sample-apps-code-snippets-state-md-3eb29ca55b874ea4e968.js"],"component---src-pages-resources-sample-apps-demo-md":["/component---src-pages-resources-sample-apps-demo-md-3c63a5c1e0c933f221a3.js"],"component---src-pages-resources-sample-apps-index-md":["/component---src-pages-resources-sample-apps-index-md-0cb3c5625603e7bf9e7e.js"],"component---src-pages-resources-spectrum-intro-index-md":["/component---src-pages-resources-spectrum-intro-index-md-f195bd7a5cb6e9a0099d.js"],"component---src-pages-resources-spectrum-intro-lesson-1-md":["/component---src-pages-resources-spectrum-intro-lesson-1-md-5fbf1c02c312dc1f71c3.js"],"component---src-pages-resources-spectrum-intro-lesson-2-md":["/component---src-pages-resources-spectrum-intro-lesson-2-md-5b1fe4f172a1ef1f7145.js"],"component---src-pages-resources-spectrum-intro-lesson-3-md":["/component---src-pages-resources-spectrum-intro-lesson-3-md-e931836db27bdfd93956.js"],"component---src-pages-resources-spectrum-intro-lesson-4-md":["/component---src-pages-resources-spectrum-intro-lesson-4-md-3edd55ee76309d1ac6c9.js"],"component---src-pages-resources-spectrum-intro-requirements-md":["/component---src-pages-resources-spectrum-intro-requirements-md-3df99d4649ee5690e41b.js"],"component---src-pages-resources-spectrum-intro-welldone-md":["/component---src-pages-resources-spectrum-intro-welldone-md-f10cc750fbc019acf112.js"],"component---src-pages-resources-todo-app-index-md":["/component---src-pages-resources-todo-app-index-md-6b8122b188baae344f86.js"],"component---src-pages-resources-todo-app-lesson-1-md":["/component---src-pages-resources-todo-app-lesson-1-md-f1070bdf2a69b5a3daf1.js"],"component---src-pages-resources-todo-app-lesson-2-md":["/component---src-pages-resources-todo-app-lesson-2-md-be74b0aafba06e08b1d4.js"],"component---src-pages-resources-todo-app-lesson-3-md":["/component---src-pages-resources-todo-app-lesson-3-md-3eb878fff1f1e0bfdbfd.js"],"component---src-pages-resources-todo-app-lesson-4-md":["/component---src-pages-resources-todo-app-lesson-4-md-14cd70628d5f269ce65a.js"],"component---src-pages-resources-todo-app-lesson-5-md":["/component---src-pages-resources-todo-app-lesson-5-md-0f99a69cda202c1cf2f2.js"],"component---src-pages-resources-todo-app-lesson-6-md":["/component---src-pages-resources-todo-app-lesson-6-md-62db9344545908c0b9c7.js"],"component---src-pages-resources-todo-app-requirements-md":["/component---src-pages-resources-todo-app-requirements-md-c75ad368418a1559ad4b.js"],"component---src-pages-resources-todo-app-welldone-md":["/component---src-pages-resources-todo-app-welldone-md-17a80e5958a71b635e4b.js"],"component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md":["/component---src-pages-resources-videos-developers-live-asset-compute-service-extensibility-md-a6f5bb534104ff0f9d81.js"],"component---src-pages-resources-videos-developers-live-deep-dive-md":["/component---src-pages-resources-videos-developers-live-deep-dive-md-13b96a3284411b567eff.js"],"component---src-pages-resources-videos-developers-live-extend-experience-cloud-md":["/component---src-pages-resources-videos-developers-live-extend-experience-cloud-md-c5a72b3fe61e9a17b681.js"],"component---src-pages-resources-videos-exploring-ci-cd-md":["/component---src-pages-resources-videos-exploring-ci-cd-md-35b37eae4f5bead66e0a.js"],"component---src-pages-resources-videos-exploring-custom-events-md":["/component---src-pages-resources-videos-exploring-custom-events-md-be2bd7ac7d90c0f1d7c4.js"],"component---src-pages-resources-videos-exploring-dashboard-case-study-md":["/component---src-pages-resources-videos-exploring-dashboard-case-study-md-26843d8e7bc12cbec7bf.js"],"component---src-pages-resources-videos-exploring-debugging-md":["/component---src-pages-resources-videos-exploring-debugging-md-c1dcec6216923213f748.js"],"component---src-pages-resources-videos-exploring-deep-dive-use-cases-md":["/component---src-pages-resources-videos-exploring-deep-dive-use-cases-md-9ed9da611db5de2e997d.js"],"component---src-pages-resources-videos-exploring-learning-resources-md":["/component---src-pages-resources-videos-exploring-learning-resources-md-524e3d96652ed6017adc.js"],"component---src-pages-resources-videos-exploring-live-wired-sneak-md":["/component---src-pages-resources-videos-exploring-live-wired-sneak-md-ded5e1eff8eb72636d3c.js"],"component---src-pages-resources-videos-exploring-ode-case-study-md":["/component---src-pages-resources-videos-exploring-ode-case-study-md-4d9940dc9281076c484f.js"],"component---src-pages-resources-videos-exploring-projects-and-workspaces-md":["/component---src-pages-resources-videos-exploring-projects-and-workspaces-md-7d03d08697f1defd4f53.js"],"component---src-pages-resources-videos-exploring-react-spectrum-md":["/component---src-pages-resources-videos-exploring-react-spectrum-md-aa9c118a44ac3d328a38.js"],"component---src-pages-resources-videos-exploring-softcrylic-showcase-md":["/component---src-pages-resources-videos-exploring-softcrylic-showcase-md-c28fa74d9c6062c7dee8.js"],"component---src-pages-resources-videos-index-md":["/component---src-pages-resources-videos-index-md-407eebad1752452472cb.js"],"component---src-pages-resources-videos-overview-architecture-md":["/component---src-pages-resources-videos-overview-architecture-md-25b3b9adc2a5f59bfb73.js"],"component---src-pages-resources-videos-overview-e-2-e-user-journey-md":["/component---src-pages-resources-videos-overview-e-2-e-user-journey-md-d6803bc1097239885290.js"],"component---src-pages-resources-videos-overview-getting-started-md":["/component---src-pages-resources-videos-overview-getting-started-md-4c73157b68b44aaeef2f.js"],"component---src-pages-resources-videos-overview-introduction-md":["/component---src-pages-resources-videos-overview-introduction-md-2db8e902b8b7a7c44aa3.js"],"component---src-pages-resources-videos-overview-security-md":["/component---src-pages-resources-videos-overview-security-md-e61ae0df14f68cd88380.js"]} \ No newline at end of file diff --git a/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js b/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js deleted file mode 100644 index 96c74782c..000000000 --- a/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkadobe_developer_app_builder=self.webpackChunkadobe_developer_app_builder||[]).push([[2864],{5548:function(e,o,a){a.r(o),a.d(o,{_frontmatter:function(){return s},default:function(){return u}});var t=a(58168),r=a(80045),n=(a(88763),a(15680)),l=a(83407);const p=["components"],s={},d={_frontmatter:s},i=l.A;function u(e){let{components:o}=e,a=(0,r.A)(e,p);return(0,n.mdx)(i,(0,t.A)({},d,a,{components:o,mdxType:"MDXLayout"}),(0,n.mdx)("h2",{id:"get-access-to-app-builder"},"Get access to App Builder"),(0,n.mdx)("p",null,"App Builder is available to Adobe Experience Cloud customers and partners. You may already have access to App Builder. You can check by visiting the ",(0,n.mdx)("a",{parentName:"p",href:"/app-builder/console"},"Adobe Developer Console"),' And see if you have the "create from template" button under quick start.'),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Trial access"),"\nApp Builder Trial is now offered as part of Adobe Experience Manager Headless trial. See how App Builder is better with Adobe Experience Manager:"),(0,n.mdx)("ul",null,(0,n.mdx)("li",{parentName:"ul"},(0,n.mdx)("a",{parentName:"li",href:"https://commerce.adobe.com/business-trial/sign-up?items%5B0%5D%5Bid%5D=649A1AF5CBC5467A25E84F2561274821&cli=headless_exl_banner_campaign&co=US&lang=en"},"Adobe Experience Manager Headless Trial"))),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Purchase a license")),(0,n.mdx)("p",null,"App Builder is included with the purchase of Adobe Experience Manager Sites Cloud Service and Adobe Commerce on cloud. Customers can also purchase a license for use with any Adobe Experience Cloud product or add extra units to add capacity. "),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Partner Access")),(0,n.mdx)("p",null,"Adobe Solution Partners may request access to App Builder through the ",(0,n.mdx)("a",{parentName:"p",href:"https://solutionpartners.adobe.com/solution-partners/home/learn/tools/sandboxes.html"},"solution partner portal"),". "),(0,n.mdx)("h2",{id:"app-builder-access-faq"},"App Builder Access FAQ"),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"How can I check if my company already has access to App Builder?")),(0,n.mdx)("p",null,"Just visit the ",(0,n.mdx)("a",{parentName:"p",href:"/app-builder/console"},"Adobe Developer Console"),'. If you have the button "create project from template" next to the button "create new project" then you are provisioned for App Builder. '),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"What information do I need for the AEM trial?")),(0,n.mdx)("p",null,"Just your company name and the email address you use for your employer. You can invite others within your company to join the trial as well. "),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Is there a cost for the trial?")),(0,n.mdx)("p",null,"No. The trial is free to use for the duration of the trial period."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"How long does it take to get access for the AEM Trial")),(0,n.mdx)("p",null,"Access is granted almost immediatly. Usually it takes 15-30 minutes until your new Adobe IMS org is created and products are made available. "),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Do I need a special role within my company to use App Builder?")),(0,n.mdx)("p",null,"Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in the ",(0,n.mdx)("a",{parentName:"p",href:"/app-builder/console"},"Developer Console")),(0,n.mdx)("p",null,"If you are unable to access the Adobe Admin Console you will need to ask a System Admin for the org ID and Name in order to apply for a trial."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"How do I find a sys admin for my org?")),(0,n.mdx)("p",null,"This is likely the person who gave you access to login to the Adobe Experience Cloud. This could be someone in your company IT department or in your marketing team."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Can I use this with Creative Cloud or Document Cloud?")),(0,n.mdx)("p",null,"While we hope to be able to add Creative Cloud and Document Cloud use cases, we do not currently support them. Right now App Builder is focused on use cases for Adobe Experience Cloud. "))}u.isMDXComponent=!0}}]); -//# sourceMappingURL=component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js.map \ No newline at end of file diff --git a/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js.map b/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js.map deleted file mode 100644 index d661cfeec..000000000 --- a/component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"component---src-pages-overview-getting-access-md-087dc5f4b3f9a20fc3d8.js","mappings":"iTAMaA,EAAe,CAAC,EACvBC,EAAc,CAClBD,gBAEIE,EAAYC,EAAAA,EACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,GAAKC,EAAAA,EAAAA,GAAAH,EAAAI,GAER,OAAOC,EAAAA,EAAAA,KAACR,GAASS,EAAAA,EAAAA,GAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,eAG5EF,EAAAA,EAAAA,KAAA,MACE,GAAM,6BACJ,8BACJA,EAAAA,EAAAA,KAAA,SAAI,yJAAwJA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IACtK,KAAQ,wBACN,2BAA+B,8EACrCH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,gBAAyB,wJAEpDH,EAAAA,EAAAA,KAAA,WACEA,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,KAC9B,KAAQ,0JACN,8CAERH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,wBAC3BH,EAAAA,EAAAA,KAAA,SAAI,sPACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,oBAC3BH,EAAAA,EAAAA,KAAA,SAAI,0EAAyEA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IACvF,KAAQ,wFACN,2BAA+B,OACrCH,EAAAA,EAAAA,KAAA,MACE,GAAM,0BACJ,2BACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,sEAC3BH,EAAAA,EAAAA,KAAA,SAAI,mBAAkBA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IAChC,KAAQ,wBACN,2BAA+B,+IACrCH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,mDAC3BH,EAAAA,EAAAA,KAAA,SAAI,kJACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,oCAC3BH,EAAAA,EAAAA,KAAA,SAAI,uEACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,2DAC3BH,EAAAA,EAAAA,KAAA,SAAI,kJACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,oEAC3BH,EAAAA,EAAAA,KAAA,SAAI,0KAAyKA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IACvL,KAAQ,wBACN,uBACNH,EAAAA,EAAAA,KAAA,SAAI,mJACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,2CAC3BH,EAAAA,EAAAA,KAAA,SAAI,yKACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,2DAC3BH,EAAAA,EAAAA,KAAA,SAAI,6LAGR,CAEAN,EAAWU,gBAAiB,C","sources":["webpack://adobe-developer-app-builder/./src/pages/overview/getting_access.md"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/components/MDXFilter/index.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

{`Get access to App Builder`}

\n

{`App Builder is available to Adobe Experience Cloud customers and partners. You may already have access to App Builder. You can check by visiting the `}{`Adobe Developer Console`}{` And see if you have the \"create from template\" button under quick start.`}

\n

{`Trial access`}{`\nApp Builder Trial is now offered as part of Adobe Experience Manager Headless trial. See how App Builder is better with Adobe Experience Manager:`}

\n \n

{`Purchase a license`}

\n

{`App Builder is included with the purchase of Adobe Experience Manager Sites Cloud Service and Adobe Commerce on cloud. Customers can also purchase a license for use with any Adobe Experience Cloud product or add extra units to add capacity. `}

\n

{`Partner Access`}

\n

{`Adobe Solution Partners may request access to App Builder through the `}{`solution partner portal`}{`. `}

\n

{`App Builder Access FAQ`}

\n

{`How can I check if my company already has access to App Builder?`}

\n

{`Just visit the `}{`Adobe Developer Console`}{`. If you have the button \"create project from template\" next to the button \"create new project\" then you are provisioned for App Builder. `}

\n

{`What information do I need for the AEM trial?`}

\n

{`Just your company name and the email address you use for your employer. You can invite others within your company to join the trial as well. `}

\n

{`Is there a cost for the trial?`}

\n

{`No. The trial is free to use for the duration of the trial period.`}

\n

{`How long does it take to get access for the AEM Trial`}

\n

{`Access is granted almost immediatly. Usually it takes 15-30 minutes until your new Adobe IMS org is created and products are made available. `}

\n

{`Do I need a special role within my company to use App Builder?`}

\n

{`Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in the `}{`Developer Console`}

\n

{`If you are unable to access the Adobe Admin Console you will need to ask a System Admin for the org ID and Name in order to apply for a trial.`}

\n

{`How do I find a sys admin for my org?`}

\n

{`This is likely the person who gave you access to login to the Adobe Experience Cloud. This could be someone in your company IT department or in your marketing team.`}

\n

{`Can I use this with Creative Cloud or Document Cloud?`}

\n

{`While we hope to be able to add Creative Cloud and Document Cloud use cases, we do not currently support them. Right now App Builder is focused on use cases for Adobe Experience Cloud. `}

\n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js b/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js new file mode 100644 index 000000000..9b661ab9d --- /dev/null +++ b/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkadobe_developer_app_builder=self.webpackChunkadobe_developer_app_builder||[]).push([[2864],{5548:function(e,o,a){a.r(o),a.d(o,{_frontmatter:function(){return p},default:function(){return u}});var t=a(58168),r=a(80045),n=(a(88763),a(15680)),l=a(83407);const d=["components"],p={},s={_frontmatter:p},i=l.A;function u(e){let{components:o}=e,a=(0,r.A)(e,d);return(0,n.mdx)(i,(0,t.A)({},s,a,{components:o,mdxType:"MDXLayout"}),(0,n.mdx)("h2",{id:"get-access-to-app-builder"},"Get access to App Builder"),(0,n.mdx)("p",null,"App Builder is available to Adobe Experience Cloud customers and partners. You may already have access to App Builder. You can check by visiting the ",(0,n.mdx)("a",{parentName:"p",href:"/app-builder/console"},"Adobe Developer Console"),' And see if you have the "create from template" button under quick start.'),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Trial access"),"\nApp Builder Trial is now offered as part of Adobe Experience Manager Headless trial. See how App Builder is better with Adobe Experience Manager:"),(0,n.mdx)("ul",null,(0,n.mdx)("li",{parentName:"ul"},(0,n.mdx)("a",{parentName:"li",href:"https://commerce.adobe.com/business-trial/sign-up?items%5B0%5D%5Bid%5D=649A1AF5CBC5467A25E84F2561274821&cli=headless_exl_banner_campaign&co=US&lang=en"},"Adobe Experience Manager Headless Trial"))),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Purchase a license")),(0,n.mdx)("p",null,"YOu may be entitled to App Builder as part of a product you previously purchased App Builder is included with the purchase of Adobe Experience Manager Sites Cloud Service and Adobe Commerce on cloud. If you have Adobe Experience Manager Sites Cloud Service but do not have access to App Builder, please contact your sales team to request 1 pack of App Builder to be added. "),(0,n.mdx)("p",null,"In addition, customers can purchase a license for use with any Adobe Experience Cloud product or add extra packs to add capacity. Please contact your sales team for details."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Partner Access")),(0,n.mdx)("p",null,"Adobe Solution Partners may request access to App Builder through the ",(0,n.mdx)("a",{parentName:"p",href:"https://solutionpartners.adobe.com/solution-partners/home/learn/tools/sandboxes.html"},"solution partner portal"),". "),(0,n.mdx)("h2",{id:"app-builder-access-faq"},"App Builder Access FAQ"),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"How can I check if my company already has access to App Builder?")),(0,n.mdx)("p",null,"Just visit the ",(0,n.mdx)("a",{parentName:"p",href:"/app-builder/console"},"Adobe Developer Console"),'. If you have the button "create project from template" next to the button "create new project" then you are provisioned for App Builder. '),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"What information do I need for the AEM trial?")),(0,n.mdx)("p",null,"Just your company name and the email address you use for your employer. You can invite others within your company to join the trial as well. "),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Is there a cost for the trial?")),(0,n.mdx)("p",null,"No. The trial is free to use for the duration of the trial period."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"How long does it take to get access for the AEM Trial")),(0,n.mdx)("p",null,"Access is granted almost immediatly. Usually it takes 15-30 minutes until your new Adobe IMS org is created and products are made available. "),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Do I need a special role within my company to use App Builder?")),(0,n.mdx)("p",null,"Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in the ",(0,n.mdx)("a",{parentName:"p",href:"/app-builder/console"},"Developer Console")),(0,n.mdx)("p",null,"If you are unable to access the Adobe Admin Console you will need to ask a System Admin for the org ID and Name in order to apply for a trial."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"How do I find a sys admin for my org?")),(0,n.mdx)("p",null,"This is likely the person who gave you access to login to the Adobe Experience Cloud. This could be someone in your company IT department or in your marketing team."),(0,n.mdx)("p",null,(0,n.mdx)("strong",{parentName:"p"},"Can I use this with Creative Cloud or Document Cloud?")),(0,n.mdx)("p",null,"While we hope to be able to add Creative Cloud and Document Cloud use cases, we do not currently support them. Right now App Builder is focused on use cases for Adobe Experience Cloud. "))}u.isMDXComponent=!0}}]); +//# sourceMappingURL=component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js.map \ No newline at end of file diff --git a/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js.map b/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js.map new file mode 100644 index 000000000..53b8d0a99 --- /dev/null +++ b/component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js.map @@ -0,0 +1 @@ +{"version":3,"file":"component---src-pages-overview-getting-access-md-d3167cb2921eb2551172.js","mappings":"iTAMaA,EAAe,CAAC,EACvBC,EAAc,CAClBD,gBAEIE,EAAYC,EAAAA,EACH,SAASC,EAAUC,GAG/B,IAHgC,WACjCC,GAEDD,EADIE,GAAKC,EAAAA,EAAAA,GAAAH,EAAAI,GAER,OAAOC,EAAAA,EAAAA,KAACR,GAASS,EAAAA,EAAAA,GAAA,GAAKV,EAAiBM,EAAK,CAAED,WAAYA,EAAYM,QAAQ,eAG5EF,EAAAA,EAAAA,KAAA,MACE,GAAM,6BACJ,8BACJA,EAAAA,EAAAA,KAAA,SAAI,yJAAwJA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IACtK,KAAQ,wBACN,2BAA+B,8EACrCH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,gBAAyB,wJAEpDH,EAAAA,EAAAA,KAAA,WACEA,EAAAA,EAAAA,KAAA,MAAIG,WAAW,OAAKH,EAAAA,EAAAA,KAAA,KAAGG,WAAW,KAC9B,KAAQ,0JACN,8CAERH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,wBAC3BH,EAAAA,EAAAA,KAAA,SAAI,0XACJA,EAAAA,EAAAA,KAAA,SAAI,kLACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,oBAC3BH,EAAAA,EAAAA,KAAA,SAAI,0EAAyEA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IACvF,KAAQ,wFACN,2BAA+B,OACrCH,EAAAA,EAAAA,KAAA,MACE,GAAM,0BACJ,2BACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,sEAC3BH,EAAAA,EAAAA,KAAA,SAAI,mBAAkBA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IAChC,KAAQ,wBACN,2BAA+B,+IACrCH,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,mDAC3BH,EAAAA,EAAAA,KAAA,SAAI,kJACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,oCAC3BH,EAAAA,EAAAA,KAAA,SAAI,uEACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,2DAC3BH,EAAAA,EAAAA,KAAA,SAAI,kJACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,oEAC3BH,EAAAA,EAAAA,KAAA,SAAI,0KAAyKA,EAAAA,EAAAA,KAAA,KAAGG,WAAW,IACvL,KAAQ,wBACN,uBACNH,EAAAA,EAAAA,KAAA,SAAI,mJACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,2CAC3BH,EAAAA,EAAAA,KAAA,SAAI,yKACJA,EAAAA,EAAAA,KAAA,UAAGA,EAAAA,EAAAA,KAAA,UAAQG,WAAW,KAAK,2DAC3BH,EAAAA,EAAAA,KAAA,SAAI,6LAGR,CAEAN,EAAWU,gBAAiB,C","sources":["webpack://adobe-developer-app-builder/./src/pages/overview/getting_access.md"],"sourcesContent":["import * as React from 'react'\n /* @jsx mdx */\nimport { mdx } from '@mdx-js/react';\n/* @jsxRuntime classic */\n/* @jsx mdx */\nimport DefaultLayout from \"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/components/MDXFilter/index.js\";\nexport const _frontmatter = {};\nconst layoutProps = {\n _frontmatter\n};\nconst MDXLayout = DefaultLayout;\nexport default function MDXContent({\n components,\n ...props\n}) {\n return \n\n\n

{`Get access to App Builder`}

\n

{`App Builder is available to Adobe Experience Cloud customers and partners. You may already have access to App Builder. You can check by visiting the `}{`Adobe Developer Console`}{` And see if you have the \"create from template\" button under quick start.`}

\n

{`Trial access`}{`\nApp Builder Trial is now offered as part of Adobe Experience Manager Headless trial. See how App Builder is better with Adobe Experience Manager:`}

\n \n

{`Purchase a license`}

\n

{`YOu may be entitled to App Builder as part of a product you previously purchased App Builder is included with the purchase of Adobe Experience Manager Sites Cloud Service and Adobe Commerce on cloud. If you have Adobe Experience Manager Sites Cloud Service but do not have access to App Builder, please contact your sales team to request 1 pack of App Builder to be added. `}

\n

{`In addition, customers can purchase a license for use with any Adobe Experience Cloud product or add extra packs to add capacity. Please contact your sales team for details.`}

\n

{`Partner Access`}

\n

{`Adobe Solution Partners may request access to App Builder through the `}{`solution partner portal`}{`. `}

\n

{`App Builder Access FAQ`}

\n

{`How can I check if my company already has access to App Builder?`}

\n

{`Just visit the `}{`Adobe Developer Console`}{`. If you have the button \"create project from template\" next to the button \"create new project\" then you are provisioned for App Builder. `}

\n

{`What information do I need for the AEM trial?`}

\n

{`Just your company name and the email address you use for your employer. You can invite others within your company to join the trial as well. `}

\n

{`Is there a cost for the trial?`}

\n

{`No. The trial is free to use for the duration of the trial period.`}

\n

{`How long does it take to get access for the AEM Trial`}

\n

{`Access is granted almost immediatly. Usually it takes 15-30 minutes until your new Adobe IMS org is created and products are made available. `}

\n

{`Do I need a special role within my company to use App Builder?`}

\n

{`Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in the `}{`Developer Console`}

\n

{`If you are unable to access the Adobe Admin Console you will need to ask a System Admin for the org ID and Name in order to apply for a trial.`}

\n

{`How do I find a sys admin for my org?`}

\n

{`This is likely the person who gave you access to login to the Adobe Experience Cloud. This could be someone in your company IT department or in your marketing team.`}

\n

{`Can I use this with Creative Cloud or Document Cloud?`}

\n

{`While we hope to be able to add Creative Cloud and Document Cloud use cases, we do not currently support them. Right now App Builder is focused on use cases for Adobe Experience Cloud. `}

\n\n
;\n}\n;\nMDXContent.isMDXComponent = true;\n "],"names":["_frontmatter","layoutProps","MDXLayout","DefaultLayout","MDXContent","_ref","components","props","_objectWithoutProperties","_excluded","mdx","_extends","mdxType","parentName","isMDXComponent"],"sourceRoot":""} \ No newline at end of file diff --git a/getting_started/common_troubleshooting/index.html b/getting_started/common_troubleshooting/index.html index 26ac9d5be..4c07b66e4 100644 --- a/getting_started/common_troubleshooting/index.html +++ b/getting_started/common_troubleshooting/index.html @@ -112,4 +112,4 @@ Copied to your clipboard
aio runtime activation list

It lists the most recent activations and summary (ID, start / end time, duration, status, and so on). There are 4 most popular statuses of a finished activation:

You could also try running your actions locally with the aio app dev command. This is very similar to aio app run except that it will run your action code on localhost in a node process. Not all api calls will work in this context because of cors restrictions, but this is still useful in catching syntax errors, logic errors and enables step debugging of your actions without timeouts.

Action logs

When you have web actions in your app, they are blocking requests and their activation results are not recorded if they are invoked successfully. To enforce the persistence of activation results, you need to pass the x-ow-extra-logging: on flag in the request headers. In the development mode of an SPA, you can add this flag directly to the "invoking action" function so that you will have the activation results and logs recorded for all requests. Then they could be retrieved as demonstrated in the General debugging section above.

Copied to your clipboard
headers['x-ow-extra-logging'] = 'on'

Action authentication errors

When Adobe authentication and authorization checks are enabled for an action with the require-adobe-auth annotation set to true, you may see the following errors when making requests to the action:

  1. request is invalid, failed authorization. Please use a valid user token for this SPA.
  2. request is invalid, failed authorization. Please use a valid JWT or user access token for this headless application.

An SPA is an application with web UI components (located in the web-src/ folder). Headless app are back-end microservices without web UI. For authentication and authorization checks, the back-end actions of an SPA are validated against a valid user token which is passed directly from Adobe Experience Cloud (ExC) Shell.

On the other hand, the actions of a headless app can be validated against a valid user token from ExC Shell or a valid access token generated with the JWT (Service Account) Authentication. Please go through the App Builder Security Overview for more details about SPA vs. headless app authentication.

If you are developing a headless app but accidentally have the web-src/ folder added during the app initialization process, you could remove it by executing the command aio app delete web-assets at the root of your application source code folder. This will also assure that your actions are validated against the appropriate JWT auth.

Debugging errors with State and Files SDK

If your code uses App Builder State or Files SDKs, you cannot use aio app dev to debug it. The reason is that State and Files services have additional security which limits calls from outside of Adobe Runtime actions. Your action code is run on localhost which is not authorized to access the out-of-the-box cloud storage behind State and Files SDKs.

Note: This is not a problem if you configure the State or Files SDKs to connect to your own cloud storage (e.g. Cosmos DB).

NodeJS with Mac M1 chip

There are no pre-compiled NodeJS binaries for versions prior to 15.x for Apple's new M1 chip (arm64 architecture). -One solution is to change the architecture of your shell from arm64 to x86.

We recommend using the Node Version Manager (nvm) over Homebrew and follow their troubleshooting guides for macOS (section Macs with M1 chip).

Valerii NaidaStephan RingelMichael GoberlingShazron AbdullahJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file +One solution is to change the architecture of your shell from arm64 to x86.

We recommend using the Node Version Manager (nvm) over Homebrew and follow their troubleshooting guides for macOS (section Macs with M1 chip).

Valerii NaidaStephan RingelMichael GoberlingShazron AbdullahJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file diff --git a/getting_started/first_app/index.html b/getting_started/first_app/index.html index 96ef7830c..1f65854a9 100644 --- a/getting_started/first_app/index.html +++ b/getting_started/first_app/index.html @@ -357,4 +357,4 @@
Your deployed actions:
-> demoproject-0.0.1/__secured_analytics
...
To view your deployed application:
-> https://<namespace>.adobeio-static.net/<packagename>/index.html
To view your deployed application in the Experience Cloud shell:
-> https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=https://<namespace>.adobeio-static.net/<packagename>/index.html
Well done, your app is now online 🏄

Note the last section of the output To view your deployed application. There are 2 urls of the app shown by default, which allow access either to the CDN host or Experience Cloud Shell. In the latter case, The URL format of the app should follow https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=<your-app-url>.

You can also undeploy your app with aio app undeploy. To learn more about deployment, please refer to Deployment Overview. To automate your build, deploy and build process with our out-of-the-box CI/CD GitHub actions, please refer to CI/CD for App Builder Applications.

Common Issues

  1. When in doubt, please first ensure your CLI and all plugins are up to date. For the CLI, you can check the version through aio -v and compare it with npm show @adobe/aio-cli version. If your CLI is outdated, update it by running npm install -g @adobe/aio-cli. After that, you can simply run aio update to ensure all core plugins are updated.

  2. Validation error. If you see the following error, it is because you did not pass in an authorization header to an action expecting one. See Trying the Sample App section above or learn more about this in our Security Overview.

    Copied to your clipboard
    {"error": "cannot validate token, reason: missing authorization header"}
  3. Missing param error. If you see the following error, it is because you did not pass in required params to an action expecting one. See Trying the Sample App section above.

    Copied to your clipboard
    {"error": "missing parameter(s) 'apiKey,companyId'"}`

Next steps

For more code examples and use cases, please refer to the Resources page.

Amy ZhaoMichael GoberlingOlga KopylovaShazron AbdullahJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file +Copied to your clipboard
{"error": "missing parameter(s) 'apiKey,companyId'"}`

Next steps

For more code examples and use cases, please refer to the Resources page.

Amy ZhaoMichael GoberlingOlga KopylovaShazron AbdullahJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file diff --git a/getting_started/index.html b/getting_started/index.html index 5fc480332..3aefbcb84 100644 --- a/getting_started/index.html +++ b/getting_started/index.html @@ -115,4 +115,4 @@ Copied to your clipboard
- App Builder access is provided via an Adobe Experience Cloud IMS Org. If you are using the trial you should use the IMS org you requested or that was assigned to you. If you have a license for App Builder, then the IMS org was selected by the person who purchsed it for your company.
- If you do not have access to an organization:
- _Customers: Please contact your account manager for access._
- _Partners: Please contact your partner manager or request sandbox access via [Adobe Solution Partner Portal](https://solutionpartners.adobe.com/home.html)._

Local Environment Set Up

Required Tools

Please ensure you have these tools:

Copied to your clipboard
› Warning: @adobe/aio-cli update available from 3.3.0 to 3.4.1.
› Run npm install -g @adobe/aio-cli to update.

Supported Local Environment

We aim to provide similar quality of local development experience on both Windows 10 or 11 and macOS 10.14 and higher. -Our CLI and its plugins are automatically tested against NodeJS versions 14 and 16 on both Windows and Linux Xenial.

Supported Terminals for the CLI

The CLI uses the popular inquirer package for all its interactive functionalities, such as the application generators.

See inquirer's Support section and its known issues for up-to-date details.

Optional Tools

The following is required if you intend to use local development (aio app dev) features provided by the CLI:

Next Step

Now that you have your environment set up, you can start creating your own App Builder application.

Stephan RingelMichael GoberlingDan MooneyRon NagyJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file +Our CLI and its plugins are automatically tested against NodeJS versions 14 and 16 on both Windows and Linux Xenial.

Supported Terminals for the CLI

The CLI uses the popular inquirer package for all its interactive functionalities, such as the application generators.

See inquirer's Support section and its known issues for up-to-date details.

Optional Tools

The following is required if you intend to use local development (aio app dev) features provided by the CLI:

Next Step

Now that you have your environment set up, you can start creating your own App Builder application.

Stephan RingelMichael GoberlingDan MooneyRon NagyJesse MacFadyen
Last updated 6/25/2024
Was this helpful?
\ No newline at end of file diff --git a/getting_started/publish_app/index.html b/getting_started/publish_app/index.html index 9274b7b91..6c63038b7 100644 --- a/getting_started/publish_app/index.html +++ b/getting_started/publish_app/index.html @@ -179,4 +179,4 @@ approval myapp customapps -

Publishing your headless App Builder App

The App Builder Apps Adobe Experience Cloud only lists App Builder Apps that are SPAs. If you publish a headless app, please refer to our code lab Your First Headless App with App Builder.

We might provide supplementary discoverability mechanisms for published headless apps in future App Builder releases.

Next steps

For more code examples and use cases, please refer to the Resources page.

Valerii NaidaStephan RingelKanika GeraNaomi RobichaudShazron Abdullah
Last updated 5/21/2024
Was this helpful?
\ No newline at end of file +

Publishing your headless App Builder App

The App Builder Apps Adobe Experience Cloud only lists App Builder Apps that are SPAs. If you publish a headless app, please refer to our code lab Your First Headless App with App Builder.

We might provide supplementary discoverability mechanisms for published headless apps in future App Builder releases.

Next steps

For more code examples and use cases, please refer to the Resources page.

Valerii NaidaStephan RingelKanika GeraNaomi RobichaudShazron Abdullah
Last updated 5/21/2024
Was this helpful?
\ No newline at end of file diff --git a/guides/app-hooks/index.html b/guides/app-hooks/index.html index 97af52428..226228f04 100644 --- a/guides/app-hooks/index.html +++ b/guides/app-hooks/index.html @@ -185,4 +185,4 @@ aio-app-undeploy lifecycle -

Valerii NaidaStephan RingelShazron AbdullahMichael Goberling
Last updated 6/28/2024
Was this helpful?
\ No newline at end of file +

Valerii NaidaStephan RingelShazron AbdullahMichael Goberling
Last updated 6/28/2024
Was this helpful?
\ No newline at end of file diff --git a/guides/application_logging/azure_log_analytics/index.html b/guides/application_logging/azure_log_analytics/index.html index 9acc68c3a..18a5b5e68 100644 --- a/guides/application_logging/azure_log_analytics/index.html +++ b/guides/application_logging/azure_log_analytics/index.html @@ -115,4 +115,4 @@ ? log type: <table_name_alpha_chars_only> Copied to your clipboard
aio app config set log-forwarding
? select log forwarding destination: Azure Log Analytics
? customer ID: <Workspace ID>
? shared key: <Primary Key>
? log type: <table_name_alpha_chars_only>

Note:

  • Verify that the config change has taken effect

    Copied to your clipboard
    aio app config get log-forwarding
  • Execute an action in your App Builder application workspace to generate logs.

  • Go to Azure Portal, and on the overview screen of your workspace, select Logs on the left menu. Run a query using the table name you provided in step 3. Note the table name that shows up on the Azure portal will have the suffix _CL appended to the table name you provided.

  • If you don't see any logs in Azure, please check the log forwarding errors.

    Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

  • Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/index.html b/guides/application_logging/index.html index f0ba7c832..862eecb31 100644 --- a/guides/application_logging/index.html +++ b/guides/application_logging/index.html @@ -111,4 +111,4 @@ );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Managing Application Logs

    Logging is one of the most important tools in a developer's tool kit. Application logs allow a developer to debug an application in development as well as monitor it in production. The App Builder SDK and CLI provide significant out-of-the-box capabilities to facilitate logging from code and for viewing and forwarding those applications logs as needed.

    Logging with App Builder SDK

    The App Builder SDK provides a core logging library that defines an API on top of the popular WinstonJS and Debug npm packages. The core logging library can be used in a Runtime action or in other libraries.

    Furthermore, the App Builder core logging library can be used with the App Builder core errors library. The App Builder core errors library aims to streamline error management across the AIO SDK and App Builder applications. When the core errors library is used in conjunction with the core logging library, the error log messages output specific error codes, as defined by each App Builder SDK, that further aid debugging.

    Both the core logging library and the core errors library can be directly used in an App Builder application, a Runtime action, and other libraries. For example, both libraries are used in:

    Accessing logs with App Builder CLI

    App Builder CLI exposes application logs to the developers at different levels:

    • At an App Builder application level using the aio app plugin.
    • At a Runtime action level using the aio runtime plugin.

    App Builder app plugin

    The AIO CLI App plugin provides the aio app logs command, which fetches the logs for an App Builder application deployed to the App Builder Workspace that is configured in the current working folder:

    • The command accepts an integer argument with the --limit flag that allows fetching logs from the last n Runtime activations.
    • The command accepts an action name with the --action flag that allows fetching logs from a particular action within the App Builder application.
    • The command allows a --tail or --watch flag that would continuously fetch logs as they appear.

    To see more command options, run aio app logs --help on your terminal.

    The aio app logs command can be used either by a developer or even by a script running in a CI/CD pipeline. Furthermore, the command can be used for App Builder Applications deployed on Runtime or even those running locally through the aio app run --local command (see the Deployment guide).

    Runtime plugin

    The AIO CLI Runtime plugin operates at the level of a Runtime action. When a Runtime action is invoked, the corresponding activation's logs can be fetched using the aio runtime logs <activation_id> command.

    This command also offers command options to --watch or --tail the logs among other options (run aio runtime logs --help).

    Again, the aio runtime logs command can be used by a developer or by a script running in a CI/CD pipeline. Furthermore, the command can be used for App Builder Applications deployed on Runtime or even those running locally through the aio app run --local command (see the Deployment guide).

    Forwarding Application logs

    Apart from viewing application logs using the AIO CLI, a developer can also configure an App Builder application to forward all application logs to a customer-owned log management solution. Forwarding logs has several benefits over retrieving logs through the AIO CLI, especially for applications deployed in Production or Staging environments.

    The supported log management solutions include:

    1. Adobe I/O Runtime (default)
    2. Splunk Cloud
    3. Splunk Enterprise
    4. Azure Log Analytics
    5. New Relic

    Visit the above links to view the steps to set up log forwarding with that solution.

    When to use Log forwarding

    The following table outlines a quick comparison between storing logs in Adobe I/O Runtime vs. forwarding application logs to a log management solution of your choice.

    Storing logs in Adobe I/O RuntimeForwarding application logs
    Setup
    All workspaces default to storing logs in Runtime. Included in App Builder SKU.
    Log Forwarding needs to be configured per workspace of an App Builder application. As a customer, you would need to bring in a log management solution you own.
    When to use
    Storing logs in Runtime is a good option for local development and when each developer works in their own workspace.
    Forwarding logs is ideal for shared environments such as Stage and Production workspaces.
    Access to all logs
    Adobe I/O Runtime stores application logs for only failed or asynchronous activations.
    Log forwarding allows you to gain access to all your application logs.
    Retrieving logs
    The AIO CLI can be used to fetch logs stored in Adobe I/O Runtime.
    Once logs are forwarded to your configured log management solution, they cannot be fetched using the AIO CLI. You can directly retrieve logs from your configured log management solution.
    Logging limits
    Adobe I/O Runtime allows up to a maximum of 10 MB of log lines per activation beyond which log lines are truncated.
    Adobe I/O Runtime allows up to a maximum of 10 MB of log lines per activation beyond which log lines are truncated.
    Throttling
    The x-ow-extra-logging header directs Adobe I/O Runtime to store all application logs, but the header is meant to be used only in local development. Furthermore, overuse of the header is throttled at high log volumes.
    Log Forwarding removes the need to use x-ow-extra-logging as all application logs are forwarded by design.
    Log retention
    Logs stored in Adobe I/O Runtime are retained for 7 days.
    Once logs are forwarded to your configured log management solution, you can choose to retain logs for a longer duration.
    Capabilities
    AIO CLI provides the ability to view and tail application logs on a per application or activation level.
    Most industry-leading log management solutions offer the ability to view logs, search through unstructured logs, and chart data extracted from logs. Forwarding logs further allows you to consolidate your App Builder application logs with the logs from the rest of your infrastructure for better correlation.

    Log Forwarding Commands

    Setting Log Forwarding

    Copied to your clipboard
    aio app config set log-forwarding

    This command allows you to configure log forwarding for your workspace or reset it to store logs in Adobe I/O Runtime.

    Once a log forwarding configuration is successfully set, the log forwarding configuration is also stored in the .aio and .env files. Any changes made directly to the log forwarding configuration in the .aio or .env file would now be deployed when you run aio app deploy.

    Note: Running aio app deploy --no-actions or aio app deploy --no-log-forwarding-update would skip deploying any changes made to the local log forwarding configuration.

    Please visit the individual guides to set up log forwarding for your log management solution of choice.

    1. Splunk Cloud
    2. Splunk Enterprise
    3. Azure Log Analytics
    4. New Relic

    Viewing the current Log Forwarding configuration

    Copied to your clipboard
    aio app config get log-forwarding

    This command outputs the current log forwarding configuration for your workspace and compares it to the locally set log forwarding configuration. If log forwarding is not configured for your workspace, then Adobe I/O Runtime would be returned by default.

    Note: We never return the configured secret from our servers for security reasons.

    Debugging Log Forwarding

    Copied to your clipboard
    aio app config get log-forwarding errors

    This command outputs any errors that occurred when application logs were being forwarded to your configured log management solution. The command shows the most recent 10 log forwarding errors for the current log forwarding configuration, up to 30 days.

    Next steps

    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    This command outputs any errors that occurred when application logs were being forwarded to your configured log management solution. The command shows the most recent 10 log forwarding errors for the current log forwarding configuration, up to 30 days.

    Next steps

    Manik JindalTim KimKevin HarperShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/new_relic/index.html b/guides/application_logging/new_relic/index.html index 525c97808..6750fb56b 100644 --- a/guides/application_logging/new_relic/index.html +++ b/guides/application_logging/new_relic/index.html @@ -114,4 +114,4 @@ ? license key: <license_key> Copied to your clipboard
    aio app config set log-forwarding
    ? select log forwarding destination: New Relic
    ? base URI: <base_uri>
    ? license key: <license_key>

    The URI value must include the protocol (https://).

  • Verify that the config change has taken effect.

    Copied to your clipboard
    aio app config get log-forwarding
  • Execute an action in your App Builder application workspace to generate logs.

  • Go to New Relic Home > Logs and run your query.

  • If you don't see any logs in New Relic, check the log forwarding errors.

    Copied to your clipboard
    aio app config get log-forwarding errors
  • If you are unable to set up log forwarding, visit the App Builder forums for support.

    Kevin HarperShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    If you are unable to set up log forwarding, visit the App Builder forums for support.

    Kevin HarperShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/splunk_cloud/index.html b/guides/application_logging/splunk_cloud/index.html index 83d7ed378..c45d11832 100644 --- a/guides/application_logging/splunk_cloud/index.html +++ b/guides/application_logging/splunk_cloud/index.html @@ -120,4 +120,4 @@ Copied to your clipboard
    aio app config set log-forwarding
    ? select log forwarding destination: Splunk HEC
    ? host: <hostname>
    ? port: <port_number>
    ? index: <index>
    ? hec_token: <token>

    Note:

    1. Verify that the config change has taken effect

      Copied to your clipboard
      aio app config get log-forwarding
    2. Execute an action in your App Builder application workspace to generate logs.

    3. Go to Splunk Home > Search and run the query

      Copied to your clipboard
      index=<index>
    4. If you don't see any logs in Splunk, please check the log forwarding errors.

      Copied to your clipboard
      aio app config get log-forwarding errors

      Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_logging/splunk_enterprise/index.html b/guides/application_logging/splunk_enterprise/index.html index 722239e9f..942adde52 100644 --- a/guides/application_logging/splunk_enterprise/index.html +++ b/guides/application_logging/splunk_enterprise/index.html @@ -120,4 +120,4 @@ Copied to your clipboard
    aio app config set log-forwarding
    ? select log forwarding destination: Splunk HEC
    ? host: <hostname>
    ? port: <port_number>
    ? index: <index>
    ? hec_token: <token>

    Note:

    1. Verify that the config change has taken effect

      Copied to your clipboard
      aio app config get log-forwarding
    2. Execute an action in your App Builder application workspace to generate logs.

    3. Go to Splunk Home > Search and run the query

      Copied to your clipboard
      index=<index>
    4. If you don't see any logs in Splunk, please check the log forwarding errors.

      Copied to your clipboard
      aio app config get log-forwarding errors

      Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app config get log-forwarding errors

    Note: If you are unable to set up log forwarding correctly, please visit our App Builder forums for support.

    Manik JindalOlga KopylovaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/application_state/index.html b/guides/application_state/index.html index 7f235ac2c..f4497787a 100644 --- a/guides/application_state/index.html +++ b/guides/application_state/index.html @@ -171,4 +171,4 @@
    COMMANDS
    app state delete Delete key-values
    app state get Get a key-value
    app state list List key-values
    app state put Put a key-value
    app state stats Display stats

    The default region is amer, to access another region, you can use the --region flag or add the AIO_STATE_REGION=emea variable to your .env.

    Navigate the CLI usage documentation from the repo's README or by using the --help flag on the desired command.

    Limits & validation

    Limits are enforced and can't be changed on a per-user basis.

    Quotas

    Quotas are limits that depend on the organization's entitlements. Every organization with App Builder access is entitled to at least 1 State quota.

    At the organization level, 1 quota provides:

    The quota is shared for all State containers in the organization, across all regions. It is not enforced for now, just tracked.

    Example: org 123 is entitled to 3 quotas, the total bandwidth usage of the organization should not exceed 600GB/month and the storage across regions should not exceed 3GB.

    We also enforce rate-limiting at the State container (=Workspace) level within a region. Rate-limiting per quota unit is defined as:

    In case of exceeding the rate-limiting quota, the State service will return with 429s. However, a retry mechanism in the State library will mitigate the propagation of the error on short time windows.

    Example: org 123 is entitled to 5 quotas, any production workspace will not be throttled before consuming 50MB/min or 5MB/sec bandwidth in a single region.

    match option

    state.deleteAll and state.list support a match option to filter keys.

    match supports a glob-style pattern via the * character, suppose you have the following keys: key, base.key, key-1

    List guarantees

    Using state.list, you can iterate over the keys stored in your State container. State implements listing with a cursor-based iterator, which requires multiple calls to the State service to traverse all your keys. Please note, that list is subject to the bandwidth rate-limiting quotas, so listing many keys may result in 429s.

    list provides the following guarantees:

    However, list also has the following drawbacks:

    Furthermore, you can control the list behavior via those two options:

    Troubleshooting

    Set DEBUG=@adobe/aio-lib-state* to see debug logs.

    Files

    Files is currently implemented as an abstraction layer over Azure Blob. Major changes and additional features are planned, stay tuned.

    To learn more please visit the Adobe I/O File Storage library repository.

    Feature Matrix

    FilesStateState Legacy
    read
    write
    delete
    Y
    Y
    Y
    list
    Y
    Y
    N
    streams
    Y
    N
    N
    copy
    Y
    N
    N
    deleteAll
    N
    Y
    N
    sharing
    Y (pre-sign URLs)
    N
    N
    Time-To-Live
    N
    Y
    Y
    max TTL
    infinite
    365 days
    infinite
    max file/value size
    200GB
    1MB
    2MB
    max key size
    1KB
    1KB
    1KB
    key charset
    open
    alphanumeric with _-.
    any but /\?#
    max request load
    N/A
    10MB/min, 1MB/s
    (scalable)
    900 RU/min (~KB/min)
    max storage
    1TB
    1GB (scalable)
    10GB
    regions
    East US
    West US read-only
    Amer
    Emea (EU)
    Apac (coming soon)
    East US
    Europe read-only
    consistency
    strong
    strong
    eventual
    Valerii NaidaStephan RingelShazron AbdullahMoritz Raho
    Last updated 8/21/2024
    Was this helpful?
    \ No newline at end of file +array first and then remove any duplicates.
  • In some rare cases, list may return expired keys.
  • Furthermore, you can control the list behavior via those two options:

    Troubleshooting

    Set DEBUG=@adobe/aio-lib-state* to see debug logs.

    Files

    Files is currently implemented as an abstraction layer over Azure Blob. Major changes and additional features are planned, stay tuned.

    To learn more please visit the Adobe I/O File Storage library repository.

    Feature Matrix

    FilesStateState Legacy
    read
    write
    delete
    Y
    Y
    Y
    list
    Y
    Y
    N
    streams
    Y
    N
    N
    copy
    Y
    N
    N
    deleteAll
    N
    Y
    N
    sharing
    Y (pre-sign URLs)
    N
    N
    Time-To-Live
    N
    Y
    Y
    max TTL
    infinite
    365 days
    infinite
    max file/value size
    200GB
    1MB
    2MB
    max key size
    1KB
    1KB
    1KB
    key charset
    open
    alphanumeric with _-.
    any but /\?#
    max request load
    N/A
    10MB/min, 1MB/s
    (scalable)
    900 RU/min (~KB/min)
    max storage
    1TB
    1GB (scalable)
    10GB
    regions
    East US
    West US read-only
    Amer
    Emea (EU)
    Apac (coming soon)
    East US
    Europe read-only
    consistency
    strong
    strong
    eventual
    Valerii NaidaStephan RingelShazron AbdullahMoritz Raho
    Last updated 8/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/configuration/index.html b/guides/configuration/index.html index 56b8e1f98..d83a11f34 100644 --- a/guides/configuration/index.html +++ b/guides/configuration/index.html @@ -325,4 +325,4 @@ Copied to your clipboard
    async function main (params) {
    if (params.ENABLE_DEV_DEBUG) {
    console.debug("Enabling dev tools, extra usage data will be captured...")
    }
    }
    exports.main = main

    .aio

    The .aio file is auto generated and contains Developer Console specific configuration. This file is updated via the aio app use command and should not be edited manually.

    Legacy configuration system

    Apps initialized using a @adobe/aio-cli CLI version prior to 8.x use a legacy configuration system that we still support in newer CLI versions. -Those apps do not support extensions, and only get deployed as standalone applications.

    The legacy configuration system does not have an app.config.yaml and instead uses:

    1. .aio to store common configuration bits, but hooks and Runtime Manifest, such as actions path.
    2. manifest.yaml to stores the Runtime Manifest.
    3. package.json to store hooks.
    4. .env behaves the same.

    Migrating between Standalone Application and DX Experience Cloud SPA v1

    Next steps

    Jesse MacFadyenShazron AbdullahMichael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file +Those apps do not support extensions, and only get deployed as standalone applications.

    The legacy configuration system does not have an app.config.yaml and instead uses:

    1. .aio to store common configuration bits, but hooks and Runtime Manifest, such as actions path.
    2. manifest.yaml to stores the Runtime Manifest.
    3. package.json to store hooks.
    4. .env behaves the same.

    Migrating between Standalone Application and DX Experience Cloud SPA v1

    Next steps

    Jesse MacFadyenShazron AbdullahMichael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/configuration/webpack-configuration/index.html b/guides/configuration/webpack-configuration/index.html index 57aa8ede6..c6aec578f 100644 --- a/guides/configuration/webpack-configuration/index.html +++ b/guides/configuration/webpack-configuration/index.html @@ -200,4 +200,4 @@
    }

    Base Options

    App Builder starts off with the following Webpack configuration options, any additional values will be added on for these fields:

    Defaults

    App Builder defaults to the following Webpack configuration options if they are not present in your configuration file:

    Immutable Options

    App Builder does not allow changing of the following Webpack configuration options. These fields will be ignored if present in your configuration file:

    Environment Variables

    If you have chosen to export a function, an async function, or an array of functions from your Webpack configuration file, App Builder will pass the environment to these functions. You can use this, for instance, to make decisions about bundling based on the environment.

    Example: If you exported an environment variable called FEATURE_FLAG_PIRATES_BOUNTY before building your application, you can use this in your Webpack configuration file:

    Copied to your clipboard
    module.exports = (env) => ({
    mode: env.FEATURE_FLAG_PIRATES_BOUNTY ? 'production' : 'development'
    })
    Michael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    module.exports = (env) => ({
    mode: env.FEATURE_FLAG_PIRATES_BOUNTY ? 'production' : 'development'
    })
    Michael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/contribution_guides/index.html b/guides/contribution_guides/index.html index d9ec98477..0c8c849be 100644 --- a/guides/contribution_guides/index.html +++ b/guides/contribution_guides/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Contributing

    Thanks for choosing to contribute! The following are a set of guidelines to follow when contributing to this project.

    Code Of Conduct

    This project adheres to the Adobe code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to Grp-opensourceoffice@adobe.com.

    Contributor License Agreement

    All third-party contributions to this project must be accompanied by a signed contributor license agreement. This gives Adobe permission to redistribute your contributions as part of the project. Sign our CLA. You only need to submit an Adobe CLA one time, so if you have submitted one previously, you are good to go!

    Code Reviews

    All submissions should come in the form of pull requests and need to be reviewed by project committers. Read GitHub's pull request documentation for more information on sending pull requests.

    Lastly, please follow the pull request template when submitting a pull request!

    CLI and plugins best practises

    We follow the 12 Factors CLI principles for our CLI and plugins.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Contributing

    Thanks for choosing to contribute! The following are a set of guidelines to follow when contributing to this project.

    Code Of Conduct

    This project adheres to the Adobe code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to Grp-opensourceoffice@adobe.com.

    Contributor License Agreement

    All third-party contributions to this project must be accompanied by a signed contributor license agreement. This gives Adobe permission to redistribute your contributions as part of the project. Sign our CLA. You only need to submit an Adobe CLA one time, so if you have submitted one previously, you are good to go!

    Code Reviews

    All submissions should come in the form of pull requests and need to be reviewed by project committers. Read GitHub's pull request documentation for more information on sending pull requests.

    Lastly, please follow the pull request template when submitting a pull request!

    CLI and plugins best practises

    We follow the 12 Factors CLI principles for our CLI and plugins.

    \ No newline at end of file diff --git a/guides/deployment/ci_cd_for_firefly_apps/index.html b/guides/deployment/ci_cd_for_firefly_apps/index.html index b431d023e..8cd785618 100644 --- a/guides/deployment/ci_cd_for_firefly_apps/index.html +++ b/guides/deployment/ci_cd_for_firefly_apps/index.html @@ -124,4 +124,4 @@ CI/CD with Github Actions -

    GitHub Actions for AIO CLI

    The following GitHub Actions have been built to support the usage of the CLI in a CI/CD workflow running within GitHub infrastructure.

    They are used in the default App Builder Apps workflows, but can also be used further in custom GitHub workflows built by developers to fulfil their project needs.

    These both actions have been published and can be found on GitHub Marketplace. See CLI Setup and Apps.

    GitHub Secrets

    The following GitHub Actions leverage GitHub Secrets to store environment specific secrets.

    They currently need an administrator to manually add the following secrets to the application repository:

    We aim to simplify this configuration process in the future.

    Bring your own CI/CD pipeline

    The default implementation of the CI/CD workflow for App Builder Applications relies on GitHub capabilities. However, a developer might need an alternative solution due to project specific requirements, or team preference.

    In that case, we recommend implementing the custom solution with focus on two main aspects:

    Valerii NaidaStephan RingelShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +

    GitHub Actions for AIO CLI

    The following GitHub Actions have been built to support the usage of the CLI in a CI/CD workflow running within GitHub infrastructure.

    They are used in the default App Builder Apps workflows, but can also be used further in custom GitHub workflows built by developers to fulfil their project needs.

    These both actions have been published and can be found on GitHub Marketplace. See CLI Setup and Apps.

    GitHub Secrets

    The following GitHub Actions leverage GitHub Secrets to store environment specific secrets.

    They currently need an administrator to manually add the following secrets to the application repository:

    We aim to simplify this configuration process in the future.

    Bring your own CI/CD pipeline

    The default implementation of the CI/CD workflow for App Builder Applications relies on GitHub capabilities. However, a developer might need an alternative solution due to project specific requirements, or team preference.

    In that case, we recommend implementing the custom solution with focus on two main aspects:

    Valerii NaidaStephan RingelShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/deployment/credential-rotation/index.html b/guides/deployment/credential-rotation/index.html index 42b5cc5fc..1ff5efefe 100644 --- a/guides/deployment/credential-rotation/index.html +++ b/guides/deployment/credential-rotation/index.html @@ -135,4 +135,4 @@ Copied to your clipboard
    # actionInputs.json
    {
    "actionCredential": "value from actionInputs.json"
    }
    ➜ aio runtime action update <action-name> --param-file=<value>
    # concrete example
    ➜ aio runtime action update dx-excshell-1/generic --param-file=actionInputs.json
    -
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file +
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/deployment/index.html b/guides/deployment/index.html index a9af6b10b..0acf3258a 100644 --- a/guides/deployment/index.html +++ b/guides/deployment/index.html @@ -130,4 +130,4 @@ Remote Runtime Actions and UI -

    The UI is deployed to the out-of-the-box content Content Delivery Network on behalf of the developer's Runtime credentials. It communicates with Runtime actions deployed to the developer's Runtime namespace.

    The out-of-the-box Token-Vending Machine is implicitely used by the CLI aio app deploy command, and validates the developer's Runtime credentials against Runtime.

    If the credentials are valid, the Token-Vending Machine provides an access token to the CLI, which will authorize the CLI to deploy the static files of the Custom Application to the Content Delivery Network.

    The deployed Custom Application will then be available at https://<namespace>.adobeio-static.net/index.html

    Next steps

    Stephan RingelMichael GoberlingTim KimPablo MorenoJesse MacFadyen
    Last updated 6/25/2024
    Was this helpful?
    \ No newline at end of file +

    The UI is deployed to the out-of-the-box content Content Delivery Network on behalf of the developer's Runtime credentials. It communicates with Runtime actions deployed to the developer's Runtime namespace.

    The out-of-the-box Token-Vending Machine is implicitely used by the CLI aio app deploy command, and validates the developer's Runtime credentials against Runtime.

    If the credentials are valid, the Token-Vending Machine provides an access token to the CLI, which will authorize the CLI to deploy the static files of the Custom Application to the Content Delivery Network.

    The deployed Custom Application will then be available at https://<namespace>.adobeio-static.net/index.html

    Next steps

    Stephan RingelMichael GoberlingTim KimPablo MorenoJesse MacFadyen
    Last updated 6/25/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/deployment/setting-response-headers/index.html b/guides/deployment/setting-response-headers/index.html index 7006318c5..efc623002 100644 --- a/guides/deployment/setting-response-headers/index.html +++ b/guides/deployment/setting-response-headers/index.html @@ -123,4 +123,4 @@ /lib/sample.js: # add headers to specific ile Content-security-policy: default-src 'self' example.com *.example.com Copied to your clipboard
    application:
    actions: actions
    web:
    src: web-src
    response-headers:
    /*: # add headers to all content
    X-custom-header: generic header
    /secure-dir/*: # specific folder
    Content-security-policy: default-src 'self'
    /widgets/*.html: # add headers to all html content
    X-custom-header: widget specific header
    Content-security-policy: default-src 'self'
    /lib/sample.js: # add headers to specific ile
    Content-security-policy: default-src 'self' example.com *.example.com

    Once headers are added, they can be easily deployed with the app using the aio app:deploy command. -Note: the paths specified in rules are relative to the dist folder (created post app build) and not to the app root.

    Allowed Headers

    This feature allows developers to set any HTTP or custom response headers, except those in the list below.

    If these headers are specified in the manifest, they are ignored and are not included in the response.

    These particular headers are ignored because they are either meant for internal usage or are CDN-specific headers which should not be overridden.

    1. accept-ranges
    2. age
    3. allow
    4. alt-svc
    5. cache-control
    6. connection
    7. content-length
    8. content-type
    9. content-disposition
    10. content-encoding
    11. content-language
    12. content-length
    13. date
    14. etag
    15. expires
    16. last-modified
    17. location
    18. server
    19. trailer
    20. transfer-encoding
    21. upgrade
    22. x-cache
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file +Note: the paths specified in rules are relative to the dist folder (created post app build) and not to the app root.

    Allowed Headers

    This feature allows developers to set any HTTP or custom response headers, except those in the list below.

    If these headers are specified in the manifest, they are ignored and are not included in the response.

    These particular headers are ignored because they are either meant for internal usage or are CDN-specific headers which should not be overridden.

    1. accept-ranges
    2. age
    3. allow
    4. alt-svc
    5. cache-control
    6. connection
    7. content-length
    8. content-type
    9. content-disposition
    10. content-encoding
    11. content-language
    12. content-length
    13. date
    14. etag
    15. expires
    16. last-modified
    17. location
    18. server
    19. trailer
    20. transfer-encoding
    21. upgrade
    22. x-cache
    Shazron Abdullah
    Last updated 7/23/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/development/index.html b/guides/development/index.html index 75a7271a1..de0d6a234 100644 --- a/guides/development/index.html +++ b/guides/development/index.html @@ -144,4 +144,4 @@ } Copied to your clipboard
    {
    "version": "0.3.0",
    "configurations": [
    {
    "name": "App Builder: debug actions",
    "type": "node-terminal",
    "request": "launch",
    "command": "aio app dev",
    "skipFiles": [
    "<node_internals>/**/*.js",
    "${workspaceFolder}/node_modules/**/*.js"
    ]
    }, {
    "name": "App Builder: debug full stack",
    "type": "node-terminal",
    "request": "launch",
    "command": "aio app dev",
    "sourceMapPathOverrides": {
    "/__parcel_source_root/*": "${webRoot}/*"
    },
    "skipFiles": [
    "<node_internals>/**/*.js",
    "${workspaceFolder}/node_modules/**/*.js"
    ],
    "serverReadyAction": {
    "pattern": "server running on port : ([0-9]+)",
    "uriFormat": "https://localhost:%s",
    "action": "debugWithChrome",
    "webRoot": "${workspaceFolder}"
    }
    }
    ]
    }
    1. Open the Debug panel (Ctrl+Shift+D on Windows/Linux, ⇧+⌘+D on macOS)
    2. Select a launch configuration
    3. Press F5 or select Debug: Start Debugging from the Command Palette to start your debugging session.

    Note: This debug configuration is dynamic and allows you to set a port in the .env file
    ex.
    PORT=3000

    Actions are loaded dynamically so the code is not evaluated until an http request is made. This means that when you put a breakpoint in your action code it will be grayed out until you trigger a call to the action. Web action urls are mapped to https://localhost:PORT/api/v1/web/<package-name>/<action-name> and can be called from your frontend, opening the url in the browser, or with cURL etc.

    You can use the step through debugging features of VS Code, inspect variables, add watches, etc.

    More Information

    Learn more about using a JavaScript debugger

    Jesse MacFadyenShazron Abdullah
    Last updated 8/15/2024
    Was this helpful?
    \ No newline at end of file +  PORT=3000

    Actions are loaded dynamically so the code is not evaluated until an http request is made. This means that when you put a breakpoint in your action code it will be grayed out until you trigger a call to the action. Web action urls are mapped to https://localhost:PORT/api/v1/web/<package-name>/<action-name> and can be called from your frontend, opening the url in the browser, or with cURL etc.

    You can use the step through debugging features of VS Code, inspect variables, add watches, etc.

    More Information

    Learn more about using a JavaScript debugger

    Jesse MacFadyenShazron Abdullah
    Last updated 8/15/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/distribution/index.html b/guides/distribution/index.html index 9fcf55a24..745c89ab2 100644 --- a/guides/distribution/index.html +++ b/guides/distribution/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Distribution Overview

    Developers can distribute their App Builder apps privately or publicly.

    Private

    Privately distributed apps are only available to members of the developer's organization. See Private Distribution for more details.

    Public

    Publicly distributed apps are available for install via Adobe Exchange. See Public Distribution for details on how to configure and prepare your app for public distribution.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Distribution Overview

    Developers can distribute their App Builder apps privately or publicly.

    Private

    Privately distributed apps are only available to members of the developer's organization. See Private Distribution for more details.

    Public

    Publicly distributed apps are available for install via Adobe Exchange. See Public Distribution for details on how to configure and prepare your app for public distribution.

    \ No newline at end of file diff --git a/guides/distribution/private/index.html b/guides/distribution/private/index.html index cdfa0739f..e33b8ebbd 100644 --- a/guides/distribution/private/index.html +++ b/guides/distribution/private/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Private Distribution

    Distribute apps to other members in your Adobe organization.

    Overview

    Privately distributed apps are only available to users in the developer's organization and can be accessed via the App Builder Catalog. These apps are submitted via the Developer Console and reviewed by admins of the developer's organization.

    See Publishing Your First App Builder Application for a thorough walkthrough on this topic.

    Note: In order for your app to show up in the App Builder Catalog, it must be an Experience Cloud Shell extension.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Private Distribution

    Distribute apps to other members in your Adobe organization.

    Overview

    Privately distributed apps are only available to users in the developer's organization and can be accessed via the App Builder Catalog. These apps are submitted via the Developer Console and reviewed by admins of the developer's organization.

    See Publishing Your First App Builder Application for a thorough walkthrough on this topic.

    Note: In order for your app to show up in the App Builder Catalog, it must be an Experience Cloud Shell extension.

    \ No newline at end of file diff --git a/guides/distribution/public/index.html b/guides/distribution/public/index.html index b5eb1b9c9..71fd33e13 100644 --- a/guides/distribution/public/index.html +++ b/guides/distribution/public/index.html @@ -266,4 +266,4 @@ minVersion: 0.0.0 maxVersion: 1.0.0 Copied to your clipboard
    application:
    <application config>
    extensions:
    <extension configs>
    configSchema:
    <customer configuration>
    productDependencies:
    - code: AEP
    minVersion: 0.0.0
    maxVersion: 1.0.0

    Valid products

    Product version information can be found on Adobe Experience League.

    Packaging for developer distribution

    Once you've configured your app for public distribution, it's time to upload it to Adobe Developer Distribution. Before you do that, you will need to package it.

    The aio app pack command will verify and bundle your app. In the root of your app folder, run this command:

    Copied to your clipboard
    aio app pack

    After this command completes, you can find the app package in your app folder as: dist/app.zip.

    Continue to the Adobe Developer Distribution documentation for details on how to upload your package.

    Validation

    When a developer uploads a package to Adobe Developer Distribution, the following validations are performed:

    1. app.config.yaml
    2. package.json version
    3. files to be packaged. All the files in your app folder will be packaged EXCEPT:
    4. event registrations will be validated (if any)

    Hooks

    Two hooks are available to customize the packaging step:

    1. pre-pack - runs before packaging
    2. post-pack - runs after packaging

    Your hook handler function will be passed two items:

    1. appConfig (object) - this contains the config of the current application
    2. artifactsFolder (string) - this will be the location of the folder containing all the packaging artifacts that will be bundled
    Michael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    aio app pack

    After this command completes, you can find the app package in your app folder as: dist/app.zip.

    Continue to the Adobe Developer Distribution documentation for details on how to upload your package.

    Validation

    When a developer uploads a package to Adobe Developer Distribution, the following validations are performed:

    1. app.config.yaml
    2. package.json version
    3. files to be packaged. All the files in your app folder will be packaged EXCEPT:
    4. event registrations will be validated (if any)

    Hooks

    Two hooks are available to customize the packaging step:

    1. pre-pack - runs before packaging
    2. post-pack - runs after packaging

    Your hook handler function will be passed two items:

    1. appConfig (object) - this contains the config of the current application
    2. artifactsFolder (string) - this will be the location of the folder containing all the packaging artifacts that will be bundled
    Michael Goberling
    Last updated 6/28/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/events/custom-events/index.html b/guides/events/custom-events/index.html index 5b6fd6b1d..b36856ee7 100644 --- a/guides/events/custom-events/index.html +++ b/guides/events/custom-events/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Custom I/O Events Overview

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Custom I/O Events Overview

    \ No newline at end of file diff --git a/guides/events/webhooks/index.html b/guides/events/webhooks/index.html index 9325342f1..7270284e1 100644 --- a/guides/events/webhooks/index.html +++ b/guides/events/webhooks/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Introduction to Adobe I/O Events Webhooks

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Introduction to Adobe I/O Events Webhooks

    \ No newline at end of file diff --git a/guides/exc_app/index.html b/guides/exc_app/index.html index 4c2e1511c..bb5e5952f 100644 --- a/guides/exc_app/index.html +++ b/guides/exc_app/index.html @@ -179,4 +179,4 @@ }); } Copied to your clipboard
    import runtime from '@exc/runtime';
    -
    function setup() {
    const runtime = excApp();
    runtime.on('history', ({type, path}) => {
    const cleanedPath = path[0] === '/' ? path : '/' + path;
    if (type === 'external' && this.history.location.pathname !== cleanedPath) {
    this.history.replace(cleanedPath);
    }
    });
    }

    Payload:

    Licensing

    This project is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International Public License. See LICENSE for more information.

    Next steps

    Stephan RingelValerii NaidaMichael GoberlingTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +
    function setup() {
    const runtime = excApp();
    runtime.on('history', ({type, path}) => {
    const cleanedPath = path[0] === '/' ? path : '/' + path;
    if (type === 'external' && this.history.location.pathname !== cleanedPath) {
    this.history.replace(cleanedPath);
    }
    });
    }

    Payload:

    Licensing

    This project is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International Public License. See LICENSE for more information.

    Next steps

    Stephan RingelValerii NaidaMichael GoberlingTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/index.html b/guides/exc_app/interfaces/index.html index cbc5e40b9..112ba35e8 100644 --- a/guides/exc_app/interfaces/index.html +++ b/guides/exc_app/interfaces/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Modules

    Hierarchy

    • Modules

    Index

    Properties

    Properties

    default

    default: function

    Type declaration:

    ▸ (options?: any): Runtime

    Parameters:

    NameType
    options?
    any

    page

    page: PageApi


    runtime

    runtime: Runtime


    topbar

    topbar: TopbarApi


    user

    user: function

    Type declaration:

    ▸ (): UserApi

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Modules

    Hierarchy

    • Modules

    Index

    Properties

    Properties

    default

    default: function

    Type declaration:

    ▸ (options?: any): Runtime

    Parameters:

    NameType
    options?
    any

    page

    page: PageApi


    runtime

    runtime: Runtime


    topbar

    topbar: TopbarApi


    user

    user: function

    Type declaration:

    ▸ (): UserApi

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/index.runtime/index.html b/guides/exc_app/interfaces/index.runtime/index.html index 1185bdcb9..22a0f8345 100644 --- a/guides/exc_app/interfaces/index.runtime/index.html +++ b/guides/exc_app/interfaces/index.runtime/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Runtime <T>

    Defines the runtime object providing all unified-shell APIs for solution authors.

    Type parameters

    T

    Hierarchy

    • EventEmitter

      Runtime

    Index

    EventEmitter Methods

    EventEmitter Methods

    emit

    emit<K>(type: K, event?: T[K]): void

    Inherited from void

    Invoke all handlers for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    NameTypeDescription
    type
    K
    The event type to invoke.
    event?
    T[K]
    Any value (object is recommended and powerful), passed to each handler.

    Returns: void


    off

    off<K>(type: K, handler: function): void

    Inherited from void

    Remove an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to unregister handler from.

    handler: function

    Handler function to remove.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void


    on

    on<K>(type: K, handler: function): void

    Inherited from void

    Register an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to listen for.

    handler: function

    Function to call in response to given event.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Runtime <T>

    Defines the runtime object providing all unified-shell APIs for solution authors.

    Type parameters

    T

    Hierarchy

    • EventEmitter

      Runtime

    Index

    EventEmitter Methods

    EventEmitter Methods

    emit

    emit<K>(type: K, event?: T[K]): void

    Inherited from void

    Invoke all handlers for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    NameTypeDescription
    type
    K
    The event type to invoke.
    event?
    T[K]
    Any value (object is recommended and powerful), passed to each handler.

    Returns: void


    off

    off<K>(type: K, handler: function): void

    Inherited from void

    Remove an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to unregister handler from.

    handler: function

    Handler function to remove.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void


    on

    on<K>(type: K, handler: function): void

    Inherited from void

    Register an event handler for the given type.

    Type parameters:

    K: keyof T

    Parameters:

    type: K

    Type of event to listen for.

    handler: function

    Function to call in response to given event.

    ▸ (event?: T[K]): void

    Parameters:

    NameType
    event?
    T[K]

    Returns: void

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.objectwithhref/index.html b/guides/exc_app/interfaces/page.objectwithhref/index.html index 2588f9de0..6db4719f9 100644 --- a/guides/exc_app/interfaces/page.objectwithhref/index.html +++ b/guides/exc_app/interfaces/page.objectwithhref/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ObjectWithHref

    Hierarchy

    • ObjectWithHref

    Index

    Properties

    Properties

    href

    href: string

    The URL of the solution page.

    Example:

    Copied to your clipboard
    { href: 'https://example.com/abc' }
    \ No newline at end of file +Copied to your clipboard
    { href: 'https://example.com/abc' }
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.objectwithpath/index.html b/guides/exc_app/interfaces/page.objectwithpath/index.html index 72f09a19d..65a708983 100644 --- a/guides/exc_app/interfaces/page.objectwithpath/index.html +++ b/guides/exc_app/interfaces/page.objectwithpath/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ObjectWithPath

    Hierarchy

    • ObjectWithPath

    Index

    Properties

    Properties

    path

    path: string

    The relative path within the solution.

    Example:

    Copied to your clipboard
    {path: '/abc'}
    \ No newline at end of file +Copied to your clipboard
    {path: '/abc'}
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.pageapi/index.html b/guides/exc_app/interfaces/page.pageapi/index.html index 47a73771d..dafa3c415 100644 --- a/guides/exc_app/interfaces/page.pageapi/index.html +++ b/guides/exc_app/interfaces/page.pageapi/index.html @@ -148,4 +148,4 @@ Copied to your clipboard
    page.openInNewTab('/path');

    Parameters:

    NameTypeDescription
    path
    string
    The relative path within the solution.

    Returns: void


    shellRedirect

    shellRedirect(path: string): void

    Redirects to another unified shell solution. Path should be the complete relative path of a valid unified shell solution url (i.e. if shellRedirect is called from /target to /analytics, the path paremeter would need to start with /analytics). Query and hash are optional.

    Example:

    Copied to your clipboard
    page.shellRedirect('/path?a=b#workspace');

    Parameters:

    NameTypeDescription
    path
    string
    Path including search and hash to a unified shell solution.

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    page.shellRedirect('/path?a=b#workspace');

    Parameters:

    NameTypeDescription
    path
    string
    Path including search and hash to a unified shell solution.

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/page.pageapiproperties/index.html b/guides/exc_app/interfaces/page.pageapiproperties/index.html index 9951198c6..7949d070f 100644 --- a/guides/exc_app/interfaces/page.pageapiproperties/index.html +++ b/guides/exc_app/interfaces/page.pageapiproperties/index.html @@ -133,4 +133,4 @@ order to alternate the z-index values, putting the iframe above the Shell, set:

    Copied to your clipboard
    page.viewportTakeover = true;

    Now the solution application is 100% of the browser's viewport and can open any views at 100%. When the takeover is complete, set the value back to false to return the Shell to the top of -the application.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +the application.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.callback/index.html b/guides/exc_app/interfaces/topbar.callback/index.html index 34ae01d08..956c71157 100644 --- a/guides/exc_app/interfaces/topbar.callback/index.html +++ b/guides/exc_app/interfaces/topbar.callback/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Callback

    Hierarchy

    • Callback

    Callable

    ▸ (value?: any): void

    Parameters:

    NameType
    value?
    any

    Returns: void

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Callback

    Hierarchy

    • Callback

    Callable

    ▸ (value?: any): void

    Parameters:

    NameType
    value?
    any

    Returns: void

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html b/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html index ee8e611ae..654592842 100644 --- a/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html +++ b/guides/exc_app/interfaces/topbar.customfeedbackconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomFeedbackConfig

    Hierarchy

    • CustomFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    callback

    callback: Callback


    enabled

    enabled: boolean


    type

    type: "custom"

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomFeedbackConfig

    Hierarchy

    • CustomFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    callback

    callback: Callback


    enabled

    enabled: boolean


    type

    type: "custom"

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.customsearchconfig/index.html b/guides/exc_app/interfaces/topbar.customsearchconfig/index.html index ca8af61f8..2e3095e98 100644 --- a/guides/exc_app/interfaces/topbar.customsearchconfig/index.html +++ b/guides/exc_app/interfaces/topbar.customsearchconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomSearchConfig

    Hierarchy

    • CustomSearchConfig

    Index

    Properties

    Properties

    Optional callback

    callback? : Callback

    The callback to execute when the search icon is clicked.


    Optional enabled

    enabled? : undefined | false | true

    Used to control whether or not the search icon in the top bar is enabled and clickable.


    Optional open

    open? : undefined | false | true

    Flag used to notify shell whether the custom search dialog has been opened/closed.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: CustomSearchConfig

    Hierarchy

    • CustomSearchConfig

    Index

    Properties

    Properties

    Optional callback

    callback? : Callback

    The callback to execute when the search icon is clicked.


    Optional enabled

    enabled? : undefined | false | true

    Used to control whether or not the search icon in the top bar is enabled and clickable.


    Optional open

    open? : undefined | false | true

    Flag used to notify shell whether the custom search dialog has been opened/closed.

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html b/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html index 4d85e9870..e9f56eb4a 100644 --- a/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html +++ b/guides/exc_app/interfaces/topbar.externalfeedbackconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ExternalFeedbackConfig

    Hierarchy

    • ExternalFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    type

    type: "external"


    url

    url: string

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: ExternalFeedbackConfig

    Hierarchy

    • ExternalFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    type

    type: "external"


    url

    url: string

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html b/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html index 6987125fc..7c5fb191d 100644 --- a/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html +++ b/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: HelpCenterFeedbackConfig

    Hierarchy

    • HelpCenterFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    Optional subject

    subject? : undefined | string


    type

    type: "openFeedback"

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: HelpCenterFeedbackConfig

    Hierarchy

    • HelpCenterFeedbackConfig

    Index

    Properties

    Properties

    buttonLabel

    buttonLabel: string


    enabled

    enabled: boolean


    Optional subject

    subject? : undefined | string


    type

    type: "openFeedback"

    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.solution/index.html b/guides/exc_app/interfaces/topbar.solution/index.html index 1bbe59732..546cd7f15 100644 --- a/guides/exc_app/interfaces/topbar.solution/index.html +++ b/guides/exc_app/interfaces/topbar.solution/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: Solution

    Defines the attributes of the solution to display on the left-side of the top bar.

    Hierarchy

    • Solution

    Index

    Properties

    Properties

    icon

    icon: string

    The icon to display in the solution area. If this isn't set, then the default experience cloud -icon will be used.


    shortTitle

    shortTitle: string

    The title to display on smaller browser resolutions where the horizonal space is constrained.


    title

    title: string

    The title to display. Defaults to 'Adobe Experience Cloud'.

    \ No newline at end of file +icon will be used.


    shortTitle

    shortTitle: string

    The title to display on smaller browser resolutions where the horizonal space is constrained.


    title

    title: string

    The title to display. Defaults to 'Adobe Experience Cloud'.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.topbarapi/index.html b/guides/exc_app/interfaces/topbar.topbarapi/index.html index dcf9607c6..8dd2c2e7d 100644 --- a/guides/exc_app/interfaces/topbar.topbarapi/index.html +++ b/guides/exc_app/interfaces/topbar.topbarapi/index.html @@ -144,4 +144,4 @@ ]; Copied to your clipboard
    topbar.workspaces = [
    {name: 'Home', url: '/'},
    {name: 'ABC', url: '/abc'},
    {
    name: 'DEF',
    url: '/def',
    menu: [
    {
    name: 'GHI',
    url: '/def/ghi',
    menu: [
    {name: 'JKL', url: '/def/ghi/jkl'}
    ]
    }
    ]
    }
    ];

    Methods

    onHeroClick

    onHeroClick(callback: Callback): void

    Registers a callback to execute when the hero (solution) icon in the upper lefthand corner of the Shell is clicked.

    Parameters:

    NameTypeDescription
    callback
    The callback to execute.

    Returns: void


    setCustomSearch

    setCustomSearch(config: CustomSearchConfig | null): void

    Determines whether or not to enable the custom search property and enacts a callback -when the custom search icon is clicked.

    Parameters:

    NameType
    config

    Returns: void


    setFeedbackButton

    setFeedbackButton(config: CustomFeedbackConfig | HelpCenterFeedbackConfig | ExternalFeedbackConfig | null): void

    Determines whether or not to enable a feedback button.

    Parameters:

    NameType
    config

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +when the custom search icon is clicked.

    Parameters:

    NameType
    config

    Returns: void


    setFeedbackButton

    setFeedbackButton(config: CustomFeedbackConfig | HelpCenterFeedbackConfig | ExternalFeedbackConfig | null): void

    Determines whether or not to enable a feedback button.

    Parameters:

    NameType
    config

    Returns: void

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html b/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html index 6bdd72ef3..f48cb726e 100644 --- a/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html +++ b/guides/exc_app/interfaces/topbar.topbarapiproperties/index.html @@ -142,4 +142,4 @@ ] } ]; -Copied to your clipboard
    topbar.workspaces = [
    {name: 'Home', url: '/'},
    {name: 'ABC', url: '/abc'},
    {
    name: 'DEF',
    url: '/def',
    menu: [
    {
    name: 'GHI',
    url: '/def/ghi',
    menu: [
    {name: 'JKL', url: '/def/ghi/jkl'}
    ]
    }
    ]
    }
    ];
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    topbar.workspaces = [
    {name: 'Home', url: '/'},
    {name: 'ABC', url: '/abc'},
    {
    name: 'DEF',
    url: '/def',
    menu: [
    {
    name: 'GHI',
    url: '/def/ghi',
    menu: [
    {name: 'JKL', url: '/def/ghi/jkl'}
    ]
    }
    ]
    }
    ];
    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/user.userapi/index.html b/guides/exc_app/interfaces/user.userapi/index.html index cd7d89d4c..26aa0bf6f 100644 --- a/guides/exc_app/interfaces/user.userapi/index.html +++ b/guides/exc_app/interfaces/user.userapi/index.html @@ -111,4 +111,4 @@ );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: UserApi

    Hierarchy

    • EventEmitter‹UserInfoEvent›

      UserApi

    Index

    Properties

    EventEmitter Methods

    Other Methods

    Properties

    logoutUrl

    logoutUrl: string | undefined

    Optional. When specified this URL will be invoked upon user logging out. This is useful to reduce the number of lingering sessions for solutions who have their own sessions server (in addition to IMS).

    EventEmitter Methods

    emit

    emit<K>(type: K, event?: UserInfoEvent[K]): void

    Inherited from void

    Invoke all handlers for the given type.

    Type parameters:

    K: keyof UserInfoEvent

    Parameters:

    NameTypeDescription
    type
    K
    The event type to invoke.
    event?
    UserInfoEvent[K]
    Any value (object is recommended and powerful), passed to each handler.

    Returns: void


    off

    off<K>(type: K, handler: function): void

    Inherited from void

    Remove an event handler for the given type.

    Type parameters:

    K: keyof UserInfoEvent

    Parameters:

    type: K

    Type of event to unregister handler from.

    handler: function

    Handler function to remove.

    ▸ (event?: UserInfoEvent[K]): void

    Parameters:

    NameType
    event?
    UserInfoEvent[K]

    Returns: void


    on

    on<K>(type: K, handler: function): void

    Inherited from void

    Register an event handler for the given type.

    Type parameters:

    K: keyof UserInfoEvent

    Parameters:

    type: K

    Type of event to listen for.

    handler: function

    Function to call in response to given event.

    ▸ (event?: UserInfoEvent[K]): void

    Parameters:

    NameType
    event?
    UserInfoEvent[K]

    Returns: void


    Other Methods

    authExpired

    authExpired(): void

    API to notify the unified shell that APIs are returning 401 and user needs to be -re-authenticated.

    Returns: void


    get

    get<T>(type: T): Promise‹UserInfo[T]›

    Gets the specified type of information about an user.

    Type parameters:

    T: keyof UserInfo

    Parameters:

    NameTypeDescription
    type
    T
    The type of information to get.

    Returns: Promise‹UserInfo[T]›

    \ No newline at end of file +re-authenticated.

    Returns: void


    get

    get<T>(type: T): Promise‹UserInfo[T]›

    Gets the specified type of information about an user.

    Type parameters:

    T: keyof UserInfo

    Parameters:

    NameTypeDescription
    type
    T
    The type of information to get.

    Returns: Promise‹UserInfo[T]›

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/interfaces/user.userinfo/index.html b/guides/exc_app/interfaces/user.userinfo/index.html index ea61513e8..af7f6ae7a 100644 --- a/guides/exc_app/interfaces/user.userinfo/index.html +++ b/guides/exc_app/interfaces/user.userinfo/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: UserInfo

    Hierarchy

    • UserInfo

    Index

    Properties

    Properties

    imsOrg

    imsOrg: string


    imsOrgName

    imsOrgName: string


    imsOrgs

    imsOrgs: object[]


    imsProfile

    imsProfile: Record‹string, any›


    imsToken

    imsToken: string


    locale

    locale: string


    preferredLanguages

    preferredLanguages: string[]


    subOrg

    subOrg: string | null


    tenant

    tenant: string

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Interface: UserInfo

    Hierarchy

    • UserInfo

    Index

    Properties

    Properties

    imsOrg

    imsOrg: string


    imsOrgName

    imsOrgName: string


    imsOrgs

    imsOrgs: object[]


    imsProfile

    imsProfile: Record‹string, any›


    imsToken

    imsToken: string


    locale

    locale: string


    preferredLanguages

    preferredLanguages: string[]


    subOrg

    subOrg: string | null


    tenant

    tenant: string

    \ No newline at end of file diff --git a/guides/exc_app/modules/index.html b/guides/exc_app/modules/index.html index 5757f9a14..84f17a39c 100644 --- a/guides/exc_app/modules/index.html +++ b/guides/exc_app/modules/index.html @@ -129,4 +129,4 @@ } } Copied to your clipboard
    import React from 'react';
    import ReactDOM from 'react-dom';
    import excApp from '@exc/runtime';
    -
    export class MyComponent extends React.Component {
    constructor(props) {
    this.runtime = excApp();
    }
    }

    Returns: Runtime

    The runtime object.

    Stephan RingelValerii NaidaTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +
    export class MyComponent extends React.Component {
    constructor(props) {
    this.runtime = excApp();
    }
    }

    Returns: Runtime

    The runtime object.

    Stephan RingelValerii NaidaTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/modules/page/index.html b/guides/exc_app/modules/page/index.html index f4c5cb2c4..47b1b4bcd 100644 --- a/guides/exc_app/modules/page/index.html +++ b/guides/exc_app/modules/page/index.html @@ -132,4 +132,4 @@
    // Show spinner while performing an async operation
    page.spinner = true;
    try {
    await performOperation();
    } finally {
    page.spinner = false;
    }
    // Generate a shell URL that directly opens the specified solution URL
    const shellUrl = page.generateShellUrl('/relative/path');
    // Navigate to another solution
    page.shellRedirect('/target');

    Index

    Interfaces

    Type aliases

    Type aliases

    LocationLike

    Ƭ LocationLike: ObjectWithHref | ObjectWithPath

    Defines the location-like object for which to get the shell URL. You can either specify a path or -an absolute URL.

    Example:

    {path: '/abc'} or {href: 'https://example.com/abc'}

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +an absolute URL.

    Example:

    {path: '/abc'} or {href: 'https://example.com/abc'}

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/modules/topbar/index.html b/guides/exc_app/modules/topbar/index.html index b76482f0f..574057558 100644 --- a/guides/exc_app/modules/topbar/index.html +++ b/guides/exc_app/modules/topbar/index.html @@ -114,4 +114,4 @@ topbar.customEnvLabel = 'Beta'; Copied to your clipboard
    import topbar from '@adobe/exc-app/topbar';
    -
    topbar.customEnvLabel = 'Beta';

    Index

    Interfaces

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +
    topbar.customEnvLabel = 'Beta';

    Index

    Interfaces

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/exc_app/modules/user/index.html b/guides/exc_app/modules/user/index.html index 43205ecd1..452773d5a 100644 --- a/guides/exc_app/modules/user/index.html +++ b/guides/exc_app/modules/user/index.html @@ -146,4 +146,4 @@ Copied to your clipboard
    import user from '@adobe/exc-app/user';
    constructor() {
    this.state = {org: null, shell: {}};
    user.on('change:imsOrg', (org) => {
    this.setState({org});
    });
    }
    -
    async componentDidMount() {
    const org = await user.get('imsOrg');
    this.setState({org});
    }

    Index

    Interfaces

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +
    async componentDidMount() {
    const org = await user.get('imsOrg');
    this.setState({org});
    }

    Index

    Interfaces

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/extensions/extension_migration_guide/index.html b/guides/extensions/extension_migration_guide/index.html index 408369c64..1d770d508 100644 --- a/guides/extensions/extension_migration_guide/index.html +++ b/guides/extensions/extension_migration_guide/index.html @@ -208,4 +208,4 @@ final: true hooks: post-app-build: 'echo hook' -Copied to your clipboard
    extensions:
    dx/excshell/1:
    operations:
    view:
    - type: web
    impl: index.html
    runtimeManifest:
    packages:
    <newpackagename>:
    license: Apache-2.0
    actions:
    todolist:
    function: actions/todolist/index.js
    web: 'yes'
    runtime: 'nodejs:14'
    inputs:
    LOG_LEVEL: debug
    annotations:
    require-adobe-auth: true
    final: true
    dx/asset-compute/worker/1:
    operations:
    workerProcess:
    - type: web
    impl: worker
    runtimeManifest:
    packages:
    <newpackagename>:
    license: Apache-2.0
    actions:
    worker:
    function: actions/worker/index.js
    web: 'yes'
    runtime: 'nodejs:14'
    inputs:
    LOG_LEVEL: debug
    annotations:
    require-adobe-auth: true
    final: true
    hooks:
    post-app-build: 'echo hook'

    3. Testing

    Once you've completed your refactoring, simply try aio app run or aio app deploy, and everything should work as usual.

    Should you run into any issues, please contact us through the Experience League Forum and we'll support you as soon as possible.

    Adding or removing Endpoints from Existing Projects

    Similar to actions, you can choose to directly edit your extension configuration by modifying your code. Alternatively, we provide a few simple commands:

    Duy NguyenStephan RingelMichael GoberlingRon NagyShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    extensions:
    dx/excshell/1:
    operations:
    view:
    - type: web
    impl: index.html
    runtimeManifest:
    packages:
    <newpackagename>:
    license: Apache-2.0
    actions:
    todolist:
    function: actions/todolist/index.js
    web: 'yes'
    runtime: 'nodejs:14'
    inputs:
    LOG_LEVEL: debug
    annotations:
    require-adobe-auth: true
    final: true
    dx/asset-compute/worker/1:
    operations:
    workerProcess:
    - type: web
    impl: worker
    runtimeManifest:
    packages:
    <newpackagename>:
    license: Apache-2.0
    actions:
    worker:
    function: actions/worker/index.js
    web: 'yes'
    runtime: 'nodejs:14'
    inputs:
    LOG_LEVEL: debug
    annotations:
    require-adobe-auth: true
    final: true
    hooks:
    post-app-build: 'echo hook'

    3. Testing

    Once you've completed your refactoring, simply try aio app run or aio app deploy, and everything should work as usual.

    Should you run into any issues, please contact us through the Experience League Forum and we'll support you as soon as possible.

    Adding or removing Endpoints from Existing Projects

    Similar to actions, you can choose to directly edit your extension configuration by modifying your code. Alternatively, we provide a few simple commands:

    Duy NguyenStephan RingelMichael GoberlingRon NagyShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/extensions/index.html b/guides/extensions/index.html index 2eea45118..89d15a15c 100644 --- a/guides/extensions/index.html +++ b/guides/extensions/index.html @@ -115,4 +115,4 @@ extension diagram -

    To visualize this in a diagram, you can see that each Adobe product can define as many Extension Points as needed. App Builder applications, on the right side, expose Endpoints that are implementing these defined Extension points. Each App Builder Application can implement none or multiple Extension Points across the Adobe ecosystem.

    This mechanism allows developers to easily validate that the App Builder application built will work in the context of the Adobe product it is extending, and provides a flexible yet integrated way for developers to implement their custom applications.

    Available Extension Points

    Currently, we support 2 Extension Points in App Builder. One for AEM Asset Microservices and one for Experience Cloud UI.

    Experience Cloud UI Extension Point

    This Extension Point should be used for developers who are looking to build Single Page Applications (SPAs) that can be accessed by users through Experience Cloud UI.

    Extension Point Info

    AEM Asset Microservices Extension Point

    This Extension Point should be used for developers who want to build AEM Asset Microservices Custom Processing Profiles.

    Extension Point Info

    How do I use it in my App Builder Project?

    Similar to other properties in an App Builder project, we leverage configurations in your codebase to define Extension properties. Follow the detailed instructions below with sample code to see how you can use it in your project!

    New Project

    Simply follow instructions in Creating your First App Builder Application, you will be prompted through a few selections that set up the Extension Point info by default in your App Builder project.

    Migrating from Existing Project or Editing Endpoints

    If you have an existing App Builder application prior to July 28, 2021 that you'd like to migrate, or if you'd like to edit existing endpoints, please follow Extension Migration Guide for more details.

    Next steps

    Sarah XuValerii NaidaStephan RingelTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +

    To visualize this in a diagram, you can see that each Adobe product can define as many Extension Points as needed. App Builder applications, on the right side, expose Endpoints that are implementing these defined Extension points. Each App Builder Application can implement none or multiple Extension Points across the Adobe ecosystem.

    This mechanism allows developers to easily validate that the App Builder application built will work in the context of the Adobe product it is extending, and provides a flexible yet integrated way for developers to implement their custom applications.

    Available Extension Points

    Currently, we support 2 Extension Points in App Builder. One for AEM Asset Microservices and one for Experience Cloud UI.

    Experience Cloud UI Extension Point

    This Extension Point should be used for developers who are looking to build Single Page Applications (SPAs) that can be accessed by users through Experience Cloud UI.

    Extension Point Info

    AEM Asset Microservices Extension Point

    This Extension Point should be used for developers who want to build AEM Asset Microservices Custom Processing Profiles.

    Extension Point Info

    How do I use it in my App Builder Project?

    Similar to other properties in an App Builder project, we leverage configurations in your codebase to define Extension properties. Follow the detailed instructions below with sample code to see how you can use it in your project!

    New Project

    Simply follow instructions in Creating your First App Builder Application, you will be prompted through a few selections that set up the Extension Point info by default in your App Builder project.

    Migrating from Existing Project or Editing Endpoints

    If you have an existing App Builder application prior to July 28, 2021 that you'd like to migrate, or if you'd like to edit existing endpoints, please follow Extension Migration Guide for more details.

    Next steps

    Sarah XuValerii NaidaStephan RingelTim KimShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/extensions/ui_extensibility/index.html b/guides/extensions/ui_extensibility/index.html index 76e161475..14bdcb037 100644 --- a/guides/extensions/ui_extensibility/index.html +++ b/guides/extensions/ui_extensibility/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    UI Extensibility

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    UI Extensibility

    \ No newline at end of file diff --git a/guides/index.html b/guides/index.html index 775c7b281..42bbec412 100644 --- a/guides/index.html +++ b/guides/index.html @@ -116,4 +116,4 @@ JAMStack Architecture -

    SDK Components

    CLI

    The CLI is one of the main touchpoints for App Builder developers. It is based on oclif, which is a popular framework to build extensible command line tools.

    The CLI comes out-of-the-box with the following capabilities:

    App Builder Generators

    The generators help developers to bootstrap their App Builder apps when using the CLI.

    Generators can be used to create:

    SDK Libraries

    App Builder also provides a collection of JavaScript-based SDK libraries designed to increase the developer's velocity when implementing Custom Applications on top of Adobe APIs.

    Main SDK library

    The main SDK library bundles smaller, reusable SDK libraries serving a variety of use-cases:

    Integration with Adobe APIs
    Integration with Adobe's Identity Management System

    The Adobe IMS SDK library provides authentication management capabilities to Adobe's Identity Management Services, for both of the following scenarios:

    Integration with additional out-of-the-box services
    Technical framework for developers

    The Core SDK library bundled into the main SDK library provides a lower-level technical framework for developers.

    This framework must be used when contributing to the App Builder SDK. It is also recommended to use it when building an App Builder application.

    Core SDK library

    The Core SDK library enables developers with the following technical capabilities:

    Configuration

    The Configuration SDK library allows management of persistent and environment variable configuration.

    Logging

    The Logging SDK library provides a logger abstraction that can be used in SDK libraries and serverless actions deployed to Runtime.

    Errors

    The Errors SDK library is the base implementation for all errors thrown by the SDK libraries and can be used by developers to manage their own errors.

    Networking

    The Networking SDK library provides low-level networking tools such as exponential back-off that can be used in SDK libraries and custom API clients.

    Token-Vending Machine

    The Token-Vending Machine is exposed as an out-of-the-box API deployed to Runtime.

    It enables developers to perform the following actions on behalf of their App Builder application credentials:

    CI/CD Support

    The out-of-the-box CI/CD support for App Builder Applications consists in:

    Webpack

    App Builder uses Webpack for bundling I/O Runtime action code. See here for an overview on webpack configuration.

    Migration Guides

    Next steps

    Valerii NaidaStephan RingelMichael GoberlingJesse MacFadyenShazron Abdullah
    Last updated 4/19/2024
    Was this helpful?
    \ No newline at end of file +

    SDK Components

    CLI

    The CLI is one of the main touchpoints for App Builder developers. It is based on oclif, which is a popular framework to build extensible command line tools.

    The CLI comes out-of-the-box with the following capabilities:

    App Builder Generators

    The generators help developers to bootstrap their App Builder apps when using the CLI.

    Generators can be used to create:

    SDK Libraries

    App Builder also provides a collection of JavaScript-based SDK libraries designed to increase the developer's velocity when implementing Custom Applications on top of Adobe APIs.

    Main SDK library

    The main SDK library bundles smaller, reusable SDK libraries serving a variety of use-cases:

    Integration with Adobe APIs
    Integration with Adobe's Identity Management System

    The Adobe IMS SDK library provides authentication management capabilities to Adobe's Identity Management Services, for both of the following scenarios:

    Integration with additional out-of-the-box services
    Technical framework for developers

    The Core SDK library bundled into the main SDK library provides a lower-level technical framework for developers.

    This framework must be used when contributing to the App Builder SDK. It is also recommended to use it when building an App Builder application.

    Core SDK library

    The Core SDK library enables developers with the following technical capabilities:

    Configuration

    The Configuration SDK library allows management of persistent and environment variable configuration.

    Logging

    The Logging SDK library provides a logger abstraction that can be used in SDK libraries and serverless actions deployed to Runtime.

    Errors

    The Errors SDK library is the base implementation for all errors thrown by the SDK libraries and can be used by developers to manage their own errors.

    Networking

    The Networking SDK library provides low-level networking tools such as exponential back-off that can be used in SDK libraries and custom API clients.

    Token-Vending Machine

    The Token-Vending Machine is exposed as an out-of-the-box API deployed to Runtime.

    It enables developers to perform the following actions on behalf of their App Builder application credentials:

    CI/CD Support

    The out-of-the-box CI/CD support for App Builder Applications consists in:

    Webpack

    App Builder uses Webpack for bundling I/O Runtime action code. See here for an overview on webpack configuration.

    Migration Guides

    Next steps

    Valerii NaidaStephan RingelMichael GoberlingJesse MacFadyenShazron Abdullah
    Last updated 4/19/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/introduction_to_react_spectrum/index.html b/guides/introduction_to_react_spectrum/index.html index 84554b66a..08e46781b 100644 --- a/guides/introduction_to_react_spectrum/index.html +++ b/guides/introduction_to_react_spectrum/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Introduction to React Spectrum

    The React Spectrum project implements the Adobe's Spectrum design language into React UI components.

    React Spectrum is composed of three parts:

    • react-spectrum, a component library implementing the Adobe Spectrum design system
    • react-aria, a library of React hooks implementing the patterns defined in the ARIA practices spec, including mouse, touch, and keyboard behavior, accessibility, and internationalization support
    • react-stately, a library of React hooks implementing cross platform (e.g. web/native) state management for components that need it.

    React Spectrum enables accessibility and common behavior to be handled out of the box. Leveraging React Spectrum in your App Builder application allows you to save front end development time, and focus on styling and other design specific features that can be built on top of the library.

    The sample templates generated through the CLI leverage React Spectrum in the UI as an example.

    To learn more, please visit the React Spectrum Homepage: https://react-spectrum.adobe.com/.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Introduction to React Spectrum

    The React Spectrum project implements the Adobe's Spectrum design language into React UI components.

    React Spectrum is composed of three parts:

    • react-spectrum, a component library implementing the Adobe Spectrum design system
    • react-aria, a library of React hooks implementing the patterns defined in the ARIA practices spec, including mouse, touch, and keyboard behavior, accessibility, and internationalization support
    • react-stately, a library of React hooks implementing cross platform (e.g. web/native) state management for components that need it.

    React Spectrum enables accessibility and common behavior to be handled out of the box. Leveraging React Spectrum in your App Builder application allows you to save front end development time, and focus on styling and other design specific features that can be built on top of the library.

    The sample templates generated through the CLI leverage React Spectrum in the UI as an example.

    To learn more, please visit the React Spectrum Homepage: https://react-spectrum.adobe.com/.

    \ No newline at end of file diff --git a/guides/migrations/standalone_to_dx_experience_cloud_spa/index.html b/guides/migrations/standalone_to_dx_experience_cloud_spa/index.html index e7b662b22..e6870ea70 100644 --- a/guides/migrations/standalone_to_dx_experience_cloud_spa/index.html +++ b/guides/migrations/standalone_to_dx_experience_cloud_spa/index.html @@ -134,4 +134,4 @@ Copied to your clipboard
    operations:
    view:
    - type: web
    impl: index.html
  • Replace the contents of app.config.yaml with the following:
    Copied to your clipboard
    extensions:
    dx/excshell/1:
    $include: src/dx-excshell-1/ext.config.yaml
  • Revoke the application (Optional: Only if application is published)
    1. If admin
      1. Navigate to Adobe Exchange
      2. Select Manage in the top toolbar
      3. Select Approved Apps in the top sub toolbar
      4. Find your application in the list, click Revoke
      5. Click Revoke
    2. If not admin
      1. Ping admin to revoke
      2. Wait for admin to revoke
  • Re-initialize application
    1. Run aio app init
      1. Select your organization
      2. Select your project
      3. Select All Templates
      4. Select the @adobe/generator-app-excshell template
      5. Overwrite package.json
      6. Overwrite .env
  • Deploy your application
    1. Run aio app deploy
  • Submit application for approval
    1. Navigate to the Adobe Developer Console
    2. Select your project
    3. Select the Production workspace
    4. Find and click Submit for Approval
    5. Fill out the relevant submission details
    6. Find and click Submit
  • Approve application
    1. If admin
      1. Navigate to Adobe Exchange
      2. Select Manage in the top toolbar
      3. Select Apps Pending Review in the top sub toolbar
      4. Find your application in the list, click Review
        1. Note: Application should have App Builder ExcShell sub-heading
      5. Fill in approval notes, click Approve
    2. If not admin
      1. Ping admin for approval
      2. Wait for approval
  • Done, your application should now be in the App Builder Catalog in Adobe Experience Cloud
  • Michael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    extensions:
    dx/excshell/1:
    $include: src/dx-excshell-1/ext.config.yaml
  • Revoke the application (Optional: Only if application is published)
    1. If admin
      1. Navigate to Adobe Exchange
      2. Select Manage in the top toolbar
      3. Select Approved Apps in the top sub toolbar
      4. Find your application in the list, click Revoke
      5. Click Revoke
    2. If not admin
      1. Ping admin to revoke
      2. Wait for admin to revoke
  • Re-initialize application
    1. Run aio app init
      1. Select your organization
      2. Select your project
      3. Select All Templates
      4. Select the @adobe/generator-app-excshell template
      5. Overwrite package.json
      6. Overwrite .env
  • Deploy your application
    1. Run aio app deploy
  • Submit application for approval
    1. Navigate to the Adobe Developer Console
    2. Select your project
    3. Select the Production workspace
    4. Find and click Submit for Approval
    5. Fill out the relevant submission details
    6. Find and click Submit
  • Approve application
    1. If admin
      1. Navigate to Adobe Exchange
      2. Select Manage in the top toolbar
      3. Select Apps Pending Review in the top sub toolbar
      4. Find your application in the list, click Review
        1. Note: Application should have App Builder ExcShell sub-heading
      5. Fill in approval notes, click Approve
    2. If not admin
      1. Ping admin for approval
      2. Wait for approval
  • Done, your application should now be in the App Builder Catalog in Adobe Experience Cloud
  • Michael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/reference_documentation/index.html b/guides/reference_documentation/index.html index 84c05b467..ed6dc6839 100644 --- a/guides/reference_documentation/index.html +++ b/guides/reference_documentation/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Reference Documentation

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Reference Documentation

    \ No newline at end of file diff --git a/guides/security/index.html b/guides/security/index.html index 593fea16c..c2d3996c9 100644 --- a/guides/security/index.html +++ b/guides/security/index.html @@ -173,4 +173,4 @@ Copied to your clipboard
    "body": {
    "message": "validation success"
    }

    An issue is filed here.

    Work Around: You will need to use a different variable until this is resolved.

    Securing App Builder Applications

    I/O Runtime Specific guidelines

    The security guidelines for I/O Runtime generally apply for the back-end actions of an App Builder application.

    The guidelines below are specific to App Builder applications.

    Transport Security

    Developers building App Builder Applications on top of the out-of-the-box infrastructure will benefit from HTTPS connections between all the components that are part of this infrastructure.

    We strongly recommend to ensure that every 3rd party system or service integrating with an App Builder Application supports HTTPS connections as well.

    Tenant Isolation

    App Builder Applications and Services provide tenant isolation by default. An App Builder Application gets deployed into an App Builder Workspace defined within the Developer Console for a give App Builder project. Each App Builder Workspace owns its own Runtime namespace.

    This combination of Enterprise Organization, Project, Workspace and Runtime Namespace define a granular tenant isolation for each deployed App Builder Application.

    Runtime Actions

    The back-end Runtime actions used by an App Builder Application respect the tenant isolation model implemented by I/O Runtime.

    Cloud Storage and CDN for SPA Static Files

    If an App Builder Application is an SPA that deploys into the Experience Cloud Shell, the static assets of the SPA get deployed from the or from a CI/CD pipeline to App Builder's Cloud Storage and CDN.

    Both of them have a strict isolation per Runtime namespace. It is only possible to access the Cloud Storage container hosting an App Builder SPA by configuring the CLI with the appropriate workspace credentials.

    The CDN serves these static assets from a sub-domain exclusively dedicated to the Runtime namespace associated to the App Builder Application workspace to which the SPA is deployed.

    Files & State Services

    The Files and State SDK libraries from the App Builder SDK provide an abstraction to interact with App Builder Cloud Storage and Key-Value Store from a Runtime action. -The access to the data stored in these underlying services is restricted to the Runtime namespace in which the action is executed.

    App Builder Apps Service

    The App Builder Apps application available to each Enterprise Organization within the Experience Cloud Shell is nothing more than an App Builder Application that is deployed following the access and isolation paradigms documented in this guide.

    Summary

    App Builder SDK and CLI provide out-of-the-box support for developers to implement secure Adobe-native applications that deploy into App Builder serverless infrastructure and integrate with Adobe Product APIs.

    Developers are able to build serverless processes and user-context aware applications with minimal knowledge of Adobe's authentication and authorization mechanisms for the Enterprise while not having to worry about other key concepts such as tenant isolation.

    Next steps

    Stephan RingelTim KimMichael GoberlingJesse MacFadyenShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +The access to the data stored in these underlying services is restricted to the Runtime namespace in which the action is executed.

    App Builder Apps Service

    The App Builder Apps application available to each Enterprise Organization within the Experience Cloud Shell is nothing more than an App Builder Application that is deployed following the access and isolation paradigms documented in this guide.

    Summary

    App Builder SDK and CLI provide out-of-the-box support for developers to implement secure Adobe-native applications that deploy into App Builder serverless infrastructure and integrate with Adobe Product APIs.

    Developers are able to build serverless processes and user-context aware applications with minimal knowledge of Adobe's authentication and authorization mechanisms for the Enterprise while not having to worry about other key concepts such as tenant isolation.

    Next steps

    Stephan RingelTim KimMichael GoberlingJesse MacFadyenShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/security/understanding_authentication/index.html b/guides/security/understanding_authentication/index.html index c08d22502..8e70fb6c6 100644 --- a/guides/security/understanding_authentication/index.html +++ b/guides/security/understanding_authentication/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Understanding Authentication

    If you plan to work with Adobe APIs in your custom application, please follow this chapter to understand Adobe Authentication and the libraries that you can leverage.

    Adobe services like Creative SDK, Photoshop, Adobe Analytics, etc. use the OAuth 2.0 protocol for authentication and authorization. Using Adobe OAuth 2.0, you can generate an access token which is used to make API calls from your web server or browser-based apps. You can learn more about it at OAuth 2.0 Authentication and Authorization.

    API services tied to entitled Adobe products (e.g. Campaign, Target, etc.) require a JSON Web Token (JWT) in order to retrieve access tokens for usage against authenticated endpoints. This document serves as a quickstart guide for first-time users.

    Certain products, like Adobe Analytics 2.0, allow both types of integrations. You can choose to use an OAuth client if you are creating an application that requires an end user to authenticate before calling the Adobe Analytics APIs; JWT client if creating an application that needs to programmatically authenticate calls to the Adobe Analytics APIs.

    To simplify your interaction with Adobe authentication, we have created a library.

    You can configure it and try it out directly at

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Understanding Authentication

    If you plan to work with Adobe APIs in your custom application, please follow this chapter to understand Adobe Authentication and the libraries that you can leverage.

    Adobe services like Creative SDK, Photoshop, Adobe Analytics, etc. use the OAuth 2.0 protocol for authentication and authorization. Using Adobe OAuth 2.0, you can generate an access token which is used to make API calls from your web server or browser-based apps. You can learn more about it at OAuth 2.0 Authentication and Authorization.

    API services tied to entitled Adobe products (e.g. Campaign, Target, etc.) require a JSON Web Token (JWT) in order to retrieve access tokens for usage against authenticated endpoints. This document serves as a quickstart guide for first-time users.

    Certain products, like Adobe Analytics 2.0, allow both types of integrations. You can choose to use an OAuth client if you are creating an application that requires an end user to authenticate before calling the Adobe Analytics APIs; JWT client if creating an application that needs to programmatically authenticate calls to the Adobe Analytics APIs.

    To simplify your interaction with Adobe authentication, we have created a library.

    You can configure it and try it out directly at

    \ No newline at end of file diff --git a/guides/telemetry/index.html b/guides/telemetry/index.html index d97df0971..93b9fc595 100644 --- a/guides/telemetry/index.html +++ b/guides/telemetry/index.html @@ -119,4 +119,4 @@
    ➜ aio telemetry on
    Telemetry is on! Nice, you are helping us improve Adobe Developer CLI
    If you would like to turn telemetry off, simply run `aio telemetry off`

    You can also just check the status of telemetry.

    Copied to your clipboard
    ➜ aio telemetry
    Telemetry is on! Nice, you are helping us improve Adobe Developer CLI
    If you would like to turn telemetry off, simply run `aio telemetry off`

    Additionally, any individual command may be run with telemetry off by using the --no-telemetry flag.

    example:

    aio app info --no-telemetry

    Show me the code

    Telemetry itself is implemented as a cli plugin. It is developed in the open, and released under the Apache 2.0 license. If you would like to watch, review, (star!) or contribute to the project please visit aio-cli-plugin-telemetry

    Jesse MacFadyen
    Last updated 9/28/2022
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    ➜ aio telemetry
    Telemetry is on! Nice, you are helping us improve Adobe Developer CLI
    If you would like to turn telemetry off, simply run `aio telemetry off`

    Additionally, any individual command may be run with telemetry off by using the --no-telemetry flag.

    example:

    aio app info --no-telemetry

    Show me the code

    Telemetry itself is implemented as a cli plugin. It is developed in the open, and released under the Apache 2.0 license. If you would like to watch, review, (star!) or contribute to the project please visit aio-cli-plugin-telemetry

    Jesse MacFadyen
    Last updated 9/28/2022
    Was this helpful?
    \ No newline at end of file diff --git a/guides/tips_tricks/index.html b/guides/tips_tricks/index.html index 81f097c4f..0cab28e16 100644 --- a/guides/tips_tricks/index.html +++ b/guides/tips_tricks/index.html @@ -158,4 +158,4 @@ await move(files, 'my/remote/src/folder/file.txt', 'my/remote/dest/') // will move file.txt to dest folder await move(files, 'my/remote/src/folder/', 'my/remote/dest/') // move folder to the dest folder await move(files, 'my/remote/folder/', 'my/remote/dest') // will rename folder to dest -Copied to your clipboard
    const files = await Files.init()
    await move(files, 'my/remote/src/folder/', 'my/remote/dest/')
    await move(files, 'my/remote/src/folder/file.txt', 'my/remote/dest/file2.md') // will move and rename the file
    await move(files, 'my/remote/src/folder/file.txt', 'my/remote/dest/') // will move file.txt to dest folder
    await move(files, 'my/remote/src/folder/', 'my/remote/dest/') // move folder to the dest folder
    await move(files, 'my/remote/folder/', 'my/remote/dest') // will rename folder to dest
    Valerii NaidaStephan RingelMichael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    const files = await Files.init()
    await move(files, 'my/remote/src/folder/', 'my/remote/dest/')
    await move(files, 'my/remote/src/folder/file.txt', 'my/remote/dest/file2.md') // will move and rename the file
    await move(files, 'my/remote/src/folder/file.txt', 'my/remote/dest/') // will move file.txt to dest folder
    await move(files, 'my/remote/src/folder/', 'my/remote/dest/') // move folder to the dest folder
    await move(files, 'my/remote/folder/', 'my/remote/dest') // will rename folder to dest
    Valerii NaidaStephan RingelMichael GoberlingShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/guides/using_sdks/index.html b/guides/using_sdks/index.html index eee78244e..ddcfd1a2f 100644 --- a/guides/using_sdks/index.html +++ b/guides/using_sdks/index.html @@ -126,4 +126,4 @@ annotations: require-adobe-auth: true final: true -Copied to your clipboard
    # in manifest.yml
    customer-profile:
    function: actions/customer-profile/index.js
    web: 'yes'
    runtime: 'nodejs:12'
    inputs:
    LOG_LEVEL: debug
    tenant: $CUSTOMER_PROFILE_TENANT
    apiKey: $SERVICE_API_KEY
    annotations:
    require-adobe-auth: true
    final: true

    Please note that, most of the above steps are already taken care of after actions are created from the app template with aio app init or aio app add action commands, supposing your project is properly set up with the relevant API services. All you need to do are setting the value of tenant (if required) and customize the action code for your needs.

    Adobe Analytics API 1.4

    While many features of Adobe Analytics API have been migrated to the new 2.0 APIs, a few other features are still available in 1.4 APIs only (e.g. data sources, insertion, real-time data). In that case, you could simply select the Generic template for your action, and leverage the available node-fetch module to make HTTP request to the API endpoint directly as shown in the boilerplate code. For reference, please see our example code snippet of getting real-time report data.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file +Copied to your clipboard
    # in manifest.yml
    customer-profile:
    function: actions/customer-profile/index.js
    web: 'yes'
    runtime: 'nodejs:12'
    inputs:
    LOG_LEVEL: debug
    tenant: $CUSTOMER_PROFILE_TENANT
    apiKey: $SERVICE_API_KEY
    annotations:
    require-adobe-auth: true
    final: true

    Please note that, most of the above steps are already taken care of after actions are created from the app template with aio app init or aio app add action commands, supposing your project is properly set up with the relevant API services. All you need to do are setting the value of tenant (if required) and customize the action code for your needs.

    Adobe Analytics API 1.4

    While many features of Adobe Analytics API have been migrated to the new 2.0 APIs, a few other features are still available in 1.4 APIs only (e.g. data sources, insertion, real-time data). In that case, you could simply select the Generic template for your action, and leverage the available node-fetch module to make HTTP request to the API endpoint directly as shown in the boilerplate code. For reference, please see our example code snippet of getting real-time report data.

    Stephan RingelValerii NaidaShazron Abdullah
    Last updated 5/21/2024
    Was this helpful?
    \ No newline at end of file diff --git a/overview/community/index.html b/overview/community/index.html index bba369ea7..259c2f5bd 100644 --- a/overview/community/index.html +++ b/overview/community/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Developer community

    Join the worldwide community of App Builder Developers who are building apps and extensions for Adobe Experience Platform and Adobe Experience Cloud solutions.

    Get involved

    Here are a few ways to get involved:

    If you would like to contribute, please first read our contribution guidelines.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Developer community

    Join the worldwide community of App Builder Developers who are building apps and extensions for Adobe Experience Platform and Adobe Experience Cloud solutions.

    Get involved

    Here are a few ways to get involved:

    If you would like to contribute, please first read our contribution guidelines.

    \ No newline at end of file diff --git a/overview/faq/index.html b/overview/faq/index.html index db9e40dc8..bff47d1f9 100644 --- a/overview/faq/index.html +++ b/overview/faq/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Frequently Asked Questions

    What is App Builder?

    App Builder is a complete design, application, and runtime framework for building 3rd-party cloud native applications. These custom web apps run on Adobe infrastructure and extend the functionality of Adobe Experience Platform and Adobe Experience Cloud. With App Builder, customers can build custom integrations between Adobe products and 3rd-party products, enabling greater efficiency and improved workflows.

    When is App Builder going to be publicly available?

    App Builder has been available since Dec. 17th, 2021.

    What is the support for App Builder?

    For developer support type of requests, we encourage developers to use our forum. In addition, feature requests or bugs can be submitted on our public repositories – CLI repo and SDK repo. Enterprise Customer support is not available during the “Developer Preview” phase.

    What is the pricing / licensing?

    App Builder is available at no cost to enterprise customers and partners for the duration of the Developer Preview. Pricing and licensing details will be announced later this year.

    Who is this offering for?

    App Builder is available to Adobe enterprise customers or partners who want to extend and integrate Adobe Experience Platform and Adobe Experience Cloud solutions. Currently, it is not available to individual developers who are not part of an Adobe enterprise or partner organization.

    How does someone get access to App Builder?

    You can apply for access on Adobe’s Prelease forum -> App Builder -> Apply. The following information is needed:

    • Your Adobe Organization ID and Organization Name. We are granting access to organizations, not to individuals. You can retrieve your Organization ID from Adobe Admin Console, the ID is part of the URL (something like some_hash@AdobeOrg) and the Name is displayed in the top-right corner.
    • Describe your use case. For example: “I want to extend/integrate Adobe Experience Platform” or “Adobe Campaign Standard”.
    • Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in Adobe Developer Console.

    What is the relationship with Adobe Experience Platform and Adobe Experience Cloud?

    App Builder is part of Adobe Experience Platform, under a workstream called Cloud Extensibility that allows customers and partners to extend the functionality of Adobe Experience Platform and Adobe Experience Cloud solutions.

    App Builder offers a consistent way to extend Adobe enterprise solutions, so regardless of which one you choose to extend there is always the same developer experience.

    What is “in the box”?

    App Builder offers a complete application framework for extending Adobe solutions:

    • Support for headful apps (Single Page Applications) or headless apps (microservices, service-to-service type of integrations)
    • React-Spectrum as the default UI toolkit (other toolkits can be used)
    • CLI and code generators for creating and managing the code
    • SDK libraries to integrate with Adobe solutions
    • Enterprise grade security for accessing data and control end-user access; System Admins can control what App Builder apps are published and who gets access to them
    • CI/CD pipeline and building blocks to create a custom pipeline if needed
    • Execution environment so you do not need to bring your own infrastructure: serverless platform for backend (Adobe I/O Runtime), CDN for static assets, experience.adobe.com for surfacing the UI, custom events for publishing your events through our infrastructure, and file and data storage to persist application state
    • Your App Builder apps will be surfaced within the experience.adobe.com, so end-users can move seamlessly between Adobe and App Builder apps.

    Can I extend “App Builder”?

    Yes. App Builder was built from the ground-up with extensibility in mind. From the way we develop the core functionalities (open source) to how we enable developers to swap the components with their own components.

    This enables developers to extend the reach and complexity of the use cases that can be built on top of App Builder.

    Are the tools open sourced?

    Yes, we develop our tools under Apache License Version 2.0 and developers can submit Pull Requests. We are always happy to see external contributions! I/O Runtime is built on top of Apache OpenWhisk, another open source project.

    How is this different than Adobe I/O Runtime?

    App Builder builds on top of existing Adobe technologies and Adobe I/O Runtime is one of them. Developers looking to use Adobe I/O Runtime will be getting extra productivity and developer convenience when using App Builder. For example, creating Single Page Applications that run on top of Adobe I/O Runtime is simple when using App Builder.

    What resources are available for developers wishing to try it?

    We have public developer docs, code labs, and videos. In addition to this, we host public webinars; work with your Adobe account manager to find out when is the next one.

    Can I use Python (or any other language)?

    No. The only language supported is JavaScript and you can use the Node.js universe.

    Why did you select JavaScript and Node.js as the only supported language?

    About 75% of world-wide serverless code is written using JavaScript and Node.js. The rich ecosystem, low-entry barrier, and high performances in serverless context are the main arguments for this choice.

    How does App Builder simplify the distribution of custom applications for my company?

    We enabled enterprises to use Adobe Exchange for controlling the application lifecycle (test, publish, unpublish) and the Adobe enterprise user access control for deciding what users get access to what App Builder apps.

    How can I use App Builder to extend Document Cloud or Creative Cloud products?

    Today, App Builder focuses on Adobe Experience Platform and Adobe Experience Cloud. We are looking at how to expand and include Document Cloud and Creative Cloud solutions.

    How does App Builder compare to other application frameworks?

    App Builder is not a generic framework for creating cloud native apps. It is a framework that is designed from ground-up to support 3rd-parties who want to extend and integrate Adobe Experience Cloud and Adobe Experience Platform. It is pre-integrated with Adobe APIs, Events, Adobe I/O Runtime, and Adobe authentication/authorization.

    Our value proposition is that App Builder is the fastest and easiest way for a developer to extend and integrate with Adobe enterprise solutions.

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Frequently Asked Questions

    What is App Builder?

    App Builder is a complete design, application, and runtime framework for building 3rd-party cloud native applications. These custom web apps run on Adobe infrastructure and extend the functionality of Adobe Experience Platform and Adobe Experience Cloud. With App Builder, customers can build custom integrations between Adobe products and 3rd-party products, enabling greater efficiency and improved workflows.

    When is App Builder going to be publicly available?

    App Builder has been available since Dec. 17th, 2021.

    What is the support for App Builder?

    For developer support type of requests, we encourage developers to use our forum. In addition, feature requests or bugs can be submitted on our public repositories – CLI repo and SDK repo. Enterprise Customer support is not available during the “Developer Preview” phase.

    What is the pricing / licensing?

    App Builder is available at no cost to enterprise customers and partners for the duration of the Developer Preview. Pricing and licensing details will be announced later this year.

    Who is this offering for?

    App Builder is available to Adobe enterprise customers or partners who want to extend and integrate Adobe Experience Platform and Adobe Experience Cloud solutions. Currently, it is not available to individual developers who are not part of an Adobe enterprise or partner organization.

    How does someone get access to App Builder?

    You can apply for access on Adobe’s Prelease forum -> App Builder -> Apply. The following information is needed:

    • Your Adobe Organization ID and Organization Name. We are granting access to organizations, not to individuals. You can retrieve your Organization ID from Adobe Admin Console, the ID is part of the URL (something like some_hash@AdobeOrg) and the Name is displayed in the top-right corner.
    • Describe your use case. For example: “I want to extend/integrate Adobe Experience Platform” or “Adobe Campaign Standard”.
    • Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in Adobe Developer Console.

    What is the relationship with Adobe Experience Platform and Adobe Experience Cloud?

    App Builder is part of Adobe Experience Platform, under a workstream called Cloud Extensibility that allows customers and partners to extend the functionality of Adobe Experience Platform and Adobe Experience Cloud solutions.

    App Builder offers a consistent way to extend Adobe enterprise solutions, so regardless of which one you choose to extend there is always the same developer experience.

    What is “in the box”?

    App Builder offers a complete application framework for extending Adobe solutions:

    • Support for headful apps (Single Page Applications) or headless apps (microservices, service-to-service type of integrations)
    • React-Spectrum as the default UI toolkit (other toolkits can be used)
    • CLI and code generators for creating and managing the code
    • SDK libraries to integrate with Adobe solutions
    • Enterprise grade security for accessing data and control end-user access; System Admins can control what App Builder apps are published and who gets access to them
    • CI/CD pipeline and building blocks to create a custom pipeline if needed
    • Execution environment so you do not need to bring your own infrastructure: serverless platform for backend (Adobe I/O Runtime), CDN for static assets, experience.adobe.com for surfacing the UI, custom events for publishing your events through our infrastructure, and file and data storage to persist application state
    • Your App Builder apps will be surfaced within the experience.adobe.com, so end-users can move seamlessly between Adobe and App Builder apps.

    Can I extend “App Builder”?

    Yes. App Builder was built from the ground-up with extensibility in mind. From the way we develop the core functionalities (open source) to how we enable developers to swap the components with their own components.

    This enables developers to extend the reach and complexity of the use cases that can be built on top of App Builder.

    Are the tools open sourced?

    Yes, we develop our tools under Apache License Version 2.0 and developers can submit Pull Requests. We are always happy to see external contributions! I/O Runtime is built on top of Apache OpenWhisk, another open source project.

    How is this different than Adobe I/O Runtime?

    App Builder builds on top of existing Adobe technologies and Adobe I/O Runtime is one of them. Developers looking to use Adobe I/O Runtime will be getting extra productivity and developer convenience when using App Builder. For example, creating Single Page Applications that run on top of Adobe I/O Runtime is simple when using App Builder.

    What resources are available for developers wishing to try it?

    We have public developer docs, code labs, and videos. In addition to this, we host public webinars; work with your Adobe account manager to find out when is the next one.

    Can I use Python (or any other language)?

    No. The only language supported is JavaScript and you can use the Node.js universe.

    Why did you select JavaScript and Node.js as the only supported language?

    About 75% of world-wide serverless code is written using JavaScript and Node.js. The rich ecosystem, low-entry barrier, and high performances in serverless context are the main arguments for this choice.

    How does App Builder simplify the distribution of custom applications for my company?

    We enabled enterprises to use Adobe Exchange for controlling the application lifecycle (test, publish, unpublish) and the Adobe enterprise user access control for deciding what users get access to what App Builder apps.

    How can I use App Builder to extend Document Cloud or Creative Cloud products?

    Today, App Builder focuses on Adobe Experience Platform and Adobe Experience Cloud. We are looking at how to expand and include Document Cloud and Creative Cloud solutions.

    How does App Builder compare to other application frameworks?

    App Builder is not a generic framework for creating cloud native apps. It is a framework that is designed from ground-up to support 3rd-parties who want to extend and integrate Adobe Experience Cloud and Adobe Experience Platform. It is pre-integrated with Adobe APIs, Events, Adobe I/O Runtime, and Adobe authentication/authorization.

    Our value proposition is that App Builder is the fastest and easiest way for a developer to extend and integrate with Adobe enterprise solutions.

    \ No newline at end of file diff --git a/overview/firefly_and_runtime/index.html b/overview/firefly_and_runtime/index.html index fa8fc647c..14a4251e4 100644 --- a/overview/firefly_and_runtime/index.html +++ b/overview/firefly_and_runtime/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    App Builder and Adobe I/O Runtime

    App Builder greatly simplifies the process of building Cloud Native Applications that leverage Adobe I/O Runtime.

    If you have existing actions deployed on Adobe I/O Runtime and you want to migrate them to an App Builder application (maybe a headless application) these are the main steps:

    • In the Developer Console create a new project and choose App Builder as the template
    • Configure the Adobe CLI and then use it to initialize a new application for the project you’ve created in the Developer Console; check Setting Up Your Environment
    • Create copies of your existing actions in this project
    • Deploy and test the new actions
    • Update your applications to point to the new actions
    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    App Builder and Adobe I/O Runtime

    App Builder greatly simplifies the process of building Cloud Native Applications that leverage Adobe I/O Runtime.

    If you have existing actions deployed on Adobe I/O Runtime and you want to migrate them to an App Builder application (maybe a headless application) these are the main steps:

    • In the Developer Console create a new project and choose App Builder as the template
    • Configure the Adobe CLI and then use it to initialize a new application for the project you’ve created in the Developer Console; check Setting Up Your Environment
    • Create copies of your existing actions in this project
    • Deploy and test the new actions
    • Update your applications to point to the new actions
    \ No newline at end of file diff --git a/overview/getting_access/index.html b/overview/getting_access/index.html index fd36b03be..61681bd63 100644 --- a/overview/getting_access/index.html +++ b/overview/getting_access/index.html @@ -109,4 +109,4 @@ var(--spectrum-global-dimension-size-600) - var(--spectrum-global-dimension-size-25) );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Get access to App Builder

    App Builder is available to Adobe Experience Cloud customers and partners. You may already have access to App Builder. You can check by visiting the Adobe Developer Console And see if you have the "create from template" button under quick start.

    Trial access -App Builder Trial is now offered as part of Adobe Experience Manager Headless trial. See how App Builder is better with Adobe Experience Manager:

    Purchase a license

    App Builder is included with the purchase of Adobe Experience Manager Sites Cloud Service and Adobe Commerce on cloud. Customers can also purchase a license for use with any Adobe Experience Cloud product or add extra units to add capacity.

    Partner Access

    Adobe Solution Partners may request access to App Builder through the solution partner portal.

    App Builder Access FAQ

    How can I check if my company already has access to App Builder?

    Just visit the Adobe Developer Console. If you have the button "create project from template" next to the button "create new project" then you are provisioned for App Builder.

    What information do I need for the AEM trial?

    Just your company name and the email address you use for your employer. You can invite others within your company to join the trial as well.

    Is there a cost for the trial?

    No. The trial is free to use for the duration of the trial period.

    How long does it take to get access for the AEM Trial

    Access is granted almost immediatly. Usually it takes 15-30 minutes until your new Adobe IMS org is created and products are made available.

    Do I need a special role within my company to use App Builder?

    Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in the Developer Console

    If you are unable to access the Adobe Admin Console you will need to ask a System Admin for the org ID and Name in order to apply for a trial.

    How do I find a sys admin for my org?

    This is likely the person who gave you access to login to the Adobe Experience Cloud. This could be someone in your company IT department or in your marketing team.

    Can I use this with Creative Cloud or Document Cloud?

    While we hope to be able to add Creative Cloud and Document Cloud use cases, we do not currently support them. Right now App Builder is focused on use cases for Adobe Experience Cloud.

    \ No newline at end of file +App Builder Trial is now offered as part of Adobe Experience Manager Headless trial. See how App Builder is better with Adobe Experience Manager:

    Purchase a license

    YOu may be entitled to App Builder as part of a product you previously purchased App Builder is included with the purchase of Adobe Experience Manager Sites Cloud Service and Adobe Commerce on cloud. If you have Adobe Experience Manager Sites Cloud Service but do not have access to App Builder, please contact your sales team to request 1 pack of App Builder to be added.

    In addition, customers can purchase a license for use with any Adobe Experience Cloud product or add extra packs to add capacity. Please contact your sales team for details.

    Partner Access

    Adobe Solution Partners may request access to App Builder through the solution partner portal.

    App Builder Access FAQ

    How can I check if my company already has access to App Builder?

    Just visit the Adobe Developer Console. If you have the button "create project from template" next to the button "create new project" then you are provisioned for App Builder.

    What information do I need for the AEM trial?

    Just your company name and the email address you use for your employer. You can invite others within your company to join the trial as well.

    Is there a cost for the trial?

    No. The trial is free to use for the duration of the trial period.

    How long does it take to get access for the AEM Trial

    Access is granted almost immediatly. Usually it takes 15-30 minutes until your new Adobe IMS org is created and products are made available.

    Do I need a special role within my company to use App Builder?

    Once your organization has been onboarded, anyone who has a Developer Role or System Administrator permissions will be able to create projects for App Builder in the Developer Console

    If you are unable to access the Adobe Admin Console you will need to ask a System Admin for the org ID and Name in order to apply for a trial.

    How do I find a sys admin for my org?

    This is likely the person who gave you access to login to the Adobe Experience Cloud. This could be someone in your company IT department or in your marketing team.

    Can I use this with Creative Cloud or Document Cloud?

    While we hope to be able to add Creative Cloud and Document Cloud use cases, we do not currently support them. Right now App Builder is focused on use cases for Adobe Experience Cloud.

    Stephan RingelValerii NaidaShazron AbdullahRon Nagy
    Last updated 8/22/2024
    Was this helpful?
    \ No newline at end of file diff --git a/overview/how_it_works/index.html b/overview/how_it_works/index.html index d69661a1d..080fd4179 100644 --- a/overview/how_it_works/index.html +++ b/overview/how_it_works/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    How it Works

    At a high level, there are three main stages a custom app would go through: build, test and publish.

    Build

    You start in the Developer Console by creating a new project, adding credentials for the Adobe APIs you want to use in your app (e.g. Adobe Campaign) and defining the sandboxes you need (prod, stage, sandboxes for developers). With the project in place, you are ready to set your local development environment.

    This will allow the CLI to use the project and deploy the code to the right environments. The CLI can also help with scaffolding the application. Based on what you are trying to create, you can pick one of the available templates to get code generated. This generates code for the client side and microservices for the backend.

    Deploy and Testing

    Now that you have something to run, you can use the CLI to deploy the app into your sandbox or a GitHub based CI/CD pipeline if you want to have tighter control over the production environment. This will push the microservices to I/O Runtime and static files (HTML, JS, CSS, images) to the CDN.

    With this step completed, you can now run the application in the context of Experience Cloud and you can simulate different end-users using the app. At this point, the application is not yet published, meaning end-users will not be able to see it and only the developers can interact with it.

    Publish

    When you are ready to share the application with your end-users, you initiate the publish process from the Developer Console. Once the application is approved by an Admin, business users will be able to find it in Experience Cloud and use it if they have the right permissions.

    Why Would You Use App Builder?

    The main reasons you would use this framework are:

    • Time to value – if you want to extend Adobe solutions, this is the fastest way to do it.
    • User context – your users don’t need to switch contexts or authenticate with a different user/password; they move seamlessly between Adobe solutions and custom apps, which also have the same look and feel as the Adobe solutions.
    • Security – API authorization and user access control is offered out-of-the-box. Furthermore, user access control is managed the same way as it is for Adobe solutions (in Adobe Admin Console, with the same user permissions and groups).
    • No infrastructure to manage – you can create one app or hundreds of apps, you can have one user or thousands of users, in all cases you don’t need to think about infrastructure. We scale up behind the scenes and route traffic to the closest region without you having to do anything.
    • Adobe-native – this framework is integrated with Adobe solutions and services, meaning that there is less code that you need to write, deploy, or test and more functionality is available out-of-the-box. It also means that you are future-proofing your code, as you are able to incorporate new Adobe capabilities with the least amount of friction.

    Who is This Framework For?

    This framework is available to Adobe enterprise customers and Adobe partners (working with Adobe enterprise customers) who are looking to extend Adobe Experience Cloud solutions. The end-user for the custom app are the employees working for the enterprise and the apps are installed by the enterprise for the enterprise.

    If you are familiar with modern web technologies and comfortable with JavaScript, you can get started today.

    Example Use Cases

    Here are some of the types of apps that can be built on top of this framework:

    • Custom dashboards or other decision making support tools that use data from Adobe solutions and/or data from other systems to empower business people and executives to make decisions.
    • Custom experiences that enable your users to use Adobe solutions the way they want instead of forcing them to use only the out-of-the-box user experience.
    • Custom integrations between Adobe universe and home-grown solutions or other 3rd-party systems. This can include apps with no UI or apps that have a UI.
    • Extending Adobe built-in functionality, such as Adobe Experience Manager (AEM) Assets.

    Examples from real-world

    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    App Builder
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    How it Works

    At a high level, there are three main stages a custom app would go through: build, test and publish.

    Build

    You start in the Developer Console by creating a new project, adding credentials for the Adobe APIs you want to use in your app (e.g. Adobe Campaign) and defining the sandboxes you need (prod, stage, sandboxes for developers). With the project in place, you are ready to set your local development environment.

    This will allow the CLI to use the project and deploy the code to the right environments. The CLI can also help with scaffolding the application. Based on what you are trying to create, you can pick one of the available templates to get code generated. This generates code for the client side and microservices for the backend.

    Deploy and Testing

    Now that you have something to run, you can use the CLI to deploy the app into your sandbox or a GitHub based CI/CD pipeline if you want to have tighter control over the production environment. This will push the microservices to I/O Runtime and static files (HTML, JS, CSS, images) to the CDN.

    With this step completed, you can now run the application in the context of Experience Cloud and you can simulate different end-users using the app. At this point, the application is not yet published, meaning end-users will not be able to see it and only the developers can interact with it.

    Publish

    When you are ready to share the application with your end-users, you initiate the publish process from the Developer Console. Once the application is approved by an Admin, business users will be able to find it in Experience Cloud and use it if they have the right permissions.

    Why Would You Use App Builder?

    The main reasons you would use this framework are:

    • Time to value – if you want to extend Adobe solutions, this is the fastest way to do it.
    • User context – your users don’t need to switch contexts or authenticate with a different user/password; they move seamlessly between Adobe solutions and custom apps, which also have the same look and feel as the Adobe solutions.
    • Security – API authorization and user access control is offered out-of-the-box. Furthermore, user access control is managed the same way as it is for Adobe solutions (in Adobe Admin Console, with the same user permissions and groups).
    • No infrastructure to manage – you can create one app or hundreds of apps, you can have one user or thousands of users, in all cases you don’t need to think about infrastructure. We scale up behind the scenes and route traffic to the closest region without you having to do anything.
    • Adobe-native – this framework is integrated with Adobe solutions and services, meaning that there is less code that you need to write, deploy, or test and more functionality is available out-of-the-box. It also means that you are future-proofing your code, as you are able to incorporate new Adobe capabilities with the least amount of friction.

    Who is This Framework For?

    This framework is available to Adobe enterprise customers and Adobe partners (working with Adobe enterprise customers) who are looking to extend Adobe Experience Cloud solutions. The end-user for the custom app are the employees working for the enterprise and the apps are installed by the enterprise for the enterprise.

    If you are familiar with modern web technologies and comfortable with JavaScript, you can get started today.

    Example Use Cases

    Here are some of the types of apps that can be built on top of this framework:

    • Custom dashboards or other decision making support tools that use data from Adobe solutions and/or data from other systems to empower business people and executives to make decisions.
    • Custom experiences that enable your users to use Adobe solutions the way they want instead of forcing them to use only the out-of-the-box user experience.
    • Custom integrations between Adobe universe and home-grown solutions or other 3rd-party systems. This can include apps with no UI or apps that have a UI.
    • Extending Adobe built-in functionality, such as Adobe Experience Manager (AEM) Assets.

    Examples from real-world

    \ No newline at end of file diff --git a/overview/index.html b/overview/index.html index 4f91f1c74..18b15ff3e 100644 --- a/overview/index.html +++ b/overview/index.html @@ -115,4 +115,4 @@ banner -

    App Builder Docs

    This documentation provides an overview of App Builder as well as guides, reference documentation, and tools to help you begin developing your own custom applications.

    What is App Builder

    App Builder is a complete framework that enables enterprise developers to build and deploy custom web applications that extend Adobe Experience Cloud solutions and run on Adobe infrastructure. It leverages modern technologies (JAM stack, serverless computing, Node, and React) and ensures best practices when building applications (event-driven architecture, microservices, continuous integration, and delivery).

    From a developer perspective, the main components are:

    • Single Page Application (SPA) - you build a SPA that uses React Spectrum for the client side, which is the same UI toolkit used by Adobe solutions.
    • For the backend, you create microservices and orchestrate APIs by leveraging I/O Runtime (Adobe’s serverless platform).
    • The main developer tools are the CLI, SDKs, Adobe Services and Developer Console. Support for Adobe authentication, end-user access control, publishing/consuming custom events, storing data and files, CI/CD pipelines, CDN, and developer sandboxes are provided out-of-the-box.
    • The execution environment is Adobe Experience Cloud. Your custom apps will be living side-by-side with the Adobe Experience Cloud solutions and will be executed in the context of the organization and its authenticated employees.

    Where to Go Next

    To learn more about App Builder, please start by reading the following:

    \ No newline at end of file +

    App Builder Docs

    This documentation provides an overview of App Builder as well as guides, reference documentation, and tools to help you begin developing your own custom applications.

    What is App Builder

    App Builder is a complete framework that enables enterprise developers to build and deploy custom web applications that extend Adobe Experience Cloud solutions and run on Adobe infrastructure. It leverages modern technologies (JAM stack, serverless computing, Node, and React) and ensures best practices when building applications (event-driven architecture, microservices, continuous integration, and delivery).

    From a developer perspective, the main components are:

    • Single Page Application (SPA) - you build a SPA that uses React Spectrum for the client side, which is the same UI toolkit used by Adobe solutions.
    • For the backend, you create microservices and orchestrate APIs by leveraging I/O Runtime (Adobe’s serverless platform).
    • The main developer tools are the CLI, SDKs, Adobe Services and Developer Console. Support for Adobe authentication, end-user access control, publishing/consuming custom events, storing data and files, CI/CD pipelines, CDN, and developer sandboxes are provided out-of-the-box.
    • The execution environment is Adobe Experience Cloud. Your custom apps will be living side-by-side with the Adobe Experience Cloud solutions and will be executed in the context of the organization and its authenticated employees.

    Where to Go Next

    To learn more about App Builder, please start by reading the following:

    \ No newline at end of file diff --git a/page-data/app-data.json b/page-data/app-data.json index fe7180895..30a7bdf25 100644 --- a/page-data/app-data.json +++ b/page-data/app-data.json @@ -1 +1 @@ -{"webpackCompilationHash":"3de5c28653e74d7a05cb"} +{"webpackCompilationHash":"c9a5ee8dce7929c822b5"} diff --git a/page-data/sq/d/1814815295.json b/page-data/sq/d/1814815295.json index 7e185c697..0cc256d33 100644 --- a/page-data/sq/d/1814815295.json +++ b/page-data/sq/d/1814815295.json @@ -1 +1 @@ -{"data":{"allGithub":{"nodes":[{"repository":"AdobeDocs/app-builder","default_branch":"main","root":""}]},"allGithubContributors":{"nodes":[{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/common_troubleshooting.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2023-05-19T11:15:51-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-09-23T23:51:21-05:00","login":"AmyJZhao","name":"Amy Zhao"},{"date":"2022-09-11T13:28:07-07:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2022-08-24T13:03:15-05:00","login":"kokoc","name":"Andrii Konosov"},{"date":"2022-08-05T08:13:53+02:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2022-01-24T06:07:38+05:30","login":"theManikJindal","name":"Manik Jindal"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T15:40:23-07:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/first_app.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-01-30T20:41:33-08:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2023-05-04T08:40:41-05:00","login":"danmooney2","name":"Dan Mooney"},{"date":"2022-11-09T13:20:40-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-09-06T16:26:20-04:00","login":"naomirobichaud","name":"Naomi Robichaud"},{"date":"2023-05-22T14:07:08-06:00","login":"kgera","name":"Kanika Gera"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/publish_app.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/app-hooks.md"},{"contributors":[{"date":"2024-08-21T14:21:13+02:00","login":"moritzraho","name":"Moritz Raho"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_state.md"},{"contributors":[{"date":"2024-04-19T08:54:14+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-10-17T15:30:44-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2022-06-30T10:01:28-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/introduction_to_react_spectrum.md"},{"contributors":[{"date":"2022-09-27T18:13:23-07:00","login":"purplecabbage","name":"Jesse MacFadyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/telemetry.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/tips_tricks.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-02T17:17:28+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/using_sdks.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/community.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-12-16T10:00:26-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/faq.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-02T21:23:22-07:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/firefly_and_runtime.md"},{"contributors":[{"date":"2024-07-31T11:54:29-07:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-04T15:45:35+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/getting_access.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/how_it_works.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/index.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/blog_articles.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/azure_log_analytics.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-08-25T16:23:08-05:00","login":"keharper","name":"Kevin Harper"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-08-25T16:23:08-05:00","login":"keharper","name":"Kevin Harper"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/new_relic.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_cloud.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_enterprise.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-12-07T17:25:22-08:00","login":"purplecabbage","name":"Jesse MacFadyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-09T13:05:26-05:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/webpack-configuration.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-09-07T09:26:47+02:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/contribution_guides/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/ci_cd_for_firefly_apps.md"},{"contributors":[{"date":"2024-07-23T10:36:17+08:00","login":"shazron","name":"Shazron Abdullah"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/credential-rotation.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2023-07-12T15:47:07+02:00","login":"pablomoreno61","name":"Pablo Moreno"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-06-28T23:25:46-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/index.md"},{"contributors":[{"date":"2024-07-23T10:36:17+08:00","login":"shazron","name":"Shazron Abdullah"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/setting-response-headers.md"},{"contributors":[{"date":"2024-08-15T11:36:22+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-06-25T16:24:37-07:00","login":"purplecabbage","name":"Jesse MacFadyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/development/index.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/index.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/private.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/public.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-10-05T11:18:53-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T11:18:48+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/custom-events.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-10-05T13:12:30-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T11:18:48+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/webhooks.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-06-30T10:00:46-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T16:33:42+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-01-09T13:19:26-08:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2022-12-12T10:26:09-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-01T19:27:10+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-12T18:33:14+02:00","login":"meryllblanchet","name":"Meryll Blanchet"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T15:40:23-07:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/extension_migration_guide.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T15:40:23-07:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-09T06:43:05-08:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/ui_extensibility.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-02T16:47:32-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/migrations/standalone_to_dx_experience_cloud_spa.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-24T06:07:38+05:30","login":"theManikJindal","name":"Manik Jindal"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/reference_documentation/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-03-12T17:14:01-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-01-30T12:19:30-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-01T19:30:02+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-06-30T10:01:05-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-02T17:17:28+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/understanding_authentication.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-04-07T16:18:17-07:00","login":"jdelbick","name":"Jamie Delbick"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/barcode.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/bootstrap.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/test.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-04-07T18:19:03-05:00","login":"oshmyheliuk","name":"Oleksandr Shmyheliuk"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson5.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/our-worker.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson5.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/welldone.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/index.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson1.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-05-26T12:32:34+02:00","login":"mokimo","name":"Okan Sahin"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson2.md"},{"contributors":[{"date":"2024-06-06T23:57:34+05:30","login":"salmanazeez786","name":"Salman Azeez"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-05-19T11:15:51-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-06-28T23:30:27-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-05-19T11:01:31-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-05-19T11:15:51-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/welldone.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/demo.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-02-09T14:09:11+05:30","login":"sgera","name":"Sahil Gera"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/index.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/welldone.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-09T08:01:44+05:30","login":"dani97","name":"Christopher Daniel"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson5.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson6.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/transclusions/_requirements.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T16:33:42+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.runtime.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithhref.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithpath.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapi.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapiproperties.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.callback.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customfeedbackconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customsearchconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.externalfeedbackconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.solution.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapi.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapiproperties.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userapi.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userinfo.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T16:41:59+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/page.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/topbar.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/user.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/analytics.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/events.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/files.md"},{"contributors":[{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/index.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/state.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/asset-compute-service-extensibility.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/deep-dive.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/extend-experience-cloud.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ci-cd.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/custom-events.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/dashboard-case-study.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/debugging.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/deep-dive-use-cases.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/learning-resources.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/live-wired-sneak.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ode-case-study.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/projects-and-workspaces.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/react-spectrum.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/softcrylic-showcase.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/architecture.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/e2e-user-journey.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/getting-started.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/introduction.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/security.md"}]},"allMdx":{"nodes":[{"tableOfContents":{"items":[{"url":"#start-your-app-builder-journey","title":"Start your App Builder Journey","items":[{"url":"#access-and-credentials","title":"Access and Credentials"},{"url":"#local-environment-set-up","title":"Local Environment Set Up","items":[{"url":"#required-tools","title":"Required Tools","items":[{"url":"#supported-local-environment","title":"Supported Local Environment"},{"url":"#supported-terminals-for-the-cli","title":"Supported Terminals for the CLI"}]},{"url":"#optional-tools","title":"Optional Tools"}]},{"url":"#next-step","title":"Next Step"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/index.md"},{"tableOfContents":{"items":[{"url":"#creating-your-first-app-builder-application","title":"Creating your First App Builder Application","items":[{"url":"#1-setting-up-local-environment","title":"1. Setting up Local Environment"},{"url":"#2-creating-a-new-project-on-developer-console","title":"2. Creating a new Project on Developer Console"},{"url":"#3-signing-in-from-cli","title":"3. Signing in from CLI"},{"url":"#4-bootstrapping-new-app-using-the-cli","title":"4. Bootstrapping new App using the CLI","items":[{"url":"#41-developer-is-logged-in-as-enterprise-organization-user","title":"4.1 Developer is Logged in as Enterprise Organization user","items":[{"url":"#411-initializing-your-project-with-extension-points","title":"4.1.1 Initializing your project with Extension Points"},{"url":"#412-initializing-an-empty-project","title":"4.1.2 Initializing an empty project"}]},{"url":"#42-developer-is-not-logged-in-as-enterprise-organization-user","title":"4.2 Developer is not Logged in as Enterprise Organization user","items":[{"url":"#developer-with-a-console-config-file","title":"Developer with a Console config file"},{"url":"#developer-without-any-credentials","title":"Developer without any credentials"}]}]},{"url":"#5-anatomy-of-an-app-builder-application","title":"5. Anatomy of an App Builder Application"},{"url":"#6developing-the-application","title":"6.Developing the Application","items":[{"url":"#61-running-the-application","title":"6.1 Running the Application","items":[{"url":"#first-time-users-accepting-the-certificate","title":"(First time users) Accepting the Certificate"},{"url":"#proceeding-to-the-application-on-localhost","title":"Proceeding to the Application on localhost"}]},{"url":"#62-trying-the-sample-application","title":"6.2 Trying the Sample Application"},{"url":"#63-debugging-the-application","title":"6.3 Debugging the Application"},{"url":"#64-retrieving-logs-for-the-application","title":"6.4 Retrieving Logs for the Application","items":[{"url":"#dev","title":"Dev"},{"url":"#run-or-deploy","title":"Run or Deploy"}]},{"url":"#65-testing-the-application","title":"6.5 Testing the Application"}]},{"url":"#7-deploying-the-application","title":"7 Deploying the Application"},{"url":"#common-issues","title":"Common Issues"},{"url":"#next-steps","title":"Next steps"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/first_app.md"},{"tableOfContents":{"items":[{"url":"#common-troubleshooting","title":"Common Troubleshooting","items":[{"url":"#before-you-proceed","title":"Before you proceed"},{"url":"#general-debugging","title":"General debugging"},{"url":"#action-logs","title":"Action logs"},{"url":"#action-authentication-errors","title":"Action authentication errors"},{"url":"#debugging-errors-with-state-and-files-sdk","title":"Debugging errors with State and Files SDK"},{"url":"#nodejs-with-mac-m1-chip","title":"NodeJS with Mac M1 chip"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/common_troubleshooting.md"},{"tableOfContents":{"items":[{"url":"#app-builder-application-tooling-lifecycle-event-hooks","title":"App Builder application tooling lifecycle event hooks","items":[{"url":"#command-support","title":"Command Support"},{"url":"#use-cases","title":"Use cases"},{"url":"#using-javascript-files","title":"Using JavaScript files"},{"url":"#legacy-app-no-extensions","title":"Legacy App (no extensions)"},{"url":"#app-with-extensions","title":"App with Extensions"},{"url":"#hooks-flow","title":"Hooks flow"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/app-hooks.md"},{"tableOfContents":{"items":[{"url":"#publishing-your-first-app-builder-application","title":"Publishing Your First App Builder Application","items":[{"url":"#1-project-approvals-console-part","title":"1: Project approvals (Console Part)","items":[{"url":"#app-builder-applications-approval-process","title":"App Builder applications approval process"},{"url":"#published-app","title":"Published app"}]},{"url":"#2-administrator-review-of-your-app-myexchange-part","title":"2: Administrator review of your app (MyExchange Part)"},{"url":"#3-check-your-published-app-at-experience-cloud","title":"3: Check your published app at Experience Cloud"}]},{"url":"#publishing-your-headless-app-builder-app","title":"Publishing your headless App Builder App","items":[{"url":"#next-steps","title":"Next steps"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/publish_app.md"},{"tableOfContents":{"items":[{"url":"#introduction-to-react-spectrum","title":"Introduction to React Spectrum"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/introduction_to_react_spectrum.md"},{"tableOfContents":{"items":[{"url":"#dealing-with-application-state","title":"Dealing with Application State","items":[{"url":"#default-parameters","title":"Default parameters","items":[{"url":"#considerations-about-security","title":"Considerations about security"}]},{"url":"#persistence-at-runtime","title":"Persistence at runtime"},{"url":"#state","title":"State","items":[{"url":"#getting-started","title":"Getting started"},{"url":"#limits--validation","title":"Limits & validation"},{"url":"#quotas","title":"Quotas"},{"url":"#match-option","title":"match option"},{"url":"#list-guarantees","title":"List guarantees"},{"url":"#troubleshooting","title":"Troubleshooting"}]},{"url":"#files","title":"Files"},{"url":"#feature-matrix","title":"Feature Matrix"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_state.md"},{"tableOfContents":{"items":[{"url":"#architecture-overview","title":"Architecture Overview","items":[{"url":"#types-of-app-builder-apps","title":"Types of App Builder apps","items":[{"url":"#headless-application","title":"Headless Application"},{"url":"#headful-application","title":"Headful Application"}]},{"url":"#jamstack-anatomy-of-an-app-builder-app","title":"JAMStack: Anatomy of an App Builder App"},{"url":"#sdk-components","title":"SDK Components","items":[{"url":"#cli","title":"CLI"},{"url":"#app-builder-generators","title":"App Builder Generators"},{"url":"#sdk-libraries","title":"SDK Libraries","items":[{"url":"#main-sdk-library","title":"Main SDK library","items":[{"url":"#integration-with-adobe-apis","title":"Integration with Adobe APIs"},{"url":"#integration-with-adobes-identity-management-system","title":"Integration with Adobe's Identity Management System"},{"url":"#integration-with-additional-out-of-the-box-services","title":"Integration with additional out-of-the-box services"},{"url":"#technical-framework-for-developers","title":"Technical framework for developers"}]},{"url":"#core-sdk-library","title":"Core SDK library","items":[{"url":"#configuration","title":"Configuration"},{"url":"#logging","title":"Logging"},{"url":"#errors","title":"Errors"},{"url":"#networking","title":"Networking"}]}]},{"url":"#token-vending-machine","title":"Token-Vending Machine"},{"url":"#cicd-support","title":"CI/CD Support"},{"url":"#webpack","title":"Webpack"},{"url":"#migration-guides","title":"Migration Guides"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/index.md"},{"tableOfContents":{"items":[{"url":"#telemetry","title":"Telemetry","items":[{"url":"#why-collect-telemetry","title":"Why collect telemetry?"},{"url":"#what-data-is-collected","title":"What data is collected?"},{"url":"#what-about-secrets-and-sensitive-data","title":"What about secrets and sensitive data?"},{"url":"#will-this-data-be-shared-with-whom","title":"Will this data be shared? With whom?"},{"url":"#how-do-i-opt-out","title":"How do I opt out?"},{"url":"#show-me-the-code","title":"Show me the code"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/telemetry.md"},{"tableOfContents":{"items":[{"url":"#tips-and-tricks-for-optimizing-app-builder-apps","title":"Tips and Tricks for optimizing App Builder Apps","items":[{"url":"#caching-http-responses","title":"Caching HTTP Responses"},{"url":"#returning-large-response-payload","title":"Returning Large Response Payload"},{"url":"#implementing-a-move-operation-for-the-app-builder-files-sdk","title":"Implementing a move operation for the App Builder Files SDK"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/tips_tricks.md"},{"tableOfContents":{"items":[{"url":"#using-client-sdks-for-accessing-adobe-apis","title":"Using Client SDKs for Accessing Adobe APIs","items":[{"url":"#client-sdk-initialization","title":"Client SDK Initialization"},{"url":"#adobe-analytics-api-14","title":"Adobe Analytics API 1.4"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/using_sdks.md"},{"tableOfContents":{"items":[{"url":"#developer-community","title":"Developer community","items":[{"url":"#get-involved","title":"Get involved"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/community.md"},{"tableOfContents":{"items":[{"url":"#frequently-asked-questions","title":"Frequently Asked Questions","items":[{"url":"#what-is-app-builder","title":"What is App Builder?"},{"url":"#when-is-app-builder-going-to-be-publicly-available","title":"When is App Builder going to be publicly available?"},{"url":"#what-is-the-support-for-app-builder","title":"What is the support for App Builder?"},{"url":"#what-is-the-pricing--licensing","title":"What is the pricing / licensing?"},{"url":"#who-is-this-offering-for","title":"Who is this offering for?"},{"url":"#how-does-someone-get-access-to-app-builder","title":"How does someone get access to App Builder?"},{"url":"#what-is-the-relationship-with-adobe-experience-platform-and-adobe-experience-cloud","title":"What is the relationship with Adobe Experience Platform and Adobe Experience Cloud?"},{"url":"#what-is-in-the-box","title":"What is “in the box”?"},{"url":"#can-i-extend-app-builder","title":"Can I extend “App Builder”?"},{"url":"#are-the-tools-open-sourced","title":"Are the tools open sourced?"},{"url":"#how-is-this-different-than-adobe-io-runtime","title":"How is this different than Adobe I/O Runtime?"},{"url":"#what-resources-are-available-for-developers-wishing-to-try-it","title":"What resources are available for developers wishing to try it?"},{"url":"#can-i-use-python-or-any-other-language","title":"Can I use Python (or any other language)?"},{"url":"#why-did-you-select-javascript-and-nodejs-as-the-only-supported-language","title":"Why did you select JavaScript and Node.js as the only supported language?"},{"url":"#how-does-app-builder-simplify-the-distribution-of-custom-applications-for-my-company","title":"How does App Builder simplify the distribution of custom applications for my company?"},{"url":"#how-can-i-use-app-builder-to-extend-document-cloud-or-creative-cloud-products","title":"How can I use App Builder to extend Document Cloud or Creative Cloud products?"},{"url":"#how-does-app-builder-compare-to-other-application-frameworks","title":"How does App Builder compare to other application frameworks?"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/faq.md"},{"tableOfContents":{"items":[{"url":"#app-builder-and-adobe-io-runtime","title":"App Builder and Adobe I/O Runtime"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/firefly_and_runtime.md"},{"tableOfContents":{"items":[{"url":"#get-access-to-app-builder","title":"Get access to App Builder"},{"url":"#app-builder-access-faq","title":"App Builder Access FAQ"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/getting_access.md"},{"tableOfContents":{"items":[{"url":"#how-it-works","title":"How it Works","items":[{"url":"#build","title":"Build"},{"url":"#deploy-and-testing","title":"Deploy and Testing"},{"url":"#publish","title":"Publish"},{"url":"#why-would-you-use-app-builder","title":"Why Would You Use App Builder?"},{"url":"#who-is-this-framework-for","title":"Who is This Framework For?"},{"url":"#example-use-cases","title":"Example Use Cases"},{"url":"#examples-from-real-world","title":"Examples from real-world"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/how_it_works.md"},{"tableOfContents":{"items":[{"url":"#app-builder-docs","title":"App Builder Docs","items":[{"url":"#what-is-app-builder","title":"What is App Builder"},{"url":"#where-to-go-next","title":"Where to Go Next"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/index.md"},{"tableOfContents":{"items":[{"url":"#code-labs","title":"Code Labs","items":[{"url":"#tech-tutorials","title":"Tech tutorials","items":[{"url":"#spectrum-introduction","title":"Spectrum Introduction"},{"url":"#consume-events-using-journaling-api","title":"Consume Events Using Journaling API"},{"url":"#event-driven-app-builder-apps","title":"Event-Driven App Builder Apps"},{"url":"#events-using-runtime-actions-as-webhook","title":"Events Using Runtime Actions as Webhook"},{"url":"#cicd-in-app-builder-apps","title":"CI/CD in App Builder Apps"},{"url":"#debugging-app-builder-apps","title":"Debugging App Builder Apps"},{"url":"#scheduling-cron-jobs","title":"Scheduling Cron Jobs"}]},{"url":"#app-tutorials","title":"App tutorials","items":[{"url":"#app-builder-headless-app","title":"App Builder Headless App"},{"url":"#asset-compute-with-photoshop-apis","title":"Asset Compute with Photoshop APIs"},{"url":"#building-an-app-builder-todo-app","title":"Building an App Builder Todo App"},{"url":"#customer-profiles-dashboard","title":"Customer Profiles Dashboard"},{"url":"#custom-asset-compute-worker","title":"Custom Asset Compute Worker"},{"url":"#build-an-app-that-consumes-adobe-experience-manager-events","title":"Build an app that consumes Adobe Experience Manager Events"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/index.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-azure-log-analytics","title":"Forwarding logs to Azure Log Analytics","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#steps-to-configure-log-forwarding","title":"Steps to configure Log Forwarding"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/azure_log_analytics.md"},{"tableOfContents":{"items":[{"url":"#app-builder-blog-articles","title":"App Builder Blog Articles","items":[{"url":"#overview","title":"Overview","items":[{"url":"#io-runtime-and-the-future-of-serverless-at-adobe","title":"I/O Runtime and the Future of Serverless at Adobe"},{"url":"#following-the-end-to-end-user-journey","title":"Following the End-to-End User Journey"},{"url":"#a-breakdown-of-app-builders-architecture","title":"A Breakdown of App Builder’s Architecture"},{"url":"#a-full-security-overview","title":"A Full Security Overview"},{"url":"#introducing-react-spectrum","title":"Introducing React Spectrum"},{"url":"#the-future-of-app-builder-b2b-and-b2c-expansion","title":"The Future of App Builder: B2B and B2C Expansion"},{"url":"#why-your-enterprise-needs-app-builder","title":"Why Your Enterprise Needs App Builder"}]},{"url":"#how-tos","title":"How Tos","items":[{"url":"#projects-and-workspaces","title":"Projects and Workspaces"},{"url":"#debugging-applications","title":"Debugging Applications"}]},{"url":"#partner-use-cases-and-contributions","title":"Partner use cases and contributions","items":[{"url":"#ensemble-and-app-builder-unlocking-better-b2e-workflows-through-custom-apps","title":"Ensemble and App Builder: Unlocking Better B2E Workflows Through Custom Apps"},{"url":"#contributing-to-adobes-open-source-world-with-the-adobe-experience-platform-sdk-for-app-builder","title":"Contributing to Adobe’s Open Source World with the Adobe Experience Platform SDK for App Builder"},{"url":"#use-cases-for-cloud-native-apps-with-app-builder","title":"Use Cases for Cloud-Native Apps with App Builder"},{"url":"#adobe-io-powered-aemaacs-assets-export-implemented-in-real-time-or-batch-mode","title":"Adobe I/O-Powered AEMaaCS Assets Export Implemented in Real-Time or Batch Mode"},{"url":"#finding-your-feet-with-app-builder","title":"Finding Your Feet with App Builder"}]},{"url":"#real-word-examples","title":"Real-word examples","items":[{"url":"#building-a-real-time-airline-application-using-adobe-experience-platform-adobe-io-runtime-and-app-builder","title":"Building a Real-Time Airline Application Using Adobe Experience Platform, Adobe I/O Runtime and App Builder"}]},{"url":"#miscellaneous","title":"Miscellaneous","items":[{"url":"#how-we-made-app-builders-videos-remotely-while-quarantined-at-home","title":"How We Made App Builder’s Videos Remotely While Quarantined at Home"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/blog_articles.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-new-relic","title":"Forwarding logs to New Relic","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#identify-the-api-key-and-base-uri","title":"Identify the API key and base URI"},{"url":"#set-up-log-forwarding-in-app-builder","title":"Set up Log Forwarding in App Builder"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/new_relic.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-splunk-cloud","title":"Forwarding logs to Splunk Cloud","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#steps-to-configure-log-forwarding","title":"Steps to configure Log Forwarding","items":[{"url":"#1-set-up-splunk-http-event-collector","title":"1. Set up Splunk HTTP Event Collector"},{"url":"#2-getting-splunk-host-and-port","title":"2. Getting Splunk Host and Port"},{"url":"#3-set-up-log-forwarding-in-app-builder","title":"3. Set up Log Forwarding in App Builder"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_cloud.md"},{"tableOfContents":{"items":[{"url":"#managing-application-logs","title":"Managing Application Logs","items":[{"url":"#logging-with-app-builder-sdk","title":"Logging with App Builder SDK"},{"url":"#accessing-logs-with-app-builder-cli","title":"Accessing logs with App Builder CLI","items":[{"url":"#app-builder-app-plugin","title":"App Builder app plugin"},{"url":"#runtime-plugin","title":"Runtime plugin"}]},{"url":"#forwarding-application-logs","title":"Forwarding Application logs","items":[{"url":"#when-to-use-log-forwarding","title":"When to use Log forwarding"},{"url":"#log-forwarding-commands","title":"Log Forwarding Commands","items":[{"url":"#setting-log-forwarding","title":"Setting Log Forwarding"},{"url":"#viewing-the-current-log-forwarding-configuration","title":"Viewing the current Log Forwarding configuration"},{"url":"#debugging-log-forwarding","title":"Debugging Log Forwarding"}]}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/index.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-splunk-enterprise","title":"Forwarding logs to Splunk Enterprise","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#steps-to-configure-log-forwarding","title":"Steps to configure Log Forwarding","items":[{"url":"#1-set-up-splunk-http-event-collector","title":"1. Set up Splunk HTTP Event Collector"},{"url":"#2-getting-splunk-host-and-port","title":"2. Getting Splunk Host and Port"},{"url":"#3-set-up-log-forwarding-in-app-builder","title":"3. Set up Log Forwarding in App Builder"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_enterprise.md"},{"tableOfContents":{"items":[{"url":"#contributing","title":"Contributing","items":[{"url":"#code-of-conduct","title":"Code Of Conduct"},{"url":"#contributor-license-agreement","title":"Contributor License Agreement"},{"url":"#code-reviews","title":"Code Reviews"},{"url":"#cli-and-plugins-best-practises","title":"CLI and plugins best practises"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/contribution_guides/index.md"},{"tableOfContents":{"items":[{"url":"#webpack-configuration","title":"Webpack Configuration","items":[{"url":"#overview","title":"Overview"},{"url":"#configuration-file","title":"Configuration File","items":[{"url":"#es-module-syntax","title":"ES Module Syntax"}]},{"url":"#configuration-types","title":"Configuration Types","items":[{"url":"#object","title":"Object"},{"url":"#function-that-returns-an-object","title":"Function that returns an object"},{"url":"#function-that-returns-an-array-of-objects","title":"Function that returns an array of objects"},{"url":"#async-function-that-returns-an-object","title":"Async function that returns an object"},{"url":"#async-function-that-returns-an-array-of-objects","title":"Async function that returns an array of objects"},{"url":"#array-of-objects","title":"Array of objects"},{"url":"#array-of-functions-that-return-objects","title":"Array of functions that return objects"},{"url":"#array-of-async-functions-that-return-objects","title":"Array of async functions that return objects"}]},{"url":"#configuration","title":"Configuration","items":[{"url":"#overview-1","title":"Overview"},{"url":"#base-options","title":"Base Options"},{"url":"#defaults","title":"Defaults"},{"url":"#immutable-options","title":"Immutable Options"}]},{"url":"#environment-variables","title":"Environment Variables"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/webpack-configuration.md"},{"tableOfContents":{"items":[{"url":"#app-builder-configuration-files","title":"App Builder Configuration Files","items":[{"url":"#overview","title":"Overview"},{"url":"#appconfigyaml","title":"app.config.yaml","items":[{"url":"#tldr-give-me-a-full-example","title":"Tl;dr: give me a full example:"},{"url":"#standalone-application-and-extensions","title":"Standalone application and extensions"},{"url":"#common-configuration","title":"Common configuration","items":[{"url":"#runtime-manifest","title":"Runtime Manifest","items":[{"url":"#annotations","title":"Annotations"},{"url":"#api-gateway-configuration","title":"API Gateway Configuration"}]},{"url":"#hooks-to-customize-the-tooling","title":"Hooks to customize the tooling"}]},{"url":"#extension-specific-configuration","title":"Extension specific configuration","items":[{"url":"#extension-types","title":"Extension types"},{"url":"#dxexcshell1-definition","title":"dx/excshell/1 definition"},{"url":"#dxasset-computeworker1-definition","title":"dx/asset-compute/worker/1 definition"}]},{"url":"#the-include-directive","title":"The $include directive"},{"url":"#public-distribution-configuration","title":"Public distribution configuration"}]},{"url":"#env","title":".env","items":[{"url":"#using-environment-variables-in-frontend","title":"Using environment variables in frontend"},{"url":"#using-environment-variables-in-runtime-actions","title":"Using environment variables in Runtime actions","items":[{"url":"#appconfigyaml-1","title":"app.config.yaml"},{"url":"#action-code","title":"Action code"}]}]},{"url":"#aio","title":".aio"},{"url":"#legacy-configuration-system","title":"Legacy configuration system"},{"url":"#migrating-between-standalone-application-and-dx-experience-cloud-spa-v1","title":"Migrating between Standalone Application and DX Experience Cloud SPA v1"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/index.md"},{"tableOfContents":{"items":[{"url":"#credential-rotation","title":"Credential Rotation","items":[{"url":"#why-rotate-credentials","title":"Why rotate credentials?"},{"url":"#how-to-rotate-credentials","title":"How to rotate credentials"},{"url":"#using-a-parameters-file--json-","title":"Using a parameters file ( JSON )"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/credential-rotation.md"},{"tableOfContents":{"items":[{"url":"#cicd-for-app-builder-applications","title":"CI/CD for App Builder Applications","items":[{"url":"#local-application-development","title":"Local Application Development"},{"url":"#github-actions-support","title":"GitHub Actions Support","items":[{"url":"#github-workflows","title":"Github Workflows"},{"url":"#github-actions-for-aio-cli","title":"GitHub Actions for AIO CLI"},{"url":"#github-secrets","title":"GitHub Secrets"}]},{"url":"#bring-your-own-cicd-pipeline","title":"Bring your own CI/CD pipeline"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/ci_cd_for_firefly_apps.md"},{"tableOfContents":{"items":[{"url":"#deployment-overview","title":"Deployment Overview","items":[{"url":"#setup-assumptions","title":"Setup Assumptions"},{"url":"#local-deployment","title":"Local Deployment","items":[{"url":"#local-runtime-actions-and-ui","title":"Local Runtime actions and UI","items":[{"url":"#use-case","title":"Use-Case"},{"url":"#cli-command","title":"CLI Command"},{"url":"#architecture","title":"Architecture"}]},{"url":"#remote-runtime-actions-and-local-ui","title":"Remote Runtime actions and local UI","items":[{"url":"#technical-prerequisites","title":"Technical Prerequisites"},{"url":"#use-case-1","title":"Use-Case"},{"url":"#cli-command-1","title":"CLI Command"},{"url":"#architecture-1","title":"Architecture"}]}]},{"url":"#full-deployment","title":"Full Deployment","items":[{"items":[{"url":"#technical-prerequisites-1","title":"Technical Prerequisites"},{"url":"#use-case-2","title":"Use-Case"},{"url":"#cli-command-2","title":"CLI Command"},{"url":"#architecture-2","title":"Architecture"}]}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/index.md"},{"tableOfContents":{"items":[{"url":"#setting-response-headers","title":"Setting Response Headers","items":[{"url":"#rules","title":"Rules"},{"url":"#example-usage","title":"Example Usage"},{"url":"#allowed-headers","title":"Allowed Headers"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/setting-response-headers.md"},{"tableOfContents":{"items":[{"url":"#private-distribution","title":"Private Distribution","items":[{"url":"#overview","title":"Overview"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/private.md"},{"tableOfContents":{"items":[{"url":"#distribution-overview","title":"Distribution Overview","items":[{"url":"#private","title":"Private"},{"url":"#public","title":"Public"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/index.md"},{"tableOfContents":{"items":[{"url":"#development","title":"Development","items":[{"url":"#localhost-dev-server","title":"Localhost Dev Server"},{"url":"#aio-app-dev-vs-aio-app-run","title":"aio app dev vs. aio app run"},{"url":"#state-lib-and-files-lib-usage","title":"State-lib and Files-lib usage"},{"url":"#debugging","title":"Debugging","items":[{"url":"#debugging-with-vs-code","title":"Debugging with VS Code"}]},{"url":"#more-information","title":"More Information"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/development/index.md"},{"tableOfContents":{"items":[{"url":"#custom-io-events-overview","title":"Custom I/O Events Overview"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/custom-events.md"},{"tableOfContents":{"items":[{"url":"#introduction-to-adobe-io-events-webhooks","title":"Introduction to Adobe I/O Events Webhooks"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/webhooks.md"},{"tableOfContents":{"items":[{"url":"#public-distribution","title":"Public Distribution","items":[{"url":"#overview","title":"Overview"},{"url":"#customer-configuration","title":"Customer configuration","items":[{"url":"#defining-customer-configuration-options","title":"Defining customer configuration options"},{"url":"#usage","title":"Usage","items":[{"url":"#runtime-action","title":"Runtime action"},{"url":"#web-application","title":"Web application"}]},{"url":"#customer-configuration-types","title":"Customer configuration types","items":[{"url":"#text-field","title":"Text field"},{"url":"#checkbox","title":"Checkbox"},{"url":"#dropdown","title":"Dropdown"},{"url":"#secret","title":"Secret"},{"url":"#multiple-configuration-options","title":"Multiple configuration options"}]}]},{"url":"#required-products","title":"Required products","items":[{"url":"#defining-required-products","title":"Defining required products","items":[{"url":"#valid-products","title":"Valid products"}]}]},{"url":"#packaging-for-developer-distribution","title":"Packaging for developer distribution","items":[{"url":"#validation","title":"Validation"},{"url":"#hooks","title":"Hooks"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/public.md"},{"tableOfContents":{"items":[{"url":"#introduction-to-extensions","title":"Introduction to Extensions","items":[{"url":"#how-does-it-work","title":"How does it work?"},{"url":"#available-extension-points","title":"Available Extension Points","items":[{"url":"#experience-cloud-ui-extension-point","title":"Experience Cloud UI Extension Point","items":[{"url":"#extension-point-info","title":"Extension Point Info"}]},{"url":"#aem-asset-microservices-extension-point","title":"AEM Asset Microservices Extension Point","items":[{"url":"#extension-point-info-1","title":"Extension Point Info"}]}]},{"url":"#how-do-i-use-it-in-my-app-builder-project","title":"How do I use it in my App Builder Project?","items":[{"url":"#new-project","title":"New Project"},{"url":"#migrating-from-existing-project-or-editing-endpoints","title":"Migrating from Existing Project or Editing Endpoints"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/index.md"},{"tableOfContents":{"items":[{"url":"#integration-guide-with-adobe-experience-cloud","title":"Integration Guide with Adobe Experience Cloud","items":[{"url":"#getting-started","title":"Getting Started"},{"url":"#features","title":"Features","items":[{"url":"#apis","title":"APIs","items":[{"url":"#index","title":"Index"},{"url":"#page","title":"Page"},{"url":"#topbar","title":"TopBar"},{"url":"#user","title":"User"}]},{"url":"#events","title":"Events","items":[{"url":"#ready","title":"Ready"},{"url":"#configuration","title":"Configuration"},{"url":"#history","title":"History"}]}]},{"url":"#licensing","title":"Licensing"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/index.md"},{"tableOfContents":{"items":[{"url":"#ui-extensibility","title":"UI Extensibility"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/ui_extensibility.md"},{"tableOfContents":{"items":[{"url":"#reference-documentation","title":"Reference Documentation"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/reference_documentation/index.md"},{"tableOfContents":{"items":[{"url":"#migration-guide---standalone-application-to-dx-experience-cloud-spa-v1","title":"Migration Guide - Standalone Application to DX Experience Cloud SPA v1","items":[{"url":"#overview","title":"Overview"},{"url":"#who-is-this-migration-guide-for","title":"Who is This Migration Guide For?"},{"url":"#how-can-i-tell-if-my-project-is-a-standalone-application","title":"How can I tell if my project is a Standalone Application?","items":[{"url":"#standalone-application","title":"Standalone Application"},{"url":"#dx-experience-cloud-spa-v1","title":"DX Experience Cloud SPA v1"}]},{"url":"#understanding-the-difference","title":"Understanding the Difference"},{"url":"#migration-steps","title":"Migration Steps"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/migrations/standalone_to_dx_experience_cloud_spa.md"},{"tableOfContents":{"items":[{"url":"#extension-migration-guide","title":"Extension Migration Guide","items":[{"url":"#understanding-configuration-changes","title":"Understanding Configuration Changes","items":[{"url":"#old-file-structure","title":"Old File Structure"},{"url":"#new-file-structure","title":"New File Structure"}]},{"url":"#step-by-step-migration-instruction","title":"Step-by-step Migration Instruction","items":[{"url":"#0-understanding-the-difference","title":"0. Understanding the Difference"},{"url":"#1-update-tooling","title":"1. Update Tooling"},{"url":"#2-update-configuration","title":"2. Update Configuration","items":[{"url":"#21-application-not-extending-any-extension-points","title":"2.1 Application not extending any Extension Points","items":[{"url":"#instructions","title":"Instructions:"},{"url":"#sample-appconfigyaml-file-after-the-refactoring","title":"Sample app.config.yaml File after the refactoring:"}]},{"url":"#22-application-extending-one-extension-point","title":"2.2 Application Extending one Extension Point","items":[{"url":"#instructions-1","title":"Instructions:"},{"url":"#sample-appconfigyaml-file-after-the-refactoring-1","title":"Sample app.config.yaml File after the refactoring:"}]},{"url":"#23-application-extending-two-or-more-extension-points","title":"2.3 Application Extending two or more Extension Points","items":[{"url":"#instructions-2","title":"Instructions:"},{"url":"#sample-appconfigyaml-file-after-the-refactoring-2","title":"Sample app.config.yaml File after the refactoring:"}]}]},{"url":"#3-testing","title":"3. Testing"}]},{"url":"#adding-or-removing-endpoints-from-existing-projects","title":"Adding or removing Endpoints from Existing Projects"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/extension_migration_guide.md"},{"tableOfContents":{"items":[{"url":"#understanding-authentication","title":"Understanding Authentication"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/understanding_authentication.md"},{"tableOfContents":{"items":[{"url":"#security-overview","title":"Security Overview","items":[{"url":"#context","title":"Context"},{"url":"#securing-the-access-to-app-builder-applications","title":"Securing the Access to App Builder Applications","items":[{"url":"#adobe-ims-support-for-app-builder-applications","title":"Adobe IMS Support for App Builder Applications"},{"url":"#securing-access-to-headless-app-builder-applications","title":"Securing Access to Headless App Builder Applications"},{"url":"#securing-access-to-app-builder-spas","title":"Securing Access to App Builder SPAs"},{"url":"#authentication-and-authorization-handling","title":"Authentication and Authorization Handling","items":[{"url":"#known-issue-final-and-web-annotations","title":"Known Issue: Final and Web Annotations"},{"url":"#known-issue-2-additional-scope-for-jwt-access-token-validation","title":"Known Issue 2: Additional scope for JWT access token validation"},{"url":"#known-issue-3-overwriting-paramsbody","title":"Known Issue 3: Overwriting params.body"}]}]},{"url":"#securing-app-builder-applications","title":"Securing App Builder Applications","items":[{"url":"#io-runtime-specific-guidelines","title":"I/O Runtime Specific guidelines"},{"url":"#transport-security","title":"Transport Security"},{"url":"#tenant-isolation","title":"Tenant Isolation","items":[{"url":"#runtime-actions","title":"Runtime Actions"},{"url":"#cloud-storage-and-cdn-for-spa-static-files","title":"Cloud Storage and CDN for SPA Static Files"},{"url":"#files--state-services","title":"Files & State Services"},{"url":"#app-builder-apps-service","title":"App Builder Apps Service"}]}]},{"url":"#summary","title":"Summary"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-an-app-builder-app-from-the-asset-compute-template","title":"Lesson 1: Create an App Builder app from the Asset Compute template"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson1.md"},{"tableOfContents":{"items":[{"url":"#build-aem-asset-compute-worker-with-photoshop-api","title":"Build AEM Asset Compute Worker with Photoshop API"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/index.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-develop-custom-worker-calling-photoshop-apis","title":"Lesson 3: Develop custom worker calling Photoshop APIs"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-configure-the-app","title":"Lesson 2: Configure the app"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-writing-a-serverless-action","title":"Lesson 2: Writing a Serverless Action","items":[{"url":"#barcode-action","title":"Barcode action"},{"url":"#deploying","title":"Deploying"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/barcode.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-bootstrap-a-headless-app-builder-app","title":"Lesson 1: Bootstrap a Headless App Builder App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/bootstrap.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/requirements.md"},{"tableOfContents":{"items":[{"url":"#headless-apps-with-app-builder","title":"Headless Apps with App Builder"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/index.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-testing-a-serverless-action","title":"Lesson 3: Testing a Serverless Action","items":[{"url":"#unit-tests","title":"Unit Tests"},{"url":"#end-to-end-tests","title":"End to End Tests"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/test.md"},{"tableOfContents":{"items":[{"url":"#setup-cicd-in-an-app-builder-app","title":"Setup CI/CD in an App Builder App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-monitoring-cicd","title":"Lesson 2: Monitoring CI/CD","items":[{"url":"#re-run-failing-jobs","title":"Re-run failing jobs"},{"url":"#run-tests-on-pull-request","title":"Run tests on pull request"},{"url":"#continuous-deployment","title":"Continuous deployment"},{"url":"#debugging-jobs","title":"Debugging jobs"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-setup-cicd","title":"Lesson 1: Setup CI/CD","items":[{"url":"#setup-your-github-repository-for-your-app-builder-app","title":"Setup your GitHub repository for your App Builder App"},{"url":"#github-actions","title":"GitHub actions"},{"url":"#github-secrets","title":"GitHub secrets"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-custom-cicd-workflow","title":"Lesson 3: Custom CI/CD workflow","items":[{"url":"#setting-environment-variables","title":"Setting environment variables"},{"url":"#custom-use-cases","title":"Custom use cases"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson3.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/welldone.md"},{"tableOfContents":{"items":[{"url":"#scheduling-cron-jobs-with-alarms","title":"Scheduling Cron Jobs with Alarms"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-bootstrap-a-headless-app","title":"Lesson 1: Bootstrap a Headless App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-types-of-alarm-feed","title":"Lesson 3: Types of Alarm Feed","items":[{"url":"#firing-a-trigger-once","title":"Firing a trigger once"},{"url":"#firing-a-trigger-on-a-time-based-schedule-using-cron","title":"Firing a trigger on a time-based schedule using cron"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-set-up-alarm-feed-with-trigger-and-rule","title":"Lesson 2: Set up Alarm Feed with Trigger and Rule"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson2.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/requirements.md"},{"tableOfContents":{"items":[{"url":"#how-aem-as-cloud-assets-works","title":"How AEM as Cloud assets works"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/welldone.md"},{"tableOfContents":{"items":[{"url":"#build-custom-asset-compute-worker","title":"Build custom Asset Compute worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-configure-services","title":"Lesson 1: Configure services","items":[{"url":"#create-azure-blob-storages","title":"Create Azure blob storages"},{"url":"#configure-imgix","title":"Configure imgIX"},{"url":"#configure-adobe-io","title":"Configure Adobe IO"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-local-environment-setup","title":"Lesson 2: Local environment setup"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-implement-the-worker","title":"Lesson 3: Implement the worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-setup-aem-to-use-the-worker","title":"Lesson 5: Setup AEM to use the worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson5.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-test-the-worker","title":"Lesson 4: Test the worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson4.md"},{"tableOfContents":{"items":[{"url":"#architecture-of-our-worker","title":"Architecture of our worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/our-worker.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/welldone.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment","items":[{"url":"#3rd-party-services","title":"3rd party services"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/requirements.md"},{"tableOfContents":{"items":[{"url":"#build-a-customer-profiles-dashboard-with-app-builder","title":"Build a Customer Profiles Dashboard with App Builder"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-a-new-app-builder-app-from-campaign-standard-template","title":"Lesson 1: Create a New App Builder App from Campaign Standard Template"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-run-the-app-builder-app-locally","title":"Lesson 3: Run the App Builder App Locally"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-explore-the-app-builder-app","title":"Lesson 2: Explore the App Builder App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-list-all-customer-profiles-on-the-ui","title":"Lesson 4: List All Customer Profiles on the UI"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson4.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/welldone.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment","items":[{"url":"#campaign-standard-apis","title":"Campaign Standard APIs"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-getting-familiar-with-debugger-wskdebug","title":"Lesson 1: Getting familiar with Debugger (wskdebug)"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-add-personalized-promotion-emails-triggering","title":"Lesson 5: Add Personalized Promotion Emails Triggering"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson5.md"},{"tableOfContents":{"items":[{"url":"#debugging-app-builder-apps-with-wskdebug","title":"Debugging App Builder Apps With Wskdebug"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-debugging-application-code","title":"Lesson 2: Debugging Application Code"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-managing-application-logs","title":"Lesson 3: Managing Application Logs"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson3.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/welldone.md"},{"tableOfContents":{"items":[{"url":"#build-an-event-driven-app-builder-app-using-custom-events","title":"Build an Event-Driven App Builder App Using Custom Events","items":[{"url":"#overview","title":"Overview"},{"url":"#user-story","title":"User Story"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/index.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-a-new-app-builder-app-from-template","title":"Lesson 1: Create a New App Builder App from Template","items":[{"url":"#create-a-console-integration-and-set-up-project","title":"Create a Console Integration and Set up Project"},{"url":"#initialize-an-app-builder-app-using-cli-template","title":"Initialize an App Builder app using CLI template"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-register-the-app-as-event-provider","title":"Lesson 2: Register the App as Event Provider","items":[{"url":"#set-up-project-and-use-cli-to-register-the-app-as-event-provider","title":"Set up project and use CLI to register the app as event provider","items":[{"url":"#use-cli-to-create-provider-eventmetadata-and-webhook-registration","title":"Use CLI to create provider, eventmetadata and webhook registration"}]},{"url":"#register-the-event-provider","title":"Register the Event Provider"},{"url":"#check-your-result-on-console","title":"Check your result on Console"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-consume-events","title":"Lesson 4: Consume Events","items":[{"url":"#option-1-using-journaling-api-to-consume-events","title":"Option 1: Using Journaling API to consume events"},{"url":"#option-2-using-runtime-action","title":"Option 2: Using runtime action"},{"url":"#option-3-using-webhook-to-consume-events","title":"Option 3: Using webhook to consume events"},{"url":"#lets-test-it-and-fire-events","title":"Let's test it, and fire events"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson4.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-fire-an-event","title":"Lesson 3: Fire an Event","items":[{"url":"#fire-event","title":"Fire Event"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson3.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-verify-the-result","title":"Lesson 2: Verify the result","items":[{"url":"#deep-dive-in","title":"Deep dive in"},{"url":"#tracing-actions-with-activation-ids","title":"Tracing Actions with Activation Ids"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-step-by-step-guide","title":"Lesson 1: Step by Step Guide","items":[{"url":"#initialize-an-app-builder-app-using-template","title":"Initialize an App Builder app using template"},{"url":"#event-registration","title":"Event Registration"},{"url":"#create-event-consumer","title":"Create Event Consumer"},{"url":"#event-runtime-integration","title":"Event Runtime Integration"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson1.md"},{"tableOfContents":{"items":[{"url":"#events-using-runtime-actions-as-webhook","title":"Events Using Runtime Actions as Webhook","items":[{"url":"#background","title":"Background"},{"url":"#benefits-of-using-runtime-action-as-webhook","title":"Benefits of using Runtime Action as Webhook"},{"url":"#how-to-choose-between-journaling-api-and-runtime-action-webhook","title":"How to choose between Journaling API and Runtime Action webhook"},{"url":"#overview","title":"Overview"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/index.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#what-you-learned","title":"What you learned"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/welldone.md"},{"tableOfContents":{"items":[{"url":"#consume-events-using-journaling-api","title":"Consume Events Using Journaling API","items":[{"url":"#user-story","title":"User Story"},{"url":"#solution","title":"Solution"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/index.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-an-event-provider-using-app-builder","title":"Lesson 1: Create an Event Provider using App Builder","items":[{"url":"#create-an-event-provider-using-app-builder-template","title":"Create an event provider using App Builder template"},{"url":"#register-the-app-as-event-provider","title":"Register the App as Event Provider"},{"url":"#fire-events-and-set-up-consume-events","title":"Fire Events and set up consume Events"},{"url":"#scheduling-cron-jobs-with-alarms","title":"Scheduling cron jobs with alarms"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-create-the-event-consumer-using-journaling-api","title":"Lesson 2: Create the Event Consumer using Journaling API","items":[{"url":"#create-an-event-consumer-using-app-builder-template","title":"Create an event consumer using App Builder template"},{"url":"#write-the-data-into-app-builder-storage","title":"Write the data into App Builder storage"},{"url":"#scheduling-cron-jobs-to-automate-the-consuming-events","title":"Scheduling cron jobs to automate the consuming events"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-end-to-end-test","title":"Lesson 3: End to end test"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson3.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/welldone.md"},{"tableOfContents":{"items":[{"url":"#spectrum-introduction","title":"Spectrum Introduction"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/index.md"},{"tableOfContents":{"items":[{"url":"#sample-apps","title":"Sample Apps","items":[{"url":"#overview","title":"Overview","items":[{"url":"#live-demo-adobe-stock-image-search","title":"Live demo: Adobe Stock Image Search"},{"url":"#customer-profiles-dashboard","title":"Customer Profiles Dashboard"},{"url":"#barcode-generator","title":"Barcode Generator"},{"url":"#throttled-queue-processing","title":"Throttled Queue Processing"},{"url":"#custom-assets-compute-worker-for-aem-using-photoshop-api","title":"Custom Assets Compute Worker for AEM using Photoshop API"},{"url":"#todo-app-with-react-spectrum","title":"Todo App with React Spectrum"},{"url":"#journal-browser-using-io-events-library","title":"Journal Browser using I/O Events Library"},{"url":"#adobe-io-events---azure-service-bus-connector","title":"Adobe I/O Events - Azure Service Bus connector"},{"url":"#adobe-io-events---azure-service-bus-connector-1","title":"Adobe I/O Events - Azure Service Bus connector"}]},{"url":"#code-snippets","title":"Code Snippets"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/index.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/demo.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-introduction-to-spectrum","title":"Lesson 1: Introduction to Spectrum","items":[{"url":"#for-all-platforms","title":"For all platforms"},{"url":"#for-everyone","title":"For everyone"},{"url":"#evolving-and-transparent","title":"Evolving and transparent"},{"url":"#built-by-a-community","title":"Built by a community"},{"url":"#resources","title":"Resources","items":[{"url":"#ui-kits","title":"UI kits"},{"url":"#adobe-clean-font-families","title":"Adobe Clean Font families"},{"url":"#icons","title":"Icons"}]},{"url":"#contact","title":"Contact"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson1.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-spectrum-css","title":"Lesson 2: Spectrum CSS","items":[{"url":"#using-spectrum-css","title":"Using Spectrum CSS"},{"url":"#building-a-simple-form-using-spectrum-css","title":"Building a simple form using Spectrum CSS","items":[{"url":"#finally-","title":"Finally ..."}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-react-spectrum-in-app-builder","title":"Lesson 4: React Spectrum in App Builder","items":[{"url":"#single-page-application","title":"Single Page Application"},{"url":"#project-structure","title":"Project Structure"},{"url":"#running-and-deployment","title":"Running and Deployment"},{"url":"#caching","title":"Caching"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson4.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-react-spectrum","title":"Lesson 3: React Spectrum","items":[{"url":"#using-react-spectrum","title":"Using React Spectrum"},{"url":"#building-a-simple-form-using-react-spectrum","title":"Building a simple form using React Spectrum"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson3.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/welldone.md"},{"tableOfContents":{"items":[{"url":"#building-an-app-builder-todo-app-with-aio-lib-state-and-react-spectrum","title":"Building an App Builder Todo App with aio-lib-state and React Spectrum"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-a-new-app-builder-app-with-the-react-spectrum-template","title":"Lesson 1: Create a New App Builder App with the React Spectrum template","items":[{"url":"#initialization","title":"Initialization"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-setup-the-createtodolist-component","title":"Lesson 3: Setup the CreateTodoList component","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-property","title":"Component property"},{"url":"#creating-a-todo-list","title":"Creating a todo list"},{"url":"#the-full-component","title":"The full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-setup-the-todo-component","title":"Lesson 4: Setup the Todo component","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-properties","title":"Component properties"},{"url":"#updating-a-todo-item","title":"Updating a todo item"},{"url":"#full-component","title":"Full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson4.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-setup-runtime-actions","title":"Lesson 2: Setup Runtime actions","items":[{"url":"#global-configuration-file","title":"Global configuration file"},{"url":"#install-aio-lib-state","title":"Install aio-lib-state"},{"url":"#main-function","title":"Main function","items":[{"url":"#parameters","title":"Parameters"},{"url":"#crud-operations","title":"CRUD operations"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson2.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-bringing-the-pieces-together-to-build-the-app","title":"Lesson 5: Bringing the pieces together to build the App","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-property","title":"Component property"},{"url":"#component-state-values","title":"Component state values"},{"url":"#action-function-callbacks","title":"Action function callbacks"},{"url":"#loading-indicator","title":"Loading indicator"},{"url":"#rendering-todo-lists","title":"Rendering todo lists"},{"url":"#full-component","title":"Full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson6.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-setup-the-todolist-component","title":"Lesson 5: Setup the TodoList component","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-properties","title":"Component properties"},{"url":"#spectrum-icons","title":"Spectrum Icons"},{"url":"#displaying-the-todo-list-name","title":"Displaying the todo list name"},{"url":"#rendering-todo-items","title":"Rendering todo items"},{"url":"#creating-a-todo-item","title":"Creating a todo item","items":[{"url":"#deleting-a-todo-list","title":"Deleting a todo list"}]},{"url":"#full-component","title":"Full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson5.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/welldone.md"},{"tableOfContents":{"items":[{"url":"#requirements","title":"Requirements","items":[{"url":"#required-skills","title":"Required skills"},{"url":"#pre-requisites","title":"Pre-requisites"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/transclusions/_requirements.md"},{"tableOfContents":{"items":[{"url":"#interface-modules","title":"Interface: Modules","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#default","title":"default","items":[{"url":"#type-declaration","title":"Type declaration:"}]},{"url":"#page","title":"page"},{"url":"#runtime","title":"runtime"},{"url":"#topbar","title":"topbar"},{"url":"#user","title":"user","items":[{"url":"#type-declaration-1","title":"Type declaration:"}]}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.md"},{"tableOfContents":{"items":[{"url":"#app-builder-tech-talks-deep-dive-sessions-and-partner-use-cases","title":"App Builder Tech Talks, Deep Dive Sessions and Partner Use Cases","items":[{"url":"#overview","title":"Overview","items":[{"url":"#introducing-app-builder","title":"Introducing App Builder"},{"url":"#getting-started","title":"Getting Started"},{"url":"#architecture","title":"Architecture"},{"url":"#security","title":"Security"},{"url":"#user-journey","title":"User Journey"}]},{"url":"#exploring-app-builder","title":"Exploring App Builder","items":[{"url":"#projects-and-workspaces","title":"Projects and Workspaces"},{"url":"#react-spectrum","title":"React Spectrum"},{"url":"#custom-events","title":"Custom Events"},{"url":"#cicd","title":"CI/CD"},{"url":"#debugging","title":"Debugging"},{"url":"#learning-resources","title":"Learning Resources"},{"url":"#live-wired-sneak","title":"Live Wired Sneak"}]},{"url":"#case-study","title":"Case Study","items":[{"url":"#dashboard-case-study","title":"Dashboard Case Study"},{"url":"#ode-case-study","title":"ODE Case Study"},{"url":"#deep-dive-use-cases","title":"Deep Dive Use Cases"},{"url":"#softcrylic-partner-showcase","title":"Softcrylic Partner Showcase"}]},{"url":"#adobe-developers-live","title":"Adobe Developers Live","items":[{"url":"#app-builder-deep-dive","title":"App Builder Deep Dive"},{"url":"#extend-adobe-experience-cloud","title":"Extend Adobe Experience Cloud"},{"url":"#asset-compute-service-extensibility","title":"Asset Compute Service Extensibility"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/index.md"},{"tableOfContents":{"items":[{"url":"#interface-runtime-t","title":"Interface: Runtime ","items":[{"url":"#type-parameters","title":"Type parameters"},{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#eventemitter-methods","title":"EventEmitter Methods"}]},{"url":"#eventemitter-methods-1","title":"EventEmitter Methods","items":[{"url":"#emit","title":"emit"},{"url":"#off","title":"off"},{"url":"#on","title":"on"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.runtime.md"},{"tableOfContents":{"items":[{"url":"#interface-objectwithpath","title":"Interface: ObjectWithPath","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#path","title":"path"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithpath.md"},{"tableOfContents":{"items":[{"url":"#interface-objectwithhref","title":"Interface: ObjectWithHref","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#href","title":"href"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithhref.md"},{"tableOfContents":{"items":[{"url":"#interface-pageapi","title":"Interface: PageApi","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"},{"url":"#methods","title":"Methods"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#favicon","title":"favicon"},{"url":"#modal","title":"modal"},{"url":"#preventdefaultcombos","title":"preventDefaultCombos"},{"url":"#spinner","title":"spinner"},{"url":"#title","title":"title"},{"url":"#viewporttakeover","title":"viewportTakeover"}]},{"url":"#methods-1","title":"Methods","items":[{"url":"#done","title":"done"},{"url":"#generateshellurl","title":"generateShellUrl"},{"url":"#iframereload","title":"iframeReload"},{"url":"#openinnewtab","title":"openInNewTab"},{"url":"#shellredirect","title":"shellRedirect"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapi.md"},{"tableOfContents":{"items":[{"url":"#interface-callback","title":"Interface: Callback","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#callable","title":"Callable"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.callback.md"},{"tableOfContents":{"items":[{"url":"#interface-pageapiproperties","title":"Interface: PageApiProperties","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#favicon","title":"favicon"},{"url":"#modal","title":"modal"},{"url":"#preventdefaultcombos","title":"preventDefaultCombos"},{"url":"#spinner","title":"spinner"},{"url":"#title","title":"title"},{"url":"#viewporttakeover","title":"viewportTakeover"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapiproperties.md"},{"tableOfContents":{"items":[{"url":"#interface-customsearchconfig","title":"Interface: CustomSearchConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#optional-callback","title":"Optional callback"},{"url":"#optional-enabled","title":"Optional enabled"},{"url":"#optional-open","title":"Optional open"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customsearchconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-customfeedbackconfig","title":"Interface: CustomFeedbackConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#buttonlabel","title":"buttonLabel"},{"url":"#callback","title":"callback"},{"url":"#enabled","title":"enabled"},{"url":"#type","title":"type"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customfeedbackconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-externalfeedbackconfig","title":"Interface: ExternalFeedbackConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#buttonlabel","title":"buttonLabel"},{"url":"#enabled","title":"enabled"},{"url":"#type","title":"type"},{"url":"#url","title":"url"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.externalfeedbackconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-helpcenterfeedbackconfig","title":"Interface: HelpCenterFeedbackConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#buttonlabel","title":"buttonLabel"},{"url":"#enabled","title":"enabled"},{"url":"#optional-subject","title":"Optional subject"},{"url":"#type","title":"type"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-solution","title":"Interface: Solution","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#icon","title":"icon"},{"url":"#shorttitle","title":"shortTitle"},{"url":"#title","title":"title"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.solution.md"},{"tableOfContents":{"items":[{"url":"#interface-topbarapiproperties","title":"Interface: TopbarApiProperties","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#customenvlabel","title":"customEnvLabel"},{"url":"#solution","title":"solution"},{"url":"#workspaces","title":"workspaces"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapiproperties.md"},{"tableOfContents":{"items":[{"url":"#interface-userapi","title":"Interface: UserApi","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"},{"url":"#eventemitter-methods","title":"EventEmitter Methods"},{"url":"#other-methods","title":"Other Methods"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#logouturl","title":"logoutUrl"}]},{"url":"#eventemitter-methods-1","title":"EventEmitter Methods","items":[{"url":"#emit","title":"emit"},{"url":"#off","title":"off"},{"url":"#on","title":"on"}]},{"url":"#other-methods-1","title":"Other Methods","items":[{"url":"#authexpired","title":"authExpired"},{"url":"#get","title":"get"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userapi.md"},{"tableOfContents":{"items":[{"url":"#interface-topbarapi","title":"Interface: TopbarApi","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"},{"url":"#methods","title":"Methods"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#customenvlabel","title":"customEnvLabel"},{"url":"#solution","title":"solution"},{"url":"#workspaces","title":"workspaces"}]},{"url":"#methods-1","title":"Methods","items":[{"url":"#onheroclick","title":"onHeroClick"},{"url":"#setcustomsearch","title":"setCustomSearch"},{"url":"#setfeedbackbutton","title":"setFeedbackButton"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapi.md"},{"tableOfContents":{"items":[{"url":"#external-module-index","title":"External module: \"index\"","items":[{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"},{"url":"#functions","title":"Functions"}]},{"url":"#functions-1","title":"Functions","items":[{"url":"#init","title":"init"},{"url":"#runtime","title":"runtime"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/index.md"},{"tableOfContents":{"items":[{"url":"#interface-userinfo","title":"Interface: UserInfo","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#imsorg","title":"imsOrg"},{"url":"#imsorgname","title":"imsOrgName"},{"url":"#imsorgs","title":"imsOrgs"},{"url":"#imsprofile","title":"imsProfile"},{"url":"#imstoken","title":"imsToken"},{"url":"#locale","title":"locale"},{"url":"#preferredlanguages","title":"preferredLanguages"},{"url":"#suborg","title":"subOrg"},{"url":"#tenant","title":"tenant"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userinfo.md"},{"tableOfContents":{"items":[{"url":"#external-module-topbar","title":"External module: topbar","items":[{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/topbar.md"},{"tableOfContents":{"items":[{"url":"#external-module-user","title":"External module: user","items":[{"items":[{"url":"#receiving-updates","title":"Receiving updates"}]},{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/user.md"},{"tableOfContents":{"items":[{"url":"#external-module-page","title":"External module: page","items":[{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"},{"url":"#type-aliases","title":"Type aliases"}]},{"url":"#type-aliases-1","title":"Type aliases","items":[{"url":"#locationlike","title":"LocationLike"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/page.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-integrate-and-use-the-custom-worker-in-aemaacs","title":"Lesson 4: Integrate and use the custom worker in AEMaaCS"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson4.md"},{"tableOfContents":{"items":[{"url":"#real-time-data-from-adobe-analytics-api-14","title":"Real-time data from Adobe Analytics API 1.4"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/analytics.md"},{"tableOfContents":{"items":[{"url":"#io-events-handler","title":"I/O Events handler"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/events.md"},{"tableOfContents":{"items":[{"url":"#app-builder-files-sdk","title":"App Builder Files SDK","items":[{"url":"#return-a-list-of-files-stored-with-the-files-sdk","title":"Return a list of files stored with the Files SDK"},{"url":"#return-a-presigned-url-of-a-private-file-from-the-files-sdk","title":"Return a presigned URL of a private file from the Files SDK"},{"url":"#return-a-file-from-the-files-sdk-with-redirect","title":"Return a file from the Files SDK with Redirect"},{"url":"#upload-a-file-to-the-files-sdk","title":"Upload a file to the Files SDK"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/files.md"},{"tableOfContents":{"items":[{"url":"#app-builder-state-sdk","title":"App Builder State SDK","items":[{"url":"#read-a-value-by-key-from-the-state-sdk","title":"Read a value by key from the State SDK"},{"url":"#write-a-key-value-pair-into-the-state-sdk","title":"Write a key-value pair into the State SDK"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/state.md"},{"tableOfContents":{"items":[{"url":"#caching-http-responses","title":"Caching HTTP responses"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/index.md"},{"tableOfContents":{"items":[{"url":"#adobe-developers-live--asset-compute-service-extensibility","title":"Adobe Developers Live | Asset Compute Service Extensibility"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/asset-compute-service-extensibility.md"},{"tableOfContents":{"items":[{"url":"#adobe-developers-live--app-builder-deep-dive","title":"Adobe Developers Live | App Builder Deep Dive"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/deep-dive.md"},{"tableOfContents":{"items":[{"url":"#adobe-developers-live--so-you-want-to-extend-adobe-experience-cloud","title":"Adobe Developers Live | So you want to extend Adobe Experience Cloud?"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/extend-experience-cloud.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---custom-events","title":"Exploring App Builder - Custom Events"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/custom-events.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---cicd","title":"Exploring App Builder - CI/CD"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ci-cd.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---dashboard-case-study","title":"Exploring App Builder - Dashboard Case Study"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/dashboard-case-study.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---debugging","title":"Exploring App Builder - Debugging"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/debugging.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---deep-dive-on-use-cases","title":"Exploring App Builder - Deep Dive on Use Cases"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/deep-dive-use-cases.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---learning-resources","title":"Exploring App Builder - Learning Resources"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/learning-resources.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---live-wired-sneak","title":"Exploring App Builder - Live Wired Sneak"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/live-wired-sneak.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---projects-and-workspaces","title":"Exploring App Builder - Projects and Workspaces"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/projects-and-workspaces.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---ode-case-study","title":"Exploring App Builder - ODE Case Study"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ode-case-study.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---partner-showcase-softcrylic","title":"Exploring App Builder - Partner Showcase: Softcrylic"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/softcrylic-showcase.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---react-spectrum","title":"Exploring App Builder - React Spectrum"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/react-spectrum.md"},{"tableOfContents":{"items":[{"url":"#a-breakdown-of-app-builders-architecture","title":"A Breakdown of App Builder's Architecture"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/architecture.md"},{"tableOfContents":{"items":[{"url":"#following-the-end-to-end-user-journey","title":"Following the End-to-End User Journey"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/e2e-user-journey.md"},{"tableOfContents":{"items":[{"url":"#introducing-app-builder","title":"Introducing App Builder"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/introduction.md"},{"tableOfContents":{"items":[{"url":"#getting-started","title":"Getting Started"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/getting-started.md"},{"tableOfContents":{"items":[{"url":"#a-full-security-overview","title":"A Full Security Overview"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/security.md"}]},"allSitePage":{"nodes":[{"component":"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/pages/404.md","path":"/404/"},{"component":"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/pages/404.md","path":"/404.html"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/common_troubleshooting.md","path":"/getting_started/common_troubleshooting/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/first_app.md","path":"/getting_started/first_app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/index.md","path":"/getting_started/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/publish_app.md","path":"/getting_started/publish_app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/app-hooks.md","path":"/guides/app-hooks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/index.md","path":"/guides/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_state.md","path":"/guides/application_state/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/introduction_to_react_spectrum.md","path":"/guides/introduction_to_react_spectrum/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/telemetry.md","path":"/guides/telemetry/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/tips_tricks.md","path":"/guides/tips_tricks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/using_sdks.md","path":"/guides/using_sdks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/community.md","path":"/overview/community/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/faq.md","path":"/overview/faq/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/firefly_and_runtime.md","path":"/overview/firefly_and_runtime/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/getting_access.md","path":"/overview/getting_access/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/index.md","path":"/overview/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/how_it_works.md","path":"/overview/how_it_works/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/blog_articles.md","path":"/resources/blog_articles/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/index.md","path":"/resources/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/azure_log_analytics.md","path":"/guides/application_logging/azure_log_analytics/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/index.md","path":"/guides/application_logging/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/new_relic.md","path":"/guides/application_logging/new_relic/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_cloud.md","path":"/guides/application_logging/splunk_cloud/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/index.md","path":"/guides/configuration/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_enterprise.md","path":"/guides/application_logging/splunk_enterprise/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/webpack-configuration.md","path":"/guides/configuration/webpack-configuration/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/contribution_guides/index.md","path":"/guides/contribution_guides/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/credential-rotation.md","path":"/guides/deployment/credential-rotation/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/ci_cd_for_firefly_apps.md","path":"/guides/deployment/ci_cd_for_firefly_apps/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/index.md","path":"/guides/deployment/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/setting-response-headers.md","path":"/guides/deployment/setting-response-headers/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/index.md","path":"/guides/distribution/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/development/index.md","path":"/guides/development/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/private.md","path":"/guides/distribution/private/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/custom-events.md","path":"/guides/events/custom-events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/public.md","path":"/guides/distribution/public/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/webhooks.md","path":"/guides/events/webhooks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/index.md","path":"/guides/extensions/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/index.md","path":"/guides/exc_app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/ui_extensibility.md","path":"/guides/extensions/ui_extensibility/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/migrations/standalone_to_dx_experience_cloud_spa.md","path":"/guides/migrations/standalone_to_dx_experience_cloud_spa/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/extension_migration_guide.md","path":"/guides/extensions/extension_migration_guide/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/reference_documentation/index.md","path":"/guides/reference_documentation/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/understanding_authentication.md","path":"/guides/security/understanding_authentication/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/index.md","path":"/resources/asset-compute-worker-ps-api/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/index.md","path":"/guides/security/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson1.md","path":"/resources/asset-compute-worker-ps-api/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson2.md","path":"/resources/asset-compute-worker-ps-api/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson4.md","path":"/resources/asset-compute-worker-ps-api/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson3.md","path":"/resources/asset-compute-worker-ps-api/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/requirements.md","path":"/resources/asset-compute-worker-ps-api/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/welldone.md","path":"/resources/asset-compute-worker-ps-api/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/bootstrap.md","path":"/resources/barcode-reader/bootstrap/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/barcode.md","path":"/resources/barcode-reader/barcode/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/requirements.md","path":"/resources/barcode-reader/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/index.md","path":"/resources/barcode-reader/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/test.md","path":"/resources/barcode-reader/test/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/welldone.md","path":"/resources/barcode-reader/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/index.md","path":"/resources/ci-cd/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson2.md","path":"/resources/ci-cd/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson3.md","path":"/resources/ci-cd/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/requirements.md","path":"/resources/ci-cd/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/welldone.md","path":"/resources/ci-cd/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson1.md","path":"/resources/ci-cd/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson1.md","path":"/resources/cron-jobs/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/index.md","path":"/resources/cron-jobs/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson3.md","path":"/resources/cron-jobs/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/welldone.md","path":"/resources/cron-jobs/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson2.md","path":"/resources/cron-jobs/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/requirements.md","path":"/resources/cron-jobs/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md","path":"/resources/custom-asset-compute-worker/aem-cloud-assets/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/index.md","path":"/resources/custom-asset-compute-worker/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson1.md","path":"/resources/custom-asset-compute-worker/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson2.md","path":"/resources/custom-asset-compute-worker/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson3.md","path":"/resources/custom-asset-compute-worker/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson5.md","path":"/resources/custom-asset-compute-worker/lesson5/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson4.md","path":"/resources/custom-asset-compute-worker/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/our-worker.md","path":"/resources/custom-asset-compute-worker/our-worker/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/requirements.md","path":"/resources/custom-asset-compute-worker/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/welldone.md","path":"/resources/custom-asset-compute-worker/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/index.md","path":"/resources/customer-dashboard/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson3.md","path":"/resources/customer-dashboard/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson1.md","path":"/resources/customer-dashboard/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson4.md","path":"/resources/customer-dashboard/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson2.md","path":"/resources/customer-dashboard/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/requirements.md","path":"/resources/customer-dashboard/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/welldone.md","path":"/resources/customer-dashboard/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson5.md","path":"/resources/customer-dashboard/lesson5/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/index.md","path":"/resources/debugging/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson1.md","path":"/resources/debugging/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson3.md","path":"/resources/debugging/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/requirements.md","path":"/resources/debugging/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/welldone.md","path":"/resources/debugging/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/index.md","path":"/resources/event-driven/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson2.md","path":"/resources/debugging/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson1.md","path":"/resources/event-driven/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson2.md","path":"/resources/event-driven/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/requirements.md","path":"/resources/event-driven/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson4.md","path":"/resources/event-driven/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/welldone.md","path":"/resources/event-driven/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson3.md","path":"/resources/event-driven/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/index.md","path":"/resources/events-runtime/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson1.md","path":"/resources/events-runtime/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson2.md","path":"/resources/events-runtime/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/requirements.md","path":"/resources/events-runtime/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/welldone.md","path":"/resources/events-runtime/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/index.md","path":"/resources/journaling-events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson3.md","path":"/resources/journaling-events/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson2.md","path":"/resources/journaling-events/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson1.md","path":"/resources/journaling-events/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/requirements.md","path":"/resources/journaling-events/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/welldone.md","path":"/resources/journaling-events/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/demo.md","path":"/resources/sample_apps/demo/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/index.md","path":"/resources/sample_apps/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/index.md","path":"/resources/spectrum-intro/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson1.md","path":"/resources/spectrum-intro/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson3.md","path":"/resources/spectrum-intro/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson2.md","path":"/resources/spectrum-intro/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/requirements.md","path":"/resources/spectrum-intro/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/welldone.md","path":"/resources/spectrum-intro/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson4.md","path":"/resources/spectrum-intro/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/index.md","path":"/resources/todo-app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson1.md","path":"/resources/todo-app/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson3.md","path":"/resources/todo-app/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson4.md","path":"/resources/todo-app/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson2.md","path":"/resources/todo-app/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson5.md","path":"/resources/todo-app/lesson5/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson6.md","path":"/resources/todo-app/lesson6/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/requirements.md","path":"/resources/todo-app/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/welldone.md","path":"/resources/todo-app/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.runtime.md","path":"/guides/exc_app/interfaces/index.runtime/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.md","path":"/guides/exc_app/interfaces/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/index.md","path":"/resources/videos/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithhref.md","path":"/guides/exc_app/interfaces/page.objectwithhref/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithpath.md","path":"/guides/exc_app/interfaces/page.objectwithpath/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapi.md","path":"/guides/exc_app/interfaces/page.pageapi/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.callback.md","path":"/guides/exc_app/interfaces/topbar.callback/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customfeedbackconfig.md","path":"/guides/exc_app/interfaces/topbar.customfeedbackconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapiproperties.md","path":"/guides/exc_app/interfaces/page.pageapiproperties/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customsearchconfig.md","path":"/guides/exc_app/interfaces/topbar.customsearchconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.externalfeedbackconfig.md","path":"/guides/exc_app/interfaces/topbar.externalfeedbackconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md","path":"/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.solution.md","path":"/guides/exc_app/interfaces/topbar.solution/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapi.md","path":"/guides/exc_app/interfaces/topbar.topbarapi/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapiproperties.md","path":"/guides/exc_app/interfaces/topbar.topbarapiproperties/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userapi.md","path":"/guides/exc_app/interfaces/user.userapi/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userinfo.md","path":"/guides/exc_app/interfaces/user.userinfo/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/index.md","path":"/guides/exc_app/modules/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/page.md","path":"/guides/exc_app/modules/page/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/topbar.md","path":"/guides/exc_app/modules/topbar/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/user.md","path":"/guides/exc_app/modules/user/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/analytics.md","path":"/resources/sample_apps/code_snippets/analytics/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/events.md","path":"/resources/sample_apps/code_snippets/events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/files.md","path":"/resources/sample_apps/code_snippets/files/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/index.md","path":"/resources/sample_apps/code_snippets/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/asset-compute-service-extensibility.md","path":"/resources/videos/developers-live/asset-compute-service-extensibility/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/state.md","path":"/resources/sample_apps/code_snippets/state/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/deep-dive.md","path":"/resources/videos/developers-live/deep-dive/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ci-cd.md","path":"/resources/videos/exploring/ci-cd/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/custom-events.md","path":"/resources/videos/exploring/custom-events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/dashboard-case-study.md","path":"/resources/videos/exploring/dashboard-case-study/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/debugging.md","path":"/resources/videos/exploring/debugging/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/deep-dive-use-cases.md","path":"/resources/videos/exploring/deep-dive-use-cases/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/learning-resources.md","path":"/resources/videos/exploring/learning-resources/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/extend-experience-cloud.md","path":"/resources/videos/developers-live/extend-experience-cloud/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/live-wired-sneak.md","path":"/resources/videos/exploring/live-wired-sneak/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ode-case-study.md","path":"/resources/videos/exploring/ode-case-study/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/projects-and-workspaces.md","path":"/resources/videos/exploring/projects-and-workspaces/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/react-spectrum.md","path":"/resources/videos/exploring/react-spectrum/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/softcrylic-showcase.md","path":"/resources/videos/exploring/softcrylic-showcase/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/architecture.md","path":"/resources/videos/overview/architecture/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/e2e-user-journey.md","path":"/resources/videos/overview/e2e-user-journey/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/getting-started.md","path":"/resources/videos/overview/getting-started/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/introduction.md","path":"/resources/videos/overview/introduction/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/security.md","path":"/resources/videos/overview/security/"}]},"site":{"pathPrefix":"/app-builder","siteMetadata":{"home":{"title":"App Builder","path":"/app-builder","hidden":null},"docs":null,"githubIssue":null,"versions":null,"pages":[{"title":"Overview","path":"overview","menu":null},{"title":"Getting Started","path":"getting_started","menu":null},{"title":"Guides","path":"guides","menu":null},{"title":"Resources","path":"resources","menu":null}],"subPages":[{"title":"Overview","path":"overview","header":null,"pages":null},{"title":"How it works","path":"overview/how_it_works.md","header":null,"pages":null},{"title":"How to Get Access","path":"overview/getting_access.md","header":null,"pages":null},{"title":"App Builder and Adobe I/O Runtime","path":"overview/firefly_and_runtime.md","header":null,"pages":null},{"title":"FAQ","path":"overview/faq.md","header":null,"pages":null},{"title":"Community","path":"overview/community.md","header":null,"pages":null},{"title":"Setting up Your Environment","path":"getting_started","header":null,"pages":null},{"title":"Creating your First App Builder App","path":"getting_started/first_app.md","header":null,"pages":null},{"title":"Publishing Your First Project App Builder Application","path":"getting_started/publish_app.md","header":null,"pages":null},{"title":"Troubleshooting the most common issues","path":"getting_started/common_troubleshooting.md","header":null,"pages":null},{"title":"Architecture","path":"guides","header":null,"pages":[{"title":"Architecture overview","path":"guides","pages":null},{"title":"Dealing with Application State","path":"guides/application_state.md","pages":null},{"title":"Introduction to React Spectrum","path":"guides/introduction_to_react_spectrum.md","pages":null},{"title":"Using Client SDKs for Accessing Adobe APIs","path":"guides/using_sdks.md","pages":null},{"title":"Event hooks for App Builder Applications","path":"guides/app-hooks.md","pages":null}]},{"title":"Logging","path":"guides/application_logging","header":null,"pages":[{"title":"Managing Application Logs","path":"guides/application_logging/index.md","pages":null},{"title":"Forwarding logs to Azure Log Analytics","path":"guides/application_logging/azure_log_analytics.md","pages":null},{"title":"Forwarding logs to New Relic","path":"guides/application_logging/new_relic.md","pages":null},{"title":"Forwarding logs to Splunk Cloud","path":"guides/application_logging/splunk_cloud.md","pages":null},{"title":"Forwarding logs to Splunk Enterprise","path":"guides/application_logging/splunk_enterprise.md","pages":null}]},{"title":"Security","path":"guides/security","header":null,"pages":[{"title":"Security overview","path":"guides/security/index.md","pages":null},{"title":"Understanding Authentication","path":"guides/security/understanding_authentication.md","pages":null}]},{"title":"Deployment","path":"guides/deployment","header":null,"pages":[{"title":"Deployment overview","path":"guides/deployment","pages":null},{"title":"CI/CD for App Builder Applications","path":"guides/deployment/ci_cd_for_firefly_apps.md","pages":null},{"title":"Credential Rotation","path":"guides/deployment/credential-rotation.md","pages":null},{"title":"Setting Response Headers","path":"guides/deployment/setting-response-headers.md","pages":null}]},{"title":"Development","path":"guides/development","header":null,"pages":null},{"title":"Extensions","path":"guides/extensions","header":null,"pages":[{"title":"Introduction to Extensions","path":"guides/extensions/index.md","pages":null},{"title":"Extension Migration Guide","path":"guides/extensions/extension_migration_guide.md","pages":null},{"title":"Migration Guide - Standalone Application to DX Experience Cloud SPA v1","path":"guides/migrations/standalone_to_dx_experience_cloud_spa.md","pages":null},{"title":"UI Extensibility","path":"guides/extensions/ui_extensibility.md","pages":null}]},{"title":"Configuration","path":"guides/configuration","header":null,"pages":[{"title":"App Builder Configuration Files","path":"guides/configuration/index.md","pages":null},{"title":"Webpack Configuration","path":"guides/configuration/webpack-configuration.md","pages":null}]},{"title":"Distribution","path":"guides/distribution/index.md","header":null,"pages":[{"title":"Private Distribution","path":"guides/distribution/private.md","pages":null},{"title":"Public Distribution","path":"guides/distribution/public.md","pages":null}]},{"title":"Integration Guide with Adobe Experience Cloud","path":"guides/exc_app","header":null,"pages":[{"title":"Getting started with Adobe Experience Cloud","path":"guides/exc_app/index.md","pages":null},{"title":"Modules","path":"guides/exc_app/modules","pages":[{"title":"Index","path":"guides/exc_app/modules/index.md","pages":null},{"title":"Page","path":"guides/exc_app/modules/page.md","pages":null},{"title":"Topbar","path":"guides/exc_app/modules/topbar.md","pages":null},{"title":"User","path":"guides/exc_app/modules/user.md","pages":null}]},{"title":"Interfaces","path":"guides/exc_app/interfaces","pages":[{"title":"Modules","path":"guides/exc_app/interfaces/index.md","pages":null},{"title":"Runtime","path":"guides/exc_app/interfaces/index.runtime.md","pages":null},{"title":"Page Object with href","path":"guides/exc_app/interfaces/page.objectwithhref.md","pages":null},{"title":"Page Object with path","path":"guides/exc_app/interfaces/page.objectwithpath.md","pages":null},{"title":"Page API","path":"guides/exc_app/interfaces/page.pageapi.md","pages":null},{"title":"Page API Properties","path":"guides/exc_app/interfaces/page.pageapiproperties.md","pages":null},{"title":"Topbar callback","path":"guides/exc_app/interfaces/topbar.callback.md","pages":null},{"title":"Topbar custom feedback config","path":"guides/exc_app/interfaces/topbar.customfeedbackconfig.md","pages":null},{"title":"Topbar custom search config","path":"guides/exc_app/interfaces/topbar.customsearchconfig.md","pages":null},{"title":"Topbar external feedback config","path":"guides/exc_app/interfaces/topbar.externalfeedbackconfig.md","pages":null},{"title":"Topbar help center feedback config","path":"guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md","pages":null},{"title":"Topbar solution","path":"guides/exc_app/interfaces/topbar.solution.md","pages":null},{"title":"Topbar API","path":"guides/exc_app/interfaces/topbar.topbarapi.md","pages":null},{"title":"Topbar API properties","path":"guides/exc_app/interfaces/topbar.topbarapiproperties.md","pages":null},{"title":"User API","path":"guides/exc_app/interfaces/user.userapi.md","pages":null},{"title":"User Info","path":"guides/exc_app/interfaces/user.userinfo.md","pages":null}]}]},{"title":"Integration Guide for building Event-driven Applications with I/O Events","path":"guides/events/webhooks.md","header":null,"pages":null},{"title":"Custom Events Overview","path":"guides/events/custom-events.md","header":null,"pages":null},{"title":"Reference documentation","path":"guides/reference_documentation","header":null,"pages":null},{"title":"Contribution guides","path":"guides/contribution_guides","header":null,"pages":null},{"title":"Telemetry","path":"guides/telemetry","header":null,"pages":null},{"title":"Code Labs","path":"resources/index.md","header":null,"pages":[{"title":"Asset Compute with Photoshop APIs","path":"resources/asset-compute-worker-ps-api/index.md","pages":[{"title":"Requirements","path":"resources/asset-compute-worker-ps-api/requirements","pages":null},{"title":"Lesson 1: Create an app from Asset Compute template","path":"resources/asset-compute-worker-ps-api/lesson1","pages":null},{"title":"Lesson 2: Configure the app","path":"resources/asset-compute-worker-ps-api/lesson2","pages":null},{"title":"Lesson 3: Develop worker calling Photoshop API","path":"resources/asset-compute-worker-ps-api/lesson3","pages":null},{"title":"Lesson 4: Integrate worker in AEMaaCS","path":"resources/asset-compute-worker-ps-api/lesson4","pages":null},{"title":"Well done","path":"resources/asset-compute-worker-ps-api/welldone","pages":null}]},{"title":"Events Using Runtime Actions as Webhook","path":"resources/events-runtime/index.md","pages":[{"title":"Requirements","path":"resources/events-runtime/requirements","pages":null},{"title":"Lesson 1: Step by Step Guide","path":"resources/events-runtime/lesson1","pages":null},{"title":"Lesson 2: Verify the result","path":"resources/events-runtime/lesson2","pages":null},{"title":"Well done","path":"resources/events-runtime/welldone","pages":null}]},{"title":"Consume Events Using Journaling API","path":"resources/journaling-events/index.md","pages":[{"title":"Requirements","path":"resources/journaling-events/requirements","pages":null},{"title":"Lesson 1: Create an Event Provider using App Builder","path":"resources/journaling-events/lesson1","pages":null},{"title":"Lesson 2: Create the Event Consumer using Journaling API","path":"resources/journaling-events/lesson2","pages":null},{"title":"Lesson 3: End to end test","path":"resources/journaling-events/lesson3","pages":null},{"title":"Well done","path":"resources/journaling-events/welldone","pages":null}]},{"title":"Building an App Builder Todo App","path":"resources/todo-app/index.md","pages":[{"title":"Requirements","path":"resources/todo-app/requirements","pages":null},{"title":"Lesson 1: Create a New App Builder App with the React Spectrum template","path":"resources/todo-app/lesson1","pages":null},{"title":"Lesson 2: Setup Runtime actions","path":"resources/todo-app/lesson2","pages":null},{"title":"Lesson 3: Setup the CreateTodoList component","path":"resources/todo-app/lesson3","pages":null},{"title":"Lesson 4: Setup the Todo component","path":"resources/todo-app/lesson4","pages":null},{"title":"Lesson 5: Setup the TodoList component","path":"resources/todo-app/lesson5","pages":null},{"title":"Lesson 6: Bringing the pieces together to build the App","path":"resources/todo-app/lesson6","pages":null},{"title":"Well done","path":"resources/todo-app/welldone","pages":null}]},{"title":"Event-Driven App Builder Apps","path":"resources/event-driven/index.md","pages":[{"title":"Requirements","path":"resources/event-driven/requirements","pages":null},{"title":"Lesson 1: Create a New App Builder App from Template","path":"resources/event-driven/lesson1","pages":null},{"title":"Lesson 2: Register the App as Event Provider","path":"resources/event-driven/lesson2","pages":null},{"title":"Lesson 3: Fire an Event","path":"resources/event-driven/lesson3","pages":null},{"title":"Lesson 4: Consume Events","path":"resources/event-driven/lesson4","pages":null},{"title":"Well Done","path":"resources/event-driven/welldone","pages":null}]},{"title":"Scheduling Cron Jobs","path":"resources/cron-jobs/index.md","pages":[{"title":"Requirements","path":"resources/cron-jobs/requirements","pages":null},{"title":"Lesson 1: Bootstrap a Headless App","path":"resources/cron-jobs/lesson1","pages":null},{"title":"Lesson 2: Set up Alarm Feed with Trigger and Rule","path":"resources/cron-jobs/lesson2","pages":null},{"title":"Lesson 3: Types of Alarm Feed","path":"resources/cron-jobs/lesson3","pages":null},{"title":"Well done","path":"resources/cron-jobs/welldone","pages":null}]},{"title":"Custom Asset Compute Worker","path":"resources/custom-asset-compute-worker/index.md","pages":[{"title":"Requirements","path":"resources/custom-asset-compute-worker/requirements","pages":null},{"title":"How AEM as Cloud assets works","path":"resources/custom-asset-compute-worker/aem-cloud-assets","pages":null},{"title":"Architecture of our worker","path":"resources/custom-asset-compute-worker/our-worker","pages":null},{"title":"Configure services","path":"resources/custom-asset-compute-worker/lesson1","pages":null},{"title":"Local environment setup","path":"resources/custom-asset-compute-worker/lesson2","pages":null},{"title":"Implement the worker","path":"resources/custom-asset-compute-worker/lesson3","pages":null},{"title":"Test the worker","path":"resources/custom-asset-compute-worker/lesson4","pages":null},{"title":"Setup AEM to use the worker","path":"resources/custom-asset-compute-worker/lesson5","pages":null},{"title":"Well Done","path":"resources/custom-asset-compute-worker/welldone","pages":null}]},{"title":"CI/CD in App Builder Apps","path":"resources/ci-cd/index.md","pages":[{"title":"Requirements","path":"resources/ci-cd/requirements","pages":null},{"title":"Lesson 1: Setup CI/CD","path":"resources/ci-cd/lesson1","pages":null},{"title":"Lesson 2: Monitoring CI/CD","path":"resources/ci-cd/lesson2","pages":null},{"title":"Lesson 3: Custom CI/CD workflow","path":"resources/ci-cd/lesson3","pages":null},{"title":"Well done","path":"resources/ci-cd/welldone","pages":null}]},{"title":"Debugging App Builder Apps With Wskdebug","path":"resources/debugging/index.md","pages":[{"title":"Requirements","path":"resources/debugging/requirements","pages":null},{"title":"Lesson 1: Getting familiar with Debugger","path":"resources/debugging/lesson1","pages":null},{"title":"Lesson 2: Debugging Application Code","path":"resources/debugging/lesson2","pages":null},{"title":"Lesson 3: Managing Application Logs","path":"resources/debugging/lesson3","pages":null},{"title":"Well Done","path":"resources/debugging/welldone","pages":null}]},{"title":"Customer Profiles Dashboard","path":"resources/customer-dashboard/index.md","pages":[{"title":"Requirements","path":"resources/customer-dashboard/requirements","pages":null},{"title":"Lesson 1: Create a New App Builder App from Campaign Standard Template","path":"resources/customer-dashboard/lesson1","pages":null},{"title":"Lesson 2: Explore the App Builder App","path":"resources/customer-dashboard/lesson2","pages":null},{"title":"Lesson 3: Run the App Builder App Locally","path":"resources/customer-dashboard/lesson3","pages":null},{"title":"Lesson 4: List All Customer Profiles on the UI","path":"resources/customer-dashboard/lesson4","pages":null},{"title":"Lesson 5: Add Personalized Promotion Emails Triggering","path":"resources/customer-dashboard/lesson5","pages":null},{"title":"Well Done","path":"resources/customer-dashboard/welldone","pages":null}]},{"title":"App Builder Headless App","path":"resources/barcode-reader/index.md","pages":[{"title":"Requirements","path":"resources/barcode-reader/requirements","pages":null},{"title":"Lesson 1: Bootstrap a Headless App","path":"resources/barcode-reader/bootstrap","pages":null},{"title":"Lesson 2: Writing a Serverless Action","path":"resources/barcode-reader/barcode","pages":null},{"title":"Lesson 3: Unit and E2E Tests","path":"resources/barcode-reader/test","pages":null},{"title":"Well done","path":"resources/barcode-reader/welldone","pages":null}]},{"title":"Spectrum Introduction","path":"resources/spectrum-intro/index.md","pages":[{"title":"Lesson 1: What is Spectrum ?","path":"resources/spectrum-intro/lesson1","pages":null},{"title":"Lesson 2: Using Spectrum CSS","path":"resources/spectrum-intro/lesson2","pages":null},{"title":"Lesson 3: Using React Spectrum","path":"resources/spectrum-intro/lesson3","pages":null},{"title":"Lesson 4: Using React Spectrum in App Builder","path":"resources/spectrum-intro/lesson4","pages":null},{"title":"Well done","path":"resources/spectrum-intro/welldone","pages":null}]}]},{"title":"Sample Apps","path":"resources/sample_apps/index.md","header":null,"pages":[{"title":"Code Snippets","path":"resources/sample_apps/code_snippets/index.md","pages":[{"title":"Caching HTTP responses","path":"resources/sample_apps/code_snippets/index.md","pages":null},{"title":"App Builder Files SDK","path":"resources/sample_apps/code_snippets/files.md","pages":null},{"title":"App Builder State SDK","path":"resources/sample_apps/code_snippets/state.md","pages":null},{"title":"I/O Events handler","path":"resources/sample_apps/code_snippets/events.md","pages":null},{"title":"Real-time data from Adobe Analytics API 1.4","path":"resources/sample_apps/code_snippets/analytics.md","pages":null}]}]},{"title":"Videos","path":"resources/videos/index.md","header":null,"pages":[{"title":"Introducing App Builder","path":"resources/videos/overview/introduction.md","pages":null},{"title":"Getting Started","path":"resources/videos/overview/getting-started.md","pages":null},{"title":"Architecture","path":"resources/videos/overview/architecture.md","pages":null},{"title":"A Full Security Overview","path":"resources/videos/overview/security.md","pages":null},{"title":"User Journey","path":"resources/videos/overview/e2e-user-journey.md","pages":null},{"title":"Projects and Workspaces","path":"resources/videos/exploring/projects-and-workspaces.md","pages":null},{"title":"React Spectrum","path":"resources/videos/exploring/react-spectrum.md","pages":null},{"title":"Custom Events","path":"resources/videos/exploring/custom-events.md","pages":null},{"title":"CI/CD","path":"resources/videos/exploring/ci-cd.md","pages":null},{"title":"Debugging","path":"resources/videos/exploring/debugging.md","pages":null},{"title":"Learning Resources","path":"resources/videos/exploring/learning-resources.md","pages":null},{"title":"Dashboard Case Study","path":"resources/videos/exploring/dashboard-case-study.md","pages":null},{"title":"ODE Case Study","path":"resources/videos/exploring/ode-case-study.md","pages":null},{"title":"Deep Dive Use Cases","path":"resources/videos/exploring/deep-dive-use-cases.md","pages":null},{"title":"Live Wired Sneak","path":"resources/videos/exploring/live-wired-sneak.md","pages":null},{"title":"Softcrylic Partner Showcase","path":"resources/videos/exploring/softcrylic-showcase.md","pages":null},{"title":"App Builder Deep Dive","path":"resources/videos/developers-live/deep-dive.md","pages":null},{"title":"Asset Compute Service Extensibility","path":"resources/videos/developers-live/asset-compute-service-extensibility.md","pages":null},{"title":"Extend Adobe Experience Cloud","path":"resources/videos/developers-live/extend-experience-cloud.md","pages":null}]},{"title":"Blog Articles","path":"resources/blog_articles.md","header":null,"pages":null}]}}}} \ No newline at end of file +{"data":{"allGithub":{"nodes":[{"repository":"AdobeDocs/app-builder","default_branch":"main","root":""}]},"allGithubContributors":{"nodes":[{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/common_troubleshooting.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2023-05-19T11:15:51-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-09-23T23:51:21-05:00","login":"AmyJZhao","name":"Amy Zhao"},{"date":"2022-09-11T13:28:07-07:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2022-08-24T13:03:15-05:00","login":"kokoc","name":"Andrii Konosov"},{"date":"2022-08-05T08:13:53+02:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2022-01-24T06:07:38+05:30","login":"theManikJindal","name":"Manik Jindal"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T15:40:23-07:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/first_app.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-01-30T20:41:33-08:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2023-05-04T08:40:41-05:00","login":"danmooney2","name":"Dan Mooney"},{"date":"2022-11-09T13:20:40-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-09-06T16:26:20-04:00","login":"naomirobichaud","name":"Naomi Robichaud"},{"date":"2023-05-22T14:07:08-06:00","login":"kgera","name":"Kanika Gera"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/publish_app.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/app-hooks.md"},{"contributors":[{"date":"2024-08-21T14:21:13+02:00","login":"moritzraho","name":"Moritz Raho"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_state.md"},{"contributors":[{"date":"2024-04-19T08:54:14+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-10-17T15:30:44-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2022-06-30T10:01:28-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/introduction_to_react_spectrum.md"},{"contributors":[{"date":"2022-09-27T18:13:23-07:00","login":"purplecabbage","name":"Jesse MacFadyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/telemetry.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/tips_tricks.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-02T17:17:28+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/using_sdks.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/community.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-12-16T10:00:26-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/faq.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-02T21:23:22-07:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/firefly_and_runtime.md"},{"contributors":[{"date":"2024-08-22T06:37:14-07:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-04T15:45:35+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/getting_access.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/how_it_works.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/overview/index.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/blog_articles.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/azure_log_analytics.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-08-25T16:23:08-05:00","login":"keharper","name":"Kevin Harper"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-08-25T16:23:08-05:00","login":"keharper","name":"Kevin Harper"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/new_relic.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_cloud.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-07-13T12:27:27-05:00","login":"buskamuza","name":"Olga Kopylova"},{"date":"2022-01-27T21:13:37+05:30","login":"theManikJindal","name":"Manik Jindal"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_enterprise.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-12-07T17:25:22-08:00","login":"purplecabbage","name":"Jesse MacFadyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-09T13:05:26-05:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/webpack-configuration.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-09-07T09:26:47+02:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/contribution_guides/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/ci_cd_for_firefly_apps.md"},{"contributors":[{"date":"2024-07-23T10:36:17+08:00","login":"shazron","name":"Shazron Abdullah"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/credential-rotation.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2023-07-12T15:47:07+02:00","login":"pablomoreno61","name":"Pablo Moreno"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-06-28T23:25:46-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/index.md"},{"contributors":[{"date":"2024-07-23T10:36:17+08:00","login":"shazron","name":"Shazron Abdullah"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/setting-response-headers.md"},{"contributors":[{"date":"2024-08-15T11:36:22+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-06-25T16:24:37-07:00","login":"purplecabbage","name":"Jesse MacFadyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/development/index.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/index.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/private.md"},{"contributors":[{"date":"2024-06-28T15:52:54-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/public.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-10-05T11:18:53-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T11:18:48+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/custom-events.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-10-05T13:12:30-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T11:18:48+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/webhooks.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-06-30T10:00:46-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T16:33:42+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-01-09T13:19:26-08:00","login":"gribbletog","name":"Ron Nagy"},{"date":"2022-12-12T10:26:09-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-01T19:27:10+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-12T18:33:14+02:00","login":"meryllblanchet","name":"Meryll Blanchet"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T15:40:23-07:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/extension_migration_guide.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-28T15:40:23-07:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-09T06:43:05-08:00","login":"sarahxxu","name":"Sarah Xu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/ui_extensibility.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-11-02T16:47:32-04:00","login":"MichaelGoberling","name":"Michael Goberling"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/migrations/standalone_to_dx_experience_cloud_spa.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-24T06:07:38+05:30","login":"theManikJindal","name":"Manik Jindal"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/reference_documentation/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-03-12T17:14:01-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-01-30T12:19:30-05:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-01T19:30:02+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-06-30T10:01:05-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-07-02T17:17:28+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/understanding_authentication.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-04-07T16:18:17-07:00","login":"jdelbick","name":"Jamie Delbick"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/barcode.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/bootstrap.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/test.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-04-07T18:19:03-05:00","login":"oshmyheliuk","name":"Oleksandr Shmyheliuk"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson5.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/our-worker.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T11:13:47+02:00","login":"duynguyen","name":"Duy Nguyen"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson5.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/welldone.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/index.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson1.md"},{"contributors":[{"date":"2024-06-25T13:01:45-07:00","login":"purplecabbage","name":"Jesse MacFadyen"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-05-26T12:32:34+02:00","login":"mokimo","name":"Okan Sahin"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson2.md"},{"contributors":[{"date":"2024-06-06T23:57:34+05:30","login":"salmanazeez786","name":"Salman Azeez"},{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-05-19T11:15:51-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-06-28T23:30:27-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-05-19T11:01:31-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2023-05-19T11:15:51-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/welldone.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/demo.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-02-09T14:09:11+05:30","login":"sgera","name":"Sahil Gera"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/index.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/welldone.md"},{"contributors":[{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"},{"date":"2021-09-30T01:54:25-07:00","login":"Yu1986","name":"Yu"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson1.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-09T08:01:44+05:30","login":"dani97","name":"Christopher Daniel"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson2.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson3.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson4.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson5.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson6.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-27T10:13:02+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/requirements.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/welldone.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/transclusions/_requirements.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T16:33:42+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.runtime.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithhref.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithpath.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapi.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapiproperties.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.callback.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customfeedbackconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customsearchconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.externalfeedbackconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.solution.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapi.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapiproperties.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userapi.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userinfo.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2022-09-15T15:17:49-07:00","login":"timkim","name":"Tim Kim"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T16:41:59+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/index.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/page.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/topbar.md"},{"contributors":[{"date":"2024-05-22T01:41:11+08:00","login":"shazron","name":"Shazron Abdullah"},{"date":"2021-08-11T04:12:38-05:00","login":"naydav","name":"Valerii Naida"},{"date":"2021-06-21T12:41:22+02:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/user.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/analytics.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/events.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/files.md"},{"contributors":[{"date":"2024-04-23T09:33:29-04:00","login":"MichaelGoberling","name":"Michael Goberling"},{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/index.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/state.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/asset-compute-service-extensibility.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/deep-dive.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/extend-experience-cloud.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ci-cd.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/custom-events.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/dashboard-case-study.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/debugging.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/deep-dive-use-cases.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/learning-resources.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/live-wired-sneak.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ode-case-study.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/projects-and-workspaces.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/react-spectrum.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/softcrylic-showcase.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/architecture.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/e2e-user-journey.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/getting-started.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/introduction.md"},{"contributors":[{"date":"2022-01-11T07:03:02+01:00","login":"icaraps","name":"Stephan Ringel"}],"path":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/security.md"}]},"allMdx":{"nodes":[{"tableOfContents":{"items":[{"url":"#common-troubleshooting","title":"Common Troubleshooting","items":[{"url":"#before-you-proceed","title":"Before you proceed"},{"url":"#general-debugging","title":"General debugging"},{"url":"#action-logs","title":"Action logs"},{"url":"#action-authentication-errors","title":"Action authentication errors"},{"url":"#debugging-errors-with-state-and-files-sdk","title":"Debugging errors with State and Files SDK"},{"url":"#nodejs-with-mac-m1-chip","title":"NodeJS with Mac M1 chip"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/common_troubleshooting.md"},{"tableOfContents":{"items":[{"url":"#creating-your-first-app-builder-application","title":"Creating your First App Builder Application","items":[{"url":"#1-setting-up-local-environment","title":"1. Setting up Local Environment"},{"url":"#2-creating-a-new-project-on-developer-console","title":"2. Creating a new Project on Developer Console"},{"url":"#3-signing-in-from-cli","title":"3. Signing in from CLI"},{"url":"#4-bootstrapping-new-app-using-the-cli","title":"4. Bootstrapping new App using the CLI","items":[{"url":"#41-developer-is-logged-in-as-enterprise-organization-user","title":"4.1 Developer is Logged in as Enterprise Organization user","items":[{"url":"#411-initializing-your-project-with-extension-points","title":"4.1.1 Initializing your project with Extension Points"},{"url":"#412-initializing-an-empty-project","title":"4.1.2 Initializing an empty project"}]},{"url":"#42-developer-is-not-logged-in-as-enterprise-organization-user","title":"4.2 Developer is not Logged in as Enterprise Organization user","items":[{"url":"#developer-with-a-console-config-file","title":"Developer with a Console config file"},{"url":"#developer-without-any-credentials","title":"Developer without any credentials"}]}]},{"url":"#5-anatomy-of-an-app-builder-application","title":"5. Anatomy of an App Builder Application"},{"url":"#6developing-the-application","title":"6.Developing the Application","items":[{"url":"#61-running-the-application","title":"6.1 Running the Application","items":[{"url":"#first-time-users-accepting-the-certificate","title":"(First time users) Accepting the Certificate"},{"url":"#proceeding-to-the-application-on-localhost","title":"Proceeding to the Application on localhost"}]},{"url":"#62-trying-the-sample-application","title":"6.2 Trying the Sample Application"},{"url":"#63-debugging-the-application","title":"6.3 Debugging the Application"},{"url":"#64-retrieving-logs-for-the-application","title":"6.4 Retrieving Logs for the Application","items":[{"url":"#dev","title":"Dev"},{"url":"#run-or-deploy","title":"Run or Deploy"}]},{"url":"#65-testing-the-application","title":"6.5 Testing the Application"}]},{"url":"#7-deploying-the-application","title":"7 Deploying the Application"},{"url":"#common-issues","title":"Common Issues"},{"url":"#next-steps","title":"Next steps"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/first_app.md"},{"tableOfContents":{"items":[{"url":"#start-your-app-builder-journey","title":"Start your App Builder Journey","items":[{"url":"#access-and-credentials","title":"Access and Credentials"},{"url":"#local-environment-set-up","title":"Local Environment Set Up","items":[{"url":"#required-tools","title":"Required Tools","items":[{"url":"#supported-local-environment","title":"Supported Local Environment"},{"url":"#supported-terminals-for-the-cli","title":"Supported Terminals for the CLI"}]},{"url":"#optional-tools","title":"Optional Tools"}]},{"url":"#next-step","title":"Next Step"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/index.md"},{"tableOfContents":{"items":[{"url":"#publishing-your-first-app-builder-application","title":"Publishing Your First App Builder Application","items":[{"url":"#1-project-approvals-console-part","title":"1: Project approvals (Console Part)","items":[{"url":"#app-builder-applications-approval-process","title":"App Builder applications approval process"},{"url":"#published-app","title":"Published app"}]},{"url":"#2-administrator-review-of-your-app-myexchange-part","title":"2: Administrator review of your app (MyExchange Part)"},{"url":"#3-check-your-published-app-at-experience-cloud","title":"3: Check your published app at Experience Cloud"}]},{"url":"#publishing-your-headless-app-builder-app","title":"Publishing your headless App Builder App","items":[{"url":"#next-steps","title":"Next steps"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/publish_app.md"},{"tableOfContents":{"items":[{"url":"#app-builder-application-tooling-lifecycle-event-hooks","title":"App Builder application tooling lifecycle event hooks","items":[{"url":"#command-support","title":"Command Support"},{"url":"#use-cases","title":"Use cases"},{"url":"#using-javascript-files","title":"Using JavaScript files"},{"url":"#legacy-app-no-extensions","title":"Legacy App (no extensions)"},{"url":"#app-with-extensions","title":"App with Extensions"},{"url":"#hooks-flow","title":"Hooks flow"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/app-hooks.md"},{"tableOfContents":{"items":[{"url":"#dealing-with-application-state","title":"Dealing with Application State","items":[{"url":"#default-parameters","title":"Default parameters","items":[{"url":"#considerations-about-security","title":"Considerations about security"}]},{"url":"#persistence-at-runtime","title":"Persistence at runtime"},{"url":"#state","title":"State","items":[{"url":"#getting-started","title":"Getting started"},{"url":"#limits--validation","title":"Limits & validation"},{"url":"#quotas","title":"Quotas"},{"url":"#match-option","title":"match option"},{"url":"#list-guarantees","title":"List guarantees"},{"url":"#troubleshooting","title":"Troubleshooting"}]},{"url":"#files","title":"Files"},{"url":"#feature-matrix","title":"Feature Matrix"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_state.md"},{"tableOfContents":{"items":[{"url":"#introduction-to-react-spectrum","title":"Introduction to React Spectrum"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/introduction_to_react_spectrum.md"},{"tableOfContents":{"items":[{"url":"#telemetry","title":"Telemetry","items":[{"url":"#why-collect-telemetry","title":"Why collect telemetry?"},{"url":"#what-data-is-collected","title":"What data is collected?"},{"url":"#what-about-secrets-and-sensitive-data","title":"What about secrets and sensitive data?"},{"url":"#will-this-data-be-shared-with-whom","title":"Will this data be shared? With whom?"},{"url":"#how-do-i-opt-out","title":"How do I opt out?"},{"url":"#show-me-the-code","title":"Show me the code"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/telemetry.md"},{"tableOfContents":{"items":[{"url":"#architecture-overview","title":"Architecture Overview","items":[{"url":"#types-of-app-builder-apps","title":"Types of App Builder apps","items":[{"url":"#headless-application","title":"Headless Application"},{"url":"#headful-application","title":"Headful Application"}]},{"url":"#jamstack-anatomy-of-an-app-builder-app","title":"JAMStack: Anatomy of an App Builder App"},{"url":"#sdk-components","title":"SDK Components","items":[{"url":"#cli","title":"CLI"},{"url":"#app-builder-generators","title":"App Builder Generators"},{"url":"#sdk-libraries","title":"SDK Libraries","items":[{"url":"#main-sdk-library","title":"Main SDK library","items":[{"url":"#integration-with-adobe-apis","title":"Integration with Adobe APIs"},{"url":"#integration-with-adobes-identity-management-system","title":"Integration with Adobe's Identity Management System"},{"url":"#integration-with-additional-out-of-the-box-services","title":"Integration with additional out-of-the-box services"},{"url":"#technical-framework-for-developers","title":"Technical framework for developers"}]},{"url":"#core-sdk-library","title":"Core SDK library","items":[{"url":"#configuration","title":"Configuration"},{"url":"#logging","title":"Logging"},{"url":"#errors","title":"Errors"},{"url":"#networking","title":"Networking"}]}]},{"url":"#token-vending-machine","title":"Token-Vending Machine"},{"url":"#cicd-support","title":"CI/CD Support"},{"url":"#webpack","title":"Webpack"},{"url":"#migration-guides","title":"Migration Guides"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/index.md"},{"tableOfContents":{"items":[{"url":"#tips-and-tricks-for-optimizing-app-builder-apps","title":"Tips and Tricks for optimizing App Builder Apps","items":[{"url":"#caching-http-responses","title":"Caching HTTP Responses"},{"url":"#returning-large-response-payload","title":"Returning Large Response Payload"},{"url":"#implementing-a-move-operation-for-the-app-builder-files-sdk","title":"Implementing a move operation for the App Builder Files SDK"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/tips_tricks.md"},{"tableOfContents":{"items":[{"url":"#using-client-sdks-for-accessing-adobe-apis","title":"Using Client SDKs for Accessing Adobe APIs","items":[{"url":"#client-sdk-initialization","title":"Client SDK Initialization"},{"url":"#adobe-analytics-api-14","title":"Adobe Analytics API 1.4"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/using_sdks.md"},{"tableOfContents":{"items":[{"url":"#developer-community","title":"Developer community","items":[{"url":"#get-involved","title":"Get involved"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/community.md"},{"tableOfContents":{"items":[{"url":"#frequently-asked-questions","title":"Frequently Asked Questions","items":[{"url":"#what-is-app-builder","title":"What is App Builder?"},{"url":"#when-is-app-builder-going-to-be-publicly-available","title":"When is App Builder going to be publicly available?"},{"url":"#what-is-the-support-for-app-builder","title":"What is the support for App Builder?"},{"url":"#what-is-the-pricing--licensing","title":"What is the pricing / licensing?"},{"url":"#who-is-this-offering-for","title":"Who is this offering for?"},{"url":"#how-does-someone-get-access-to-app-builder","title":"How does someone get access to App Builder?"},{"url":"#what-is-the-relationship-with-adobe-experience-platform-and-adobe-experience-cloud","title":"What is the relationship with Adobe Experience Platform and Adobe Experience Cloud?"},{"url":"#what-is-in-the-box","title":"What is “in the box”?"},{"url":"#can-i-extend-app-builder","title":"Can I extend “App Builder”?"},{"url":"#are-the-tools-open-sourced","title":"Are the tools open sourced?"},{"url":"#how-is-this-different-than-adobe-io-runtime","title":"How is this different than Adobe I/O Runtime?"},{"url":"#what-resources-are-available-for-developers-wishing-to-try-it","title":"What resources are available for developers wishing to try it?"},{"url":"#can-i-use-python-or-any-other-language","title":"Can I use Python (or any other language)?"},{"url":"#why-did-you-select-javascript-and-nodejs-as-the-only-supported-language","title":"Why did you select JavaScript and Node.js as the only supported language?"},{"url":"#how-does-app-builder-simplify-the-distribution-of-custom-applications-for-my-company","title":"How does App Builder simplify the distribution of custom applications for my company?"},{"url":"#how-can-i-use-app-builder-to-extend-document-cloud-or-creative-cloud-products","title":"How can I use App Builder to extend Document Cloud or Creative Cloud products?"},{"url":"#how-does-app-builder-compare-to-other-application-frameworks","title":"How does App Builder compare to other application frameworks?"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/faq.md"},{"tableOfContents":{"items":[{"url":"#app-builder-and-adobe-io-runtime","title":"App Builder and Adobe I/O Runtime"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/firefly_and_runtime.md"},{"tableOfContents":{"items":[{"url":"#get-access-to-app-builder","title":"Get access to App Builder"},{"url":"#app-builder-access-faq","title":"App Builder Access FAQ"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/getting_access.md"},{"tableOfContents":{"items":[{"url":"#how-it-works","title":"How it Works","items":[{"url":"#build","title":"Build"},{"url":"#deploy-and-testing","title":"Deploy and Testing"},{"url":"#publish","title":"Publish"},{"url":"#why-would-you-use-app-builder","title":"Why Would You Use App Builder?"},{"url":"#who-is-this-framework-for","title":"Who is This Framework For?"},{"url":"#example-use-cases","title":"Example Use Cases"},{"url":"#examples-from-real-world","title":"Examples from real-world"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/how_it_works.md"},{"tableOfContents":{"items":[{"url":"#app-builder-docs","title":"App Builder Docs","items":[{"url":"#what-is-app-builder","title":"What is App Builder"},{"url":"#where-to-go-next","title":"Where to Go Next"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/overview/index.md"},{"tableOfContents":{"items":[{"url":"#app-builder-blog-articles","title":"App Builder Blog Articles","items":[{"url":"#overview","title":"Overview","items":[{"url":"#io-runtime-and-the-future-of-serverless-at-adobe","title":"I/O Runtime and the Future of Serverless at Adobe"},{"url":"#following-the-end-to-end-user-journey","title":"Following the End-to-End User Journey"},{"url":"#a-breakdown-of-app-builders-architecture","title":"A Breakdown of App Builder’s Architecture"},{"url":"#a-full-security-overview","title":"A Full Security Overview"},{"url":"#introducing-react-spectrum","title":"Introducing React Spectrum"},{"url":"#the-future-of-app-builder-b2b-and-b2c-expansion","title":"The Future of App Builder: B2B and B2C Expansion"},{"url":"#why-your-enterprise-needs-app-builder","title":"Why Your Enterprise Needs App Builder"}]},{"url":"#how-tos","title":"How Tos","items":[{"url":"#projects-and-workspaces","title":"Projects and Workspaces"},{"url":"#debugging-applications","title":"Debugging Applications"}]},{"url":"#partner-use-cases-and-contributions","title":"Partner use cases and contributions","items":[{"url":"#ensemble-and-app-builder-unlocking-better-b2e-workflows-through-custom-apps","title":"Ensemble and App Builder: Unlocking Better B2E Workflows Through Custom Apps"},{"url":"#contributing-to-adobes-open-source-world-with-the-adobe-experience-platform-sdk-for-app-builder","title":"Contributing to Adobe’s Open Source World with the Adobe Experience Platform SDK for App Builder"},{"url":"#use-cases-for-cloud-native-apps-with-app-builder","title":"Use Cases for Cloud-Native Apps with App Builder"},{"url":"#adobe-io-powered-aemaacs-assets-export-implemented-in-real-time-or-batch-mode","title":"Adobe I/O-Powered AEMaaCS Assets Export Implemented in Real-Time or Batch Mode"},{"url":"#finding-your-feet-with-app-builder","title":"Finding Your Feet with App Builder"}]},{"url":"#real-word-examples","title":"Real-word examples","items":[{"url":"#building-a-real-time-airline-application-using-adobe-experience-platform-adobe-io-runtime-and-app-builder","title":"Building a Real-Time Airline Application Using Adobe Experience Platform, Adobe I/O Runtime and App Builder"}]},{"url":"#miscellaneous","title":"Miscellaneous","items":[{"url":"#how-we-made-app-builders-videos-remotely-while-quarantined-at-home","title":"How We Made App Builder’s Videos Remotely While Quarantined at Home"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/blog_articles.md"},{"tableOfContents":{"items":[{"url":"#code-labs","title":"Code Labs","items":[{"url":"#tech-tutorials","title":"Tech tutorials","items":[{"url":"#spectrum-introduction","title":"Spectrum Introduction"},{"url":"#consume-events-using-journaling-api","title":"Consume Events Using Journaling API"},{"url":"#event-driven-app-builder-apps","title":"Event-Driven App Builder Apps"},{"url":"#events-using-runtime-actions-as-webhook","title":"Events Using Runtime Actions as Webhook"},{"url":"#cicd-in-app-builder-apps","title":"CI/CD in App Builder Apps"},{"url":"#debugging-app-builder-apps","title":"Debugging App Builder Apps"},{"url":"#scheduling-cron-jobs","title":"Scheduling Cron Jobs"}]},{"url":"#app-tutorials","title":"App tutorials","items":[{"url":"#app-builder-headless-app","title":"App Builder Headless App"},{"url":"#asset-compute-with-photoshop-apis","title":"Asset Compute with Photoshop APIs"},{"url":"#building-an-app-builder-todo-app","title":"Building an App Builder Todo App"},{"url":"#customer-profiles-dashboard","title":"Customer Profiles Dashboard"},{"url":"#custom-asset-compute-worker","title":"Custom Asset Compute Worker"},{"url":"#build-an-app-that-consumes-adobe-experience-manager-events","title":"Build an app that consumes Adobe Experience Manager Events"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/index.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-azure-log-analytics","title":"Forwarding logs to Azure Log Analytics","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#steps-to-configure-log-forwarding","title":"Steps to configure Log Forwarding"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/azure_log_analytics.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-new-relic","title":"Forwarding logs to New Relic","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#identify-the-api-key-and-base-uri","title":"Identify the API key and base URI"},{"url":"#set-up-log-forwarding-in-app-builder","title":"Set up Log Forwarding in App Builder"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/new_relic.md"},{"tableOfContents":{"items":[{"url":"#managing-application-logs","title":"Managing Application Logs","items":[{"url":"#logging-with-app-builder-sdk","title":"Logging with App Builder SDK"},{"url":"#accessing-logs-with-app-builder-cli","title":"Accessing logs with App Builder CLI","items":[{"url":"#app-builder-app-plugin","title":"App Builder app plugin"},{"url":"#runtime-plugin","title":"Runtime plugin"}]},{"url":"#forwarding-application-logs","title":"Forwarding Application logs","items":[{"url":"#when-to-use-log-forwarding","title":"When to use Log forwarding"},{"url":"#log-forwarding-commands","title":"Log Forwarding Commands","items":[{"url":"#setting-log-forwarding","title":"Setting Log Forwarding"},{"url":"#viewing-the-current-log-forwarding-configuration","title":"Viewing the current Log Forwarding configuration"},{"url":"#debugging-log-forwarding","title":"Debugging Log Forwarding"}]}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/index.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-splunk-enterprise","title":"Forwarding logs to Splunk Enterprise","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#steps-to-configure-log-forwarding","title":"Steps to configure Log Forwarding","items":[{"url":"#1-set-up-splunk-http-event-collector","title":"1. Set up Splunk HTTP Event Collector"},{"url":"#2-getting-splunk-host-and-port","title":"2. Getting Splunk Host and Port"},{"url":"#3-set-up-log-forwarding-in-app-builder","title":"3. Set up Log Forwarding in App Builder"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_enterprise.md"},{"tableOfContents":{"items":[{"url":"#forwarding-logs-to-splunk-cloud","title":"Forwarding logs to Splunk Cloud","items":[{"url":"#prerequisites","title":"Prerequisites"},{"url":"#steps-to-configure-log-forwarding","title":"Steps to configure Log Forwarding","items":[{"url":"#1-set-up-splunk-http-event-collector","title":"1. Set up Splunk HTTP Event Collector"},{"url":"#2-getting-splunk-host-and-port","title":"2. Getting Splunk Host and Port"},{"url":"#3-set-up-log-forwarding-in-app-builder","title":"3. Set up Log Forwarding in App Builder"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_cloud.md"},{"tableOfContents":{"items":[{"url":"#webpack-configuration","title":"Webpack Configuration","items":[{"url":"#overview","title":"Overview"},{"url":"#configuration-file","title":"Configuration File","items":[{"url":"#es-module-syntax","title":"ES Module Syntax"}]},{"url":"#configuration-types","title":"Configuration Types","items":[{"url":"#object","title":"Object"},{"url":"#function-that-returns-an-object","title":"Function that returns an object"},{"url":"#function-that-returns-an-array-of-objects","title":"Function that returns an array of objects"},{"url":"#async-function-that-returns-an-object","title":"Async function that returns an object"},{"url":"#async-function-that-returns-an-array-of-objects","title":"Async function that returns an array of objects"},{"url":"#array-of-objects","title":"Array of objects"},{"url":"#array-of-functions-that-return-objects","title":"Array of functions that return objects"},{"url":"#array-of-async-functions-that-return-objects","title":"Array of async functions that return objects"}]},{"url":"#configuration","title":"Configuration","items":[{"url":"#overview-1","title":"Overview"},{"url":"#base-options","title":"Base Options"},{"url":"#defaults","title":"Defaults"},{"url":"#immutable-options","title":"Immutable Options"}]},{"url":"#environment-variables","title":"Environment Variables"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/webpack-configuration.md"},{"tableOfContents":{"items":[{"url":"#app-builder-configuration-files","title":"App Builder Configuration Files","items":[{"url":"#overview","title":"Overview"},{"url":"#appconfigyaml","title":"app.config.yaml","items":[{"url":"#tldr-give-me-a-full-example","title":"Tl;dr: give me a full example:"},{"url":"#standalone-application-and-extensions","title":"Standalone application and extensions"},{"url":"#common-configuration","title":"Common configuration","items":[{"url":"#runtime-manifest","title":"Runtime Manifest","items":[{"url":"#annotations","title":"Annotations"},{"url":"#api-gateway-configuration","title":"API Gateway Configuration"}]},{"url":"#hooks-to-customize-the-tooling","title":"Hooks to customize the tooling"}]},{"url":"#extension-specific-configuration","title":"Extension specific configuration","items":[{"url":"#extension-types","title":"Extension types"},{"url":"#dxexcshell1-definition","title":"dx/excshell/1 definition"},{"url":"#dxasset-computeworker1-definition","title":"dx/asset-compute/worker/1 definition"}]},{"url":"#the-include-directive","title":"The $include directive"},{"url":"#public-distribution-configuration","title":"Public distribution configuration"}]},{"url":"#env","title":".env","items":[{"url":"#using-environment-variables-in-frontend","title":"Using environment variables in frontend"},{"url":"#using-environment-variables-in-runtime-actions","title":"Using environment variables in Runtime actions","items":[{"url":"#appconfigyaml-1","title":"app.config.yaml"},{"url":"#action-code","title":"Action code"}]}]},{"url":"#aio","title":".aio"},{"url":"#legacy-configuration-system","title":"Legacy configuration system"},{"url":"#migrating-between-standalone-application-and-dx-experience-cloud-spa-v1","title":"Migrating between Standalone Application and DX Experience Cloud SPA v1"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/index.md"},{"tableOfContents":{"items":[{"url":"#contributing","title":"Contributing","items":[{"url":"#code-of-conduct","title":"Code Of Conduct"},{"url":"#contributor-license-agreement","title":"Contributor License Agreement"},{"url":"#code-reviews","title":"Code Reviews"},{"url":"#cli-and-plugins-best-practises","title":"CLI and plugins best practises"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/contribution_guides/index.md"},{"tableOfContents":{"items":[{"url":"#credential-rotation","title":"Credential Rotation","items":[{"url":"#why-rotate-credentials","title":"Why rotate credentials?"},{"url":"#how-to-rotate-credentials","title":"How to rotate credentials"},{"url":"#using-a-parameters-file--json-","title":"Using a parameters file ( JSON )"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/credential-rotation.md"},{"tableOfContents":{"items":[{"url":"#cicd-for-app-builder-applications","title":"CI/CD for App Builder Applications","items":[{"url":"#local-application-development","title":"Local Application Development"},{"url":"#github-actions-support","title":"GitHub Actions Support","items":[{"url":"#github-workflows","title":"Github Workflows"},{"url":"#github-actions-for-aio-cli","title":"GitHub Actions for AIO CLI"},{"url":"#github-secrets","title":"GitHub Secrets"}]},{"url":"#bring-your-own-cicd-pipeline","title":"Bring your own CI/CD pipeline"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/ci_cd_for_firefly_apps.md"},{"tableOfContents":{"items":[{"url":"#deployment-overview","title":"Deployment Overview","items":[{"url":"#setup-assumptions","title":"Setup Assumptions"},{"url":"#local-deployment","title":"Local Deployment","items":[{"url":"#local-runtime-actions-and-ui","title":"Local Runtime actions and UI","items":[{"url":"#use-case","title":"Use-Case"},{"url":"#cli-command","title":"CLI Command"},{"url":"#architecture","title":"Architecture"}]},{"url":"#remote-runtime-actions-and-local-ui","title":"Remote Runtime actions and local UI","items":[{"url":"#technical-prerequisites","title":"Technical Prerequisites"},{"url":"#use-case-1","title":"Use-Case"},{"url":"#cli-command-1","title":"CLI Command"},{"url":"#architecture-1","title":"Architecture"}]}]},{"url":"#full-deployment","title":"Full Deployment","items":[{"items":[{"url":"#technical-prerequisites-1","title":"Technical Prerequisites"},{"url":"#use-case-2","title":"Use-Case"},{"url":"#cli-command-2","title":"CLI Command"},{"url":"#architecture-2","title":"Architecture"}]}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/index.md"},{"tableOfContents":{"items":[{"url":"#setting-response-headers","title":"Setting Response Headers","items":[{"url":"#rules","title":"Rules"},{"url":"#example-usage","title":"Example Usage"},{"url":"#allowed-headers","title":"Allowed Headers"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/setting-response-headers.md"},{"tableOfContents":{"items":[{"url":"#distribution-overview","title":"Distribution Overview","items":[{"url":"#private","title":"Private"},{"url":"#public","title":"Public"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/index.md"},{"tableOfContents":{"items":[{"url":"#development","title":"Development","items":[{"url":"#localhost-dev-server","title":"Localhost Dev Server"},{"url":"#aio-app-dev-vs-aio-app-run","title":"aio app dev vs. aio app run"},{"url":"#state-lib-and-files-lib-usage","title":"State-lib and Files-lib usage"},{"url":"#debugging","title":"Debugging","items":[{"url":"#debugging-with-vs-code","title":"Debugging with VS Code"}]},{"url":"#more-information","title":"More Information"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/development/index.md"},{"tableOfContents":{"items":[{"url":"#private-distribution","title":"Private Distribution","items":[{"url":"#overview","title":"Overview"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/private.md"},{"tableOfContents":{"items":[{"url":"#custom-io-events-overview","title":"Custom I/O Events Overview"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/custom-events.md"},{"tableOfContents":{"items":[{"url":"#introduction-to-adobe-io-events-webhooks","title":"Introduction to Adobe I/O Events Webhooks"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/webhooks.md"},{"tableOfContents":{"items":[{"url":"#public-distribution","title":"Public Distribution","items":[{"url":"#overview","title":"Overview"},{"url":"#customer-configuration","title":"Customer configuration","items":[{"url":"#defining-customer-configuration-options","title":"Defining customer configuration options"},{"url":"#usage","title":"Usage","items":[{"url":"#runtime-action","title":"Runtime action"},{"url":"#web-application","title":"Web application"}]},{"url":"#customer-configuration-types","title":"Customer configuration types","items":[{"url":"#text-field","title":"Text field"},{"url":"#checkbox","title":"Checkbox"},{"url":"#dropdown","title":"Dropdown"},{"url":"#secret","title":"Secret"},{"url":"#multiple-configuration-options","title":"Multiple configuration options"}]}]},{"url":"#required-products","title":"Required products","items":[{"url":"#defining-required-products","title":"Defining required products","items":[{"url":"#valid-products","title":"Valid products"}]}]},{"url":"#packaging-for-developer-distribution","title":"Packaging for developer distribution","items":[{"url":"#validation","title":"Validation"},{"url":"#hooks","title":"Hooks"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/public.md"},{"tableOfContents":{"items":[{"url":"#integration-guide-with-adobe-experience-cloud","title":"Integration Guide with Adobe Experience Cloud","items":[{"url":"#getting-started","title":"Getting Started"},{"url":"#features","title":"Features","items":[{"url":"#apis","title":"APIs","items":[{"url":"#index","title":"Index"},{"url":"#page","title":"Page"},{"url":"#topbar","title":"TopBar"},{"url":"#user","title":"User"}]},{"url":"#events","title":"Events","items":[{"url":"#ready","title":"Ready"},{"url":"#configuration","title":"Configuration"},{"url":"#history","title":"History"}]}]},{"url":"#licensing","title":"Licensing"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/index.md"},{"tableOfContents":{"items":[{"url":"#extension-migration-guide","title":"Extension Migration Guide","items":[{"url":"#understanding-configuration-changes","title":"Understanding Configuration Changes","items":[{"url":"#old-file-structure","title":"Old File Structure"},{"url":"#new-file-structure","title":"New File Structure"}]},{"url":"#step-by-step-migration-instruction","title":"Step-by-step Migration Instruction","items":[{"url":"#0-understanding-the-difference","title":"0. Understanding the Difference"},{"url":"#1-update-tooling","title":"1. Update Tooling"},{"url":"#2-update-configuration","title":"2. Update Configuration","items":[{"url":"#21-application-not-extending-any-extension-points","title":"2.1 Application not extending any Extension Points","items":[{"url":"#instructions","title":"Instructions:"},{"url":"#sample-appconfigyaml-file-after-the-refactoring","title":"Sample app.config.yaml File after the refactoring:"}]},{"url":"#22-application-extending-one-extension-point","title":"2.2 Application Extending one Extension Point","items":[{"url":"#instructions-1","title":"Instructions:"},{"url":"#sample-appconfigyaml-file-after-the-refactoring-1","title":"Sample app.config.yaml File after the refactoring:"}]},{"url":"#23-application-extending-two-or-more-extension-points","title":"2.3 Application Extending two or more Extension Points","items":[{"url":"#instructions-2","title":"Instructions:"},{"url":"#sample-appconfigyaml-file-after-the-refactoring-2","title":"Sample app.config.yaml File after the refactoring:"}]}]},{"url":"#3-testing","title":"3. Testing"}]},{"url":"#adding-or-removing-endpoints-from-existing-projects","title":"Adding or removing Endpoints from Existing Projects"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/extension_migration_guide.md"},{"tableOfContents":{"items":[{"url":"#introduction-to-extensions","title":"Introduction to Extensions","items":[{"url":"#how-does-it-work","title":"How does it work?"},{"url":"#available-extension-points","title":"Available Extension Points","items":[{"url":"#experience-cloud-ui-extension-point","title":"Experience Cloud UI Extension Point","items":[{"url":"#extension-point-info","title":"Extension Point Info"}]},{"url":"#aem-asset-microservices-extension-point","title":"AEM Asset Microservices Extension Point","items":[{"url":"#extension-point-info-1","title":"Extension Point Info"}]}]},{"url":"#how-do-i-use-it-in-my-app-builder-project","title":"How do I use it in my App Builder Project?","items":[{"url":"#new-project","title":"New Project"},{"url":"#migrating-from-existing-project-or-editing-endpoints","title":"Migrating from Existing Project or Editing Endpoints"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/index.md"},{"tableOfContents":{"items":[{"url":"#ui-extensibility","title":"UI Extensibility"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/ui_extensibility.md"},{"tableOfContents":{"items":[{"url":"#reference-documentation","title":"Reference Documentation"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/reference_documentation/index.md"},{"tableOfContents":{"items":[{"url":"#migration-guide---standalone-application-to-dx-experience-cloud-spa-v1","title":"Migration Guide - Standalone Application to DX Experience Cloud SPA v1","items":[{"url":"#overview","title":"Overview"},{"url":"#who-is-this-migration-guide-for","title":"Who is This Migration Guide For?"},{"url":"#how-can-i-tell-if-my-project-is-a-standalone-application","title":"How can I tell if my project is a Standalone Application?","items":[{"url":"#standalone-application","title":"Standalone Application"},{"url":"#dx-experience-cloud-spa-v1","title":"DX Experience Cloud SPA v1"}]},{"url":"#understanding-the-difference","title":"Understanding the Difference"},{"url":"#migration-steps","title":"Migration Steps"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/migrations/standalone_to_dx_experience_cloud_spa.md"},{"tableOfContents":{"items":[{"url":"#understanding-authentication","title":"Understanding Authentication"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/understanding_authentication.md"},{"tableOfContents":{"items":[{"url":"#build-aem-asset-compute-worker-with-photoshop-api","title":"Build AEM Asset Compute Worker with Photoshop API"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-an-app-builder-app-from-the-asset-compute-template","title":"Lesson 1: Create an App Builder app from the Asset Compute template"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson1.md"},{"tableOfContents":{"items":[{"url":"#security-overview","title":"Security Overview","items":[{"url":"#context","title":"Context"},{"url":"#securing-the-access-to-app-builder-applications","title":"Securing the Access to App Builder Applications","items":[{"url":"#adobe-ims-support-for-app-builder-applications","title":"Adobe IMS Support for App Builder Applications"},{"url":"#securing-access-to-headless-app-builder-applications","title":"Securing Access to Headless App Builder Applications"},{"url":"#securing-access-to-app-builder-spas","title":"Securing Access to App Builder SPAs"},{"url":"#authentication-and-authorization-handling","title":"Authentication and Authorization Handling","items":[{"url":"#known-issue-final-and-web-annotations","title":"Known Issue: Final and Web Annotations"},{"url":"#known-issue-2-additional-scope-for-jwt-access-token-validation","title":"Known Issue 2: Additional scope for JWT access token validation"},{"url":"#known-issue-3-overwriting-paramsbody","title":"Known Issue 3: Overwriting params.body"}]}]},{"url":"#securing-app-builder-applications","title":"Securing App Builder Applications","items":[{"url":"#io-runtime-specific-guidelines","title":"I/O Runtime Specific guidelines"},{"url":"#transport-security","title":"Transport Security"},{"url":"#tenant-isolation","title":"Tenant Isolation","items":[{"url":"#runtime-actions","title":"Runtime Actions"},{"url":"#cloud-storage-and-cdn-for-spa-static-files","title":"Cloud Storage and CDN for SPA Static Files"},{"url":"#files--state-services","title":"Files & State Services"},{"url":"#app-builder-apps-service","title":"App Builder Apps Service"}]}]},{"url":"#summary","title":"Summary"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/index.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-bootstrap-a-headless-app-builder-app","title":"Lesson 1: Bootstrap a Headless App Builder App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/bootstrap.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-writing-a-serverless-action","title":"Lesson 2: Writing a Serverless Action","items":[{"url":"#barcode-action","title":"Barcode action"},{"url":"#deploying","title":"Deploying"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/barcode.md"},{"tableOfContents":{"items":[{"url":"#headless-apps-with-app-builder","title":"Headless Apps with App Builder"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/index.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-testing-a-serverless-action","title":"Lesson 3: Testing a Serverless Action","items":[{"url":"#unit-tests","title":"Unit Tests"},{"url":"#end-to-end-tests","title":"End to End Tests"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/test.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-setup-cicd","title":"Lesson 1: Setup CI/CD","items":[{"url":"#setup-your-github-repository-for-your-app-builder-app","title":"Setup your GitHub repository for your App Builder App"},{"url":"#github-actions","title":"GitHub actions"},{"url":"#github-secrets","title":"GitHub secrets"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson1.md"},{"tableOfContents":{"items":[{"url":"#setup-cicd-in-an-app-builder-app","title":"Setup CI/CD in an App Builder App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-monitoring-cicd","title":"Lesson 2: Monitoring CI/CD","items":[{"url":"#re-run-failing-jobs","title":"Re-run failing jobs"},{"url":"#run-tests-on-pull-request","title":"Run tests on pull request"},{"url":"#continuous-deployment","title":"Continuous deployment"},{"url":"#debugging-jobs","title":"Debugging jobs"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson2.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-custom-cicd-workflow","title":"Lesson 3: Custom CI/CD workflow","items":[{"url":"#setting-environment-variables","title":"Setting environment variables"},{"url":"#custom-use-cases","title":"Custom use cases"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson3.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/welldone.md"},{"tableOfContents":{"items":[{"url":"#scheduling-cron-jobs-with-alarms","title":"Scheduling Cron Jobs with Alarms"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-set-up-alarm-feed-with-trigger-and-rule","title":"Lesson 2: Set up Alarm Feed with Trigger and Rule"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-types-of-alarm-feed","title":"Lesson 3: Types of Alarm Feed","items":[{"url":"#firing-a-trigger-once","title":"Firing a trigger once"},{"url":"#firing-a-trigger-on-a-time-based-schedule-using-cron","title":"Firing a trigger on a time-based schedule using cron"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson3.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-bootstrap-a-headless-app","title":"Lesson 1: Bootstrap a Headless App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson1.md"},{"tableOfContents":{"items":[{"url":"#build-a-customer-profiles-dashboard-with-app-builder","title":"Build a Customer Profiles Dashboard with App Builder"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-a-new-app-builder-app-from-campaign-standard-template","title":"Lesson 1: Create a New App Builder App from Campaign Standard Template"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson1.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-explore-the-app-builder-app","title":"Lesson 2: Explore the App Builder App"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-run-the-app-builder-app-locally","title":"Lesson 3: Run the App Builder App Locally"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-list-all-customer-profiles-on-the-ui","title":"Lesson 4: List All Customer Profiles on the UI"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson4.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment","items":[{"url":"#campaign-standard-apis","title":"Campaign Standard APIs"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-add-personalized-promotion-emails-triggering","title":"Lesson 5: Add Personalized Promotion Emails Triggering"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson5.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/welldone.md"},{"tableOfContents":{"items":[{"url":"#debugging-app-builder-apps-with-wskdebug","title":"Debugging App Builder Apps With Wskdebug"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-debugging-application-code","title":"Lesson 2: Debugging Application Code"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-getting-familiar-with-debugger-wskdebug","title":"Lesson 1: Getting familiar with Debugger (wskdebug)"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-managing-application-logs","title":"Lesson 3: Managing Application Logs"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson3.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/welldone.md"},{"tableOfContents":{"items":[{"url":"#how-aem-as-cloud-assets-works","title":"How AEM as Cloud assets works"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md"},{"tableOfContents":{"items":[{"url":"#build-custom-asset-compute-worker","title":"Build custom Asset Compute worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-configure-services","title":"Lesson 1: Configure services","items":[{"url":"#create-azure-blob-storages","title":"Create Azure blob storages"},{"url":"#configure-imgix","title":"Configure imgIX"},{"url":"#configure-adobe-io","title":"Configure Adobe IO"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-local-environment-setup","title":"Lesson 2: Local environment setup"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-test-the-worker","title":"Lesson 4: Test the worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson4.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-setup-aem-to-use-the-worker","title":"Lesson 5: Setup AEM to use the worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson5.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-implement-the-worker","title":"Lesson 3: Implement the worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson3.md"},{"tableOfContents":{"items":[{"url":"#architecture-of-our-worker","title":"Architecture of our worker"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/our-worker.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment","items":[{"url":"#3rd-party-services","title":"3rd party services"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/welldone.md"},{"tableOfContents":{"items":[{"url":"#build-an-event-driven-app-builder-app-using-custom-events","title":"Build an Event-Driven App Builder App Using Custom Events","items":[{"url":"#overview","title":"Overview"},{"url":"#user-story","title":"User Story"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-a-new-app-builder-app-from-template","title":"Lesson 1: Create a New App Builder App from Template","items":[{"url":"#create-a-console-integration-and-set-up-project","title":"Create a Console Integration and Set up Project"},{"url":"#initialize-an-app-builder-app-using-cli-template","title":"Initialize an App Builder app using CLI template"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-register-the-app-as-event-provider","title":"Lesson 2: Register the App as Event Provider","items":[{"url":"#set-up-project-and-use-cli-to-register-the-app-as-event-provider","title":"Set up project and use CLI to register the app as event provider","items":[{"url":"#use-cli-to-create-provider-eventmetadata-and-webhook-registration","title":"Use CLI to create provider, eventmetadata and webhook registration"}]},{"url":"#register-the-event-provider","title":"Register the Event Provider"},{"url":"#check-your-result-on-console","title":"Check your result on Console"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-fire-an-event","title":"Lesson 3: Fire an Event","items":[{"url":"#fire-event","title":"Fire Event"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-consume-events","title":"Lesson 4: Consume Events","items":[{"url":"#option-1-using-journaling-api-to-consume-events","title":"Option 1: Using Journaling API to consume events"},{"url":"#option-2-using-runtime-action","title":"Option 2: Using runtime action"},{"url":"#option-3-using-webhook-to-consume-events","title":"Option 3: Using webhook to consume events"},{"url":"#lets-test-it-and-fire-events","title":"Let's test it, and fire events"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson4.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/welldone.md"},{"tableOfContents":{"items":[{"url":"#events-using-runtime-actions-as-webhook","title":"Events Using Runtime Actions as Webhook","items":[{"url":"#background","title":"Background"},{"url":"#benefits-of-using-runtime-action-as-webhook","title":"Benefits of using Runtime Action as Webhook"},{"url":"#how-to-choose-between-journaling-api-and-runtime-action-webhook","title":"How to choose between Journaling API and Runtime Action webhook"},{"url":"#overview","title":"Overview"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-step-by-step-guide","title":"Lesson 1: Step by Step Guide","items":[{"url":"#initialize-an-app-builder-app-using-template","title":"Initialize an App Builder app using template"},{"url":"#event-registration","title":"Event Registration"},{"url":"#create-event-consumer","title":"Create Event Consumer"},{"url":"#event-runtime-integration","title":"Event Runtime Integration"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-verify-the-result","title":"Lesson 2: Verify the result","items":[{"url":"#deep-dive-in","title":"Deep dive in"},{"url":"#tracing-actions-with-activation-ids","title":"Tracing Actions with Activation Ids"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson2.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#what-you-learned","title":"What you learned"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/welldone.md"},{"tableOfContents":{"items":[{"url":"#consume-events-using-journaling-api","title":"Consume Events Using Journaling API","items":[{"url":"#user-story","title":"User Story"},{"url":"#solution","title":"Solution"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-create-the-event-consumer-using-journaling-api","title":"Lesson 2: Create the Event Consumer using Journaling API","items":[{"url":"#create-an-event-consumer-using-app-builder-template","title":"Create an event consumer using App Builder template"},{"url":"#write-the-data-into-app-builder-storage","title":"Write the data into App Builder storage"},{"url":"#scheduling-cron-jobs-to-automate-the-consuming-events","title":"Scheduling cron jobs to automate the consuming events"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-end-to-end-test","title":"Lesson 3: End to end test"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-an-event-provider-using-app-builder","title":"Lesson 1: Create an Event Provider using App Builder","items":[{"url":"#create-an-event-provider-using-app-builder-template","title":"Create an event provider using App Builder template"},{"url":"#register-the-app-as-event-provider","title":"Register the App as Event Provider"},{"url":"#fire-events-and-set-up-consume-events","title":"Fire Events and set up consume Events"},{"url":"#scheduling-cron-jobs-with-alarms","title":"Scheduling cron jobs with alarms"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson1.md"},{"tableOfContents":{"items":[{"url":"#codelab-environment","title":"Codelab environment"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/welldone.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/demo.md"},{"tableOfContents":{"items":[{"url":"#sample-apps","title":"Sample Apps","items":[{"url":"#overview","title":"Overview","items":[{"url":"#live-demo-adobe-stock-image-search","title":"Live demo: Adobe Stock Image Search"},{"url":"#customer-profiles-dashboard","title":"Customer Profiles Dashboard"},{"url":"#barcode-generator","title":"Barcode Generator"},{"url":"#throttled-queue-processing","title":"Throttled Queue Processing"},{"url":"#custom-assets-compute-worker-for-aem-using-photoshop-api","title":"Custom Assets Compute Worker for AEM using Photoshop API"},{"url":"#todo-app-with-react-spectrum","title":"Todo App with React Spectrum"},{"url":"#journal-browser-using-io-events-library","title":"Journal Browser using I/O Events Library"},{"url":"#adobe-io-events---azure-service-bus-connector","title":"Adobe I/O Events - Azure Service Bus connector"},{"url":"#adobe-io-events---azure-service-bus-connector-1","title":"Adobe I/O Events - Azure Service Bus connector"}]},{"url":"#code-snippets","title":"Code Snippets"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/index.md"},{"tableOfContents":{"items":[{"url":"#spectrum-introduction","title":"Spectrum Introduction"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-introduction-to-spectrum","title":"Lesson 1: Introduction to Spectrum","items":[{"url":"#for-all-platforms","title":"For all platforms"},{"url":"#for-everyone","title":"For everyone"},{"url":"#evolving-and-transparent","title":"Evolving and transparent"},{"url":"#built-by-a-community","title":"Built by a community"},{"url":"#resources","title":"Resources","items":[{"url":"#ui-kits","title":"UI kits"},{"url":"#adobe-clean-font-families","title":"Adobe Clean Font families"},{"url":"#icons","title":"Icons"}]},{"url":"#contact","title":"Contact"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-spectrum-css","title":"Lesson 2: Spectrum CSS","items":[{"url":"#using-spectrum-css","title":"Using Spectrum CSS"},{"url":"#building-a-simple-form-using-spectrum-css","title":"Building a simple form using Spectrum CSS","items":[{"url":"#finally-","title":"Finally ..."}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-react-spectrum","title":"Lesson 3: React Spectrum","items":[{"url":"#using-react-spectrum","title":"Using React Spectrum"},{"url":"#building-a-simple-form-using-react-spectrum","title":"Building a simple form using React Spectrum"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson3.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/requirements.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/welldone.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-react-spectrum-in-app-builder","title":"Lesson 4: React Spectrum in App Builder","items":[{"url":"#single-page-application","title":"Single Page Application"},{"url":"#project-structure","title":"Project Structure"},{"url":"#running-and-deployment","title":"Running and Deployment"},{"url":"#caching","title":"Caching"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson4.md"},{"tableOfContents":{"items":[{"url":"#building-an-app-builder-todo-app-with-aio-lib-state-and-react-spectrum","title":"Building an App Builder Todo App with aio-lib-state and React Spectrum"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/index.md"},{"tableOfContents":{"items":[{"url":"#lesson-1-create-a-new-app-builder-app-with-the-react-spectrum-template","title":"Lesson 1: Create a New App Builder App with the React Spectrum template","items":[{"url":"#initialization","title":"Initialization"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson1.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-setup-runtime-actions","title":"Lesson 2: Setup Runtime actions","items":[{"url":"#global-configuration-file","title":"Global configuration file"},{"url":"#install-aio-lib-state","title":"Install aio-lib-state"},{"url":"#main-function","title":"Main function","items":[{"url":"#parameters","title":"Parameters"},{"url":"#crud-operations","title":"CRUD operations"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson2.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-setup-the-createtodolist-component","title":"Lesson 3: Setup the CreateTodoList component","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-property","title":"Component property"},{"url":"#creating-a-todo-list","title":"Creating a todo list"},{"url":"#the-full-component","title":"The full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson3.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-setup-the-todo-component","title":"Lesson 4: Setup the Todo component","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-properties","title":"Component properties"},{"url":"#updating-a-todo-item","title":"Updating a todo item"},{"url":"#full-component","title":"Full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson4.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-bringing-the-pieces-together-to-build-the-app","title":"Lesson 5: Bringing the pieces together to build the App","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-property","title":"Component property"},{"url":"#component-state-values","title":"Component state values"},{"url":"#action-function-callbacks","title":"Action function callbacks"},{"url":"#loading-indicator","title":"Loading indicator"},{"url":"#rendering-todo-lists","title":"Rendering todo lists"},{"url":"#full-component","title":"Full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson6.md"},{"tableOfContents":{"items":[{"url":"#well-done","title":"Well done","items":[{"url":"#achievements","title":"Achievements"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/welldone.md"},{"tableOfContents":{},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/requirements.md"},{"tableOfContents":{"items":[{"url":"#lesson-5-setup-the-todolist-component","title":"Lesson 5: Setup the TodoList component","items":[{"url":"#import-react-spectrum-components","title":"Import React Spectrum components"},{"url":"#component-properties","title":"Component properties"},{"url":"#spectrum-icons","title":"Spectrum Icons"},{"url":"#displaying-the-todo-list-name","title":"Displaying the todo list name"},{"url":"#rendering-todo-items","title":"Rendering todo items"},{"url":"#creating-a-todo-item","title":"Creating a todo item","items":[{"url":"#deleting-a-todo-list","title":"Deleting a todo list"}]},{"url":"#full-component","title":"Full component"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson5.md"},{"tableOfContents":{"items":[{"url":"#requirements","title":"Requirements","items":[{"url":"#required-skills","title":"Required skills"},{"url":"#pre-requisites","title":"Pre-requisites"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/transclusions/_requirements.md"},{"tableOfContents":{"items":[{"url":"#app-builder-tech-talks-deep-dive-sessions-and-partner-use-cases","title":"App Builder Tech Talks, Deep Dive Sessions and Partner Use Cases","items":[{"url":"#overview","title":"Overview","items":[{"url":"#introducing-app-builder","title":"Introducing App Builder"},{"url":"#getting-started","title":"Getting Started"},{"url":"#architecture","title":"Architecture"},{"url":"#security","title":"Security"},{"url":"#user-journey","title":"User Journey"}]},{"url":"#exploring-app-builder","title":"Exploring App Builder","items":[{"url":"#projects-and-workspaces","title":"Projects and Workspaces"},{"url":"#react-spectrum","title":"React Spectrum"},{"url":"#custom-events","title":"Custom Events"},{"url":"#cicd","title":"CI/CD"},{"url":"#debugging","title":"Debugging"},{"url":"#learning-resources","title":"Learning Resources"},{"url":"#live-wired-sneak","title":"Live Wired Sneak"}]},{"url":"#case-study","title":"Case Study","items":[{"url":"#dashboard-case-study","title":"Dashboard Case Study"},{"url":"#ode-case-study","title":"ODE Case Study"},{"url":"#deep-dive-use-cases","title":"Deep Dive Use Cases"},{"url":"#softcrylic-partner-showcase","title":"Softcrylic Partner Showcase"}]},{"url":"#adobe-developers-live","title":"Adobe Developers Live","items":[{"url":"#app-builder-deep-dive","title":"App Builder Deep Dive"},{"url":"#extend-adobe-experience-cloud","title":"Extend Adobe Experience Cloud"},{"url":"#asset-compute-service-extensibility","title":"Asset Compute Service Extensibility"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/index.md"},{"tableOfContents":{"items":[{"url":"#interface-modules","title":"Interface: Modules","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#default","title":"default","items":[{"url":"#type-declaration","title":"Type declaration:"}]},{"url":"#page","title":"page"},{"url":"#runtime","title":"runtime"},{"url":"#topbar","title":"topbar"},{"url":"#user","title":"user","items":[{"url":"#type-declaration-1","title":"Type declaration:"}]}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.md"},{"tableOfContents":{"items":[{"url":"#interface-runtime-t","title":"Interface: Runtime ","items":[{"url":"#type-parameters","title":"Type parameters"},{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#eventemitter-methods","title":"EventEmitter Methods"}]},{"url":"#eventemitter-methods-1","title":"EventEmitter Methods","items":[{"url":"#emit","title":"emit"},{"url":"#off","title":"off"},{"url":"#on","title":"on"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.runtime.md"},{"tableOfContents":{"items":[{"url":"#interface-objectwithhref","title":"Interface: ObjectWithHref","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#href","title":"href"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithhref.md"},{"tableOfContents":{"items":[{"url":"#interface-objectwithpath","title":"Interface: ObjectWithPath","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#path","title":"path"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithpath.md"},{"tableOfContents":{"items":[{"url":"#interface-pageapiproperties","title":"Interface: PageApiProperties","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#favicon","title":"favicon"},{"url":"#modal","title":"modal"},{"url":"#preventdefaultcombos","title":"preventDefaultCombos"},{"url":"#spinner","title":"spinner"},{"url":"#title","title":"title"},{"url":"#viewporttakeover","title":"viewportTakeover"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapiproperties.md"},{"tableOfContents":{"items":[{"url":"#interface-pageapi","title":"Interface: PageApi","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"},{"url":"#methods","title":"Methods"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#favicon","title":"favicon"},{"url":"#modal","title":"modal"},{"url":"#preventdefaultcombos","title":"preventDefaultCombos"},{"url":"#spinner","title":"spinner"},{"url":"#title","title":"title"},{"url":"#viewporttakeover","title":"viewportTakeover"}]},{"url":"#methods-1","title":"Methods","items":[{"url":"#done","title":"done"},{"url":"#generateshellurl","title":"generateShellUrl"},{"url":"#iframereload","title":"iframeReload"},{"url":"#openinnewtab","title":"openInNewTab"},{"url":"#shellredirect","title":"shellRedirect"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapi.md"},{"tableOfContents":{"items":[{"url":"#interface-callback","title":"Interface: Callback","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#callable","title":"Callable"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.callback.md"},{"tableOfContents":{"items":[{"url":"#interface-customfeedbackconfig","title":"Interface: CustomFeedbackConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#buttonlabel","title":"buttonLabel"},{"url":"#callback","title":"callback"},{"url":"#enabled","title":"enabled"},{"url":"#type","title":"type"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customfeedbackconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-customsearchconfig","title":"Interface: CustomSearchConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#optional-callback","title":"Optional callback"},{"url":"#optional-enabled","title":"Optional enabled"},{"url":"#optional-open","title":"Optional open"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customsearchconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-externalfeedbackconfig","title":"Interface: ExternalFeedbackConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#buttonlabel","title":"buttonLabel"},{"url":"#enabled","title":"enabled"},{"url":"#type","title":"type"},{"url":"#url","title":"url"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.externalfeedbackconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-solution","title":"Interface: Solution","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#icon","title":"icon"},{"url":"#shorttitle","title":"shortTitle"},{"url":"#title","title":"title"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.solution.md"},{"tableOfContents":{"items":[{"url":"#interface-helpcenterfeedbackconfig","title":"Interface: HelpCenterFeedbackConfig","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#buttonlabel","title":"buttonLabel"},{"url":"#enabled","title":"enabled"},{"url":"#optional-subject","title":"Optional subject"},{"url":"#type","title":"type"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md"},{"tableOfContents":{"items":[{"url":"#interface-topbarapi","title":"Interface: TopbarApi","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"},{"url":"#methods","title":"Methods"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#customenvlabel","title":"customEnvLabel"},{"url":"#solution","title":"solution"},{"url":"#workspaces","title":"workspaces"}]},{"url":"#methods-1","title":"Methods","items":[{"url":"#onheroclick","title":"onHeroClick"},{"url":"#setcustomsearch","title":"setCustomSearch"},{"url":"#setfeedbackbutton","title":"setFeedbackButton"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapi.md"},{"tableOfContents":{"items":[{"url":"#interface-topbarapiproperties","title":"Interface: TopbarApiProperties","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#customenvlabel","title":"customEnvLabel"},{"url":"#solution","title":"solution"},{"url":"#workspaces","title":"workspaces"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapiproperties.md"},{"tableOfContents":{"items":[{"url":"#interface-userapi","title":"Interface: UserApi","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"},{"url":"#eventemitter-methods","title":"EventEmitter Methods"},{"url":"#other-methods","title":"Other Methods"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#logouturl","title":"logoutUrl"}]},{"url":"#eventemitter-methods-1","title":"EventEmitter Methods","items":[{"url":"#emit","title":"emit"},{"url":"#off","title":"off"},{"url":"#on","title":"on"}]},{"url":"#other-methods-1","title":"Other Methods","items":[{"url":"#authexpired","title":"authExpired"},{"url":"#get","title":"get"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userapi.md"},{"tableOfContents":{"items":[{"url":"#interface-userinfo","title":"Interface: UserInfo","items":[{"url":"#hierarchy","title":"Hierarchy"},{"url":"#index","title":"Index","items":[{"url":"#properties","title":"Properties"}]},{"url":"#properties-1","title":"Properties","items":[{"url":"#imsorg","title":"imsOrg"},{"url":"#imsorgname","title":"imsOrgName"},{"url":"#imsorgs","title":"imsOrgs"},{"url":"#imsprofile","title":"imsProfile"},{"url":"#imstoken","title":"imsToken"},{"url":"#locale","title":"locale"},{"url":"#preferredlanguages","title":"preferredLanguages"},{"url":"#suborg","title":"subOrg"},{"url":"#tenant","title":"tenant"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userinfo.md"},{"tableOfContents":{"items":[{"url":"#external-module-index","title":"External module: \"index\"","items":[{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"},{"url":"#functions","title":"Functions"}]},{"url":"#functions-1","title":"Functions","items":[{"url":"#init","title":"init"},{"url":"#runtime","title":"runtime"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/index.md"},{"tableOfContents":{"items":[{"url":"#external-module-page","title":"External module: page","items":[{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"},{"url":"#type-aliases","title":"Type aliases"}]},{"url":"#type-aliases-1","title":"Type aliases","items":[{"url":"#locationlike","title":"LocationLike"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/page.md"},{"tableOfContents":{"items":[{"url":"#external-module-topbar","title":"External module: topbar","items":[{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/topbar.md"},{"tableOfContents":{"items":[{"url":"#external-module-user","title":"External module: user","items":[{"items":[{"url":"#receiving-updates","title":"Receiving updates"}]},{"url":"#index","title":"Index","items":[{"url":"#interfaces","title":"Interfaces"}]}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/user.md"},{"tableOfContents":{"items":[{"url":"#lesson-3-develop-custom-worker-calling-photoshop-apis","title":"Lesson 3: Develop custom worker calling Photoshop APIs"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson3.md"},{"tableOfContents":{"items":[{"url":"#io-events-handler","title":"I/O Events handler"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/events.md"},{"tableOfContents":{"items":[{"url":"#real-time-data-from-adobe-analytics-api-14","title":"Real-time data from Adobe Analytics API 1.4"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/analytics.md"},{"tableOfContents":{"items":[{"url":"#app-builder-files-sdk","title":"App Builder Files SDK","items":[{"url":"#return-a-list-of-files-stored-with-the-files-sdk","title":"Return a list of files stored with the Files SDK"},{"url":"#return-a-presigned-url-of-a-private-file-from-the-files-sdk","title":"Return a presigned URL of a private file from the Files SDK"},{"url":"#return-a-file-from-the-files-sdk-with-redirect","title":"Return a file from the Files SDK with Redirect"},{"url":"#upload-a-file-to-the-files-sdk","title":"Upload a file to the Files SDK"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/files.md"},{"tableOfContents":{"items":[{"url":"#caching-http-responses","title":"Caching HTTP responses"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/index.md"},{"tableOfContents":{"items":[{"url":"#app-builder-state-sdk","title":"App Builder State SDK","items":[{"url":"#read-a-value-by-key-from-the-state-sdk","title":"Read a value by key from the State SDK"},{"url":"#write-a-key-value-pair-into-the-state-sdk","title":"Write a key-value pair into the State SDK"}]}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/state.md"},{"tableOfContents":{"items":[{"url":"#adobe-developers-live--asset-compute-service-extensibility","title":"Adobe Developers Live | Asset Compute Service Extensibility"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/asset-compute-service-extensibility.md"},{"tableOfContents":{"items":[{"url":"#adobe-developers-live--app-builder-deep-dive","title":"Adobe Developers Live | App Builder Deep Dive"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/deep-dive.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---cicd","title":"Exploring App Builder - CI/CD"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ci-cd.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---custom-events","title":"Exploring App Builder - Custom Events"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/custom-events.md"},{"tableOfContents":{"items":[{"url":"#adobe-developers-live--so-you-want-to-extend-adobe-experience-cloud","title":"Adobe Developers Live | So you want to extend Adobe Experience Cloud?"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/extend-experience-cloud.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---debugging","title":"Exploring App Builder - Debugging"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/debugging.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---dashboard-case-study","title":"Exploring App Builder - Dashboard Case Study"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/dashboard-case-study.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---deep-dive-on-use-cases","title":"Exploring App Builder - Deep Dive on Use Cases"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/deep-dive-use-cases.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---learning-resources","title":"Exploring App Builder - Learning Resources"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/learning-resources.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---live-wired-sneak","title":"Exploring App Builder - Live Wired Sneak"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/live-wired-sneak.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---projects-and-workspaces","title":"Exploring App Builder - Projects and Workspaces"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/projects-and-workspaces.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---ode-case-study","title":"Exploring App Builder - ODE Case Study"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ode-case-study.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---react-spectrum","title":"Exploring App Builder - React Spectrum"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/react-spectrum.md"},{"tableOfContents":{"items":[{"url":"#a-breakdown-of-app-builders-architecture","title":"A Breakdown of App Builder's Architecture"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/architecture.md"},{"tableOfContents":{"items":[{"url":"#exploring-app-builder---partner-showcase-softcrylic","title":"Exploring App Builder - Partner Showcase: Softcrylic"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/softcrylic-showcase.md"},{"tableOfContents":{"items":[{"url":"#following-the-end-to-end-user-journey","title":"Following the End-to-End User Journey"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/e2e-user-journey.md"},{"tableOfContents":{"items":[{"url":"#getting-started","title":"Getting Started"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/getting-started.md"},{"tableOfContents":{"items":[{"url":"#introducing-app-builder","title":"Introducing App Builder"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/introduction.md"},{"tableOfContents":{"items":[{"url":"#a-full-security-overview","title":"A Full Security Overview"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/security.md"},{"tableOfContents":{"items":[{"url":"#lesson-4-integrate-and-use-the-custom-worker-in-aemaacs","title":"Lesson 4: Integrate and use the custom worker in AEMaaCS"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson4.md"},{"tableOfContents":{"items":[{"url":"#lesson-2-configure-the-app","title":"Lesson 2: Configure the app"}]},"fileAbsolutePath":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson2.md"}]},"allSitePage":{"nodes":[{"component":"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/pages/404.md","path":"/404/"},{"component":"/home/runner/work/app-builder/app-builder/node_modules/@adobe/gatsby-theme-aio/src/pages/404.md","path":"/404.html"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/common_troubleshooting.md","path":"/getting_started/common_troubleshooting/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/first_app.md","path":"/getting_started/first_app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/index.md","path":"/getting_started/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/getting_started/publish_app.md","path":"/getting_started/publish_app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/app-hooks.md","path":"/guides/app-hooks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_state.md","path":"/guides/application_state/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/index.md","path":"/guides/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/introduction_to_react_spectrum.md","path":"/guides/introduction_to_react_spectrum/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/telemetry.md","path":"/guides/telemetry/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/tips_tricks.md","path":"/guides/tips_tricks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/using_sdks.md","path":"/guides/using_sdks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/community.md","path":"/overview/community/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/faq.md","path":"/overview/faq/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/firefly_and_runtime.md","path":"/overview/firefly_and_runtime/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/getting_access.md","path":"/overview/getting_access/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/how_it_works.md","path":"/overview/how_it_works/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/overview/index.md","path":"/overview/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/blog_articles.md","path":"/resources/blog_articles/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/index.md","path":"/resources/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/azure_log_analytics.md","path":"/guides/application_logging/azure_log_analytics/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/index.md","path":"/guides/application_logging/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/new_relic.md","path":"/guides/application_logging/new_relic/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_cloud.md","path":"/guides/application_logging/splunk_cloud/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/application_logging/splunk_enterprise.md","path":"/guides/application_logging/splunk_enterprise/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/index.md","path":"/guides/configuration/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/configuration/webpack-configuration.md","path":"/guides/configuration/webpack-configuration/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/contribution_guides/index.md","path":"/guides/contribution_guides/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/ci_cd_for_firefly_apps.md","path":"/guides/deployment/ci_cd_for_firefly_apps/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/credential-rotation.md","path":"/guides/deployment/credential-rotation/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/index.md","path":"/guides/deployment/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/deployment/setting-response-headers.md","path":"/guides/deployment/setting-response-headers/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/development/index.md","path":"/guides/development/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/index.md","path":"/guides/distribution/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/private.md","path":"/guides/distribution/private/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/distribution/public.md","path":"/guides/distribution/public/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/custom-events.md","path":"/guides/events/custom-events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/events/webhooks.md","path":"/guides/events/webhooks/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/index.md","path":"/guides/exc_app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/extension_migration_guide.md","path":"/guides/extensions/extension_migration_guide/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/index.md","path":"/guides/extensions/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/extensions/ui_extensibility.md","path":"/guides/extensions/ui_extensibility/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/migrations/standalone_to_dx_experience_cloud_spa.md","path":"/guides/migrations/standalone_to_dx_experience_cloud_spa/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/reference_documentation/index.md","path":"/guides/reference_documentation/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/index.md","path":"/guides/security/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/security/understanding_authentication.md","path":"/guides/security/understanding_authentication/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/index.md","path":"/resources/asset-compute-worker-ps-api/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson1.md","path":"/resources/asset-compute-worker-ps-api/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson2.md","path":"/resources/asset-compute-worker-ps-api/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson3.md","path":"/resources/asset-compute-worker-ps-api/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/lesson4.md","path":"/resources/asset-compute-worker-ps-api/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/requirements.md","path":"/resources/asset-compute-worker-ps-api/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/asset-compute-worker-ps-api/welldone.md","path":"/resources/asset-compute-worker-ps-api/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/barcode.md","path":"/resources/barcode-reader/barcode/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/bootstrap.md","path":"/resources/barcode-reader/bootstrap/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/index.md","path":"/resources/barcode-reader/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/requirements.md","path":"/resources/barcode-reader/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/test.md","path":"/resources/barcode-reader/test/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/barcode-reader/welldone.md","path":"/resources/barcode-reader/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/index.md","path":"/resources/ci-cd/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson1.md","path":"/resources/ci-cd/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson2.md","path":"/resources/ci-cd/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/lesson3.md","path":"/resources/ci-cd/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/requirements.md","path":"/resources/ci-cd/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/ci-cd/welldone.md","path":"/resources/ci-cd/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/index.md","path":"/resources/cron-jobs/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson1.md","path":"/resources/cron-jobs/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson2.md","path":"/resources/cron-jobs/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/lesson3.md","path":"/resources/cron-jobs/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/requirements.md","path":"/resources/cron-jobs/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/cron-jobs/welldone.md","path":"/resources/cron-jobs/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md","path":"/resources/custom-asset-compute-worker/aem-cloud-assets/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/index.md","path":"/resources/custom-asset-compute-worker/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson1.md","path":"/resources/custom-asset-compute-worker/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson2.md","path":"/resources/custom-asset-compute-worker/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson3.md","path":"/resources/custom-asset-compute-worker/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson4.md","path":"/resources/custom-asset-compute-worker/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/lesson5.md","path":"/resources/custom-asset-compute-worker/lesson5/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/our-worker.md","path":"/resources/custom-asset-compute-worker/our-worker/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/requirements.md","path":"/resources/custom-asset-compute-worker/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/custom-asset-compute-worker/welldone.md","path":"/resources/custom-asset-compute-worker/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/index.md","path":"/resources/customer-dashboard/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson1.md","path":"/resources/customer-dashboard/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson2.md","path":"/resources/customer-dashboard/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson3.md","path":"/resources/customer-dashboard/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson4.md","path":"/resources/customer-dashboard/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/lesson5.md","path":"/resources/customer-dashboard/lesson5/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/requirements.md","path":"/resources/customer-dashboard/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/customer-dashboard/welldone.md","path":"/resources/customer-dashboard/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/index.md","path":"/resources/debugging/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson1.md","path":"/resources/debugging/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson2.md","path":"/resources/debugging/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/lesson3.md","path":"/resources/debugging/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/requirements.md","path":"/resources/debugging/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/debugging/welldone.md","path":"/resources/debugging/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/index.md","path":"/resources/event-driven/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson1.md","path":"/resources/event-driven/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson2.md","path":"/resources/event-driven/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson3.md","path":"/resources/event-driven/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/lesson4.md","path":"/resources/event-driven/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/requirements.md","path":"/resources/event-driven/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/event-driven/welldone.md","path":"/resources/event-driven/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/index.md","path":"/resources/events-runtime/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson1.md","path":"/resources/events-runtime/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/lesson2.md","path":"/resources/events-runtime/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/requirements.md","path":"/resources/events-runtime/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/events-runtime/welldone.md","path":"/resources/events-runtime/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/index.md","path":"/resources/journaling-events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson1.md","path":"/resources/journaling-events/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson2.md","path":"/resources/journaling-events/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/lesson3.md","path":"/resources/journaling-events/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/requirements.md","path":"/resources/journaling-events/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/journaling-events/welldone.md","path":"/resources/journaling-events/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/demo.md","path":"/resources/sample_apps/demo/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/index.md","path":"/resources/sample_apps/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/index.md","path":"/resources/spectrum-intro/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson1.md","path":"/resources/spectrum-intro/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson2.md","path":"/resources/spectrum-intro/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson3.md","path":"/resources/spectrum-intro/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/lesson4.md","path":"/resources/spectrum-intro/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/requirements.md","path":"/resources/spectrum-intro/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/spectrum-intro/welldone.md","path":"/resources/spectrum-intro/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/index.md","path":"/resources/todo-app/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson1.md","path":"/resources/todo-app/lesson1/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson2.md","path":"/resources/todo-app/lesson2/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson3.md","path":"/resources/todo-app/lesson3/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson4.md","path":"/resources/todo-app/lesson4/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson5.md","path":"/resources/todo-app/lesson5/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/lesson6.md","path":"/resources/todo-app/lesson6/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/requirements.md","path":"/resources/todo-app/requirements/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/todo-app/welldone.md","path":"/resources/todo-app/welldone/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/index.md","path":"/resources/videos/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.md","path":"/guides/exc_app/interfaces/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/index.runtime.md","path":"/guides/exc_app/interfaces/index.runtime/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithhref.md","path":"/guides/exc_app/interfaces/page.objectwithhref/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.objectwithpath.md","path":"/guides/exc_app/interfaces/page.objectwithpath/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapi.md","path":"/guides/exc_app/interfaces/page.pageapi/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/page.pageapiproperties.md","path":"/guides/exc_app/interfaces/page.pageapiproperties/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.callback.md","path":"/guides/exc_app/interfaces/topbar.callback/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customfeedbackconfig.md","path":"/guides/exc_app/interfaces/topbar.customfeedbackconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.customsearchconfig.md","path":"/guides/exc_app/interfaces/topbar.customsearchconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.externalfeedbackconfig.md","path":"/guides/exc_app/interfaces/topbar.externalfeedbackconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md","path":"/guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.solution.md","path":"/guides/exc_app/interfaces/topbar.solution/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapi.md","path":"/guides/exc_app/interfaces/topbar.topbarapi/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/topbar.topbarapiproperties.md","path":"/guides/exc_app/interfaces/topbar.topbarapiproperties/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userapi.md","path":"/guides/exc_app/interfaces/user.userapi/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/interfaces/user.userinfo.md","path":"/guides/exc_app/interfaces/user.userinfo/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/index.md","path":"/guides/exc_app/modules/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/page.md","path":"/guides/exc_app/modules/page/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/topbar.md","path":"/guides/exc_app/modules/topbar/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/guides/exc_app/modules/user.md","path":"/guides/exc_app/modules/user/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/analytics.md","path":"/resources/sample_apps/code_snippets/analytics/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/events.md","path":"/resources/sample_apps/code_snippets/events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/files.md","path":"/resources/sample_apps/code_snippets/files/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/index.md","path":"/resources/sample_apps/code_snippets/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/sample_apps/code_snippets/state.md","path":"/resources/sample_apps/code_snippets/state/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/asset-compute-service-extensibility.md","path":"/resources/videos/developers-live/asset-compute-service-extensibility/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/deep-dive.md","path":"/resources/videos/developers-live/deep-dive/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/developers-live/extend-experience-cloud.md","path":"/resources/videos/developers-live/extend-experience-cloud/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ci-cd.md","path":"/resources/videos/exploring/ci-cd/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/custom-events.md","path":"/resources/videos/exploring/custom-events/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/dashboard-case-study.md","path":"/resources/videos/exploring/dashboard-case-study/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/debugging.md","path":"/resources/videos/exploring/debugging/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/deep-dive-use-cases.md","path":"/resources/videos/exploring/deep-dive-use-cases/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/learning-resources.md","path":"/resources/videos/exploring/learning-resources/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/live-wired-sneak.md","path":"/resources/videos/exploring/live-wired-sneak/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/ode-case-study.md","path":"/resources/videos/exploring/ode-case-study/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/projects-and-workspaces.md","path":"/resources/videos/exploring/projects-and-workspaces/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/react-spectrum.md","path":"/resources/videos/exploring/react-spectrum/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/exploring/softcrylic-showcase.md","path":"/resources/videos/exploring/softcrylic-showcase/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/architecture.md","path":"/resources/videos/overview/architecture/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/e2e-user-journey.md","path":"/resources/videos/overview/e2e-user-journey/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/getting-started.md","path":"/resources/videos/overview/getting-started/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/introduction.md","path":"/resources/videos/overview/introduction/"},{"component":"/home/runner/work/app-builder/app-builder/src/pages/resources/videos/overview/security.md","path":"/resources/videos/overview/security/"}]},"site":{"pathPrefix":"/app-builder","siteMetadata":{"home":{"title":"App Builder","path":"/app-builder","hidden":null},"docs":null,"githubIssue":null,"versions":null,"pages":[{"title":"Overview","path":"overview","menu":null},{"title":"Getting Started","path":"getting_started","menu":null},{"title":"Guides","path":"guides","menu":null},{"title":"Resources","path":"resources","menu":null}],"subPages":[{"title":"Overview","path":"overview","header":null,"pages":null},{"title":"How it works","path":"overview/how_it_works.md","header":null,"pages":null},{"title":"How to Get Access","path":"overview/getting_access.md","header":null,"pages":null},{"title":"App Builder and Adobe I/O Runtime","path":"overview/firefly_and_runtime.md","header":null,"pages":null},{"title":"FAQ","path":"overview/faq.md","header":null,"pages":null},{"title":"Community","path":"overview/community.md","header":null,"pages":null},{"title":"Setting up Your Environment","path":"getting_started","header":null,"pages":null},{"title":"Creating your First App Builder App","path":"getting_started/first_app.md","header":null,"pages":null},{"title":"Publishing Your First Project App Builder Application","path":"getting_started/publish_app.md","header":null,"pages":null},{"title":"Troubleshooting the most common issues","path":"getting_started/common_troubleshooting.md","header":null,"pages":null},{"title":"Architecture","path":"guides","header":null,"pages":[{"title":"Architecture overview","path":"guides","pages":null},{"title":"Dealing with Application State","path":"guides/application_state.md","pages":null},{"title":"Introduction to React Spectrum","path":"guides/introduction_to_react_spectrum.md","pages":null},{"title":"Using Client SDKs for Accessing Adobe APIs","path":"guides/using_sdks.md","pages":null},{"title":"Event hooks for App Builder Applications","path":"guides/app-hooks.md","pages":null}]},{"title":"Logging","path":"guides/application_logging","header":null,"pages":[{"title":"Managing Application Logs","path":"guides/application_logging/index.md","pages":null},{"title":"Forwarding logs to Azure Log Analytics","path":"guides/application_logging/azure_log_analytics.md","pages":null},{"title":"Forwarding logs to New Relic","path":"guides/application_logging/new_relic.md","pages":null},{"title":"Forwarding logs to Splunk Cloud","path":"guides/application_logging/splunk_cloud.md","pages":null},{"title":"Forwarding logs to Splunk Enterprise","path":"guides/application_logging/splunk_enterprise.md","pages":null}]},{"title":"Security","path":"guides/security","header":null,"pages":[{"title":"Security overview","path":"guides/security/index.md","pages":null},{"title":"Understanding Authentication","path":"guides/security/understanding_authentication.md","pages":null}]},{"title":"Deployment","path":"guides/deployment","header":null,"pages":[{"title":"Deployment overview","path":"guides/deployment","pages":null},{"title":"CI/CD for App Builder Applications","path":"guides/deployment/ci_cd_for_firefly_apps.md","pages":null},{"title":"Credential Rotation","path":"guides/deployment/credential-rotation.md","pages":null},{"title":"Setting Response Headers","path":"guides/deployment/setting-response-headers.md","pages":null}]},{"title":"Development","path":"guides/development","header":null,"pages":null},{"title":"Extensions","path":"guides/extensions","header":null,"pages":[{"title":"Introduction to Extensions","path":"guides/extensions/index.md","pages":null},{"title":"Extension Migration Guide","path":"guides/extensions/extension_migration_guide.md","pages":null},{"title":"Migration Guide - Standalone Application to DX Experience Cloud SPA v1","path":"guides/migrations/standalone_to_dx_experience_cloud_spa.md","pages":null},{"title":"UI Extensibility","path":"guides/extensions/ui_extensibility.md","pages":null}]},{"title":"Configuration","path":"guides/configuration","header":null,"pages":[{"title":"App Builder Configuration Files","path":"guides/configuration/index.md","pages":null},{"title":"Webpack Configuration","path":"guides/configuration/webpack-configuration.md","pages":null}]},{"title":"Distribution","path":"guides/distribution/index.md","header":null,"pages":[{"title":"Private Distribution","path":"guides/distribution/private.md","pages":null},{"title":"Public Distribution","path":"guides/distribution/public.md","pages":null}]},{"title":"Integration Guide with Adobe Experience Cloud","path":"guides/exc_app","header":null,"pages":[{"title":"Getting started with Adobe Experience Cloud","path":"guides/exc_app/index.md","pages":null},{"title":"Modules","path":"guides/exc_app/modules","pages":[{"title":"Index","path":"guides/exc_app/modules/index.md","pages":null},{"title":"Page","path":"guides/exc_app/modules/page.md","pages":null},{"title":"Topbar","path":"guides/exc_app/modules/topbar.md","pages":null},{"title":"User","path":"guides/exc_app/modules/user.md","pages":null}]},{"title":"Interfaces","path":"guides/exc_app/interfaces","pages":[{"title":"Modules","path":"guides/exc_app/interfaces/index.md","pages":null},{"title":"Runtime","path":"guides/exc_app/interfaces/index.runtime.md","pages":null},{"title":"Page Object with href","path":"guides/exc_app/interfaces/page.objectwithhref.md","pages":null},{"title":"Page Object with path","path":"guides/exc_app/interfaces/page.objectwithpath.md","pages":null},{"title":"Page API","path":"guides/exc_app/interfaces/page.pageapi.md","pages":null},{"title":"Page API Properties","path":"guides/exc_app/interfaces/page.pageapiproperties.md","pages":null},{"title":"Topbar callback","path":"guides/exc_app/interfaces/topbar.callback.md","pages":null},{"title":"Topbar custom feedback config","path":"guides/exc_app/interfaces/topbar.customfeedbackconfig.md","pages":null},{"title":"Topbar custom search config","path":"guides/exc_app/interfaces/topbar.customsearchconfig.md","pages":null},{"title":"Topbar external feedback config","path":"guides/exc_app/interfaces/topbar.externalfeedbackconfig.md","pages":null},{"title":"Topbar help center feedback config","path":"guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md","pages":null},{"title":"Topbar solution","path":"guides/exc_app/interfaces/topbar.solution.md","pages":null},{"title":"Topbar API","path":"guides/exc_app/interfaces/topbar.topbarapi.md","pages":null},{"title":"Topbar API properties","path":"guides/exc_app/interfaces/topbar.topbarapiproperties.md","pages":null},{"title":"User API","path":"guides/exc_app/interfaces/user.userapi.md","pages":null},{"title":"User Info","path":"guides/exc_app/interfaces/user.userinfo.md","pages":null}]}]},{"title":"Integration Guide for building Event-driven Applications with I/O Events","path":"guides/events/webhooks.md","header":null,"pages":null},{"title":"Custom Events Overview","path":"guides/events/custom-events.md","header":null,"pages":null},{"title":"Reference documentation","path":"guides/reference_documentation","header":null,"pages":null},{"title":"Contribution guides","path":"guides/contribution_guides","header":null,"pages":null},{"title":"Telemetry","path":"guides/telemetry","header":null,"pages":null},{"title":"Code Labs","path":"resources/index.md","header":null,"pages":[{"title":"Asset Compute with Photoshop APIs","path":"resources/asset-compute-worker-ps-api/index.md","pages":[{"title":"Requirements","path":"resources/asset-compute-worker-ps-api/requirements","pages":null},{"title":"Lesson 1: Create an app from Asset Compute template","path":"resources/asset-compute-worker-ps-api/lesson1","pages":null},{"title":"Lesson 2: Configure the app","path":"resources/asset-compute-worker-ps-api/lesson2","pages":null},{"title":"Lesson 3: Develop worker calling Photoshop API","path":"resources/asset-compute-worker-ps-api/lesson3","pages":null},{"title":"Lesson 4: Integrate worker in AEMaaCS","path":"resources/asset-compute-worker-ps-api/lesson4","pages":null},{"title":"Well done","path":"resources/asset-compute-worker-ps-api/welldone","pages":null}]},{"title":"Events Using Runtime Actions as Webhook","path":"resources/events-runtime/index.md","pages":[{"title":"Requirements","path":"resources/events-runtime/requirements","pages":null},{"title":"Lesson 1: Step by Step Guide","path":"resources/events-runtime/lesson1","pages":null},{"title":"Lesson 2: Verify the result","path":"resources/events-runtime/lesson2","pages":null},{"title":"Well done","path":"resources/events-runtime/welldone","pages":null}]},{"title":"Consume Events Using Journaling API","path":"resources/journaling-events/index.md","pages":[{"title":"Requirements","path":"resources/journaling-events/requirements","pages":null},{"title":"Lesson 1: Create an Event Provider using App Builder","path":"resources/journaling-events/lesson1","pages":null},{"title":"Lesson 2: Create the Event Consumer using Journaling API","path":"resources/journaling-events/lesson2","pages":null},{"title":"Lesson 3: End to end test","path":"resources/journaling-events/lesson3","pages":null},{"title":"Well done","path":"resources/journaling-events/welldone","pages":null}]},{"title":"Building an App Builder Todo App","path":"resources/todo-app/index.md","pages":[{"title":"Requirements","path":"resources/todo-app/requirements","pages":null},{"title":"Lesson 1: Create a New App Builder App with the React Spectrum template","path":"resources/todo-app/lesson1","pages":null},{"title":"Lesson 2: Setup Runtime actions","path":"resources/todo-app/lesson2","pages":null},{"title":"Lesson 3: Setup the CreateTodoList component","path":"resources/todo-app/lesson3","pages":null},{"title":"Lesson 4: Setup the Todo component","path":"resources/todo-app/lesson4","pages":null},{"title":"Lesson 5: Setup the TodoList component","path":"resources/todo-app/lesson5","pages":null},{"title":"Lesson 6: Bringing the pieces together to build the App","path":"resources/todo-app/lesson6","pages":null},{"title":"Well done","path":"resources/todo-app/welldone","pages":null}]},{"title":"Event-Driven App Builder Apps","path":"resources/event-driven/index.md","pages":[{"title":"Requirements","path":"resources/event-driven/requirements","pages":null},{"title":"Lesson 1: Create a New App Builder App from Template","path":"resources/event-driven/lesson1","pages":null},{"title":"Lesson 2: Register the App as Event Provider","path":"resources/event-driven/lesson2","pages":null},{"title":"Lesson 3: Fire an Event","path":"resources/event-driven/lesson3","pages":null},{"title":"Lesson 4: Consume Events","path":"resources/event-driven/lesson4","pages":null},{"title":"Well Done","path":"resources/event-driven/welldone","pages":null}]},{"title":"Scheduling Cron Jobs","path":"resources/cron-jobs/index.md","pages":[{"title":"Requirements","path":"resources/cron-jobs/requirements","pages":null},{"title":"Lesson 1: Bootstrap a Headless App","path":"resources/cron-jobs/lesson1","pages":null},{"title":"Lesson 2: Set up Alarm Feed with Trigger and Rule","path":"resources/cron-jobs/lesson2","pages":null},{"title":"Lesson 3: Types of Alarm Feed","path":"resources/cron-jobs/lesson3","pages":null},{"title":"Well done","path":"resources/cron-jobs/welldone","pages":null}]},{"title":"Custom Asset Compute Worker","path":"resources/custom-asset-compute-worker/index.md","pages":[{"title":"Requirements","path":"resources/custom-asset-compute-worker/requirements","pages":null},{"title":"How AEM as Cloud assets works","path":"resources/custom-asset-compute-worker/aem-cloud-assets","pages":null},{"title":"Architecture of our worker","path":"resources/custom-asset-compute-worker/our-worker","pages":null},{"title":"Configure services","path":"resources/custom-asset-compute-worker/lesson1","pages":null},{"title":"Local environment setup","path":"resources/custom-asset-compute-worker/lesson2","pages":null},{"title":"Implement the worker","path":"resources/custom-asset-compute-worker/lesson3","pages":null},{"title":"Test the worker","path":"resources/custom-asset-compute-worker/lesson4","pages":null},{"title":"Setup AEM to use the worker","path":"resources/custom-asset-compute-worker/lesson5","pages":null},{"title":"Well Done","path":"resources/custom-asset-compute-worker/welldone","pages":null}]},{"title":"CI/CD in App Builder Apps","path":"resources/ci-cd/index.md","pages":[{"title":"Requirements","path":"resources/ci-cd/requirements","pages":null},{"title":"Lesson 1: Setup CI/CD","path":"resources/ci-cd/lesson1","pages":null},{"title":"Lesson 2: Monitoring CI/CD","path":"resources/ci-cd/lesson2","pages":null},{"title":"Lesson 3: Custom CI/CD workflow","path":"resources/ci-cd/lesson3","pages":null},{"title":"Well done","path":"resources/ci-cd/welldone","pages":null}]},{"title":"Debugging App Builder Apps With Wskdebug","path":"resources/debugging/index.md","pages":[{"title":"Requirements","path":"resources/debugging/requirements","pages":null},{"title":"Lesson 1: Getting familiar with Debugger","path":"resources/debugging/lesson1","pages":null},{"title":"Lesson 2: Debugging Application Code","path":"resources/debugging/lesson2","pages":null},{"title":"Lesson 3: Managing Application Logs","path":"resources/debugging/lesson3","pages":null},{"title":"Well Done","path":"resources/debugging/welldone","pages":null}]},{"title":"Customer Profiles Dashboard","path":"resources/customer-dashboard/index.md","pages":[{"title":"Requirements","path":"resources/customer-dashboard/requirements","pages":null},{"title":"Lesson 1: Create a New App Builder App from Campaign Standard Template","path":"resources/customer-dashboard/lesson1","pages":null},{"title":"Lesson 2: Explore the App Builder App","path":"resources/customer-dashboard/lesson2","pages":null},{"title":"Lesson 3: Run the App Builder App Locally","path":"resources/customer-dashboard/lesson3","pages":null},{"title":"Lesson 4: List All Customer Profiles on the UI","path":"resources/customer-dashboard/lesson4","pages":null},{"title":"Lesson 5: Add Personalized Promotion Emails Triggering","path":"resources/customer-dashboard/lesson5","pages":null},{"title":"Well Done","path":"resources/customer-dashboard/welldone","pages":null}]},{"title":"App Builder Headless App","path":"resources/barcode-reader/index.md","pages":[{"title":"Requirements","path":"resources/barcode-reader/requirements","pages":null},{"title":"Lesson 1: Bootstrap a Headless App","path":"resources/barcode-reader/bootstrap","pages":null},{"title":"Lesson 2: Writing a Serverless Action","path":"resources/barcode-reader/barcode","pages":null},{"title":"Lesson 3: Unit and E2E Tests","path":"resources/barcode-reader/test","pages":null},{"title":"Well done","path":"resources/barcode-reader/welldone","pages":null}]},{"title":"Spectrum Introduction","path":"resources/spectrum-intro/index.md","pages":[{"title":"Lesson 1: What is Spectrum ?","path":"resources/spectrum-intro/lesson1","pages":null},{"title":"Lesson 2: Using Spectrum CSS","path":"resources/spectrum-intro/lesson2","pages":null},{"title":"Lesson 3: Using React Spectrum","path":"resources/spectrum-intro/lesson3","pages":null},{"title":"Lesson 4: Using React Spectrum in App Builder","path":"resources/spectrum-intro/lesson4","pages":null},{"title":"Well done","path":"resources/spectrum-intro/welldone","pages":null}]}]},{"title":"Sample Apps","path":"resources/sample_apps/index.md","header":null,"pages":[{"title":"Code Snippets","path":"resources/sample_apps/code_snippets/index.md","pages":[{"title":"Caching HTTP responses","path":"resources/sample_apps/code_snippets/index.md","pages":null},{"title":"App Builder Files SDK","path":"resources/sample_apps/code_snippets/files.md","pages":null},{"title":"App Builder State SDK","path":"resources/sample_apps/code_snippets/state.md","pages":null},{"title":"I/O Events handler","path":"resources/sample_apps/code_snippets/events.md","pages":null},{"title":"Real-time data from Adobe Analytics API 1.4","path":"resources/sample_apps/code_snippets/analytics.md","pages":null}]}]},{"title":"Videos","path":"resources/videos/index.md","header":null,"pages":[{"title":"Introducing App Builder","path":"resources/videos/overview/introduction.md","pages":null},{"title":"Getting Started","path":"resources/videos/overview/getting-started.md","pages":null},{"title":"Architecture","path":"resources/videos/overview/architecture.md","pages":null},{"title":"A Full Security Overview","path":"resources/videos/overview/security.md","pages":null},{"title":"User Journey","path":"resources/videos/overview/e2e-user-journey.md","pages":null},{"title":"Projects and Workspaces","path":"resources/videos/exploring/projects-and-workspaces.md","pages":null},{"title":"React Spectrum","path":"resources/videos/exploring/react-spectrum.md","pages":null},{"title":"Custom Events","path":"resources/videos/exploring/custom-events.md","pages":null},{"title":"CI/CD","path":"resources/videos/exploring/ci-cd.md","pages":null},{"title":"Debugging","path":"resources/videos/exploring/debugging.md","pages":null},{"title":"Learning Resources","path":"resources/videos/exploring/learning-resources.md","pages":null},{"title":"Dashboard Case Study","path":"resources/videos/exploring/dashboard-case-study.md","pages":null},{"title":"ODE Case Study","path":"resources/videos/exploring/ode-case-study.md","pages":null},{"title":"Deep Dive Use Cases","path":"resources/videos/exploring/deep-dive-use-cases.md","pages":null},{"title":"Live Wired Sneak","path":"resources/videos/exploring/live-wired-sneak.md","pages":null},{"title":"Softcrylic Partner Showcase","path":"resources/videos/exploring/softcrylic-showcase.md","pages":null},{"title":"App Builder Deep Dive","path":"resources/videos/developers-live/deep-dive.md","pages":null},{"title":"Asset Compute Service Extensibility","path":"resources/videos/developers-live/asset-compute-service-extensibility.md","pages":null},{"title":"Extend Adobe Experience Cloud","path":"resources/videos/developers-live/extend-experience-cloud.md","pages":null}]},{"title":"Blog Articles","path":"resources/blog_articles.md","header":null,"pages":null}]}}}} \ No newline at end of file diff --git a/resources/asset-compute-worker-ps-api/index.html b/resources/asset-compute-worker-ps-api/index.html index c60742a09..5a9ef439b 100644 --- a/resources/asset-compute-worker-ps-api/index.html +++ b/resources/asset-compute-worker-ps-api/index.html @@ -108,4 +108,4 @@ );height:var(--spectrum-global-dimension-size-600);left:0;right:0;margin-left:0;margin-right:0;background-color:var(--spectrum-global-color-gray-50);border-bottom:var(--spectrum-global-dimension-size-10) solid var(--spectrum-global-color-gray-200);}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Build AEM Asset Compute Worker with Photoshop API

    Many rendition requirements such as converting to formats and resizing images are addressed by Processing Profiles in Experience Manager as a Cloud Service (AEMaaCS). More complex business requirements may need a custom-created solution that suits an organization’s needs. Asset Compute Service can be extended by creating custom applications that are called from Processing Profiles in Experience Manager. These custom applications cater to the supported use cases.

    With the support of Photoshop APIs, that becomes even easier. The Photoshop magics are now available on the cloud, at scale. It helps to automate repetitive design tasks and keep your team doing what they do best.

    This codelab will show you how to build an AEM Assets Compute Worker using App Builder and Photoshop APIs to generate custom image renditions.

    For your convenience, we provide a sample project as the result of this codelab at AdobeDocs/adobeio-samples-assets-compute-photoshop.

    • Privacy
    • Terms of Use
    • Do not sell or share my personal information
    • AdChoices
    Copyright © 2024 Adobe. All rights reserved.
    \ No newline at end of file + );right:0;width:var(--spectrum-global-dimension-size-300);background:-webkit-linear-gradient(0deg, rgba(255, 255, 255, 0), white);z-index:1;}}
    Overview Getting Started Guides Resources
    Edit in GitHubLog an issue

    Build AEM Asset Compute Worker with Photoshop API

    Many rendition requirements such as converting to formats and resizing images are addressed by Processing Profiles in Experience Manager as a Cloud Service (AEMaaCS). More complex business requirements may need a custom-created solution that suits an organization’s needs. Asset Compute Service can be extended by creating custom applications that are called from Processing Profiles in Experience Manager. These custom applications cater to the supported use cases.

    With the support of Photoshop APIs, that becomes even easier. The Photoshop magics are now available on the cloud, at scale. It helps to automate repetitive design tasks and keep your team doing what they do best.

    This codelab will show you how to build an AEM Assets Compute Worker using App Builder and Photoshop APIs to generate custom image renditions.

    For your convenience, we provide a sample project as the result of this codelab at AdobeDocs/adobeio-samples-assets-compute-photoshop.

    • Privacy
    • Terms of Use
    • Do not sell or share my personal information
    • AdChoices
    Copyright © 2024 Adobe. All rights reserved.
    \ No newline at end of file diff --git a/resources/asset-compute-worker-ps-api/lesson1/index.html b/resources/asset-compute-worker-ps-api/lesson1/index.html index aeea3965e..9f725a67a 100644 --- a/resources/asset-compute-worker-ps-api/lesson1/index.html +++ b/resources/asset-compute-worker-ps-api/lesson1/index.html @@ -123,4 +123,4 @@ to toggle all, <i> to invert selection) ❯◯ DX Experience Cloud SPA ◯ DX Asset Compute Worker -Copied to your clipboard
    $ aio app init <app-name>
    Retrieving information from [!DNL Adobe I/O] Console.
    ? Select Org My Adobe Org
    ? Select Project MyFireflyProject
    ? Which extension point(s) do you wish to implement ? (Press <space> to select, <a>
    to toggle all, <i> to invert selection)
    ❯◯ DX Experience Cloud SPA
    ◯ DX Asset Compute Worker

    Follow the rest of the prompts and open the new application in Visual Studio Code (or your favorite code editor). It contains the scaffolding and sample code for a custom application.

    The template application leverages the Asset Compute SDK for the uploading, downloading, and orchestration of application renditions so developers only need to implement the custom application logic. Inside the actions/<worker-name> folder, the index.js file is where to add the custom application code.

    • Privacy
    • Terms of Use
    • Do not sell or share my personal information
    • AdChoices
    Copyright © 2024 Adobe. All rights reserved.
    \ No newline at end of file +Copied to your clipboard
    $ aio app init <app-name>
    Retrieving information from [!DNL Adobe I/O] Console.
    ? Select Org My Adobe Org
    ? Select Project MyFireflyProject
    ? Which extension point(s) do you wish to implement ? (Press <space> to select, <a>
    to toggle all, <i> to invert selection)
    ❯◯ DX Experience Cloud SPA
    ◯ DX Asset Compute Worker

    Follow the rest of the prompts and open the new application in Visual Studio Code (or your favorite code editor). It contains the scaffolding and sample code for a custom application.

    The template application leverages the Asset Compute SDK for the uploading, downloading, and orchestration of application renditions so developers only need to implement the custom application logic. Inside the actions/<worker-name> folder, the index.js file is where to add the custom application code.

    • Privacy
    • Terms of Use
    • Do not sell or share my personal information
    • AdChoices
    Copyright © 2024 Adobe. All rights reserved.
    \ No newline at end of file diff --git a/resources/asset-compute-worker-ps-api/lesson2/index.html b/resources/asset-compute-worker-ps-api/lesson2/index.html index d800b2912..540e6b401 100644 --- a/resources/asset-compute-worker-ps-api/lesson2/index.html +++ b/resources/asset-compute-worker-ps-api/lesson2/index.html @@ -133,4 +133,4 @@ await fs.copyFile(source.path, rendition.path); }); Copied to your clipboard
    const { worker, SourceCorruptError } = require('@adobe/asset-compute-sdk');
    const fs = require('fs').promises;
    -
    exports.main = worker(async (source, rendition) => {
    await fs.copyFile(source.path, rendition.path);
    });
    • Privacy
    • Terms of Use
    • Do not sell or share my personal information
    • AdChoices
    Copyright © 2024 Adobe. All rights reserved.
    \ No newline at end of file +
    exports.main = worker(async (source, rendition) => {
    await fs.copyFile(source.path, rendition.path);
    });
    • Privacy
    • Terms of Use
    • Do not sell or share my personal information
    • AdChoices
    Copyright © 2024 Adobe. All rights reserved.
    \ No newline at end of file diff --git a/resources/asset-compute-worker-ps-api/lesson3/index.html b/resources/asset-compute-worker-ps-api/lesson3/index.html index 6f6b1a6ae..e0eacaf1e 100644 --- a/resources/asset-compute-worker-ps-api/lesson3/index.html +++ b/resources/asset-compute-worker-ps-api/lesson3/index.html @@ -52,11 +52,11 @@ --spectrum-dialog-confirm-buttongroup-padding-top )}.spectrum-Dialog--fullscreen .spectrum-Dialog-heading,.spectrum-Dialog--fullscreenTakeover .spectrum-Dialog-heading{font-size:var(--spectrum-dialog-confirm-title-text-size)}}@media (forced-colors:active){.spectrum-Dialog{border:solid}}.spectrum-Dialog-heading{color:var(--spectrum-dialog-confirm-title-text-color,var(--spectrum-alias-heading-text-color))}.spectrum-Dialog-content,.spectrum-Dialog-footer{color:var(--spectrum-dialog-confirm-description-text-color,var(--spectrum-global-color-gray-800))}.spectrum-Dialog-typeIcon{color:var(--spectrum-dialog-confirm-icon-color,var(--spectrum-global-color-gray-900))}.spectrum-Dialog--error .spectrum-Dialog-typeIcon{color:var(--spectrum-dialog-error-icon-color,var(--spectrum-semantic-negative-icon-color))}Lesson 3: Develop custom worker calling Photoshop APIs