diff --git a/src/pages/get_started/app_builder_get_started/ai-development-tools.md b/src/pages/get_started/app_builder_get_started/ai-development-tools.md index 8c9663ea3..96ea11ac7 100644 --- a/src/pages/get_started/app_builder_get_started/ai-development-tools.md +++ b/src/pages/get_started/app_builder_get_started/ai-development-tools.md @@ -165,7 +165,7 @@ AI assistants generate better code when they understand your project structure. - Use current API versions (Workfront v21.0, AEM OpenAPI) ## Documentation -- App Builder and Runtime: https://developer.adobe.com/app-builder/docs/ +- App Builder and Runtime: https://developer.adobe.com/app-builder/docs/intro_and_overview/ ``` **For Cursor**, point to the [App Builder skills folder](https://github.com/adobe/skills) as described in the setup section above. @@ -188,7 +188,7 @@ All formats serve the same purpose: giving the AI assistant context about App Bu ## Resources -- [App Builder Documentation](https://developer.adobe.com/app-builder/docs/) +- [App Builder Documentation](https://developer.adobe.com/app-builder/docs/intro_and_overview/) - [App Builder Adobe Summit Session: Build Fast, Secure AI-Powered Integrations with Adobe App Builder - OS605](https://business.adobe.com/summit/2026/sessions/build-fast-secure-aipowered-integrations-with-adob-os605.html) - [AEM AI Coding Agents Guide](https://www.aem.live/developer/ai-coding-agents) - [MCP Server Generator](https://github.com/adobe/generator-app-remote-mcp-server-generic) diff --git a/src/pages/get_started/app_builder_get_started/app-builder-intro.md b/src/pages/get_started/app_builder_get_started/app-builder-intro.md index 1e4291058..52033f6c5 100644 --- a/src/pages/get_started/app_builder_get_started/app-builder-intro.md +++ b/src/pages/get_started/app_builder_get_started/app-builder-intro.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: How it Works +description: 'Overview of how App Builder works and what you''ll learn in the get-started tutorial series.' --- # Get Started with App Builder diff --git a/src/pages/get_started/app_builder_get_started/first-app.md b/src/pages/get_started/app_builder_get_started/first-app.md index 8b7f594fb..f7c8096f0 100644 --- a/src/pages/get_started/app_builder_get_started/first-app.md +++ b/src/pages/get_started/app_builder_get_started/first-app.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Creating your First App Builder Application +description: 'Step-by-step guide to creating, configuring, and deploying your first App Builder application.' --- # Create your First App Builder Application @@ -66,7 +67,7 @@ Follow these instructions to set up your project: ![Workspace](../../images/console-6.png) -To learn more about Adobe Developer Console, please refer to [Console Documentation](https://developer.adobe.com/developer-console/docs). +To learn more about Adobe Developer Console, please refer to [Console Documentation](https://developer.adobe.com/developer-console/docs/guides/). ## 3. Sign in from the CLI @@ -241,9 +242,9 @@ You may not see all the options listed below on your command line, because they - **Adobe Target**, including dependencies and examples of accessing the [Adobe Target API](https://developers.adobetarget.com/api/#admin-apis) - **Adobe Analytics**, including dependencies and examples of accessing the [Adobe Analytics 2.0 API](https://adobedocs.github.io/analytics-2.0-apis/) -- **Adobe Audience Manager: Customer Data**, including dependencies and examples of accessing the [Adobe Audience Manager Customer Data API](https://docs.adobe.com/content/help/en/audience-manager/user-guide/api-and-sdk-code/api.html) -- **Adobe Campaign Standard**, including dependencies and examples of accessing the [Adobe Campaign Standard (ACS) API](https://docs.adobe.com/content/help/en/campaign-standard/using/working-with-apis/get-started-apis.html) -- **Adobe Experience Platform: Realtime Customer Profile**, including dependencies and examples of accessing the [Realtime Customer Profile API of Adobe Experience Platform](https://developer.adobe.com/experience-platform-apis/references/profile/) +- **Adobe Audience Manager: Customer Data**, including dependencies and examples of accessing the [Adobe Audience Manager Customer Data API](https://experienceleague.adobe.com/en/docs/audience-manager/user-guide/api-and-sdk-code/api) +- **Adobe Campaign Standard**, including dependencies and examples of accessing the [Adobe Campaign Standard (ACS) API](https://experienceleague.adobe.com/en/docs/campaign-standard/using/working-with-apis/get-started-apis) +- **Adobe Experience Platform: Realtime Customer Profile**, including dependencies and examples of accessing the [Realtime Customer Profile API of Adobe Experience Platform](https://developer.adobe.com/experience-platform-apis/references/profile) - **Generic**, a generic back-end action with hello-world flow that can be reused and modified, for simple serverless computing, third-party API integration, and more If you included `Web Assets` under Adobe I/O App features above, you will be given the choice to include the React Spectrum-based UI template or a raw HTML/JS UI template: @@ -256,7 +257,7 @@ If you included `Web Assets` under Adobe I/O App features above, you will be giv - The `React Spectrum 3 UI` template adds a React-based UI with [React Spectrum](https://react-spectrum.adobe.com/) components included -- The `Raw HTML/JS UI` will add a raw HTML/JS/CSS UI with [Spectrum CSS](https://opensource.adobe.com/spectrum-css) styles included. +- The `Raw HTML/JS UI` will add a raw HTML/JS/CSS UI with [Spectrum CSS](https://opensource.adobe.com/spectrum-css/) styles included. Both templates come with boilerplate code needed to integrate your App Builder application with [Adobe Experience Cloud](../../guides/app_builder_guides/exc_app/aec-integration.md) diff --git a/src/pages/get_started/app_builder_get_started/index.md b/src/pages/get_started/app_builder_get_started/index.md index 7a95efecc..61b235a0e 100644 --- a/src/pages/get_started/app_builder_get_started/index.md +++ b/src/pages/get_started/app_builder_get_started/index.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: App Builder and Adobe I/O Runtime +description: 'Introduction to App Builder and Adobe I/O Runtime for building cloud-native applications on Adobe infrastructure.' --- # App Builder and Adobe I/O Runtime diff --git a/src/pages/get_started/app_builder_get_started/publish-app.md b/src/pages/get_started/app_builder_get_started/publish-app.md index 742fe2d05..7983f53d2 100644 --- a/src/pages/get_started/app_builder_get_started/publish-app.md +++ b/src/pages/get_started/app_builder_get_started/publish-app.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Publishing Your First App Builder Application +description: 'How to submit, review, and publish App Builder SPAs through Developer Console, Adobe Exchange, and Adobe Experience Cloud.' --- # Publishing Your First App Builder Application @@ -29,53 +30,53 @@ The final app is based on the Production workspace, so it is important to make s To begin the approval process, navigate to the Production workspace and select **Submit for approval** in the top-right corner of the screen or **Approval** in the left navigation. -![](../../images/approval-production-overview.png) +![Approval screen in the Production workspace](../../images/approval-production-overview.png) On the Approval screen you will be able to fill out the **App Submission Details** form. These details will be visible to people who use your app and administrators who review your application. Once the form is completed, select **Submit** to begin the approval process. -![](../../images/approval-app-submission-details.png) +![App submission details form](../../images/approval-app-submission-details.png) You will be returned to the Approval screen, where the Status of your application should now be "In Review." -![](../../images/approval-in-review.png) +![Approval screen showing application status In Review](../../images/approval-in-review.png) Following a review by your organization administrators, your application will either be approved and published, or rejected. If it is rejected, your Admin will be able to include a note telling you what went wrong so you can fix the error and resubmit. -![](../../images/approval-app-rejected.png) +![Approval screen showing a rejected application](../../images/approval-app-rejected.png) ### Published app Once your application has been submitted for approval, the Admin can see it pending for review in Adobe Exchange. The next section will describe Admin approval flow from Adobe Exchange. From Console side, once an application has been approved, its Status will be updated to Published and the application will be available for use by employees within your enterprise organization. -![](../../images/approval-published.png) +![Approval screen showing a published application](../../images/approval-published.png) ## Administrator review of your app from Adobe Exchange After you submit an application for approval, your organization's administrators can find it in Adobe Exchange under Manage → App Builder applications → Private distribution. Your submitted application will appear with a Pending Review status. -![](../../images/approval-myexchange.png) +![Pending Review listing in Adobe Exchange private distribution](../../images/approval-myexchange.png) The reviewer can review this app and approve it or reject it. If the application is rejected, your admin will be able to include a note telling you what went wrong, so you can fix the error and resubmit. -![](../../images/approval-myexchange-review.png) +![Adobe Exchange app review screen for an administrator](../../images/approval-myexchange-review.png) After the application is approved, the reviewer can also unpublish the app, requiring the app owner to resubmit it for review and approval. -![](../../images/approval-myexchange-revoke.png) +![Adobe Exchange unpublish action for an approved application](../../images/approval-myexchange-revoke.png) ## Check your published app at Experience Cloud Once the reviewer has approved your application, you will be notified by email and your app will appear at Adobe Experience Cloud: -![](../../images/approval-myapp-home.png) +![Approved app on the Adobe Experience Cloud home page](../../images/approval-myapp-home.png) Click on `App Builder Apps` to discover all the applications published for your organization. -![](../../images/approval-myapp-customapps.png) +![App Builder Apps list in Adobe Experience Cloud](../../images/approval-myapp-customapps.png) -# Publishing your headless App Builder app +## Publishing your headless App Builder app The `App Builder Apps` Adobe Experience Cloud lists only App Builder SPAs. If you publish a headless app, please refer to our Code Lab [Headless Apps with App Builder](../../resources/barcode-reader/index.md). diff --git a/src/pages/get_started/app_builder_get_started/set-up.md b/src/pages/get_started/app_builder_get_started/set-up.md index 80b5159da..fdb964832 100644 --- a/src/pages/get_started/app_builder_get_started/set-up.md +++ b/src/pages/get_started/app_builder_get_started/set-up.md @@ -5,7 +5,7 @@ keywords: - Local Environment - Set up title: Set Up Access, Environment, and Tools -description: 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. +description: Get the access, credentials, and local tooling you need to start building App Builder applications. --- # Set Up Access, Environment, and Tools @@ -22,7 +22,7 @@ Here you'll learn what systems you need to access, how to access them, and how t - Customers should request access from their account manager or their company IT/Marketing admin - - Partners should request App Builder access from their partner manager, or Sandbox access though the [Adobe Solution Partner Portal](https://solutionpartners.adobe.com/home.html) + - Partners should request App Builder access from their partner manager, or Sandbox access though the [Adobe Solution Partner Portal](https://partners.adobe.com/digitalexperience/) **App Builder access** is only available with a purchased license. diff --git a/src/pages/get_started/app_builder_get_started/troubleshoot.md b/src/pages/get_started/app_builder_get_started/troubleshoot.md index f3f43d4b0..6c9ce5b3c 100644 --- a/src/pages/get_started/app_builder_get_started/troubleshoot.md +++ b/src/pages/get_started/app_builder_get_started/troubleshoot.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Troubleshooting Common Issues +description: 'Troubleshooting guide for the most common issues encountered while developing App Builder applications.' --- # Troubleshooting Common Issues diff --git a/src/pages/get_started/index.md b/src/pages/get_started/index.md index cd1d69bc2..473e14e4d 100644 --- a/src/pages/get_started/index.md +++ b/src/pages/get_started/index.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - App Builder + - Getting Started + - Runtime +title: 'Getting Started with App Builder' +description: 'Choose between the App Builder and Runtime getting-started paths and explore the rest of the App Builder documentation.' +--- + # Getting Started with App Builder Welcome to the Getting Started section of App Builder documentation. Here you'll find comprehensive guides to help you start working with App Builder and Adobe I/O Runtime. diff --git a/src/pages/get_started/runtime_getting_started/activations.md b/src/pages/get_started/runtime_getting_started/activations.md index b5dfcd204..3e8dfb1e5 100644 --- a/src/pages/get_started/runtime_getting_started/activations.md +++ b/src/pages/get_started/runtime_getting_started/activations.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Activations + - OpenWhisk +title: 'Retrieve Action Invocation Results' +description: 'Use aio rt:activation commands to list and retrieve invocation records, logs, and responses for Adobe I/O Runtime actions.' +--- + # Retrieve Action Invocation Results The activation record of an action invocation contains information to help you understand what happened. It contains the invocation's: diff --git a/src/pages/get_started/runtime_getting_started/deploy.md b/src/pages/get_started/runtime_getting_started/deploy.md index 2e7217bfe..0e7b9ee3d 100644 --- a/src/pages/get_started/runtime_getting_started/deploy.md +++ b/src/pages/get_started/runtime_getting_started/deploy.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Actions + - Deploy +title: 'Deploy Your First Adobe I/O Runtime Action' +description: 'Create, deploy, and test your first Adobe I/O Runtime action using the aio CLI.' +--- + # Deploy Your First Adobe I/O Runtime Action In this step, you will create an I/O Runtime action, test it, and deploy it. diff --git a/src/pages/get_started/runtime_getting_started/entities.md b/src/pages/get_started/runtime_getting_started/entities.md index cca000b2c..7ca0a79cd 100644 --- a/src/pages/get_started/runtime_getting_started/entities.md +++ b/src/pages/get_started/runtime_getting_started/entities.md @@ -1,3 +1,16 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Actions + - Namespaces + - Triggers + - Rules + - Packages +title: 'Entities and Core Concepts' +description: 'Glossary of Adobe I/O Runtime entities including actions, namespaces, triggers, rules, packages, sequences, and feeds.' +--- + # Entities and Core Concepts Adobe I/O Runtime's computing model is composed of functional elements or entities, and the interactions among them. This glossary defines the most important entities, outlines their interactions, and links to relevant resources in the Guides and elsewhere in this documentation. diff --git a/src/pages/get_started/runtime_getting_started/how-runtime-works.md b/src/pages/get_started/runtime_getting_started/how-runtime-works.md index d7b5e86c8..edb2ab5e6 100644 --- a/src/pages/get_started/runtime_getting_started/how-runtime-works.md +++ b/src/pages/get_started/runtime_getting_started/how-runtime-works.md @@ -1,14 +1,18 @@ -```yaml +--- keywords: - - [need keywords] -title: How I/O Runtime works -``` + - Adobe I/O + - Runtime + - OpenWhisk + - Architecture +title: 'How I/O Runtime works' +description: 'How Adobe I/O Runtime uses the Apache OpenWhisk architecture to provide function-as-a-service execution.' +--- # How Adobe I/O Runtime Works Adobe I/O Runtime is based on the open source Apache OpenWhisk platform, and uses the OpenWhisk architecture to provide function-as-a-service. Here is a high-level look at the architecture: -![The OpenWhisk architecture](https://developer.adobe.com/runtime/docs/static/2f65d806954291bfd2a474f3c8b2f9f4/73c8b/howitworks_f01.png) +![The OpenWhisk architecture](../../images/howitworks_f01.png) The figure shows how Runtime (via OpenWhisk) is set up to respond to events and direct invocations. Whether the event comes from an external or internal source, it is associated with a trigger, which invokes an action according to any rules that are applied. Actions can also be invoked directly through the Runtime (OpenWhisk) CLI or the REST API. @@ -54,13 +58,13 @@ Host: $openwhiskEndpoint Note the `$userNamespace` variable. Runtime requests require access to the same namespace in which the action was created. When users are configured for Runtime accounts, they are given their own personal namespaces. -![](../../images/howitworks_f02.png) +![Diagram of the Runtime internal process flow](../../images/howitworks_f02.png) *Internal process flow* #### Receiving: nginx -[Nginx](https://www.nginx.com/) is a reverse proxy and HTTP server. The OpenWhisk architecture uses it to terminal SSL and forward the HTTP request to the next component in the processing loop. +[Nginx](https://www.f5.com/products/nginx) is a reverse proxy and HTTP server. The OpenWhisk architecture uses it to terminal SSL and forward the HTTP request to the next component in the processing loop. #### Interpreting: the Controller diff --git a/src/pages/get_started/runtime_getting_started/index.md b/src/pages/get_started/runtime_getting_started/index.md index fdb415322..92812a576 100644 --- a/src/pages/get_started/runtime_getting_started/index.md +++ b/src/pages/get_started/runtime_getting_started/index.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Getting Started + - Serverless +title: 'Get Started with Adobe I/O Runtime' +description: 'Introduction to Adobe I/O Runtime, the serverless computing platform that powers App Builder applications.' +--- + # Get Started with Adobe I/O Runtime Adobe I/O Runtime is Adobe’s serverless computing platform based on Apache OpenWhisk, an open-source project of the Apache Software Foundation. Runtime lets you deploy your own custom code to the cloud and call it as needed, so you can execute functions, also called "actions," from the cloud without deploying or configuring a server. diff --git a/src/pages/get_started/runtime_getting_started/resources.md b/src/pages/get_started/runtime_getting_started/resources.md index 90d7dac65..b9d924dc5 100644 --- a/src/pages/get_started/runtime_getting_started/resources.md +++ b/src/pages/get_started/runtime_getting_started/resources.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - OpenWhisk + - Resources + - Support +title: 'Resources and support' +description: 'Resources, social media accounts, and community support channels for Adobe I/O Runtime developers.' +--- + # Resources and support @@ -6,11 +17,11 @@ Adobe I/O Runtime is built on top of Apache OpenWhisk, so blogs, documentation, ## Resources -A good starting point is the [Apache OpenWhisk repository](https://github.com/apache/incubator-openwhisk/tree/master/docs). +A good starting point is the [Apache OpenWhisk repository](https://github.com/apache/openwhisk/tree/master/docs). ## Social media -You can follow our team on [Twitter](https://twitter.com/adobeio), [Medium](https://medium.com/adobetech/tagged/platform), and [Youtube](https://www.youtube.com/channel/UCDtYqOjS9Eq9gacLcbMwhhQ). +You can follow our team on [Twitter](https://x.com/adobeio), [Medium](https://medium.com/adobetech/tagged/platform), and [Youtube](https://www.youtube.com/channel/UCDtYqOjS9Eq9gacLcbMwhhQ). ## Support diff --git a/src/pages/get_started/runtime_getting_started/setup.md b/src/pages/get_started/runtime_getting_started/setup.md index a4d25a18f..592af7312 100644 --- a/src/pages/get_started/runtime_getting_started/setup.md +++ b/src/pages/get_started/runtime_getting_started/setup.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Setup + - CLI + - Namespace +title: 'Set up Your Environment' +description: 'Install the aio CLI, create a Developer Console namespace, and sign in to start using Adobe I/O Runtime.' +--- + # Set up Your Environment ## Get access diff --git a/src/pages/get_started/runtime_getting_started/understanding-runtime.md b/src/pages/get_started/runtime_getting_started/understanding-runtime.md index 609842707..2649308e8 100644 --- a/src/pages/get_started/runtime_getting_started/understanding-runtime.md +++ b/src/pages/get_started/runtime_getting_started/understanding-runtime.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Programming Model + - OpenWhisk +title: 'Understanding Adobe I/O Runtime' +description: 'Programming model, components, and architecture of Adobe I/O Runtime, the serverless platform that powers App Builder.' +--- + # Understanding Adobe I/O Runtime Serverless platforms greatly simplify the development and operation of business applications. Successful use of them takes advantage of their many strengths, while working around their limitations. This Quick Start Guide explores the most critical of these considerations as they apply to I/O Runtime. @@ -12,19 +22,19 @@ Actions may be invoked by HTTP calls (RESTful or HTTP) or by other actions. Acti Actions may be organized into any number of **packages** within a namespace. Packages are used to organize the code, manage different versions of the same action, or share code with other tenants or applications. Packages marked **shareable** may be bound to the namespaces of anyone who has their full name, in the manner of symbolic links. -![](../../images/quickstart-programming-model.png) +![Diagram of the Runtime programming model with actions, namespaces, and packages](../../images/quickstart-programming-model.png) -![](../../images/quickstart-shared-packages.png) +![Diagram showing how shareable packages bind to other namespaces](../../images/quickstart-shared-packages.png) Actions may be invoked anonymously - with no authorization required - or with authentication. Runtime supports basic authorization Developers can implement their own auth. We will be adding support for IMS based auth. ## Understanding I/O Runtime components -Adobe I/O Runtime is built on the Apache OpenWhisk open-source project, so many resources written for Apache OpenWhisk also apply to Adobe I/O Runtime. The [Apache OpenWhisk repository](https://github.com/apache/incubator-openwhisk/tree/master/docs) is a useful resource. +Adobe I/O Runtime is built on the Apache OpenWhisk open-source project, so many resources written for Apache OpenWhisk also apply to Adobe I/O Runtime. The [Apache OpenWhisk repository](https://github.com/apache/openwhisk/tree/master/docs) is a useful resource. This diagram shows the high-level architecture of I/O Runtime built on OpenWhisk: -![](../../images/quickstart-components.png) +![High-level Runtime architecture diagram built on OpenWhisk](../../images/quickstart-components.png) This is the sequence by which Runtime components execute user code when an action is executed: @@ -144,7 +154,7 @@ This is just the beginning for Adobe I/O Runtime. We encourage you to help us en ### Social media -You can follow the Adobe I/O team on [Twitter](https://twitter.com/adobeio), [Medium](https://medium.com/adobetech/tagged/platform), and [Youtube](https://www.youtube.com/channel/UCDtYqOjS9Eq9gacLcbMwhhQ). +You can follow the Adobe I/O team on [Twitter](https://x.com/adobeio), [Medium](https://medium.com/adobetech/tagged/platform), and [Youtube](https://www.youtube.com/channel/UCDtYqOjS9Eq9gacLcbMwhhQ). ### Support diff --git a/src/pages/guides/app_builder_guides/application-state.md b/src/pages/guides/app_builder_guides/application-state.md index d8ca31557..8684d63e5 100644 --- a/src/pages/guides/app_builder_guides/application-state.md +++ b/src/pages/guides/app_builder_guides/application-state.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Storage Options +description: 'Compare Database, Files, and State storage services available out-of-the-box for persisting App Builder application data.' --- diff --git a/src/pages/guides/app_builder_guides/application_logging/azure-log-analytics.md b/src/pages/guides/app_builder_guides/application_logging/azure-log-analytics.md index d189fc09e..824706aa2 100644 --- a/src/pages/guides/app_builder_guides/application_logging/azure-log-analytics.md +++ b/src/pages/guides/app_builder_guides/application_logging/azure-log-analytics.md @@ -10,6 +10,7 @@ keywords: - Azure - Azure Log Analytics title: Forwarding Logs to Azure Log Analytics +description: 'Configure an App Builder application to forward logs to an Azure Log Analytics workspace.' --- # Forwarding Logs to Azure Log Analytics @@ -18,7 +19,7 @@ This guide covers configuration of your App Builder application to forward logs ## Prerequisites -1. Access to an Azure Log Analytics workspace. If you need to create one, follow [Azure's guide](https://docs.microsoft.com/en-us/azure/azure-monitor/logs/quick-create-workspace) +1. Access to an Azure Log Analytics workspace. If you need to create one, follow [Azure's guide](https://learn.microsoft.com/en-us/azure/azure-monitor/logs/quick-create-workspace) 2. Local development setup for your App Builder application 3. The latest version of AIO CLI. Check by running `aio --version`; update by running `npm install -g @adobe/aio-cli` @@ -61,7 +62,7 @@ This guide covers configuration of your App Builder application to forward logs ## Next steps - If you are unable to set up log forwarding using these procedures, please visit Adobe [App Builder forums](https://experienceleaguecommunities.adobe.com/t5/app-builder/ct-p/app-builder) for support. + If you are unable to set up log forwarding using these procedures, please visit Adobe [App Builder forums](https://experienceleaguecommunities.adobe.com/) for support. Return to [Managing Application Logs](logging.md). diff --git a/src/pages/guides/app_builder_guides/application_logging/new-relic.md b/src/pages/guides/app_builder_guides/application_logging/new-relic.md index d2f36770d..71e5e407e 100644 --- a/src/pages/guides/app_builder_guides/application_logging/new-relic.md +++ b/src/pages/guides/app_builder_guides/application_logging/new-relic.md @@ -9,6 +9,7 @@ keywords: - Monitoring - New Relic title: Forwarding Logs to New Relic +description: 'Configure an App Builder application to forward logs to a New Relic deployment using an Ingest license API key.' --- # Forwarding Logs to New Relic diff --git a/src/pages/guides/app_builder_guides/application_logging/splunk-cloud.md b/src/pages/guides/app_builder_guides/application_logging/splunk-cloud.md index 5fab0bcfa..37c1250e7 100644 --- a/src/pages/guides/app_builder_guides/application_logging/splunk-cloud.md +++ b/src/pages/guides/app_builder_guides/application_logging/splunk-cloud.md @@ -10,6 +10,7 @@ keywords: - Splunk - Splunk Cloud title: Forwarding Logs to Splunk Cloud +description: 'Configure an App Builder application to forward logs to a Splunk Cloud index using the HTTP event collector.' --- # Forwarding Logs to Splunk Cloud diff --git a/src/pages/guides/app_builder_guides/application_logging/splunk-enterprise.md b/src/pages/guides/app_builder_guides/application_logging/splunk-enterprise.md index ad1b720a9..bffb43885 100644 --- a/src/pages/guides/app_builder_guides/application_logging/splunk-enterprise.md +++ b/src/pages/guides/app_builder_guides/application_logging/splunk-enterprise.md @@ -10,6 +10,7 @@ keywords: - Splunk - Splunk Enterprise title: Forwarding Logs to Splunk Enterprise +description: 'Configure an App Builder application to forward logs to a Splunk Enterprise index using the HTTP event collector.' --- # Forwarding Logs to Splunk Enterprise diff --git a/src/pages/guides/app_builder_guides/architecture_overview/app-hooks.md b/src/pages/guides/app_builder_guides/architecture_overview/app-hooks.md index 015cf81cc..ea6a2644b 100644 --- a/src/pages/guides/app_builder_guides/architecture_overview/app-hooks.md +++ b/src/pages/guides/app_builder_guides/architecture_overview/app-hooks.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: App Builder application tooling lifecycle event hooks +description: 'Reference for lifecycle event hooks you can define in app.config.yaml to run before, after, or in place of aio app commands.' --- # App Builder Application Tooling Lifecycle Event Hooks diff --git a/src/pages/guides/app_builder_guides/architecture_overview/architecture-overview.md b/src/pages/guides/app_builder_guides/architecture_overview/architecture-overview.md index de1e4eeb7..5e76d61ef 100644 --- a/src/pages/guides/app_builder_guides/architecture_overview/architecture-overview.md +++ b/src/pages/guides/app_builder_guides/architecture_overview/architecture-overview.md @@ -6,7 +6,7 @@ keywords: - SDK Library - Migration Guides title: Architecture Overview -description: An App Builder Application is a serverless application that extends Adobe Product APIs. These applications can be headless or headful. Each of these types is described in more detail in the sections that follow. +description: Overview of headless and headful App Builder application architectures and the SDK components they use to extend Adobe product APIs. --- # Architecture Overview @@ -20,7 +20,7 @@ These applications may be headless or headful, as described below. Headless applications consist of a set of serverless actions or sequences deployed to [I/O Runtime](../../../intro_and_overview/what-is-app-builder.md#what-is-adobe-io-runtime), Adobe's serverless platform. -Headless applications integrate well with remote scripts or processes that invoke them, for example [AEM Assets workflows](https://docs.adobe.com/content/help/en/experience-manager-65/assets/using/assets-workflow.html) or [ACS activities](https://docs.adobe.com/content/help/en/campaign-standard/using/managing-processes-and-data/data-management-activities/external-api.html). +Headless applications integrate well with remote scripts or processes that invoke them, for example [AEM Assets workflows](https://experienceleague.adobe.com/en/docs/experience-manager-65/content/assets/using/assets-workflow) or [ACS activities](https://experienceleague.adobe.com/en/docs/campaign-standard/using/managing-processes-and-data/data-management-activities/external-api). ### Headful applications @@ -73,14 +73,14 @@ The [main SDK library](https://github.com/adobe/aio-sdk) bundles smaller, reusab - The [Adobe Analytics](https://github.com/adobe/aio-lib-analytics) SDK library provides a client for the [Adobe Analytics 2.0 API](https://adobedocs.github.io/analytics-2.0-apis/) - The [Adobe Target](https://github.com/adobe/aio-lib-target) SDK library provides a client for the [Adobe Target 1.0 API](https://Developers.adobetarget.com/api/) -- The [Adobe Campaign Standard](https://github.com/adobe/aio-lib-campaign-standard) SDK library provides a client for the [Adobe Campaign Standard API](https://experienceleague.adobe.com/docs/campaign-standard/using/working-with-apis/get-started-apis.html?lang=en) +- The [Adobe Campaign Standard](https://github.com/adobe/aio-lib-campaign-standard) SDK library provides a client for the [Adobe Campaign Standard API](https://experienceleague.adobe.com/en/docs/campaign-standard/using/working-with-apis/get-started-apis) ##### Integration with Adobe's Identity Management System (IMS) -The [Adobe IMS SDK library](https://github.com/adobe/aio-lib-core-ims) adds authentication management capabilities to Adobe's Identity Management Services, for these scenarios: +The [Adobe IMS SDK library](https://github.com/adobe/aio-lib-ims) adds authentication management capabilities to Adobe's Identity Management Services, for these scenarios: -- [User-based (OAuth 2.0)](https://github.com/adobe/aio-lib-core-ims-oauth) -- [Technical account-based (JWT Bearer-token)](https://github.com/adobe/aio-lib-core-ims-jwt) +- [User-based (OAuth 2.0)](https://github.com/adobe/aio-lib-ims-oauth) +- [Technical account-based (JWT Bearer-token)](https://github.com/adobe/aio-lib-ims-jwt) ##### Integration with additional services provided with App Builder @@ -128,8 +128,8 @@ It lets Developers perform these actions on behalf of their App Builder applicat [CI/CD support](../deployment/cicd-for-app-builder-apps.md) provided with App Builder for App Builder applications includes: - [GitHub Actions](https://github.com/features/actions) to [setup the CLI](https://github.com/adobe/aio-cli-setup-action) and use it to [perform actions](https://github.com/adobe/aio-apps-action) such as application testing, build, and deployment -- [GitHub Workflows](https://docs.github.com/en/actions/writing-workflows) to orchestrate the GitHub Actions upon specific events triggered against the application repository -- [GitHub Secrets](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets) to store application secrets required for the execution of the GitHub Workflows against specific environments +- [GitHub Workflows](https://docs.github.com/en/actions/how-tos/write-workflows) to orchestrate the GitHub Actions upon specific events triggered against the application repository +- [GitHub Secrets](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets) to store application secrets required for the execution of the GitHub Workflows against specific environments ### Webpack diff --git a/src/pages/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum.md b/src/pages/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum.md index c84da695b..e778f71ab 100644 --- a/src/pages/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum.md +++ b/src/pages/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Introduction to React Spectrum +description: 'Introduction to the React Spectrum component library that implements Adobe''s Spectrum design language.' --- # Introduction to React Spectrum diff --git a/src/pages/guides/app_builder_guides/architecture_overview/using-sdks.md b/src/pages/guides/app_builder_guides/architecture_overview/using-sdks.md index e6ad2dc36..f9a9a9059 100644 --- a/src/pages/guides/app_builder_guides/architecture_overview/using-sdks.md +++ b/src/pages/guides/app_builder_guides/architecture_overview/using-sdks.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Using Client SDKs for Accessing Adobe APIs +description: 'Use Adobe client SDKs to call Experience Cloud APIs such as Analytics, Audience Manager, Campaign Standard, and Target.' --- # Using Client SDKs for Accessing Adobe APIs diff --git a/src/pages/guides/app_builder_guides/configuration/configuration.md b/src/pages/guides/app_builder_guides/configuration/configuration.md index b79d59329..9d790a7a0 100644 --- a/src/pages/guides/app_builder_guides/configuration/configuration.md +++ b/src/pages/guides/app_builder_guides/configuration/configuration.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - App Builder + - Configuration + - app.config.yaml +title: 'App Builder Configuration Files' +description: 'Reference for the app.config.yaml, .env, and .aio configuration files that define an App Builder application.' +--- + # App Builder Configuration Files ## Overview diff --git a/src/pages/guides/app_builder_guides/configuration/sequences.md b/src/pages/guides/app_builder_guides/configuration/sequences.md index 65e04b079..5e9df4b16 100644 --- a/src/pages/guides/app_builder_guides/configuration/sequences.md +++ b/src/pages/guides/app_builder_guides/configuration/sequences.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - App Builder + - Sequences + - OpenWhisk + - Configuration +title: 'Configuring Sequences in app.config.yaml' +description: 'Configure App Builder action sequences declaratively in app.config.yaml using the OpenWhisk wskdeploy specification.' +--- + # Configuring Sequences in app.config.yaml ## Overview @@ -31,7 +42,7 @@ Sequences are ideal when you need to: **When NOT to use sequences:** - When you need conditional logic or branching - When actions need to run in parallel -- When you need error handling between steps (use a [conductor action](https://github.com/apache/incubator-openwhisk-composer/blob/master/docs/COMBINATORS.md) instead) +- When you need error handling between steps (use a [conductor action](https://github.com/apache/openwhisk-composer/blob/master/docs/COMBINATORS.md) instead) - When latency is critical (sequences add cumulative latency as each action waits for the previous one to complete) ## Basic Syntax diff --git a/src/pages/guides/app_builder_guides/configuration/webpack-configuration.md b/src/pages/guides/app_builder_guides/configuration/webpack-configuration.md index 5d414124e..0682d684c 100644 --- a/src/pages/guides/app_builder_guides/configuration/webpack-configuration.md +++ b/src/pages/guides/app_builder_guides/configuration/webpack-configuration.md @@ -13,7 +13,7 @@ keywords: ## Overview -App Builder bundles Runtime action code using Webpack. Users can specify Webpack configurations for individual actions, sets of actions, or entire projects. See [the Webpack site](https://webpack.js.org/configuration) for configuration options. +App Builder bundles Runtime action code using Webpack. Users can specify Webpack configurations for individual actions, sets of actions, or entire projects. See [the Webpack site](https://webpack.js.org/configuration/) for configuration options. ## Configuration file diff --git a/src/pages/guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md b/src/pages/guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md index 1c80ef191..6cde0a7d6 100644 --- a/src/pages/guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md +++ b/src/pages/guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: CI/CD for App Builder Applications +description: 'Overview of continuous integration and continuous delivery options for App Builder applications.' --- # CI/CD for App Builder Applications: Overview diff --git a/src/pages/guides/app_builder_guides/deployment/cicd-using-github-actions.md b/src/pages/guides/app_builder_guides/deployment/cicd-using-github-actions.md index 493cf1f5c..ae7cfde64 100644 --- a/src/pages/guides/app_builder_guides/deployment/cicd-using-github-actions.md +++ b/src/pages/guides/app_builder_guides/deployment/cicd-using-github-actions.md @@ -70,7 +70,7 @@ Note: This guide refers to the "root of your App Builder app". The root of your ## Step 4: Add secrets to your GitHub repository -Before you can deploy your app from the CI/CD pipeline using GitHub Actions, you must add your application secrets to your repository. App Builder uses [GitHub Actions environments](https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment) to scope secrets per deployment target. To set up the `stage` environment: +Before you can deploy your app from the CI/CD pipeline using GitHub Actions, you must add your application secrets to your repository. App Builder uses [GitHub Actions environments](https://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/manage-environments) to scope secrets per deployment target. To set up the `stage` environment: 1. Open your GitHub repository 2. Navigate to the `Settings` tab > `Environments` on the left nav diff --git a/src/pages/guides/app_builder_guides/development.md b/src/pages/guides/app_builder_guides/development.md index 92fd4f19c..4328ac45c 100644 --- a/src/pages/guides/app_builder_guides/development.md +++ b/src/pages/guides/app_builder_guides/development.md @@ -4,6 +4,8 @@ keywords: - Extensibility - API Documentation - Developer Tooling +title: Local Development +description: 'Run, develop, and debug App Builder applications locally using the aio CLI development server and hot reloading.' --- # Local Development diff --git a/src/pages/guides/app_builder_guides/distribution.md b/src/pages/guides/app_builder_guides/distribution.md index dfa5d8f40..ed8be0f89 100644 --- a/src/pages/guides/app_builder_guides/distribution.md +++ b/src/pages/guides/app_builder_guides/distribution.md @@ -6,7 +6,7 @@ keywords: - Public - Private title: Distribution -description: The Developer Console and aio CLI provide features for developers to distribute their App Builder applications. This documentation focuses on the distribution step of this lifecycle. +description: How to distribute App Builder applications publicly or privately using the Developer Console and the aio CLI. --- # Distribution Overview @@ -223,7 +223,7 @@ configSchema: ### Required products -Developers of publicly distributable App Builder apps can define Adobe products that are required for their apps to work properly. The [Discover](https://developer.adobe.com/developer-distribution/experience-cloud/docs/guides/discoverandmanage/#discover) and [Acquire](https://developer.adobe.com/developer-distribution/experience-cloud/docs/guides/discoverandmanage/#acquire) sections of the distribution documentation show how these options are surfaced to customers. +Developers of publicly distributable App Builder apps can define Adobe products that are required for their apps to work properly. The [distribution documentation](https://developer.adobe.com/developer-distribution/experience-cloud/docs/guides/) shows how these options are surfaced to customers when they discover and acquire your app. #### Defining required products diff --git a/src/pages/guides/app_builder_guides/exc_app/aec-integration.md b/src/pages/guides/app_builder_guides/exc_app/aec-integration.md index b6e650c80..142c11937 100644 --- a/src/pages/guides/app_builder_guides/exc_app/aec-integration.md +++ b/src/pages/guides/app_builder_guides/exc_app/aec-integration.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Integration Guide with Adobe Experience Cloud +description: 'Integrate custom App Builder applications with the Adobe Experience Cloud unified shell using the @adobe/exc-app package.' --- # Integration with Adobe Experience Cloud diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/index.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/index.md index 2bbea8ebb..8af613187 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/index.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/index.md @@ -1,5 +1,6 @@ --- title: 'Adobe Experience Cloud App Builder: Interfaces Index' +description: 'Index of interfaces available in the Adobe Experience Cloud App Builder extensibility APIs.' --- # Interfaces Index diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref.md index 3d8be31e7..e7bb5799a 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: ObjectWithHref' +description: 'Reference for the ObjectWithHref interface that represents a solution page by its URL.' --- # Interface: ObjectWithHref diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath.md index ec6f5cb75..76d926ab0 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: ObjectWithPath' +description: 'Reference for the ObjectWithPath interface that represents a solution page by its relative path.' --- # Interface: ObjectWithPath diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapi.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapi.md index 28f9edca5..969988f13 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapi.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapi.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: PageApi' +description: 'Reference for the PageApi interface that defines page-level APIs available to Experience Cloud solutions.' --- # Interface: PageAPI diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties.md index f2ebbfe61..14dd372f0 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: PageAPIProperties' +description: 'Reference for the PageApiProperties interface defining settable page-level attributes such as title and favicon.' --- # Interface: PageAPIProperties diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/runtime.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/runtime.md index 4dfaa6098..9d5e70bde 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/runtime.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/runtime.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: Runtime' +description: 'Reference for the Runtime interface that provides unified-shell APIs and event handling for solution authors.' --- # Interface: Runtime diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-callback.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-callback.md index 84f7ac2a9..3abaeb2e3 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-callback.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-callback.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: Callback' +description: 'Reference for the Callback function signature used by Experience Cloud top bar event handlers.' --- # Interface: Callback diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig.md index 9ca7bddfb..88de8546e 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: CustomFeedbackConfig' +description: 'Reference for the CustomFeedbackConfig interface that configures a custom feedback button in the Experience Cloud top bar.' --- # Interface: CustomFeedbackConfig diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig.md index 42d20fff5..79e988c24 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: CustomSearchConfig' +description: 'Reference for the CustomSearchConfig interface that configures a custom search button in the Experience Cloud top bar.' --- # Interface: CustomSearchConfig diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig.md index 10d016931..561639269 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: ExternalFeedbackConfig' +description: 'Reference for the ExternalFeedbackConfig interface that configures an external feedback button in the Experience Cloud top bar.' --- # Interface: ExternalFeedbackConfig diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig.md index 3365608bb..b664f2cde 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: HelpCenterFeedbackConfig' +description: 'Reference for the HelpCenterFeedbackConfig interface that configures a help center feedback button in the Experience Cloud top bar.' --- # Interface: HelpCenterFeedbackConfig diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-solution.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-solution.md index 9b00df3e2..13e982fef 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-solution.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-solution.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: Solution' +description: 'Reference for the Solution interface that defines icon, title, and shortTitle attributes for the top bar solution area.' --- # Interface: Solution diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi.md index 0fc2c91f1..b673a0436 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: TopbarAPI' +description: 'Reference for the TopbarAPI interface that defines APIs for customizing the Experience Cloud top bar.' --- # Interface: TopbarAPI diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties.md index d19ffefcb..7cf356d97 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: TopbarAPIProperties' +description: 'Reference for the TopbarAPIProperties interface that lists settable attributes for the Experience Cloud top bar.' --- # Interface: TopbarAPIProperties diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userapi.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userapi.md index 5bd03768d..e263937a4 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userapi.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userapi.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: UserAPI' +description: 'Reference for the UserAPI interface that exposes user information, authentication, and IMS events to solutions.' --- # Interface: UserAPI diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userinfo.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userinfo.md index 09baccf56..303e183af 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userinfo.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/user-userinfo.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Interface: UserInfo' +description: 'Reference for the UserInfo interface describing user identity, IMS organization, and locale information.' --- # Interface: UserInfo diff --git a/src/pages/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa.md b/src/pages/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa.md index 2a7d6ef20..2968063e2 100644 --- a/src/pages/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa.md +++ b/src/pages/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa.md @@ -1,5 +1,6 @@ --- -title: 'Migration tutorial - Standalone Application to DX Experience Cloud SPA v1' +title: 'Migrate Standalone App to DX Experience Cloud SPA v1' +description: 'Migrate a standalone App Builder application to a DX Experience Cloud v1 Single-Page Application.' --- # Migrating Apps to DX Experience Cloud v1 SPAs diff --git a/src/pages/guides/app_builder_guides/exc_app/modules/page.md b/src/pages/guides/app_builder_guides/exc_app/modules/page.md index 2a92e95ea..dcc4b1cf2 100644 --- a/src/pages/guides/app_builder_guides/exc_app/modules/page.md +++ b/src/pages/guides/app_builder_guides/exc_app/modules/page.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'External module: page' +description: 'Reference for the Experience Cloud page module that lets solutions interact with and personalize the main page.' --- # External Module: Page diff --git a/src/pages/guides/app_builder_guides/exc_app/modules/topbar.md b/src/pages/guides/app_builder_guides/exc_app/modules/topbar.md index c40aae1e4..dd0c33e06 100644 --- a/src/pages/guides/app_builder_guides/exc_app/modules/topbar.md +++ b/src/pages/guides/app_builder_guides/exc_app/modules/topbar.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'External module: topbar' +description: 'Reference for the Experience Cloud topbar module used to configure the solution area, workspaces, and custom search.' --- # External Module: Topbar diff --git a/src/pages/guides/app_builder_guides/exc_app/modules/user.md b/src/pages/guides/app_builder_guides/exc_app/modules/user.md index 650da08e0..c3456e686 100644 --- a/src/pages/guides/app_builder_guides/exc_app/modules/user.md +++ b/src/pages/guides/app_builder_guides/exc_app/modules/user.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'External module: user' +description: 'Reference for the Experience Cloud user module that exposes IMS organization, profile, and access token information.' --- # External Module: User diff --git a/src/pages/guides/app_builder_guides/extensions/extension-migration-guide.md b/src/pages/guides/app_builder_guides/extensions/extension-migration-guide.md index 82d086837..326670756 100644 --- a/src/pages/guides/app_builder_guides/extensions/extension-migration-guide.md +++ b/src/pages/guides/app_builder_guides/extensions/extension-migration-guide.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Extension Migration Guide +description: 'Migrate legacy App Builder applications created before July 2021 to the current file structure and configuration protocol.' --- # Migrating Legacy Applications @@ -34,7 +35,7 @@ Under the old file structure, initialization of a new App Builder Project in the 5. `manifest.yml`: file describing back-end actions to deploy or redeploy - `manifest` file contents should adhere to the [OpenWhisk deployment YAML specification](https://github.com/apache/openwhisk-wskdeploy/tree/master/specification#package-specification). Once defined, the [CLI](https://github.com/adobe/aio-cli) uses this file to deploy or redeploy actions. You might see values like `$CUSTOMER_PROFILE_TENANT` listed on this page; they are environment variables that can be defined in the `.env` file. 6. `package.json`: this file describes project definition and various metadata relevant to the project. - - It is used by `npm install` to install all the project's dependencies. The package is private and not expected to be published/shared on [npmjs.com](https://www.npmjs.com/). Learn more [here](https://docs.npmjs.com/about-packages-and-modules). + - It is used by `npm install` to install all the project's dependencies. The package is private and not expected to be published/shared on [npmjs.com](https://www.npmjs.com/). Learn more [here](https://docs.npmjs.com/about-packages-and-modules/). 7. `.aio`: file containing configuration variables used by the [CLI](https://github.com/adobe/aio-cli) to facilitate the application, for example supported API services. This file can be committed to a source-code versioning system. - You may manually update the file, or use `aio config` commands to add or to configurations. Learn more about the [Config Plugin](https://github.com/adobe/aio-cli-plugin-config). 8. `.env`: file containing environment variables useful for application development, for example Adobe I/O Runtime credentials and Adobe Product API tenant specifics such as API key and secrets. @@ -55,7 +56,7 @@ When extensions were introduced, the file structure changed to: 2. `app.config.yaml`, the master configuration file. It follows the same principle as the individual `ext.config.yaml`, and compiles these individual files into one comprehensive configuration upon application build. 3. `lib`: a folder containing all the shared utility actions across different extension points. 4. `package.json`: this file describes project definition and various metadata relevant to the project. - - It is used by `npm install` to install all the project's dependencies. The package is private and not expected to be published/shared on [npmjs.com](https://www.npmjs.com/). Learn more [here](https://docs.npmjs.com/about-packages-and-modules). + - It is used by `npm install` to install all the project's dependencies. The package is private and not expected to be published/shared on [npmjs.com](https://www.npmjs.com/). Learn more [here](https://docs.npmjs.com/about-packages-and-modules/). 5. `.aio`: this file contains config variables that are useful for the [CLI](https://github.com/adobe/aio-cli) to facilitate the app, e.g. supported API services. - You can manually update the file or use the `aio config` commands to add or to remove configurations. Learn more about the [Config Plugin](https://github.com/adobe/aio-cli-plugin-config). 6. `.env`: file containing environment variables useful for application development, for example Adobe I/O Runtime credentials and Adobe Product API tenant specifics such as API key and secrets. diff --git a/src/pages/guides/app_builder_guides/extensions/extensions.md b/src/pages/guides/app_builder_guides/extensions/extensions.md index 3824ca3e4..5e48c8790 100644 --- a/src/pages/guides/app_builder_guides/extensions/extensions.md +++ b/src/pages/guides/app_builder_guides/extensions/extensions.md @@ -5,11 +5,12 @@ keywords: - API Documentation - Developer Tooling title: Introduction to Extensions +description: 'Introduction to extension points and endpoints that let App Builder applications extend Adobe products.' --- # Introduction to Extensions -App Builder originally supported only Single-Page Applications (SPAs) accessed in [Experience Cloud UI](https://experience.adobe.com) and standalone Headless Applications. In response to customer requests, we added services like [AEM Asset Microservices](https://experienceleague.adobe.com/docs/experience-manager-cloud-service/assets/manage/asset-microservices-configure-and-use.html?lang=en) to extend Adobe products through App Builder. But Developers still had to set up connections manually between AEM and their custom processing profiles. +App Builder originally supported only Single-Page Applications (SPAs) accessed in [Experience Cloud UI](https://experience.adobe.com) and standalone Headless Applications. In response to customer requests, we added services like [AEM Asset Microservices](https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/assets/manage/asset-microservices-configure-and-use) to extend Adobe products through App Builder. But Developers still had to set up connections manually between AEM and their custom processing profiles. Extensions provide a simpler, more integrated way for Developers to extend products across the Adobe ecosystem. diff --git a/src/pages/guides/app_builder_guides/optimization.md b/src/pages/guides/app_builder_guides/optimization.md index 4b7dfa8ee..78fea76ff 100644 --- a/src/pages/guides/app_builder_guides/optimization.md +++ b/src/pages/guides/app_builder_guides/optimization.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Optimizing App Builder Apps +description: 'Techniques to optimize App Builder applications for security, performance, and operational cost.' --- # Optimizing App Builder Apps @@ -33,7 +34,7 @@ When you test this functionality for web action using Postman or a web browser w ## Returning large response payloads -An Adobe I/O Runtime action can return a [response payload of 1MB](../runtime_guides/system-settings.md) - enough for most use cases. If your action will return a larger payload, we provide a scalable solution with [App Builder Files SDK](https://github.com/adobe/aio-lib-files). It allows you to [persist a binary file to the blob storage](https://github.com/adobe/aio-lib-files/blob/master/doc/api.md#Files+write), obtain [a temporary downloadable URL](https://github.com/adobe/aio-lib-files/blob/master/doc/api.md#Files+generatePresignURL) and return an [HTTP Redirect response](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/302) to the file with this URL. Here is a demonstration: +An Adobe I/O Runtime action can return a [response payload of 1MB](../runtime_guides/system-settings.md) - enough for most use cases. If your action will return a larger payload, we provide a scalable solution with [App Builder Files SDK](https://github.com/adobe/aio-lib-files). It allows you to [persist a binary file to the blob storage](https://github.com/adobe/aio-lib-files/blob/master/doc/api.md#Files+write), obtain [a temporary downloadable URL](https://github.com/adobe/aio-lib-files/blob/master/doc/api.md#Files+generatePresignURL) and return an [HTTP Redirect response](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Status/302) to the file with this URL. Here is a demonstration: ```javascript const fileLocation = '/private-dir/large-image.png' diff --git a/src/pages/guides/app_builder_guides/security/understanding-authentication.md b/src/pages/guides/app_builder_guides/security/understanding-authentication.md index cada18f1e..8a4a1087b 100644 --- a/src/pages/guides/app_builder_guides/security/understanding-authentication.md +++ b/src/pages/guides/app_builder_guides/security/understanding-authentication.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Understanding Authentication +description: 'Overview of Adobe authentication options, OAuth 2.0 and JWT, and libraries to use them in App Builder applications.' --- # Understanding Authentication diff --git a/src/pages/guides/app_builder_guides/storage/application-state.md b/src/pages/guides/app_builder_guides/storage/application-state.md index e7060ac17..ce5f16ef9 100644 --- a/src/pages/guides/app_builder_guides/storage/application-state.md +++ b/src/pages/guides/app_builder_guides/storage/application-state.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Dealing with Application State +description: 'Manage application state using default parameters, environment variables, and the State and Files storage SDKs.' --- # Dealing with Application State diff --git a/src/pages/guides/app_builder_guides/storage/db-commands.md b/src/pages/guides/app_builder_guides/storage/db-commands.md index 826d2cd4c..6e4468201 100644 --- a/src/pages/guides/app_builder_guides/storage/db-commands.md +++ b/src/pages/guides/app_builder_guides/storage/db-commands.md @@ -14,7 +14,7 @@ description: Discover the essential commands and operations available in App Bui The database plugin in the AIO CLI is a utility that facilitates provisioning, initializing, querying, and monitoring workspace databases. -The following is only a brief introduction to the DB Plugin. For more thorough documentation, see [aio-cli-plugin-app-storage](https://github.com/adobe/aio-cli-plugin-app-storage/tree/epic/abdb-implementation). +The following is only a brief introduction to the DB Plugin. For more thorough documentation, see [aio-cli-plugin-app-storage](https://github.com/adobe/aio-cli-plugin-app-storage). ## Installation diff --git a/src/pages/guides/app_builder_guides/storage/index.md b/src/pages/guides/app_builder_guides/storage/index.md index e7a55edac..4c11c8da8 100644 --- a/src/pages/guides/app_builder_guides/storage/index.md +++ b/src/pages/guides/app_builder_guides/storage/index.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Storage Options +description: 'Compare Database, Files, and State storage services available to App Builder applications.' --- # Storage Options diff --git a/src/pages/guides/app_builder_guides/telemetry.md b/src/pages/guides/app_builder_guides/telemetry.md index 70b6ac8f2..f51f733d3 100644 --- a/src/pages/guides/app_builder_guides/telemetry.md +++ b/src/pages/guides/app_builder_guides/telemetry.md @@ -5,7 +5,7 @@ keywords: - Developer Tooling - telemetry title: Telemetry -description: The latest release of the Adobe Developer Platform CLI (v9.0.0) collects anonymous telemetry data about general usage. This is an optional feature, and you may opt-out if you would not like to share your anonymous usage information. +description: Optional anonymous usage telemetry collected by the Adobe Developer Platform CLI v9.0.0 and how to opt out. --- # Telemetry diff --git a/src/pages/guides/contribution-guide.md b/src/pages/guides/contribution-guide.md index 1e8faa0f6..e77f815f3 100644 --- a/src/pages/guides/contribution-guide.md +++ b/src/pages/guides/contribution-guide.md @@ -12,17 +12,17 @@ Thanks for choosing to contribute! The following are a set of guidelines to foll ## Code Of Conduct -This project adheres to the Adobe [Code of Conduct](https://github.com/AdobeDocs/project-firefly/blob/main/.github/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Adobe](mailto:Grp-opensourceoffice@adobe.com). +This project adheres to the Adobe [Code of Conduct](https://github.com/AdobeDocs/app-builder/blob/main/.github/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [Adobe](mailto: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](http://opensource.adobe.com/cla.html). You only need to submit an Adobe CLA one time, so if you have submitted one previously, you are good to go! +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](https://opensource.adobe.com/cla.html). 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](https://help.github.com/articles/about-pull-requests/) for more information on sending pull requests. -Finally, please follow the [pull request template](https://github.com/AdobeDocs/project-firefly/blob/main/.github/PULL_REQUEST_TEMPLATE.md) when submitting a pull request. +Finally, please follow the [pull request template](https://github.com/AdobeDocs/app-builder/blob/main/.github/PULL_REQUEST_TEMPLATE.md) when submitting a pull request. ## CLI and plugins best practices diff --git a/src/pages/guides/index.md b/src/pages/guides/index.md index 90d17f041..04130fe55 100644 --- a/src/pages/guides/index.md +++ b/src/pages/guides/index.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Reference Documentation +description: 'Index of App Builder guides covering architecture, configuration, deployment, security, and reference documentation.' --- # Guides Index diff --git a/src/pages/guides/references.md b/src/pages/guides/references.md index 0db07b471..e85a69396 100644 --- a/src/pages/guides/references.md +++ b/src/pages/guides/references.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Reference Documentation +description: 'Reference links to the Adobe Developer Console, aio CLI, App Builder generators, and SDK libraries.' --- # Reference Documentation @@ -12,7 +13,7 @@ title: Reference Documentation * [Adobe Developer Console](https://developer.adobe.com/developer-console/docs/guides/) * [Adobe CLI](https://github.com/adobe/aio-cli) * [App Builder Application Generators](https://github.com/adobe/generator-aio-app) -* [Developer Console Project Generators](https://github.com/adobe/generator-aio-console) +* [Developer Console Project Generators](https://github.com/adobe/aio-cli-lib-console) * [Adobe Authentication Library](https://github.com/adobe/aio-lib-ims) * [Token-Vending Machine](https://github.com/adobe/aio-tvm) * [SDK Libraries](https://github.com/adobe/aio-sdk) diff --git a/src/pages/guides/runtime_guides/asynchronous-calls.md b/src/pages/guides/runtime_guides/asynchronous-calls.md index 2039fed21..14d673fee 100644 --- a/src/pages/guides/runtime_guides/asynchronous-calls.md +++ b/src/pages/guides/runtime_guides/asynchronous-calls.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Asynchronous + - Web Actions +title: 'Asynchronous Calls' +description: 'Patterns for running Adobe I/O Runtime work that exceeds the 60-second synchronous limit using asynchronous actions.' +--- + # Asynchronous Calls The system executes web actions or REST APIs as synchronous (blocking) calls and gives them 60 seconds to complete their work. Actions that need more time can use asynchronous (async) calls, and use up to 180 minutes. diff --git a/src/pages/guides/runtime_guides/ci-cd-pipeline.md b/src/pages/guides/runtime_guides/ci-cd-pipeline.md index 7337c4bd8..930549140 100644 --- a/src/pages/guides/runtime_guides/ci-cd-pipeline.md +++ b/src/pages/guides/runtime_guides/ci-cd-pipeline.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - CI/CD + - Namespaces + - Versioning +title: 'CI/CD Pipeline' +description: 'Tools and patterns for building a CI/CD pipeline for Adobe I/O Runtime actions, including namespaces and package versioning.' +--- + # CI/CD Pipeline Adobe I/O Runtime offers a number of tools to help you build a CI/CD pipeline for managing your actions. diff --git a/src/pages/guides/runtime_guides/creating-rest-apis.md b/src/pages/guides/runtime_guides/creating-rest-apis.md index 38c3dcdfd..0e5557091 100644 --- a/src/pages/guides/runtime_guides/creating-rest-apis.md +++ b/src/pages/guides/runtime_guides/creating-rest-apis.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - REST APIs + - Web Actions + - Swagger +title: 'Creating REST APIs' +description: 'Create REST APIs from Adobe I/O Runtime web actions using the aio CLI or Swagger definition files.' +--- + # Creating REST APIs > Note: IO Runtime cleans up custom APIs that have not been accessed for 90 days. @@ -79,7 +90,7 @@ This will work provided that the actions are already created in that namespace. ## Enable CORS on an HTTP resource -[CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS) headers can be controlled either statically or dynamically. +[CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS) headers can be controlled either statically or dynamically. ### Static CORS response with OpenAPI @@ -319,7 +330,7 @@ Requests that originate from the IP addresses on the disallow list will be rejec > Note: be sure the `my-require-gw-validation-web-action` is configured as a web action with `-a require-gw-validation true`, or the action can be accessed publicly with no restrictions on the non-API URL. -# How long does it take to create or update an API? +## How long does it take to create or update an API? It can take up to five minutes to see the changes from creation or update of an API. diff --git a/src/pages/guides/runtime_guides/debugging.md b/src/pages/guides/runtime_guides/debugging.md index 519d43c04..e5913b421 100644 --- a/src/pages/guides/runtime_guides/debugging.md +++ b/src/pages/guides/runtime_guides/debugging.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Debugging + - Node.js +title: 'Debugging Node.js Actions' +description: 'Pointer to the updated debugging documentation for Adobe I/O Runtime Node.js actions in the App Builder guides.' +--- + # Debugging Node.js Actions Visit the [updated documentation](https://developer.adobe.com/app-builder/docs/guides/app_builder_guides/development#debugging) to learn how to debug Node.js Actions. diff --git a/src/pages/guides/runtime_guides/logging-monitoring.md b/src/pages/guides/runtime_guides/logging-monitoring.md index a61c2d51e..3d7032be2 100644 --- a/src/pages/guides/runtime_guides/logging-monitoring.md +++ b/src/pages/guides/runtime_guides/logging-monitoring.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Logging + - Monitoring + - Activations +title: 'Logging and Monitoring' +description: 'Use the aio CLI to retrieve activations and logs for Adobe I/O Runtime actions while debugging or monitoring.' +--- + # Logging and Monitoring The `AIO` CLI offers a number of tools you can use to debug your actions while running them on Adobe I/O Runtime. @@ -22,7 +33,7 @@ aio rt:activation:logs 2018-11-14T22:23:00.002Z stdout: 1542234180001: param = John Doe ``` -# Retrieving activations for blocking successful calls +## Retrieving activations for blocking successful calls At scale, when you run millions of activations in a day, it may be difficult to extract the activations that failed in order to debug them. To help with this task, the system skips persisting the activation that succeeded. @@ -56,7 +67,7 @@ Although there is no out-of-the-box integration, there are still ways you can pu #### Epsagon -One tool that made it easy to do this is [Epsagon](https://epsagon.com). Epsagon built an integration for OpenWhisk-based systems like I/O Runtime that simplifies seeing your activations, errors, latency information and logs. Check this [guide](https://docs.epsagon.com/docs/openwhisk?utm_source=adobe.io&utm_medium=referral&utm_campaign=adobe_io_docs) or this [video presentation](https://www.youtube.com/watch?v=4iprbivqrxQ&t=1517s) if you want to find more. +One tool that made it easy to do this was Epsagon, which built an integration for OpenWhisk-based systems like I/O Runtime that simplified seeing your activations, errors, latency information, and logs. Watch the [video presentation](https://www.youtube.com/watch?v=4iprbivqrxQ&t=1517s) for an overview. (Note: Epsagon was acquired and its docs site is no longer available; comparable observability tools may offer similar OpenWhisk integrations.) #### New Relic diff --git a/src/pages/guides/runtime_guides/reference_docs/api-ref.md b/src/pages/guides/runtime_guides/reference_docs/api-ref.md index f712d4921..34be8dd63 100644 --- a/src/pages/guides/runtime_guides/reference_docs/api-ref.md +++ b/src/pages/guides/runtime_guides/reference_docs/api-ref.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - API Reference + - Namespaces +title: 'Adobe I/O Runtime API Reference' +description: 'Reference for the Adobe I/O Runtime management API endpoints used to interact with namespaces programmatically.' +--- + # Adobe I/O Runtime API Reference ## API endpoints diff --git a/src/pages/guides/runtime_guides/reference_docs/cli-use.md b/src/pages/guides/runtime_guides/reference_docs/cli-use.md index 1461d621f..3759a7060 100644 --- a/src/pages/guides/runtime_guides/reference_docs/cli-use.md +++ b/src/pages/guides/runtime_guides/reference_docs/cli-use.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - aio CLI + - Commands +title: 'Using aio CLI' +description: 'Reference for the aio runtime command, its options, aliases, and subcommands for managing Runtime resources.' +--- + # Using aio CLI ``` diff --git a/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md b/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md index d205f7cc6..62c376503 100644 --- a/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md +++ b/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md @@ -1,10 +1,22 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Proxy + - nginx + - mTLS + - Security +title: 'Configuring a Secure Proxy' +description: 'Configure an nginx proxy with mutual TLS so Adobe I/O Runtime actions can reach backend services protected by IP allow lists.' +--- + ## Configuring a Secure Proxy For security reasons, Runtime does not expose egress IPs. Customers who need a way to secure communication with downstream services using IP whitelisting can use a proxy between their backend service and I/O Runtime. This can be done by adding a proxy component (in this example, an AWS EC2 instance running nginx). The proxy component will have a fixed IP address, so using an IP allowlist can secure the backend service. Communication between I/O Runtime and the proxy component will be secured via mutual TLS (mTLS) communication. -![](../../../images/configure-proxy.png) +![Diagram of an nginx proxy fronting Runtime with mTLS to the backend](../../../images/configure-proxy.png) The following steps outline how to: diff --git a/src/pages/guides/runtime_guides/reference_docs/environment-variables.md b/src/pages/guides/runtime_guides/reference_docs/environment-variables.md index b3efb7926..fb05334ce 100644 --- a/src/pages/guides/runtime_guides/reference_docs/environment-variables.md +++ b/src/pages/guides/runtime_guides/reference_docs/environment-variables.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Environment Variables + - OpenWhisk +title: 'Environment Variables' +description: 'Reference for the OpenWhisk environment variables available to Adobe I/O Runtime actions at execution time.' +--- + # Environment Variables When an action is being executed, your code can use the following environment variables: diff --git a/src/pages/guides/runtime_guides/reference_docs/feeds.md b/src/pages/guides/runtime_guides/reference_docs/feeds.md index 74106bbf3..8a2ea24ae 100644 --- a/src/pages/guides/runtime_guides/reference_docs/feeds.md +++ b/src/pages/guides/runtime_guides/reference_docs/feeds.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Feeds + - Triggers + - Rules +title: 'Using Feeds' +description: 'How feed actions create and manage event streams that fire triggers in Adobe I/O Runtime.' +--- + # Using Feeds Feeds are streams of events. The difference between [triggers](triggersrules.md 'Using Triggers and Rules') and feeds is: diff --git a/src/pages/guides/runtime_guides/reference_docs/index.md b/src/pages/guides/runtime_guides/reference_docs/index.md index e4cea6627..e85fbaef9 100644 --- a/src/pages/guides/runtime_guides/reference_docs/index.md +++ b/src/pages/guides/runtime_guides/reference_docs/index.md @@ -1,3 +1,12 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Reference Documentation +title: 'Adobe I/O Runtime Reference Documentation' +description: 'Index of reference documentation for Adobe I/O Runtime APIs, command-line tools, and entities.' +--- + # Adobe I/O Runtime Reference Documentation This Guide contains reference documentation for Runtime APIs, command-line tools, and entities. diff --git a/src/pages/guides/runtime_guides/reference_docs/multiple-regions.md b/src/pages/guides/runtime_guides/reference_docs/multiple-regions.md index 032c004cc..73c611055 100644 --- a/src/pages/guides/runtime_guides/reference_docs/multiple-regions.md +++ b/src/pages/guides/runtime_guides/reference_docs/multiple-regions.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Regions + - AWS + - Routing +title: 'Multiple Regions' +description: 'How Adobe I/O Runtime deploys and routes actions across multiple AWS regions using latency-based routing.' +--- + # Multiple Regions Actions are executed in one of four regions on AWS: diff --git a/src/pages/guides/runtime_guides/reference_docs/packages.md b/src/pages/guides/runtime_guides/reference_docs/packages.md index 16b16d99e..64ad07c40 100644 --- a/src/pages/guides/runtime_guides/reference_docs/packages.md +++ b/src/pages/guides/runtime_guides/reference_docs/packages.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Packages + - OpenWhisk +title: 'Working with Packages' +description: 'Create, share, and bind Adobe I/O Runtime packages to organize actions and share default parameters.' +--- + # Working with Packages Packages are a simple and yet important concept in I/O Runtime. You can use packages to handle versioning (deploy new version of your actions in a new package), create different actions with the same name within the same namespace, group together actions that are related, share actions with other parties, and much more. diff --git a/src/pages/guides/runtime_guides/reference_docs/prepackages.md b/src/pages/guides/runtime_guides/reference_docs/prepackages.md index eff39d652..3d0d10575 100644 --- a/src/pages/guides/runtime_guides/reference_docs/prepackages.md +++ b/src/pages/guides/runtime_guides/reference_docs/prepackages.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Packages + - Alarms +title: 'Pre-Installed Packages' +description: 'Use the pre-installed alarms and other shared packages available to every Adobe I/O Runtime namespace.' +--- + # Pre-Installed Packages These packages are pre-installed and available to any I/O Runtime user: @@ -72,7 +82,7 @@ aio rt:trigger:create my-cron-trigger \ --param stopDate "2028-01-01T00:00:00.000Z" ``` -Here are some examples of how to set various `cron` values - for more information, check this [page](http://crontab.org): +Here are some examples of how to set various `cron` values - for more information, see [crontab.guru](https://crontab.guru/): - `* * * * *`: The Trigger fires at the top of every minute - `0 * * * *`: The Trigger fires at the top of every hour diff --git a/src/pages/guides/runtime_guides/reference_docs/runtimes.md b/src/pages/guides/runtime_guides/reference_docs/runtimes.md index 0a3c332ac..7b27874a1 100644 --- a/src/pages/guides/runtime_guides/reference_docs/runtimes.md +++ b/src/pages/guides/runtime_guides/reference_docs/runtimes.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Node.js + - Runtimes +title: 'Runtimes' +description: 'Supported Node.js runtimes for Adobe I/O Runtime actions and the npm modules pre-installed in each.' +--- + # Runtimes Adobe I/O Runtime supports the three latest Node.js versions (see the [Node.js release schedule](https://nodejs.org/en/about/previous-releases#release-schedule) for details). We encourage you to keep actions updated to the latest version so you can take advantage of latest security updates and the pre-warmed container feature that dramatically improves cold-start times. diff --git a/src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md b/src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md index 2e465590c..26ca0423b 100644 --- a/src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md +++ b/src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Sequences + - Compositions + - OpenWhisk +title: 'Sequences and Compositions' +description: 'Orchestrate Adobe I/O Runtime actions using sequences for linear chains or compositions for branching control flow.' +--- + # Sequences and Compositions There are two ways to orchestrate a series of action calls into a flow: sequences and compositions. @@ -29,7 +40,7 @@ If we apply this limitation to the example above, then `actionA` and `actionB` h If one of your actions needs more than 60 seconds (therefore putting the sequence over the limit), the only solution is to invoke it as a non-blocking action using the OpenWhisk npm module. So, using the same example, you could have `actionA` calling another action in a non-blocking manner. You can see an example of how to do this [here](../asynchronous-calls.md). -Read more about sequences on the [OpenWhisk documentation page](https://github.com/apache/incubator-openwhisk/blob/master/docs/actions.md#creating-action-sequences). +Read more about sequences on the [OpenWhisk documentation page](https://github.com/apache/openwhisk/blob/master/docs/actions.md). ## Compositions @@ -73,8 +84,8 @@ This creates a composition called `compositionA`. Invoke it like any other actio More information is available at: -* Apache OpenWhisk Composer [home page]( https://github.com/apache/incubator-openwhisk-composer) -* [Combinators](https://github.com/apache/incubator-openwhisk-composer/blob/master/docs/COMBINATORS.md), with a complete list of the control-flow structure. +* Apache OpenWhisk Composer [home page]( https://github.com/apache/openwhisk-composer) +* [Combinators](https://github.com/apache/openwhisk-composer/blob/master/docs/COMBINATORS.md), with a complete list of the control-flow structure. ### Parallel compositions diff --git a/src/pages/guides/runtime_guides/reference_docs/triggersrules.md b/src/pages/guides/runtime_guides/reference_docs/triggersrules.md index d1c9bc0b8..8bc316563 100644 --- a/src/pages/guides/runtime_guides/reference_docs/triggersrules.md +++ b/src/pages/guides/runtime_guides/reference_docs/triggersrules.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Triggers + - Rules + - Events +title: 'Using Triggers and Rules' +description: 'Use triggers and rules in Adobe I/O Runtime to invoke actions in response to events.' +--- + # Using Triggers and Rules Actions invoked directly in the CLI have limited application; Adobe I/O Runtime is most useful when it is configured to respond to events. Runtime features that support this are triggers and rules: diff --git a/src/pages/guides/runtime_guides/reference_docs/wsk-use.md b/src/pages/guides/runtime_guides/reference_docs/wsk-use.md index 750744a64..24ac10fae 100644 --- a/src/pages/guides/runtime_guides/reference_docs/wsk-use.md +++ b/src/pages/guides/runtime_guides/reference_docs/wsk-use.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - wsk + - CLI + - OpenWhisk +title: 'Using the wsk CLI' +description: 'Reference for the legacy wsk CLI commands for interacting with Adobe I/O Runtime actions, triggers, and packages.' +--- + # Using the wsk CLI You can use the `--help` flag to navigate the list of supported commands: diff --git a/src/pages/guides/runtime_guides/securing-web-actions.md b/src/pages/guides/runtime_guides/securing-web-actions.md index e83794c5a..a86e0573f 100644 --- a/src/pages/guides/runtime_guides/securing-web-actions.md +++ b/src/pages/guides/runtime_guides/securing-web-actions.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Web Actions + - Security + - Basic Authentication +title: 'Securing Web Actions' +description: 'Restrict access to Adobe I/O Runtime web actions using Basic Authentication, namespace credentials, or custom auth layers.' +--- + # Securing Web Actions By default, a web action can be invoked by anyone knowing the action's URL. If you want to restrict 'access, either use Basic Authentication or you build your own authentication layer. @@ -51,7 +62,7 @@ aio rt:action:update my-require-validation-web-action main.js --web true -a requ To interact with the action, set up a security configuration in your Swagger API route for that action. Detailed instructions on how to do this can be found in [Securing API Endpoints](creating-rest-apis.md#securing-api-endpoints). -# Non-web actions +## Non-web actions If your action is not a web action, you can still use your namespace credentials, base64 encoded, to call any of the actions in your namespace, like this: diff --git a/src/pages/guides/runtime_guides/security-general.md b/src/pages/guides/runtime_guides/security-general.md index 2af33f860..7b5b1c205 100644 --- a/src/pages/guides/runtime_guides/security-general.md +++ b/src/pages/guides/runtime_guides/security-general.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Security + - Sandboxing + - XSS +title: 'Security Guide' +description: 'Security considerations and best practices for Adobe I/O Runtime functions, covering sandboxing, XSS, cookies, and secrets.' +--- + # Security Guide This guide reviews security issues to consider when working with Runtime functions. Only a subset of these may apply to your use case: for example, the section about cookies isn't relevant if you aren't using web actions. This guide will help you keep your functions secure and steer you away from practices that are risky in a serverless environment. @@ -10,11 +21,11 @@ Every action is run in its own container. Containers may be reused for the same Anything that runs on the internet and accepts user input is potentially vulnerable to cross-site scripting (XSS) attacks. These take a variety of forms and can be easily introduced if you are not careful. -Parameters sent to actions are not sanitized by the Runtime system. These inputs should therefore be treated as unsafe and sanitized before they are used. For example, do not pass parameters directly to a SQL queries or evaluate them in JavaScript. A good resource on how to avoid XSS attacks is the [Open Web Application Security Project (OWASP) XSS documentation](https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)). +Parameters sent to actions are not sanitized by the Runtime system. These inputs should therefore be treated as unsafe and sanitized before they are used. For example, do not pass parameters directly to a SQL queries or evaluate them in JavaScript. A good resource on how to avoid XSS attacks is the [Open Web Application Security Project (OWASP) XSS documentation](https://owasp.org/www-community/attacks/xss/). ## Cookies -You can set cookies in two ways in Runtime: from JavaScript on the page using [document.cookie](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) calls, or by passing a [Header object from a web action](https://github.com/apache/incubator-openwhisk/blob/master/docs/webactions.md#web-actions) with a Set-Cookie header directive. The way Runtime hosts functions raises some particular concerns for Developers. +You can set cookies in two ways in Runtime: from JavaScript on the page using [document.cookie](https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie) calls, or by passing a [Header object from a web action](https://github.com/apache/openwhisk/blob/master/docs/webactions.md) with a Set-Cookie header directive. The way Runtime hosts functions raises some particular concerns for Developers. We discourage the use of cookies directly from web actions on Runtime: please see [Securing Web Actions](securing-web-actions.md) for details. diff --git a/src/pages/guides/runtime_guides/system-settings.md b/src/pages/guides/runtime_guides/system-settings.md index b9ea0c64d..d191a450a 100644 --- a/src/pages/guides/runtime_guides/system-settings.md +++ b/src/pages/guides/runtime_guides/system-settings.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Limits + - System Settings +title: 'System Settings' +description: 'Reference table of Adobe I/O Runtime system settings and limits to consider when designing and debugging actions.' +--- + # System Settings These are the system settings and limitations to consider when designing and debugging your actions. diff --git a/src/pages/guides/runtime_guides/throughput-tuning.md b/src/pages/guides/runtime_guides/throughput-tuning.md index c3109684b..5757495a4 100644 --- a/src/pages/guides/runtime_guides/throughput-tuning.md +++ b/src/pages/guides/runtime_guides/throughput-tuning.md @@ -1,3 +1,14 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Throughput + - Concurrency + - Performance +title: 'Throughput Tuning' +description: 'Tune Adobe I/O Runtime action concurrency and container reuse to maximize throughput and minimize cold-start latency.' +--- + # Throughput Tuning ## Containers @@ -61,7 +72,7 @@ Encoded responses can't be cached, so the `Content-Encoding` response header mus ### Vary header -The caching layer supports the use of [Vary header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary) to cache based on header fields as well as on URL and query parameters. +The caching layer supports the use of [Vary header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Vary) to cache based on header fields as well as on URL and query parameters. This action responds to certain header fields while doing a complex calculation: diff --git a/src/pages/guides/runtime_guides/tools/cli-install.md b/src/pages/guides/runtime_guides/tools/cli-install.md index 0b971e70f..23829c16c 100644 --- a/src/pages/guides/runtime_guides/tools/cli-install.md +++ b/src/pages/guides/runtime_guides/tools/cli-install.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - aio CLI + - Install +title: 'Setting up the aio CLI' +description: 'Install and update the aio CLI for managing Adobe I/O Runtime namespaces and authentication.' +--- + # Setting up the aio CLI The `aio` CLI helps you to manage the `.wskprops` file as you use different namespaces. You will need `npm` to install it, so before you start, make sure you have the latest version of Node and npm installed. diff --git a/src/pages/guides/runtime_guides/tools/index.md b/src/pages/guides/runtime_guides/tools/index.md index 89e81b5ba..140c921c3 100644 --- a/src/pages/guides/runtime_guides/tools/index.md +++ b/src/pages/guides/runtime_guides/tools/index.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Tools + - aio CLI +title: 'Runtime Tools' +description: 'Index of the tools available for working with Adobe I/O Runtime, including the aio CLI.' +--- + # Runtime Tools The most important tools for working with Adobe I/O Runtime are: diff --git a/src/pages/guides/runtime_guides/troubleshooting.md b/src/pages/guides/runtime_guides/troubleshooting.md index 2f876e88e..94256277e 100644 --- a/src/pages/guides/runtime_guides/troubleshooting.md +++ b/src/pages/guides/runtime_guides/troubleshooting.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Troubleshooting + - Local Storage +title: 'Troubleshooting' +description: 'Troubleshooting tips for Adobe I/O Runtime actions, including the local-storage-evicted error and mitigation strategies.' +--- + # Troubleshooting If you're having trouble with your actions or activations, here is a common issue and its solution. diff --git a/src/pages/guides/runtime_guides/using-packages.md b/src/pages/guides/runtime_guides/using-packages.md index 33c20dd39..59af351ef 100644 --- a/src/pages/guides/runtime_guides/using-packages.md +++ b/src/pages/guides/runtime_guides/using-packages.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Packages + - Feeds +title: 'Using Packages with Adobe I/O Runtime' +description: 'Bundle related Adobe I/O Runtime actions into packages, share parameters, and create feed actions.' +--- + # Using Packages with Adobe I/O Runtime Individual actions (functions) can be effective, but you may also need to create sets of actions that interact with each other, or make them available to other Developers. Runtime meets these requirements with packages. diff --git a/src/pages/guides/runtime_guides/using-runtime.md b/src/pages/guides/runtime_guides/using-runtime.md index e591b757c..a96a0b31e 100644 --- a/src/pages/guides/runtime_guides/using-runtime.md +++ b/src/pages/guides/runtime_guides/using-runtime.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - Runtime + - Actions + - Packages +title: 'Using Adobe I/O Runtime' +description: 'Roadmap for using Adobe I/O Runtime to deploy actions, build packages, secure web actions, and tune throughput.' +--- + # Using Adobe I/O Runtime Adobe I/O Runtime is more than a way of deploying individual actions and invoking them directly in the CLI. With Runtime, you can deploy groups of related actions as packages, share them with others, set up actions as webhooks to automate responses to events, and access Runtime actions through the API. The following pages guide you through the process: diff --git a/src/pages/intro_and_overview/business-case.md b/src/pages/intro_and_overview/business-case.md index bbf255fc3..874723e95 100644 --- a/src/pages/intro_and_overview/business-case.md +++ b/src/pages/intro_and_overview/business-case.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Business case +description: 'Why enterprises choose App Builder over third-party or do-it-yourself customizations to extend Adobe solutions.' --- # Business case for App Builder @@ -48,8 +49,8 @@ Execution of App Builder apps on Adobe's I/O Runtime serverless platform adds ev ## Examples from the real world -- **Cognizant** demonstration airline website: [Building a Real-Time Airline Application Using Adobe Experience Platform, Adobe I/O Runtime and App Builder](https://www.netcentric.biz/insights/2020/06/building-an-aep-demo-with-firefly.html?utm_source=linkedin&utm_medium=social_nonpaid&utm_campaign=20_insights&utm_content=link_post&es_id=8e9abf83f6) -- **Wunderman Thompson Technology** image reformatting: [How to generate intelligent renditions with AEM as a Cloud Service](https://tech.cognifide.com/blog/2020/how-to-generate-intelligent-renditions-aem-cloud/) +- **Cognizant** demonstration airline website: [Building a Real-Time Airline Application Using Adobe Experience Platform, Adobe I/O Runtime and App Builder](https://www.netcentric.biz/insights/2020/06/building-an-aep-demo-with-firefly) +- **Wunderman Thompson Technology** image reformatting: [How to generate intelligent renditions with AEM as a Cloud Service](https://wttech.blog/blog/2020/how-to-generate-intelligent-renditions-aem-cloud/) - **Adobe** Cloud Manager plug-in for Adobe I/O CLI: [Setting Up Adobe I/O CLI for Cloud Manager](https://medium.com/adobetech/setting-up-adobe-i-o-cli-for-cloud-manager-8820f47e3c94) - **VRT** dynamic content creation: [How Belgian Broadcaster VRT Turned to Adobe I/O Runtime to Dynamically Create Newsletter Content](https://medium.com/adobetech/how-belgian-broadcaster-vrt-turned-to-adobe-i-o-runtime-to-dynamically-create-newsletter-content-5cafe224a2a5) - **Bank of America** marketing offer personalization: [How Bank of America Is Using Adobe I/O Runtime to Boost the Efficiency of Its Personalized Offers in Adobe Target](https://medium.com/adobetech/how-bank-of-america-is-using-adobe-i-o-runtime-to-boost-the-efficiency-of-its-personalized-offers-699de38cf751) diff --git a/src/pages/intro_and_overview/community.md b/src/pages/intro_and_overview/community.md index e23a140b5..59e5ca8a3 100644 --- a/src/pages/intro_and_overview/community.md +++ b/src/pages/intro_and_overview/community.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Developer community +description: 'How to join the App Builder Developer community and contribute to Adobe open-source projects.' --- # Developer Community diff --git a/src/pages/intro_and_overview/faq.md b/src/pages/intro_and_overview/faq.md index bac62a039..04067ce92 100644 --- a/src/pages/intro_and_overview/faq.md +++ b/src/pages/intro_and_overview/faq.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Frequently Asked Questions +description: 'Frequently asked questions about App Builder, its use cases, pricing, and comparison with other application frameworks.' --- # Frequently Asked Questions diff --git a/src/pages/intro_and_overview/index.md b/src/pages/intro_and_overview/index.md index 33938033d..76d0b0bdd 100644 --- a/src/pages/intro_and_overview/index.md +++ b/src/pages/intro_and_overview/index.md @@ -1,3 +1,12 @@ +--- +keywords: + - Adobe I/O + - App Builder + - Overview +title: 'App Builder Overview' +description: 'Overview of the App Builder platform for building enterprise-grade Adobe Experience Cloud extensions on Adobe infrastructure.' +--- + # App Builder Overview This documentation describes App Builder, a complete platform for enterprise Developers to build and deploy custom web applications. App Builder applications extend Adobe Experience Cloud solutions and run on Adobe infrastructure, including Adobe I/O Runtime, the serverless, event-driven, on-demand computing platform included with App Builder. diff --git a/src/pages/intro_and_overview/release-notes.md b/src/pages/intro_and_overview/release-notes.md index e813a6237..ec75af218 100644 --- a/src/pages/intro_and_overview/release-notes.md +++ b/src/pages/intro_and_overview/release-notes.md @@ -1,3 +1,13 @@ +--- +keywords: + - Adobe I/O + - App Builder + - Release Notes + - Runtime +title: 'Release Notes' +description: 'Release notes for App Builder, Adobe I/O Runtime, and their associated CLI plugins and GitHub Actions.' +--- + # Release Notes Stay up to date with the latest features, improvements, and bug fixes in App Builder and Adobe I/O Runtime. diff --git a/src/pages/intro_and_overview/what-is-app-builder.md b/src/pages/intro_and_overview/what-is-app-builder.md index 7bf85dca9..6e0c6a63c 100644 --- a/src/pages/intro_and_overview/what-is-app-builder.md +++ b/src/pages/intro_and_overview/what-is-app-builder.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: How it Works +description: 'What App Builder is, its main components, and how Adobe I/O Runtime fits into it.' --- ## What is App Builder? diff --git a/src/pages/resources/asset-compute-worker-ps-api/lesson1.md b/src/pages/resources/asset-compute-worker-ps-api/lesson1.md index edb00102a..b3105ac9d 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/lesson1.md +++ b/src/pages/resources/asset-compute-worker-ps-api/lesson1.md @@ -6,7 +6,8 @@ keywords: - Developer Tooling contributors: - 'https://github.com/duynguyen' -title: 'Lesson 1: Create an App Builder app from the Asset Compute template' +title: 'Lesson 1: Create an Asset Compute App Builder app' +description: 'Create an App Builder app from the Asset Compute template and add Photoshop API services.' --- # Lesson 1: Create an App Builder App from the Asset Compute Template diff --git a/src/pages/resources/asset-compute-worker-ps-api/lesson2.md b/src/pages/resources/asset-compute-worker-ps-api/lesson2.md index 40fce5092..a5f63544c 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/lesson2.md +++ b/src/pages/resources/asset-compute-worker-ps-api/lesson2.md @@ -7,9 +7,9 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 2: Configure the App' +description: 'Configure cloud storage credentials and other settings required by the Asset Compute Developer tool.' --- -# Lesson 2: Configure the App # Lesson 2: Configure the App As you log in when creating the application, most of the App Builder credentials get collected in your `.env` file. However, using the Developer tool requires additional credentials. diff --git a/src/pages/resources/asset-compute-worker-ps-api/lesson3.md b/src/pages/resources/asset-compute-worker-ps-api/lesson3.md index a47d31488..c4886f1de 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/lesson3.md +++ b/src/pages/resources/asset-compute-worker-ps-api/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 3: Develop custom worker calling Photoshop APIs' +description: 'Develop a custom Asset Compute worker that calls Adobe Photoshop APIs to generate AEM Assets renditions.' --- # Lesson 3: Develop Custom Worker Calling Photoshop APIs @@ -30,7 +31,7 @@ You will need the [App Builder Files SDK](https://github.com/adobe/aio-lib-files Make sure you run `npm install` after updating the `package.json` file, so that all the npm modules are installed. -Then update your action code in `actions//index.js` to use the Photoshop API SDK. In this example, it calls the [Remove Background API](https://developer.adobe.com/firefly-services/docs/photoshop/api/photoshop_removeBackground/) to remove the background of an image. +Then update your action code in `actions//index.js` to use the Photoshop API SDK. In this example, it calls the Remove Background API (see the [Photoshop API reference](https://developer.adobe.com/firefly-services/docs/photoshop/api/)) to remove the background of an image. ```javascript const { worker, SourceCorruptError } = require('@adobe/asset-compute-sdk'); diff --git a/src/pages/resources/asset-compute-worker-ps-api/lesson4.md b/src/pages/resources/asset-compute-worker-ps-api/lesson4.md index dba490d7b..55c3d61a9 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/lesson4.md +++ b/src/pages/resources/asset-compute-worker-ps-api/lesson4.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 4: Integrate and Use the Custom Worker in AEMaaCS' +description: 'Deploy the custom Asset Compute worker and integrate it with AEM as a Cloud Service processing profiles.' --- # Lesson 4: Integrate and Use the Custom Worker in AEMaaCS diff --git a/src/pages/resources/asset-compute-worker-ps-api/requirements.md b/src/pages/resources/asset-compute-worker-ps-api/requirements.md index f5000c94e..9c9cb29eb 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/requirements.md +++ b/src/pages/resources/asset-compute-worker-ps-api/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Codelab Environment Requirements +description: 'Environment and account requirements for the Asset Compute worker with Photoshop APIs Code Lab.' --- @@ -17,4 +18,4 @@ In addition to above prerequisites, you'll need: * An AEM as a Cloud Service instance running in your IMS org * Photoshop API service already provisioned for your org. -* [Understanding the working of a custom application in AEM Assets](https://experienceleague.adobe.com/docs/asset-compute/using/extend/custom-application-internals.html). +* [Understanding the working of a custom application in AEM Assets](https://experienceleague.adobe.com/en/docs/asset-compute/using/extend/custom-application-internals). diff --git a/src/pages/resources/asset-compute-worker-ps-api/welldone.md b/src/pages/resources/asset-compute-worker-ps-api/welldone.md index a975e92cf..990adcb16 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/welldone.md +++ b/src/pages/resources/asset-compute-worker-ps-api/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Well done +description: 'Recap of the Asset Compute worker with Photoshop APIs Code Lab and the skills you learned.' --- # Well Done diff --git a/src/pages/resources/barcode-reader/barcode.md b/src/pages/resources/barcode-reader/barcode.md index 5a6721c3e..b289af577 100644 --- a/src/pages/resources/barcode-reader/barcode.md +++ b/src/pages/resources/barcode-reader/barcode.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Lesson 2: Writing a Serverless Action' +description: 'Write a serverless action that generates a code128 barcode image using the bwip-js npm package.' --- # Lesson 2: Writing a Serverless Action diff --git a/src/pages/resources/barcode-reader/bootstrap.md b/src/pages/resources/barcode-reader/bootstrap.md index 1579cc502..cc7e253f6 100644 --- a/src/pages/resources/barcode-reader/bootstrap.md +++ b/src/pages/resources/barcode-reader/bootstrap.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Lesson 1: Bootstrap a Headless App Builder App' +description: 'Bootstrap a headless App Builder application for the barcode generator Code Lab using aio app init.' --- # Lesson 1: Bootstrap a Headless App Builder App diff --git a/src/pages/resources/barcode-reader/requirements.md b/src/pages/resources/barcode-reader/requirements.md index b9597f86b..09c2c389b 100644 --- a/src/pages/resources/barcode-reader/requirements.md +++ b/src/pages/resources/barcode-reader/requirements.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Requirements' +description: 'Environment and account requirements for the headless barcode reader App Builder Code Lab.' --- diff --git a/src/pages/resources/barcode-reader/test.md b/src/pages/resources/barcode-reader/test.md index ca1333ec3..2c252c8f1 100644 --- a/src/pages/resources/barcode-reader/test.md +++ b/src/pages/resources/barcode-reader/test.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Lesson 3: Testing a Serverless Action' +description: 'Write Jest unit tests for the barcode-generation serverless action used in the headless App Builder Code Lab.' --- # Lesson 3: Testing a Serverless Action diff --git a/src/pages/resources/barcode-reader/welldone.md b/src/pages/resources/barcode-reader/welldone.md index 8d5b57427..206e0150f 100644 --- a/src/pages/resources/barcode-reader/welldone.md +++ b/src/pages/resources/barcode-reader/welldone.md @@ -5,9 +5,9 @@ keywords: - API Documentation - Developer Tooling title: Well done +description: 'Recap of the headless barcode reader Code Lab and the App Builder skills you learned.' --- -# Well Done # Well Done **You've reached the end**. This is all it takes to build an App Builder Headless App. Now you can use the barcode action, for example in an [email template inside Adobe Campaign](https://medium.com/adobetech/adobe-i-o-runtime-polishing-the-rough-edges-of-saas-solutions-238f82b58765). diff --git a/src/pages/resources/blog-articles.md b/src/pages/resources/blog-articles.md index 4d5146871..912aea82b 100644 --- a/src/pages/resources/blog-articles.md +++ b/src/pages/resources/blog-articles.md @@ -142,7 +142,7 @@ Anil is a big advocate of App Builder for non-developers. He shares insights, ba ### From idea to app: building a real Adobe App Builder solution that extends Experience Cloud -[Read on Experience League](https://experienceleague.adobe.com/en/perspectives/from-idea-to-app-building-a-real-adobe-app-builder-solution-that-extends-experience-cloud) +[Read on Experience League](https://experienceleague.adobe.com/en/perspectives/from-idea-to-app-building-a-real-adobe-app-builder-solution-that-extends-cx-enterprise) Vadym built an App Builder app that automated Adobe Target impression-capping configuration from 45 minutes of manual work per activity to one click. The solution reduced operational effort from nearly an hour to seconds while ensuring consistent, governed execution directly in Experience Cloud. diff --git a/src/pages/resources/ci-cd/lesson1.md b/src/pages/resources/ci-cd/lesson1.md index a52fc1347..d2b2d8386 100644 --- a/src/pages/resources/ci-cd/lesson1.md +++ b/src/pages/resources/ci-cd/lesson1.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Lesson 1: Setup CI/CD' +description: 'Set up a CI/CD workflow for an App Builder application using GitHub Actions and the bundled Adobe I/O actions.' --- # Lesson 1: Setup CI/CD @@ -13,7 +14,7 @@ App Builder comes with pre-defined GitHub actions to manage your CI/CD workflow. ## Setup your GitHub repository for your App Builder App -To put your App Builder App up on GitHub, you'll need to create a repository for it to live in. You can follow these [steps](https://help.github.com/en/github/getting-started-with-github/create-a-repo) to create an empty repository. +To put your App Builder App up on GitHub, you'll need to create a repository for it to live in. You can follow these [steps](https://docs.github.com/en/repositories/creating-and-managing-repositories/quickstart-for-repositories) to create an empty repository. Once your repository is available on GitHub, you can copy your repository url e.g. `https://github.com//.git`. Then in the command line, use `git clone https://github.com//.git` to clone the repository to your local system. @@ -33,7 +34,7 @@ By selecting the CI/CD workflow option, the application code will be initialized This folder contains default GitHub Workflows that can be customized and extended if needed. -**pr_test.yml** is the GitHub action that will run the App unit tests on the stage environment by calling `aio app test` against the requested changes. It will run anytime the [pull_request](https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request) event occurs. +**pr_test.yml** is the GitHub action that will run the App unit tests on the stage environment by calling `aio app test` against the requested changes. It will run anytime the [pull_request](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows) event occurs. > Note: The versions in the example workflow files below (ex. @3) may not be the latest. We recommend updating to the newest major version when starting a new project, especially if setup is not working. To see the latest release, go to the Releases section of [adobe/aio-apps-action](https://github.com/adobe/aio-apps-action). @@ -76,7 +77,7 @@ jobs: ``` **deploy_stage.yml** is the GitHub action that will deploy the App Builder App to the stage environment on every new commit on the `master` branch by calling `aio app deploy`. -It will run anytime the [push](https://help.github.com/en/actions/reference/events-that-trigger-workflows#push-event-push) event occurs on the `master` branch. +It will run anytime the [push](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows) event occurs on the `master` branch. ```yaml name: AIO App CI @@ -122,7 +123,7 @@ jobs: AIO_RUNTIME_NAMESPACE: ${{ secrets.AIO_RUNTIME_NAMESPACE_STAGE }} ``` -**deploy_prod.yml** is the GitHub action that will deploy the App Builder App to the production environment by calling `aio app deploy`. It will run anytime the [release](https://help.github.com/en/actions/reference/events-that-trigger-workflows#release-event-release) event occurs. Please read [GitHub's documentation ](https://help.github.com/en/github/administering-a-repository/managing-releases-in-a-repository) to learn how to perform releases. +**deploy_prod.yml** is the GitHub action that will deploy the App Builder App to the production environment by calling `aio app deploy`. It will run anytime the [release](https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows) event occurs. Please read [GitHub's documentation ](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository) to learn how to perform releases. ```yaml name: AIO App CI @@ -179,7 +180,7 @@ The GitHub actions defined in `deploy_stage.yml` will run by default. Go to `htt ## GitHub secrets -To differentiate Stage from Production environments, the GitHub actions rely on [GitHub secrets](https://help.github.com/en/actions/configuring-and-managing-workflows/creating-and-storing-encrypted-secrets). Encrypted secrets allow you to store sensitive information, such as access tokens, in your repository. +To differentiate Stage from Production environments, the GitHub actions rely on [GitHub secrets](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-secrets). Encrypted secrets allow you to store sensitive information, such as access tokens, in your repository. By default, the secrets required for `deploy_prod.yml` for the **Production environment** are named: @@ -205,13 +206,13 @@ If you can't add secrets to the repository, possibilities include: * You don't have admin access for an organization repository * You don't have write access to the repository if you're using the [GitHub Actions secrets API](https://developer.github.com/v3/actions/secrets/#create-or-update-a-secret-for-a-repository) -The secrets value can be retrieved in the [Developer Console](https://console.adobe.io/), from which you can download Stage and Production namespaces and credentials. +The secrets value can be retrieved in the [Developer Console](https://developer.adobe.com/console/), from which you can download Stage and Production namespaces and credentials. ![developer-console](assets/developer-console.png) Follow these steps to retrieve the value for the secrets: `AIO_RUNTIME_NAMESPACE_STAGE`, `AIO_RUNTIME_AUTH_STAGE` and `AIO_RUNTIME_NAMESPACE_PROD`, `AIO_RUNTIME_AUTH_PRD`: -1. Go to the [Developer Console](https://console.adobe.io/) +1. Go to the [Developer Console](https://developer.adobe.com/console/) 2. Select the right org, project and workspace 3. Click on the Download all button on the top right diff --git a/src/pages/resources/ci-cd/lesson2.md b/src/pages/resources/ci-cd/lesson2.md index 3b67b27a8..407a4eb79 100644 --- a/src/pages/resources/ci-cd/lesson2.md +++ b/src/pages/resources/ci-cd/lesson2.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: 'Lesson 2: Monitoring CI/CD' +description: 'Monitor and debug failing GitHub Actions workflows for an App Builder application.' --- # Lesson 2: Monitoring CI/CD @@ -50,4 +51,4 @@ Finally, the Deploy GitHub action will run and deploy the App Builder App on the GitHub Actions provide cloud based CI/CD features; therefore you can't debug jobs locally. GitHub provides tools to help you debug failing jobs. -Please find more information on how to view run logs, enable verbose logs, and more in the [GitHub documentation](https://docs.github.com/en/free-pro-team@latest/actions/managing-workflow-runs). +Please find more information on how to view run logs, enable verbose logs, and more in the [GitHub documentation](https://docs.github.com/en/actions/how-tos/manage-workflow-runs). diff --git a/src/pages/resources/ci-cd/lesson3.md b/src/pages/resources/ci-cd/lesson3.md index 2f7dedf74..50bffe7e3 100644 --- a/src/pages/resources/ci-cd/lesson3.md +++ b/src/pages/resources/ci-cd/lesson3.md @@ -5,13 +5,14 @@ keywords: - API Documentation - Developer Tooling title: 'Lesson 3: Custom CI/CD workflow' +description: 'Customize CI/CD workflows for an App Builder application with extra environment variables and steps.' --- # Lesson 3: Custom CI/CD workflow ## Setting environment variables -You can add additional environment variables to the test and deploy GitHub workflows see the [GitHub documentation](https://docs.github.com/en/free-pro-team@latest/actions/reference/environment-variables) for more information. +You can add additional environment variables to the test and deploy GitHub workflows see the [GitHub documentation](https://docs.github.com/en/actions/how-tos/write-workflows/choose-what-workflows-do/use-variables) for more information. In our case, if you want to add for example environment values named `MY_ENV_VALUE_1` and `MY_ENV_VALUE_2` to the stage and production deploy workflow, follow these steps: diff --git a/src/pages/resources/ci-cd/requirements.md b/src/pages/resources/ci-cd/requirements.md index a2c6e29cb..07fcdb99d 100644 --- a/src/pages/resources/ci-cd/requirements.md +++ b/src/pages/resources/ci-cd/requirements.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Codelab Environment Requirements +description: 'Environment, GitHub account, and tooling requirements for the CI/CD Code Lab.' --- @@ -13,5 +14,5 @@ title: Codelab Environment Requirements You should also have a GitHub account: -* [Creating your GitHub account](https://help.github.com/en/github/getting-started-with-github/signing-up-for-a-new-github-account) +* [Creating your GitHub account](https://docs.github.com/en/get-started/start-your-journey/creating-an-account-on-github) * [Installing a Git client](https://git-scm.com/downloads) diff --git a/src/pages/resources/ci-cd/welldone.md b/src/pages/resources/ci-cd/welldone.md index ee1db54b6..eebf96fdd 100644 --- a/src/pages/resources/ci-cd/welldone.md +++ b/src/pages/resources/ci-cd/welldone.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: Well done +description: 'Recap of the CI/CD Code Lab and the GitHub Actions skills you learned for App Builder applications.' --- # Well Done diff --git a/src/pages/resources/cron-jobs/lesson1.md b/src/pages/resources/cron-jobs/lesson1.md index fde34c267..c33ce635e 100644 --- a/src/pages/resources/cron-jobs/lesson1.md +++ b/src/pages/resources/cron-jobs/lesson1.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 1: Bootstrap a Headless App' +description: 'Bootstrap a headless App Builder application to be triggered on a schedule by an alarm feed.' --- # Lesson 1: Bootstrap a Headless App diff --git a/src/pages/resources/cron-jobs/lesson2.md b/src/pages/resources/cron-jobs/lesson2.md index 65b2f2cf1..4ae5b8989 100644 --- a/src/pages/resources/cron-jobs/lesson2.md +++ b/src/pages/resources/cron-jobs/lesson2.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 2: Set up Alarm Feed with Trigger and Rule' +description: 'Set up an alarm feed with a trigger and rule to invoke an App Builder action on an interval schedule.' --- # Lesson 2: Set up Alarm Feed with Trigger and Rule diff --git a/src/pages/resources/cron-jobs/lesson3.md b/src/pages/resources/cron-jobs/lesson3.md index 639a19555..c4ba548d0 100644 --- a/src/pages/resources/cron-jobs/lesson3.md +++ b/src/pages/resources/cron-jobs/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 3: Types of Alarm Feed' +description: 'Use other alarm feed types in Adobe I/O Runtime to fire triggers once or on a cron schedule.' --- # Lesson 3: Types of Alarm Feed @@ -30,7 +31,7 @@ Note that `YYYY-MM-DDTHH:mm:ss.sssZ` is just a format for this field; you are fr ## Firing a trigger on a time-based schedule using cron -The `/whisk.system/alarms/alarm` feed allows you to [fire an event on a time-based schedule using cron](https://github.com/apache/openwhisk-package-alarms#firing-a-trigger-on-a-time-based-schedule-using-cron). This is more generic than the `interval` and `once` feeds, because you can write crontab to configure the alarm service to trigger at the exact time and interval you want. The only required parameter is `cron`, a string based on the [UNIX crontab syntax](http://crontab.org) that indicates when to fire the trigger in UTC. Optional params are `trigger_payload`, `startDate` and `stopDate`. +The `/whisk.system/alarms/alarm` feed allows you to [fire an event on a time-based schedule using cron](https://github.com/apache/openwhisk-package-alarms#firing-a-trigger-on-a-time-based-schedule-using-cron). This is more generic than the `interval` and `once` feeds, because you can write crontab to configure the alarm service to trigger at the exact time and interval you want. The only required parameter is `cron`, a string based on the [UNIX crontab syntax](https://crontab.guru/) that indicates when to fire the trigger in UTC. Optional params are `trigger_payload`, `startDate` and `stopDate`. diff --git a/src/pages/resources/cron-jobs/requirements.md b/src/pages/resources/cron-jobs/requirements.md index 9560099dc..19312404e 100644 --- a/src/pages/resources/cron-jobs/requirements.md +++ b/src/pages/resources/cron-jobs/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Codelab Environment Requirements +description: 'Environment requirements for the App Builder cron jobs and alarm feeds Code Lab.' --- diff --git a/src/pages/resources/cron-jobs/welldone.md b/src/pages/resources/cron-jobs/welldone.md index ba4487718..2a1f28f46 100644 --- a/src/pages/resources/cron-jobs/welldone.md +++ b/src/pages/resources/cron-jobs/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Well done +description: 'Recap of the cron jobs Code Lab and the App Builder scheduler skills you learned.' --- # Well Done diff --git a/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md b/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md index 45602ecdd..f8383a808 100644 --- a/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md +++ b/src/pages/resources/custom-asset-compute-worker/aem-cloud-assets.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: How AEM as Cloud Aassets Works +description: 'How AEM as a Cloud Service handles asset binaries and where Asset Compute custom workers fit in.' --- # How AEM as Cloud Assets Works diff --git a/src/pages/resources/custom-asset-compute-worker/index.md b/src/pages/resources/custom-asset-compute-worker/index.md index 8e0e852c5..d2ef31905 100644 --- a/src/pages/resources/custom-asset-compute-worker/index.md +++ b/src/pages/resources/custom-asset-compute-worker/index.md @@ -22,5 +22,5 @@ Image resizing or format conversion is a relatively easy task when doing renditi Your project might require more robust approaches supported by intelligent image services. For example, you might need to change images to greyscale, or intelligently crop the images around faces. This Code Lab will guide you through the creating a [custom worker for Asset Compute][asset-compute-extensions] using App Builder, and how to use it in [Adobe Experience Manager as a Cloud service][aem-cloud]. -[asset-compute-extensions]: https://docs.adobe.com/content/help/en/asset-compute/using/extend/understand-extensibility.html -[aem-cloud]: https://docs.adobe.com/content/help/en/experience-manager-cloud-service/landing/home.html +[asset-compute-extensions]: https://experienceleague.adobe.com/en/docs/asset-compute/using/extend/understand-extensibility +[aem-cloud]: https://experienceleague.adobe.com/en/docs/experience-manager-cloud-service/content/overview/introduction diff --git a/src/pages/resources/custom-asset-compute-worker/lesson1.md b/src/pages/resources/custom-asset-compute-worker/lesson1.md index 7dd48d555..4fa6d1e7f 100644 --- a/src/pages/resources/custom-asset-compute-worker/lesson1.md +++ b/src/pages/resources/custom-asset-compute-worker/lesson1.md @@ -7,12 +7,11 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: 'Lesson 1: Configure Services' +description: 'Configure Azure blob storage, imgIX, and Adobe I/O services for the custom Asset Compute worker Code Lab.' --- -# Lesson 1: Configure Services # Lesson 1: Configure Services -## Create Azure blob storage ## Create Azure blob storage You need to [create Azure blob storage][create-azure-blob] on your Azure account. Then, create two containers: @@ -37,7 +36,6 @@ To test your configuration: `https://.imgix.net/image.png` 3. Open the signed URL in the browser to verify the image is loaded -## Configure Adobe I/O ## Configure Adobe I/O 1. Go to the [https://console.adobe.io][adobe-console] and create a [new project using App Builder template][adobe-console-firefly-template]. @@ -49,8 +47,8 @@ To test your configuration: pair** and your keys will be downloaded as a zip file. 4. Unzip the file and write down the location to the **private.key**. -[create-azure-blob]: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal 'Create storage account and container' +[create-azure-blob]: https://learn.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-portal 'Create storage account and container' [imgix-create-azure-source]: https://docs.imgix.com/setup/creating-sources/microsoft-azure 'Setting up your Microsoft Azure Source' [imgix-tools]: https://dashboard.imgix.com/tools -[adobe-console]: https://console.adobe.io 'Adobe IO Console' +[adobe-console]: https://developer.adobe.com/console/ 'Adobe IO Console' [adobe-console-firefly-template]: ../../get_started/app_builder_get_started/first-app.md#2-creating-a-new-project-on-developer-console 'Creating new project on Adobe Developer console' diff --git a/src/pages/resources/custom-asset-compute-worker/lesson2.md b/src/pages/resources/custom-asset-compute-worker/lesson2.md index e1acb7fa1..b6fd405d3 100644 --- a/src/pages/resources/custom-asset-compute-worker/lesson2.md +++ b/src/pages/resources/custom-asset-compute-worker/lesson2.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: 'Lesson 2: Local environment setup' +description: 'Install the aio CLI and prepare the local environment for the custom Asset Compute worker Code Lab.' --- # Lesson 2: Local Environment Setup diff --git a/src/pages/resources/custom-asset-compute-worker/lesson3.md b/src/pages/resources/custom-asset-compute-worker/lesson3.md index 95d492bc3..29943912d 100644 --- a/src/pages/resources/custom-asset-compute-worker/lesson3.md +++ b/src/pages/resources/custom-asset-compute-worker/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: 'Lesson 3: Implement the worker' +description: 'Implement a custom Asset Compute worker that produces renditions using the imgIX service.' --- # Lesson 3: Implement the Worker diff --git a/src/pages/resources/custom-asset-compute-worker/lesson4.md b/src/pages/resources/custom-asset-compute-worker/lesson4.md index 7a3f897e6..0ed32f289 100644 --- a/src/pages/resources/custom-asset-compute-worker/lesson4.md +++ b/src/pages/resources/custom-asset-compute-worker/lesson4.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: 'Lesson 4: Test the worker' +description: 'Test a custom Asset Compute worker locally using the Asset Compute Developer tool.' --- # Lesson 4: Test the Worker diff --git a/src/pages/resources/custom-asset-compute-worker/lesson5.md b/src/pages/resources/custom-asset-compute-worker/lesson5.md index 574c47976..7e357e7ff 100644 --- a/src/pages/resources/custom-asset-compute-worker/lesson5.md +++ b/src/pages/resources/custom-asset-compute-worker/lesson5.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: 'Lesson 5: Setup AEM to use the worker' +description: 'Configure AEM as a Cloud Service to use a custom Asset Compute worker via processing profiles.' --- # Lesson 5: Set Up AEM to Use the Worker diff --git a/src/pages/resources/custom-asset-compute-worker/our-worker.md b/src/pages/resources/custom-asset-compute-worker/our-worker.md index 6f053bb3b..5154da61b 100644 --- a/src/pages/resources/custom-asset-compute-worker/our-worker.md +++ b/src/pages/resources/custom-asset-compute-worker/our-worker.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: Architecture of our worker +description: 'Architecture of a custom Asset Compute worker that produces renditions using imgIX and Azure blob storage.' --- # Architecture of Our Worker diff --git a/src/pages/resources/custom-asset-compute-worker/requirements.md b/src/pages/resources/custom-asset-compute-worker/requirements.md index 73469593f..053a929bd 100644 --- a/src/pages/resources/custom-asset-compute-worker/requirements.md +++ b/src/pages/resources/custom-asset-compute-worker/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: Codelab Environment Requirements +description: 'Environment, third-party service, and account requirements for the custom Asset Compute worker Code Lab.' --- diff --git a/src/pages/resources/custom-asset-compute-worker/welldone.md b/src/pages/resources/custom-asset-compute-worker/welldone.md index 1545cd300..7b025ee01 100644 --- a/src/pages/resources/custom-asset-compute-worker/welldone.md +++ b/src/pages/resources/custom-asset-compute-worker/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/marcinczeczko' title: Well done +description: 'Recap of the custom Asset Compute worker Code Lab and the intelligent rendition skills you learned.' --- # Well Done diff --git a/src/pages/resources/customer-dashboard/index.md b/src/pages/resources/customer-dashboard/index.md index 8ee8c2a58..a69e8925d 100644 --- a/src/pages/resources/customer-dashboard/index.md +++ b/src/pages/resources/customer-dashboard/index.md @@ -20,7 +20,7 @@ App Builder is a complete platform that enables enterprise Developers to build a [Adobe Campaign Standard (ACS)](https://www.adobe.com/marketing/campaign.html) provides a platform for designing and executing digital marketing campaigns and provides an environment for visual campaign orchestration -[Campaign Standard APIs](https://docs.adobe.com/content/help/en/campaign-standard/using/working-with-apis/about-campaign-standard-apis/about-campaign-standard-apis.html) let you create integrations for Adobe Campaign Standard and build your own ecosystem by interfacing Adobe Campaign Standard with the panel of technologies that you use. +[Campaign Standard APIs](https://experienceleague.adobe.com/en/docs/campaign-standard/using/working-with-apis/get-started-apis) let you create integrations for Adobe Campaign Standard and build your own ecosystem by interfacing Adobe Campaign Standard with the panel of technologies that you use. In this lab, you will learn how to: diff --git a/src/pages/resources/customer-dashboard/lesson1.md b/src/pages/resources/customer-dashboard/lesson1.md index 746d6e372..1987725b6 100644 --- a/src/pages/resources/customer-dashboard/lesson1.md +++ b/src/pages/resources/customer-dashboard/lesson1.md @@ -6,7 +6,8 @@ keywords: - Developer Tooling contributors: - 'https://github.com/duynguyen' -title: 'Lesson 1: Create a New App Builder App from Campaign Standard Template' +title: 'Lesson 1: Create an App from the Campaign Standard Template' +description: 'Create an App Builder application from the Adobe Campaign Standard template for the customer dashboard Code Lab.' --- # Lesson 1: Create a New App Builder App from Campaign Standard Template diff --git a/src/pages/resources/customer-dashboard/lesson2.md b/src/pages/resources/customer-dashboard/lesson2.md index 8f040ff76..297a0d4bb 100644 --- a/src/pages/resources/customer-dashboard/lesson2.md +++ b/src/pages/resources/customer-dashboard/lesson2.md @@ -7,13 +7,14 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 2: Explore the App Builder App' +description: 'Explore the file structure, manifest, and credentials of a Campaign Standard App Builder application.' --- # Lesson 2: Explore the App Builder App Within the newly created app, you have seen the `.env` file with your credentials for running the app. -`package.json` is the [crucial part](https://docs.npmjs.com/creating-a-package-json-file) of almost every NodeJS project. It contains the list of dependencies, version, reproducible builds, and so on. +`package.json` is the [crucial part](https://docs.npmjs.com/creating-a-package-json-file/) of almost every NodeJS project. It contains the list of dependencies, version, reproducible builds, and so on. `ext.config.yaml` in the `src/dx-excshell-1/` folder is the cockpit of your App Builder app back end. It lists the declaration of serverless actions including name, source files, runtime kind, default parameters, annotations, and so on. You can find the grammar of writing manifest [here](https://github.com/apache/openwhisk-wskdeploy/blob/master/docs/programming_guide.md#wskdeploy-utility-by-example): @@ -113,7 +114,7 @@ exports.main = main Here, the [action](https://github.com/apache/openwhisk/blob/master/docs/actions-nodejs.md) exposes a `main` function, which accepts a list of parameters from the client. It checks that required parameters for using the Campaign Standard SDK are present in the list, including the `Authorization` header for authentication against Adobe IMS. -An access token is retrieved to initiate the SDK client instance, which is then used to retrieve the list of customer profiles using the [getAllProfiles()](https://docs.adobe.com/content/help/en/campaign-standard/using/working-with-apis/managing-profiles/retrieving-profiles.html) function. Finally, the profiles are returned to the client. The entire execution is wrapped within a try-catch block, so errors are handled appropriately. +An access token is retrieved to initiate the SDK client instance, which is then used to retrieve the list of customer profiles using the [getAllProfiles()](https://experienceleague.adobe.com/en/docs/campaign-standard/using/working-with-apis/managing-profiles/retrieving-profiles) function. Finally, the profiles are returned to the client. The entire execution is wrapped within a try-catch block, so errors are handled appropriately. Next, let's see how the web UI communicates with the back end. All web assets are placed in the `src/dx-excshell-1/web-src` folder. diff --git a/src/pages/resources/customer-dashboard/lesson3.md b/src/pages/resources/customer-dashboard/lesson3.md index eccb327a5..abc65bbd9 100644 --- a/src/pages/resources/customer-dashboard/lesson3.md +++ b/src/pages/resources/customer-dashboard/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 3: Run the App Builder App Locally' +description: 'Run a Campaign Standard App Builder application locally with aio app run and accept the self-signed certificate.' --- # Lesson 3: Run the App Builder App Locally diff --git a/src/pages/resources/customer-dashboard/lesson4.md b/src/pages/resources/customer-dashboard/lesson4.md index 179057ece..5866b3228 100644 --- a/src/pages/resources/customer-dashboard/lesson4.md +++ b/src/pages/resources/customer-dashboard/lesson4.md @@ -7,11 +7,12 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 4: List All Customer Profiles on the UI' +description: 'Use React Spectrum to display a list of customer profiles loaded from Adobe Campaign Standard on the App Builder UI.' --- # Lesson 4: List All Customer Profiles on the UI -The app UI is powered by [React Spectrum](https://react-spectrum.adobe.com/react-spectrum/index.html) by default. To learn more about React Spectrum, please consult the [React Spectrum Code Lab](../todo-app/index.md). +The app UI is powered by [React Spectrum](https://react-spectrum.adobe.com/) by default. To learn more about React Spectrum, please consult the [React Spectrum Code Lab](../todo-app/index.md). In the [previous lesson](lesson3.md), customer profiles were loaded to the front end only when you click the "Invoke" button. Now we want the profiles loaded automatically on the Home page when the page is ready, with no human interaction. diff --git a/src/pages/resources/customer-dashboard/lesson5.md b/src/pages/resources/customer-dashboard/lesson5.md index 42f0ef989..6900af9aa 100644 --- a/src/pages/resources/customer-dashboard/lesson5.md +++ b/src/pages/resources/customer-dashboard/lesson5.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 5: Add Personalized Promotion Emails Triggering' +description: 'Add personalized promotion email triggering to the customer dashboard using a new Runtime action and uuid barcode.' --- # Lesson 5: Add Personalized Promotion Emails Triggering diff --git a/src/pages/resources/customer-dashboard/requirements.md b/src/pages/resources/customer-dashboard/requirements.md index a67d03187..744e31419 100644 --- a/src/pages/resources/customer-dashboard/requirements.md +++ b/src/pages/resources/customer-dashboard/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Codelab Environment Requirements +description: 'Environment and Adobe Campaign Standard requirements for the customer dashboard Code Lab.' --- diff --git a/src/pages/resources/customer-dashboard/welldone.md b/src/pages/resources/customer-dashboard/welldone.md index 60edd4998..588897aa3 100644 --- a/src/pages/resources/customer-dashboard/welldone.md +++ b/src/pages/resources/customer-dashboard/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Well done +description: 'Recap of the customer dashboard Code Lab and the Campaign Standard skills you learned.' --- # Well Done diff --git a/src/pages/resources/debugging/lesson1.md b/src/pages/resources/debugging/lesson1.md index 37485aa6c..4d7615b03 100644 --- a/src/pages/resources/debugging/lesson1.md +++ b/src/pages/resources/debugging/lesson1.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 1: Getting Familiar with Debugger' +description: 'Get familiar with wskdebug and the VS Code launch profiles generated for App Builder applications.' --- # Lesson 1: Getting to know wskdebug diff --git a/src/pages/resources/debugging/lesson2.md b/src/pages/resources/debugging/lesson2.md index 5c0b11547..edee67ab4 100644 --- a/src/pages/resources/debugging/lesson2.md +++ b/src/pages/resources/debugging/lesson2.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 2: Debugging Application Code' +description: 'Debug App Builder application code inside the Experience Cloud Shell using VS Code breakpoints.' --- # Lesson 2: Debugging Application Code diff --git a/src/pages/resources/debugging/lesson3.md b/src/pages/resources/debugging/lesson3.md index 017640e3e..cace1e8c5 100644 --- a/src/pages/resources/debugging/lesson3.md +++ b/src/pages/resources/debugging/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: 'Lesson 3: Managing Application Logs' +description: 'Manage application logs in App Builder applications using the core Logging library and LOG_LEVEL input.' --- # Lesson 3: Managing Application Logs diff --git a/src/pages/resources/debugging/requirements.md b/src/pages/resources/debugging/requirements.md index 063f16c49..ecb0a72d3 100644 --- a/src/pages/resources/debugging/requirements.md +++ b/src/pages/resources/debugging/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Codelab Environment Requirements +description: 'Environment requirements for the App Builder debugging Code Lab, including Visual Studio Code.' --- diff --git a/src/pages/resources/debugging/welldone.md b/src/pages/resources/debugging/welldone.md index d794b28d9..220b67899 100644 --- a/src/pages/resources/debugging/welldone.md +++ b/src/pages/resources/debugging/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/duynguyen' title: Well done +description: 'Recap of the debugging Code Lab and the VS Code debugging skills you learned for App Builder applications.' --- # Well done diff --git a/src/pages/resources/event-driven/lesson1.md b/src/pages/resources/event-driven/lesson1.md index 31e7e6224..1c953d15d 100644 --- a/src/pages/resources/event-driven/lesson1.md +++ b/src/pages/resources/event-driven/lesson1.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 1: Create a New App Builder App from Template' +description: 'Create an App Builder application from a template for the event-driven Code Lab, including required Console services.' --- # Lesson 1: Create a New App Builder App from Template @@ -24,7 +25,7 @@ To use the custom events CLI plugin, you need this information from the console - `Config.zip`: Configuration file downloaded from the console, including `private key` and `certificate_pub.crt` - `project.json`: For instance, the `projectname-orgId-Production.json` file downloaded from the console -1. Navigate to the Adobe I/O console at [https://console.adobe.io](https://console.adobe.io) in your browser and create a project using an App Builder template, or use your existing project . +1. Navigate to the Adobe I/O console at [https://developer.adobe.com/console/](https://developer.adobe.com/console/) in your browser and create a project using an App Builder template, or use your existing project . 2. Select `Add to Project` -> `Add an API` -> `Adobe Services` -> `I/O managemenet API`. diff --git a/src/pages/resources/event-driven/lesson2.md b/src/pages/resources/event-driven/lesson2.md index b2478faaf..9d11c31ef 100644 --- a/src/pages/resources/event-driven/lesson2.md +++ b/src/pages/resources/event-driven/lesson2.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 2: Register the App as Event Provider' +description: 'Register an App Builder application as a custom event provider using the Adobe I/O Events CLI plugin.' --- # Lesson 2: Register the App as an Event Provider diff --git a/src/pages/resources/event-driven/lesson3.md b/src/pages/resources/event-driven/lesson3.md index 10973d8aa..e7d803973 100644 --- a/src/pages/resources/event-driven/lesson3.md +++ b/src/pages/resources/event-driven/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 3: Fire an Event' +description: 'Fire a custom event from an App Builder action using publish-event and the Adobe I/O Events SDK.' --- # Lesson 3: Fire an Event @@ -160,7 +161,7 @@ You will see your deployed link in the terminal. Next, let's see how the web UI communicates with the back end. In `web-src/src/components` we already provided a template of the UI. After you select the actions to `publish-events`, clicking the `invoke` button will invoke the action. The action will send out the event. When you invoke, you could also add actual parameters. In this example we added `{"payload": "you got a like"}` In the webhook result, you will see the payload: `{"data": "you got a like"}`. -> Note: This example uses [this webhook tool](https://io-webhook.herokuapp.com/) to generate a webhook link and put the webhook to the console integration. You can use other tools, as discussed in the next lesson. +> Note: This example uses a webhook inspector tool such as [Webhook.site](https://webhook.site/) to generate a webhook URL and put the webhook to the console integration. You can use other tools, as discussed in the next lesson. ![templateui](assets/template-ui.png) diff --git a/src/pages/resources/event-driven/lesson4.md b/src/pages/resources/event-driven/lesson4.md index 86ef2dad1..a32481f24 100644 --- a/src/pages/resources/event-driven/lesson4.md +++ b/src/pages/resources/event-driven/lesson4.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 4: Consume Events' +description: 'Consume Adobe I/O Events from an App Builder application using the Journaling API, Runtime actions, or webhooks.' --- # Lesson 4: Consume Events @@ -21,7 +22,7 @@ There are three ways one can consume event: Adobe offers journaling to consume events. The Adobe I/O Events Journaling API lets enterprise integrations consume events at their own cadence and process them in bulk. Unlike webhooks, no additional registration or other configuration is required. Every enterprise integration that is registered for events is automatically enabled for journaling. Journaling data is retained for 7 days. -After you fire an event, you should be able to verify it by journaling the `UNIQUE API ENDPOINT` you get from the console by following the instructions in the Adobe I/O Events documentation: [Journaling API](https://developer.adobe.com/events/docs/guides/api/journaling_api/). +After you fire an event, you should be able to verify it by journaling the `UNIQUE API ENDPOINT` you get from the console by following the instructions in the [Adobe I/O Events API documentation](https://developer.adobe.com/events/docs/guides/api/). You could also use the `Curl` command or `POSTMAN` to call the journaling `UNIQUE API ENDPOINT` to see your fired event. Or you could use [Custom event SDK](https://github.com/adobe/aio-lib-events/) to call the Journaling API and retrieve your event. diff --git a/src/pages/resources/event-driven/requirements.md b/src/pages/resources/event-driven/requirements.md index bfc73e35b..47a52fab8 100644 --- a/src/pages/resources/event-driven/requirements.md +++ b/src/pages/resources/event-driven/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: Codelab Environment Requirements +description: 'Environment, Console, and aio CLI Events plugin requirements for the event-driven App Builder Code Lab.' --- @@ -19,6 +20,6 @@ In addition to the prerequisites listed above, please install the [Adobe I/O Eve npm install -g @adobe/aio-cli-plugin-events ``` -We assume that you have access and authorization to create integrations on [Adobe I/O Console](https://console.adobe.io/). `I/O Management Service` needs to be enabled for the integration. This will help create the JWT token with adobeio_api scope that is required for all the API calls. +We assume that you have access and authorization to create integrations on [Adobe I/O Console](https://developer.adobe.com/console/). `I/O Management Service` needs to be enabled for the integration. This will help create the JWT token with adobeio_api scope that is required for all the API calls. ![webhook](assets/event.png) diff --git a/src/pages/resources/event-driven/welldone.md b/src/pages/resources/event-driven/welldone.md index 32852ffbf..f95669967 100644 --- a/src/pages/resources/event-driven/welldone.md +++ b/src/pages/resources/event-driven/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: Well done +description: 'Recap of the event-driven App Builder Code Lab and the I/O Events skills you learned.' --- # Well Done diff --git a/src/pages/resources/events-runtime/lesson1.md b/src/pages/resources/events-runtime/lesson1.md index e0162667e..4ca074ac6 100644 --- a/src/pages/resources/events-runtime/lesson1.md +++ b/src/pages/resources/events-runtime/lesson1.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 1: Step by Step Guide' +description: 'Initialize an App Builder application and register an event provider for the Runtime actions webhook Code Lab.' --- # Lesson 1: Initialize an App Builder App Using a Template diff --git a/src/pages/resources/events-runtime/lesson2.md b/src/pages/resources/events-runtime/lesson2.md index 568826cf9..977cfca1d 100644 --- a/src/pages/resources/events-runtime/lesson2.md +++ b/src/pages/resources/events-runtime/lesson2.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 2: Verify the result' +description: 'Verify event provider behavior by tracing actions with Activation IDs in the Adobe Developer Console.' --- # Lesson 2: Verify the Result diff --git a/src/pages/resources/events-runtime/requirements.md b/src/pages/resources/events-runtime/requirements.md index d7dd007a1..349a1e650 100644 --- a/src/pages/resources/events-runtime/requirements.md +++ b/src/pages/resources/events-runtime/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: Codelab Environment Requirements +description: 'Environment requirements and supporting documents for the Runtime actions webhook Code Lab.' --- diff --git a/src/pages/resources/events-runtime/welldone.md b/src/pages/resources/events-runtime/welldone.md index c7668e649..297cdd539 100644 --- a/src/pages/resources/events-runtime/welldone.md +++ b/src/pages/resources/events-runtime/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: Well done +description: 'Recap of the Runtime actions webhook Code Lab and the debug tracing skills you learned.' --- ## Well Done diff --git a/src/pages/resources/index.md b/src/pages/resources/index.md index 234ea2413..2bacbe6cc 100644 --- a/src/pages/resources/index.md +++ b/src/pages/resources/index.md @@ -115,7 +115,7 @@ Building a Custom Asset Compute Worker using third-party services to generate in ### Build an app that consumes Adobe Experience Manager events -[Start (30 min)](https://experienceleague.adobe.com/docs/adobe-developers-live-events/events/2021/oct2021/consume-aem-events.html?lang=en) +[Start (30 min)](https://experienceleague.adobe.com/en/docs/events/adobe-developers-live-recordings/overview) Learn why is it a good idea to build event-driven applications and how to build them with ease using App Builder. diff --git a/src/pages/resources/journaling-events/index.md b/src/pages/resources/journaling-events/index.md index b3dee690c..91a155bbe 100644 --- a/src/pages/resources/journaling-events/index.md +++ b/src/pages/resources/journaling-events/index.md @@ -22,7 +22,7 @@ There is a class of App Builder apps for which customers want guarantees that I/ ## Solution -- Use the [Journaling API](https://developer.adobe.com/events/docs/guides/api/journaling_api/) to retrieve events instead of relying on the webhook approach. +- Use the [Journaling API](https://developer.adobe.com/events/docs/guides/api/) to retrieve events instead of relying on the webhook approach. - Use a Runtime action that uses the [Alarm package](../cron-jobs/index.md) to read the events every X minutes. - The alarm action stores the events in the App Builder storage [aio-lib-state](https://github.com/adobe/aio-lib-state) - Record an index of events in storage so that if the action fails, the next invocation will retrieve from the same index, and no events will be lost. diff --git a/src/pages/resources/journaling-events/lesson1.md b/src/pages/resources/journaling-events/lesson1.md index e2425aec4..9d5911e1e 100644 --- a/src/pages/resources/journaling-events/lesson1.md +++ b/src/pages/resources/journaling-events/lesson1.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 1: Create an Event Provider using App Builder' +description: 'Create an event provider using App Builder and the OpenWhisk Alarms package for the Journaling API Code Lab.' --- # Lesson 1: Create an Event Provider using App Builder diff --git a/src/pages/resources/journaling-events/lesson2.md b/src/pages/resources/journaling-events/lesson2.md index 8fecd5685..f7e511119 100644 --- a/src/pages/resources/journaling-events/lesson2.md +++ b/src/pages/resources/journaling-events/lesson2.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 2: Create the Event Consumer using Journaling API' +description: 'Create an event consumer using the Journaling API and store events with aio-lib-state.' --- # Lesson 2: Create an Event Consumer using the Journaling API diff --git a/src/pages/resources/journaling-events/lesson3.md b/src/pages/resources/journaling-events/lesson3.md index f1034e8ff..9abe5722b 100644 --- a/src/pages/resources/journaling-events/lesson3.md +++ b/src/pages/resources/journaling-events/lesson3.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: 'Lesson 3: End to end test' +description: 'Run an end-to-end test of the Journaling API event provider and consumer apps on different alarm schedules.' --- # Lesson 3: End-to-End Test diff --git a/src/pages/resources/journaling-events/requirements.md b/src/pages/resources/journaling-events/requirements.md index 9b817539e..8c65b2749 100644 --- a/src/pages/resources/journaling-events/requirements.md +++ b/src/pages/resources/journaling-events/requirements.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: Codelab Environment Requirements +description: 'Environment requirements and supporting documents for the Journaling API App Builder Code Lab.' --- diff --git a/src/pages/resources/journaling-events/welldone.md b/src/pages/resources/journaling-events/welldone.md index e9b794dcf..ebd887ade 100644 --- a/src/pages/resources/journaling-events/welldone.md +++ b/src/pages/resources/journaling-events/welldone.md @@ -7,6 +7,7 @@ keywords: contributors: - 'https://github.com/Yu1986' title: Well done +description: 'Recap of the Journaling API Code Lab and the high-availability event consumer skills you learned.' --- # Well Done diff --git a/src/pages/resources/sample_apps/code_snippets/analytics.md b/src/pages/resources/sample_apps/code_snippets/analytics.md index a6cd95c97..a22553448 100644 --- a/src/pages/resources/sample_apps/code_snippets/analytics.md +++ b/src/pages/resources/sample_apps/code_snippets/analytics.md @@ -4,7 +4,8 @@ keywords: - Extensibility - API Documentation - Developer Tooling -title: App Builder Code Snippets - Real-time data from Adobe Analytics API 1.4 +title: 'Code Snippets: Real-time Adobe Analytics API 1.4' +description: 'Sample App Builder action that demonstrates how to access Adobe Analytics Real-time API 1.4.' --- # Real-Time Data from Adobe Analytics API 1.4 diff --git a/src/pages/resources/sample_apps/code_snippets/events.md b/src/pages/resources/sample_apps/code_snippets/events.md index d17b41d2c..1246cf8d5 100644 --- a/src/pages/resources/sample_apps/code_snippets/events.md +++ b/src/pages/resources/sample_apps/code_snippets/events.md @@ -4,7 +4,8 @@ keywords: - Extensibility - API Documentation - Developer Tooling -title: App Builder Code Snippets - I/O Events handler +title: App Builder Code Snippets - I/O Events handler +description: 'Sample App Builder action that demonstrates how to write an I/O Events handler for webhook calls.' --- # I/O Events Handler diff --git a/src/pages/resources/sample_apps/code_snippets/files.md b/src/pages/resources/sample_apps/code_snippets/files.md index 09392443f..f3c63eaf5 100644 --- a/src/pages/resources/sample_apps/code_snippets/files.md +++ b/src/pages/resources/sample_apps/code_snippets/files.md @@ -4,7 +4,8 @@ keywords: - Extensibility - API Documentation - Developer Tooling -title: App Builder Code Snippets - App Builder Files SDK +title: App Builder Code Snippets - App Builder Files SDK +description: 'Sample App Builder action that demonstrates how to return a list of files stored with the Files SDK.' --- # App Builder Files SDK diff --git a/src/pages/resources/sample_apps/code_snippets/index.md b/src/pages/resources/sample_apps/code_snippets/index.md index 15551f8bf..cf8ee7676 100644 --- a/src/pages/resources/sample_apps/code_snippets/index.md +++ b/src/pages/resources/sample_apps/code_snippets/index.md @@ -4,7 +4,8 @@ keywords: - Extensibility - API Documentation - Developer Tooling -title: App Builder Code Snippets - Caching HTTP responses +title: App Builder Code Snippets - Caching HTTP responses +description: 'Sample App Builder action that demonstrates how to cache an action''s HTTP response at the gateway level.' --- # Caching HTTP responses diff --git a/src/pages/resources/sample_apps/code_snippets/state.md b/src/pages/resources/sample_apps/code_snippets/state.md index 1407e3301..8f5086e57 100644 --- a/src/pages/resources/sample_apps/code_snippets/state.md +++ b/src/pages/resources/sample_apps/code_snippets/state.md @@ -4,7 +4,8 @@ keywords: - Extensibility - API Documentation - Developer Tooling -title: App Builder Code Snippets - App Builder State SDK +title: App Builder Code Snippets - App Builder State SDK +description: 'Sample App Builder action that demonstrates how to read a value by key from the State SDK.' --- # App Builder State SDK diff --git a/src/pages/resources/sample_apps/demo.md b/src/pages/resources/sample_apps/demo.md index 419ad7851..3bf9a093a 100644 --- a/src/pages/resources/sample_apps/demo.md +++ b/src/pages/resources/sample_apps/demo.md @@ -5,6 +5,7 @@ keywords: - API Documentation - Developer Tooling title: App Builder Demo App +description: 'Adobe Stock image search demo app built with App Builder.' ---