diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..554310ca1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,12 @@ +--- +blank_issues_enabled: false +contact_links: + - name: Help Center + url: https://helpx.adobe.com/support.html + about: Find help with issues unrelated to documentation here. + - name: Community resources + url: https://developer.adobe.com/open + about: Find more resources here. + - name: Adobe Developer Support + url: https://developer.adobe.com/developer-support + about: Ask and answer questions. diff --git a/.github/ISSUE_TEMPLATE/incorrect_topic.yaml b/.github/ISSUE_TEMPLATE/incorrect_topic.yaml new file mode 100644 index 000000000..9828f32b1 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/incorrect_topic.yaml @@ -0,0 +1,34 @@ +name: Incorrect or unclear topic +description: "Unclear or incorrect documentation: ambiguous guidelines, wrong or obsolete examples, typos, etc." +body: + - type: markdown + attributes: + value: | + Thank you for taking the time to report this issue! + This request should only relate to the content of the developer.adobe.com website. + Requests that do not comply with our Code of Conduct or do not contain enough information may be closed at the maintainers' discretion. + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the documentation you are requesting. + options: + - label: I have searched the existing issues + required: true + - type: input + attributes: + label: Which topic? + description: A link to the topic that needs clarification or correction + placeholder: "Example: https://developer.adobe.com/commerce/webapi/rest/use-rest/search-endpoint/" + validations: + required: true + - type: textarea + attributes: + label: What's wrong with the content? + validations: + required: true + - type: textarea + attributes: + label: What changes do you propose? + - type: textarea + attributes: + label: Anything else that can help to cover this? diff --git a/.github/ISSUE_TEMPLATE/missing_content.yaml b/.github/ISSUE_TEMPLATE/missing_content.yaml new file mode 100644 index 000000000..53e591ce0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/missing_content.yaml @@ -0,0 +1,27 @@ +name: Missing content +description: Undocumented feature, service, command, API, UI component, procedure, etc. +body: + - type: markdown + attributes: + value: | + Thank you for taking the time to report this issue! + This request should only relate to the content of the developer.adobe.com website. + Requests that do not comply with our Code of Conduct or do not contain enough information may be closed at the maintainers' discretion. + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the documentation you are requesting. + options: + - label: I have searched the existing issues + required: true + - type: textarea + attributes: + label: What's missing? + placeholder: | + - In the or ... + - Missing explanation of how ... works. + - Missing steps or guidelines for .... + - Missing code samples to demonstrate .... + - Something else ... + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/site_bug.yaml b/.github/ISSUE_TEMPLATE/site_bug.yaml new file mode 100644 index 000000000..dad69263b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/site_bug.yaml @@ -0,0 +1,58 @@ +name: Site bug +description: Something isn't working on developer.adobe.com or when building the website locally. +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thank you for taking the time to report this issue! + This bug report should only relate to the developer.adobe.com website itself or non-content issues such as rendering, 404 pages, or other unexpected behavior. + Issues that do not comply with our Code of Conduct or do not contain enough information may be closed at the maintainers' discretion. + SECURITY DISCLOSURE: If this is a security disclosure please follow the guidelines in CONTRIBUTING.md. This helps keep folks from accidentally releasing vulnerabilities before the maintainers get a chance to fix the issue. + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the bug you encountered. + options: + - label: I have searched the existing issues + required: true + - type: textarea + attributes: + label: Expected behavior + description: | + Tell us what you expected to happen. + validations: + required: true + - type: textarea + attributes: + label: Actual behavior + description: | + Tell us what happened. Include error messages and issues. + validations: + required: true + - type: textarea + attributes: + label: Steps to reproduce + description: | + Provide a set of clear steps to reproduce this bug. + validations: + required: true + - type: textarea + attributes: + label: Environment + description: | + Describe your environment such as platform, browser, and versions. + Provide all the details that will help us to reproduce the bug. + value: | + - Browser: + - OS: + validations: + required: true + - type: textarea + attributes: + label: Sample code + description: Sample Code that illustrates the problem + - type: textarea + attributes: + label: Logs + description: Logs taken while reproducing problem diff --git a/.github/ISSUE_TEMPLATE/site_feature.yaml b/.github/ISSUE_TEMPLATE/site_feature.yaml new file mode 100644 index 000000000..c0486530c --- /dev/null +++ b/.github/ISSUE_TEMPLATE/site_feature.yaml @@ -0,0 +1,34 @@ +name: Site feature request +description: Propose a new functionality or an improvement of the developer.adobe.com website or of the local development tools. +body: + - type: markdown + attributes: + value: | + Thank you for taking the time to report this issue! + This feature request should only relate to the developer.adobe.com website itself and its behavior. + Requests that do not comply with our Code of Conduct or do not contain enough information may be closed at the maintainers' discretion. + - type: checkboxes + attributes: + label: Is there an existing issue for this? + description: Please search to see if an issue already exists for the feature you are requesting. + options: + - label: I have searched the existing issues + required: true + - type: textarea + attributes: + label: What feature should be added? + validations: + required: true + - type: textarea + attributes: + label: What is the expected behavior? + validations: + required: true + - type: textarea + attributes: + label: How will this feature improve the user experience? + validations: + required: true + - type: textarea + attributes: + label: What would a solution for this issue look like? diff --git a/.github/scripts/deploy.js b/.github/scripts/deploy.js new file mode 100644 index 000000000..1d0b76381 --- /dev/null +++ b/.github/scripts/deploy.js @@ -0,0 +1,64 @@ +const { exec } = require('child_process'); + +module.exports = async ({ core, changes, deletions, operation, siteEnv, branch, pathPrefix }) => { + let httpMethod, edsSiteEnv, codeRepoBranch, args; + if (operation.includes('cache') || operation.includes('preview') || operation.includes('live')) { + httpMethod = 'POST'; + } else { + console.error('Unknown operation method'); + } + + if (siteEnv.includes('stage')) { + edsSiteEnv = "adp-devsite-stage"; + codeRepoBranch = "stage"; + } else if (siteEnv.includes('prod')) { + edsSiteEnv = "adp-devsite"; + codeRepoBranch = "main"; + } else { + console.error('Unknown env to deploy to'); + } + + // hacky way to do operations on our adp-devsite-stage env + if ((siteEnv.includes('stage') && operation.includes('preview')) || (siteEnv.includes('stage') && operation.includes('cache'))) { + args = `--header "x-content-source-authorization: ${branch}"`; + } else { + args = ''; + } + + changes.forEach((file) => { + // have to pop src/pages from the file path + file = file.replace('src/pages/', ''); + + const theFilePath = `${pathPrefix}/${file}`; + const url = `https://admin.hlx.page/${operation}/adobedocs/${edsSiteEnv}/${codeRepoBranch}${theFilePath}`; + const cmd = `curl -X${httpMethod} -vi ${args} ${url}`; + + exec(cmd, (error, execOut, execErr) => { + if (error) { + console.error(`::group:: Error ${theFilePath} \n${execErr} \n::endgroup::`) + return; + } + + console.log(`::group:: Running ${operation} on ${theFilePath} \nThe command: ${cmd} \n${execOut} \n::endgroup::`); + }); + }); + + deletions.forEach((file) => { + // have to pop src/pages from the file path + file = file.replace('src/pages/', ''); + + const theFilePath = `${pathPrefix}/${file}`; + const deleteUrl = `https://admin.hlx.page/live/adobedocs/${edsSiteEnv}/${codeRepoBranch}${theFilePath}`; + const deleteCmd = `curl -XDELETE -vi ${args} ${deleteUrl}`; + + + exec(deleteCmd, (deleteError, deleteExecOut, deleteExecErr) => { + if (deleteError) { + console.error(`::group:: Deleting error ${theFilePath} \n${deleteExecErr} \n::endgroup::`) + return; + } + + console.log(`::group:: Deleting ${theFilePath} \n${deleteExecOut} \n::endgroup::`); + }); + }); +} \ No newline at end of file diff --git a/.github/scripts/get-path-prefix.js b/.github/scripts/get-path-prefix.js index 39ec781c8..53eb27c8a 100644 --- a/.github/scripts/get-path-prefix.js +++ b/.github/scripts/get-path-prefix.js @@ -1,49 +1,127 @@ -// This script retrieves the pathPrefix from the gatsby-config.js file. +// This script retrieves the pathPrefix from the config.md file and validates it against the pathPrefix from devsite-paths.json. // It serves as an example for how to set up external javascript functions // outside workflow .yml files when they get too big or complex to keep them inline. // Documentation for the actions/github-script: // https://github.com/actions/github-script#run-a-separate-file -module.exports = async ({ core }) => { - const { pathPrefix } = await require('../../gatsby-config.js'); +const CONFIG_PATH = `./src/pages/config.md`; +const DEVSITE_STAGE_HOST = `https://main--adp-devsite-stage--adobedocs.aem.page`; +const DEVSITE_PROD_HOST = `https://main--adp-devsite--adobedocs.aem.live`; +const DEVSITE_PATHNAME = `/franklin_assets/devsitepaths.json`; - if (!pathPrefix) { - core.setFailed( - `The pathPrefix in the site's gatsby-config.js file is missing. +module.exports = async ({ core, isStage, isProd }) => { + const fs = await require('fs'); + if (!fs.existsSync(CONFIG_PATH)) { + core.setFailed( + `The site's config.md file is missing. + + To fix this, either create one in ./src/pages, or auto-generate one from the site's gatsby-config.md file by building navigation file.` + ); + return; + } - To fix this, open your gatsby-config.js file, and add it to the config object: + const string = fs.readFileSync(CONFIG_PATH).toString() ?? ""; + const lines = string.split('\n'); - module.exports = { - pathPrefix: "/commerce/frontend-core/", - ... - }` - ); - } else if (pathPrefix === '/') { - core.setFailed( - `The pathPrefix in the site's gatsby-config.js file is set to "/". This is not allowed. + // find the pathPrefix key + const keyIndex = lines.findIndex(line => line.includes("pathPrefix:")); - To fix this, change the pathPrefix to include a name that starts and ends with "/": + if (keyIndex < 0) { + core.setFailed( + `The pathPrefix in the site's config.md file is missing. - pathPrefix: "/commerce/frontend - core/" + To fix this, open your config.md file, and add it to the config object: + + - pathPrefix: + ...` + ); + return; + } - This name identifies the site within the developer.adobe.com domain: - https://developer.adobe.com/document-services/. - ` - ); - } else { - if (!pathPrefix.startsWith('/') || !pathPrefix.endsWith('/')) { + // find the pathPrefix value + const line = lines.slice(keyIndex + 1)?.find(line => line.trimStart().startsWith("-")) ?? ""; + + // remove whitespace at start, remove dash (i.e. first non-whitespace character), and remove whitespace at start and end + const pathPrefix = line.trimStart().substring(1).trim(); + + if (!pathPrefix) { core.setFailed( - `The pathPrefix in the site's gatsby-config.js file does not start or end with "/". + `The pathPrefix in the site's config.md file is missing. - To fix this, change the pathPrefix to include a name that starts and ends with "/". - For example: "/document-services/" or "/commerce/cloud-tools/". + To fix this, open your config.md file, and add it to the config object: - This is required by convention because of the way we construct site URLs. - For example: https://developer.adobe.com + /document-services/ + path/to/files/. - ` + - pathPrefix: + - /commerce/frontend-core/ + ...` ); + } else if (pathPrefix === '/') { + core.setFailed( + `The pathPrefix in the site's config.md file is set to "/". This is not allowed. + + To fix this, change the pathPrefix to include a name that starts and ends with "/". + + For example: "/commerce/frontend - core/" + + This name identifies the site within the developer.adobe.com domain: + https://developer.adobe.com/document-services/. + ` + ); + } else if (!pathPrefix.startsWith('/') || !pathPrefix.endsWith('/')) { + core.setFailed( + `The pathPrefix in the site's config.md file does not start or end with "/". + + pathPrefix: "${pathPrefix}" + + To fix this, change the pathPrefix to include a name that starts and ends with "/". + For example: "/document-services/" or "/commerce/cloud-tools/". + + This is required by convention because of the way we construct site URLs. + For example: https://developer.adobe.com + /document-services/ + path/to/files/. + ` + ); + } + + // TODO: devsitepaths pathPrefix currently do not have a trailing slash + // will need to refactor all path prefix listings to include them + // but for now checked with a popped trailing slash + + const poppedPathPrefix = pathPrefix.substring(0, pathPrefix.length-1); + // must convert values to boolean from string + if(isStage.toLowerCase() === 'true') { + const stageEntries = await (await fetch(`${DEVSITE_STAGE_HOST}${DEVSITE_PATHNAME}`)).json(); + const stageEntry = stageEntries?.data?.find(entry => entry.pathPrefix === poppedPathPrefix); + + if(!stageEntry) { + core.setFailed( + `The pathPrefix in the site's config.md file was not found in the STAGE gdrive's devsitepaths.json. + + pathPrefix from config.md: "${pathPrefix}" + devsitepath.json location: "${DEVSITE_STAGE_HOST}${DEVSITE_PATHNAME}" + + To fix this, make sure the pathPrefix listed in the config.md is in the devsitepath.json location. + ` + ); + } } - } - core.setOutput('path_prefix', pathPrefix); -}; + + // must convert values to boolean from string + if(isProd.toLowerCase() === 'true') { + const prodEntries = await (await fetch(`${DEVSITE_PROD_HOST}${DEVSITE_PATHNAME}`)).json(); + const prodEntry = prodEntries?.data?.find(entry => entry.pathPrefix === poppedPathPrefix); + + if(!prodEntry) { + core.setFailed( + `The pathPrefix in the site's config.md file was not found in the PROD gdrive's devsitepaths.json. + + pathPrefix from config.md: "${pathPrefix}" + devsitepath.json location: "${DEVSITE_PROD_HOST}${DEVSITE_PATHNAME}" + + To fix this, make sure the pathPrefix listed in the config.md is in the devsitepath.json location. + ` + ); + } + } + + core.setOutput('path_prefix', poppedPathPrefix); +} \ No newline at end of file diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a445f6223..33b16f015 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -4,47 +4,42 @@ on: workflow_dispatch: inputs: env: - description: "Deploy to (dev|prod|dev prod)" - required: true - default: "dev" - clean: - description: "Clean cache (yes|no)" + description: "Select environment to deploy to" + type: choice required: true - default: "no" - excludeSubfolder: - description: "Exclude a subfolder from deletion" + default: "stage" + options: + - stage + - prod + baseSha: + description: "Use base SHA commit to deploy from (empty string defaults to last commit before HEAD)" + type: string required: false default: "" - index-mode: - description: 'Type of indexing. "index" to push to Algolia, "console" for dry run.' - required: true - default: "index" - type: choice - options: - - console - - index + jobs: set-state: runs-on: ubuntu-latest outputs: - deploy_prod: ${{ contains(github.event.inputs.env, 'prod') }} - deploy_dev: ${{ contains(github.event.inputs.env, 'dev') }} - clean_cache: ${{ contains(github.event.inputs.clean, 'yes') }} path_prefix: ${{ steps.get_path_prefix.outputs.path_prefix }} branch_short_ref: ${{ steps.get_branch.outputs.branch }} - exclude_subfolder: ${{ github.event.inputs.excludeSubfolder }} + deploy_stage: ${{ contains(inputs.env, 'stage') }} + deploy_prod: ${{ contains(inputs.env, 'prod') }} + base_Sha: ${{ github.event.inputs.baseSha }} + steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - - name: Get pathPrefix - uses: actions/github-script@v6 + - name: Get path prefix + uses: actions/github-script@v7 id: get_path_prefix with: script: | const script = require('./.github/scripts/get-path-prefix.js'); - script({ core }); + script({ core, isStage:"${{ contains(inputs.env, 'stage') }}", isProd:"${{ contains(inputs.env, 'prod') }}" }); result-encoding: string + - name: Get branch name shell: bash run: echo "branch=${GITHUB_REF#refs/heads/}" >> "$GITHUB_OUTPUT" @@ -54,221 +49,119 @@ jobs: needs: [set-state] runs-on: ubuntu-latest steps: - - run: echo "Deploy to dev - ${{ needs.set-state.outputs.deploy_dev }}" + - run: echo "Deploy to stage - ${{ needs.set-state.outputs.deploy_stage }}" - run: echo "Deploy to prod - ${{ needs.set-state.outputs.deploy_prod }}" - - run: echo "Clean cache - ${{ needs.set-state.outputs.clean_cache }}" + - run: echo "Path prefix - ${{ needs.set-state.outputs.path_prefix }}" - run: echo "Repository org - ${{ github.event.repository.owner.login }}" - run: echo "Repository name - ${{ github.event.repository.name }}" - run: echo "Repository branch - ${{ needs.set-state.outputs.branch_short_ref }}" - - run: echo "Path prefix - ${{ needs.set-state.outputs.path_prefix }}" - - run: echo "Exclude subfolder - ${{ needs.set-state.outputs.exclude_subfolder }}" + - run: echo "Base Sha - ${{ needs.set-state.outputs.base_Sha }}" - pre-build-dev: - needs: [set-state] - runs-on: ubuntu-latest - if: needs.set-state.outputs.deploy_dev == 'true' - steps: - - name: check dev azure connection string - if: env.AIO_AZURE_DEV_CONNECTION_STRING == null - run: | - echo "::error::Please set the Azure Blob Storage connection string as AIO_AZURE_DEV_CONNECTION_STRING in GitHub Secrets" - exit 1 - env: - AIO_AZURE_DEV_CONNECTION_STRING: ${{ secrets.AIO_AZURE_DEV_CONNECTION_STRING }} - - build-dev: + deploy: defaults: run: shell: bash - needs: [set-state, pre-build-dev] - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Node v16 for Yarn v3 - uses: actions/setup-node@v3 - with: - node-version: "16.15.0" # Current LTS version - - - name: Enable Corepack for Yarn v3 - run: corepack enable - - - name: Install Yarn v3 - uses: borales/actions-yarn@v3 - with: - cmd: set version stable - - - name: Install Dependencies - uses: borales/actions-yarn@v3 - env: - YARN_ENABLE_IMMUTABLE_INSTALLS: false - with: - cmd: install - - - name: Gatsby Cache - uses: actions/cache@v3 - with: - path: | - public - .cache - key: ${{ needs.set-state.outputs.branch_short_ref }}-gatsby-cache-${{ github.run_id }} - restore-keys: | - ${{ needs.set-state.outputs.branch_short_ref }}-gatsby-cache- - - - name: Clean Cache - if: needs.set-state.outputs.clean_cache == 'true' - uses: borales/actions-yarn@v3 - with: - cmd: clean - - - name: Build site - uses: borales/actions-yarn@v3 - with: - cmd: build - env: - PREFIX_PATHS: true # equivalent to --prefix-paths flag for 'gatsby build' - PATH_PREFIX: ${{ needs.set-state.outputs.path_prefix }} - GATSBY_ADOBE_LAUNCH_SRC: ${{ secrets.AIO_ADOBE_LAUNCH_DEV_SRC }} - GATSBY_ADDITIONAL_ADOBE_ANALYTICS_ACCOUNTS: ${{ secrets.AIO_REPORT_SUITE_DEV}} - GATSBY_ADOBE_ANALYTICS_ENV: "dev" - REPO_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO_OWNER: ${{ github.event.repository.owner.login }} - REPO_NAME: ${{ github.event.repository.name }} - REPO_BRANCH: ${{ needs.set-state.outputs.branch_short_ref }} - GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_CLIENT_ID }} - GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.GOOGLE_OAUTH_CLIENT_SECRET }} - GOOGLE_DOCS_TOKEN: ${{ secrets.GOOGLE_DOCS_TOKEN }} - GOOGLE_DOCS_FOLDER_ID: ${{ secrets.GOOGLE_DOCS_FOLDER_ID }} - GATSBY_IMS_SRC: ${{ secrets.AIO_IMS_DEV_SRC }} - GATSBY_IMS_CONFIG: ${{ secrets.AIO_IMS_DEV_CONFIG }} - GATSBY_ALGOLIA_APPLICATION_ID: ${{ secrets.AIO_ALGOLIA_APPLICATION_ID }} - GATSBY_ALGOLIA_SEARCH_API_KEY: ${{ secrets.AIO_ALGOLIA_SEARCH_API_KEY }} - GATSBY_ALGOLIA_APP_ID: ${{ secrets.AIO_ALGOLIA_APP_ID }} - GATSBY_ALGOLIA_API_KEY: ${{ secrets.AIO_ALGOLIA_API_KEY }} - GATSBY_ALGOLIA_INDEX_ALL_SRC: ${{ secrets.AIO_ALGOLIA_INDEX_ALL_SRC }} - GATSBY_ALGOLIA_SEARCH_INDEX: ${{ secrets.AIO_ALGOLIA_SEARCH_INDEX }} - GATSBY_ALGOLIA_INDEX_ENV_PREFIX: ${{ secrets.AIO_ALGOLIA_INDEX_ENV_PREFIX }} - GATSBY_FEDS_PRIVACY_ID: ${{ secrets.AIO_FEDS_PRIVACY_ID }} - GATSBY_SITE_DOMAIN_URL: https://developer-stage.adobe.com - - - name: Deploy - uses: AdobeDocs/static-website-deploy@master - with: - enabled-static-website: "true" - source: "public" - target: ${{ needs.set-state.outputs.path_prefix }} - connection-string: ${{ secrets.AIO_AZURE_DEV_CONNECTION_STRING }} - remove-existing-files: "true" - exclude-subfolder: ${{ needs.set-state.outputs.exclude_subfolder }} - - name: Purge Fastly Cache - uses: AdobeDocs/gatsby-fastly-purge-action@master - with: - fastly-token: ${{ secrets.AIO_FASTLY_TOKEN }} - fastly-url: "${{ secrets.AIO_FASTLY_DEV_URL}}${{ needs.set-state.outputs.path_prefix }}" - - pre-build-production: needs: [set-state] runs-on: ubuntu-latest - if: needs.set-state.outputs.deploy_prod == 'true' - steps: - - name: check prod azure connection string - if: env.AIO_AZURE_PROD_CONNECTION_STRING == null - run: | - echo "::error::Please set the Azure Blob Storage connection string as AIO_AZURE_PROD_CONNECTION_STRING in GitHub Secrets" - exit 1 - env: - AIO_AZURE_PROD_CONNECTION_STRING: ${{ secrets.AIO_AZURE_PROD_CONNECTION_STRING }} - - build-production: - defaults: - run: - shell: bash - needs: [set-state, pre-build-production] - runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 - - - name: Setup Node v16 for Yarn v3 - uses: actions/setup-node@v3 - with: - node-version: "16.15.0" # Current LTS version - - - name: Enable Corepack for Yarn v3 - run: corepack enable + uses: actions/checkout@v4 - - name: Install Yarn v3 - uses: borales/actions-yarn@v3 + - name: Get changed files in the src/pages and static folder + id: changed-files-specific + uses: tj-actions/changed-files@v46.0.5 with: - cmd: set version stable + json: true + escape_json: false + files: | + src/pages/** + static/** + base_sha: ${{ needs.set-state.outputs.base_Sha }} - - name: Install Dependencies - uses: borales/actions-yarn@v3 - env: - YARN_ENABLE_IMMUTABLE_INSTALLS: false + - name: Deploy to stage + if: needs.set-state.outputs.deploy_stage == 'true' && steps.changed-files-specific.outputs.any_modified == 'true' + uses: actions/github-script@v7 with: - cmd: install - - - name: Gatsby Cache - uses: actions/cache@v3 - with: - path: | - public - .cache - key: ${{ needs.set-state.outputs.branch_short_ref }}-gatsby-cache-${{ github.run_id }} - restore-keys: | - ${{ needs.set-state.outputs.branch_short_ref }}-gatsby-cache- - - - name: Clean Cache - if: needs.set-state.outputs.clean_cache == 'true' - uses: borales/actions-yarn@v3 - with: - cmd: clean - - - name: Build site - uses: borales/actions-yarn@v3 + script: | + const script = require('./.github/scripts/deploy.js'); + + await script({ + core, + changes: ${{ steps.changed-files-specific.outputs.all_changed_files }}, + deletions: ${{ steps.changed-files-specific.outputs.deleted_files }}, + operation: "preview", + siteEnv: "stage", + branch: "${{ needs.set-state.outputs.branch_short_ref }}", + pathPrefix: "${{ needs.set-state.outputs.path_prefix }}" + }); + + - name: Clean cache on stage + if: needs.set-state.outputs.deploy_stage == 'true' && steps.changed-files-specific.outputs.any_modified == 'true' + uses: actions/github-script@v7 with: - cmd: build - env: - PREFIX_PATHS: true # equivalent to --prefix-paths flag for 'gatsby build' - PATH_PREFIX: ${{ needs.set-state.outputs.path_prefix }} - GATSBY_ADOBE_LAUNCH_SRC: ${{ secrets.AIO_ADOBE_LAUNCH_PROD_SRC }} - GATSBY_ADDITIONAL_ADOBE_ANALYTICS_ACCOUNTS: ${{ secrets.AIO_REPORT_SUITE_PROD }} - GATSBY_ADOBE_ANALYTICS_ENV: "production" - REPO_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - REPO_OWNER: ${{ github.event.repository.owner.login }} - REPO_NAME: ${{ github.event.repository.name }} - REPO_BRANCH: ${{ needs.set-state.outputs.branch_short_ref }} - GOOGLE_OAUTH_CLIENT_ID: ${{ secrets.GOOGLE_OAUTH_CLIENT_ID }} - GOOGLE_OAUTH_CLIENT_SECRET: ${{ secrets.GOOGLE_OAUTH_CLIENT_SECRET }} - GOOGLE_DOCS_TOKEN: ${{ secrets.GOOGLE_DOCS_TOKEN }} - GOOGLE_DOCS_FOLDER_ID: ${{ secrets.GOOGLE_DOCS_FOLDER_ID }} - GATSBY_IMS_SRC: ${{ secrets.AIO_IMS_PROD_SRC }} - GATSBY_IMS_CONFIG: ${{ secrets.AIO_IMS_PROD_CONFIG }} - GATSBY_ALGOLIA_APPLICATION_ID: ${{ secrets.AIO_ALGOLIA_APPLICATION_ID }} - GATSBY_ALGOLIA_SEARCH_API_KEY: ${{ secrets.AIO_ALGOLIA_SEARCH_API_KEY }} - GATSBY_ALGOLIA_APP_ID: ${{ secrets.AIO_ALGOLIA_APP_ID }} - GATSBY_ALGOLIA_API_KEY: ${{ secrets.AIO_ALGOLIA_API_KEY }} - ALGOLIA_WRITE_API_KEY: ${{ secrets.AIO_ALGOLIA_WRITE_API_KEY }} - ALGOLIA_INDEXATION_MODE: ${{ github.event.inputs.index-mode || 'index' }} - GATSBY_ALGOLIA_INDEX_NAME: ${{ secrets.ALGOLIA_INDEX_NAME || github.event.repository.name }} - GATSBY_ALGOLIA_INDEX_ALL_SRC: ${{ secrets.AIO_ALGOLIA_INDEX_ALL_SRC }} - GATSBY_ALGOLIA_SEARCH_INDEX: ${{ secrets.AIO_ALGOLIA_SEARCH_INDEX }} - GATSBY_ALGOLIA_INDEX_ENV_PREFIX: ${{ secrets.AIO_ALGOLIA_INDEX_ENV_PREFIX }} - GATSBY_FEDS_PRIVACY_ID: ${{ secrets.AIO_FEDS_PRIVACY_ID }} - GATSBY_SITE_DOMAIN_URL: https://developer.adobe.com - - name: Deploy - uses: AdobeDocs/static-website-deploy@master + script: | + const script = require('./.github/scripts/deploy.js'); + + await script({ + core, + changes: ${{ steps.changed-files-specific.outputs.all_changed_files }}, + deletions: ${{ steps.changed-files-specific.outputs.deleted_files }}, + operation: "cache", + siteEnv: "stage", + branch: "${{ needs.set-state.outputs.branch_short_ref }}", + pathPrefix: "${{ needs.set-state.outputs.path_prefix }}" + }); + + - name: Deploy to prod + if: needs.set-state.outputs.deploy_prod == 'true' && steps.changed-files-specific.outputs.any_modified == 'true' + uses: actions/github-script@v7 with: - enabled-static-website: "true" - source: "public" - target: ${{ needs.set-state.outputs.path_prefix }} - connection-string: ${{ secrets.AIO_AZURE_PROD_CONNECTION_STRING }} - remove-existing-files: "true" - exclude-subfolder: ${{ needs.set-state.outputs.exclude_subfolder }} - - name: Purge Fastly Cache - uses: AdobeDocs/gatsby-fastly-purge-action@master + script: | + const script = require('./.github/scripts/deploy.js'); + + await script({ + core, + changes: ${{ steps.changed-files-specific.outputs.all_changed_files }}, + deletions: ${{ steps.changed-files-specific.outputs.deleted_files }}, + operation: "preview", + siteEnv: "prod", + branch: "${{ needs.set-state.outputs.branch_short_ref }}", + pathPrefix: "${{ needs.set-state.outputs.path_prefix }}" + }); + + await script({ + core, + changes: ${{ steps.changed-files-specific.outputs.all_changed_files }}, + deletions: ${{ steps.changed-files-specific.outputs.deleted_files }}, + operation: "live", + siteEnv: "prod", + branch: "${{ needs.set-state.outputs.branch_short_ref }}", + pathPrefix: "${{ needs.set-state.outputs.path_prefix }}" + }); + + - name: Clean cache on prod + if: needs.set-state.outputs.deploy_prod == 'true' && steps.changed-files-specific.outputs.any_modified == 'true' + uses: actions/github-script@v7 with: - fastly-token: ${{ secrets.AIO_FASTLY_TOKEN }} - fastly-url: "${{ secrets.AIO_FASTLY_PROD_URL }}${{ needs.set-state.outputs.path_prefix }}" + script: | + const script = require('./.github/scripts/deploy.js'); + + await script({ + core, + changes: ${{ steps.changed-files-specific.outputs.all_changed_files }}, + deletions: ${{ steps.changed-files-specific.outputs.deleted_files }}, + operation: "cache", + siteEnv: "stage", + branch: "${{ needs.set-state.outputs.branch_short_ref }}", + pathPrefix: "${{ needs.set-state.outputs.path_prefix }}" + }); + + await script({ + core, + changes: ${{ steps.changed-files-specific.outputs.all_changed_files }}, + deletions: ${{ steps.changed-files-specific.outputs.deleted_files }}, + operation: "cache", + siteEnv: "prod", + branch: "${{ needs.set-state.outputs.branch_short_ref }}", + pathPrefix: "${{ needs.set-state.outputs.path_prefix }}" + }); \ No newline at end of file diff --git a/.github/workflows/github-pages.yml b/.github/workflows/github-pages.yml index 503b6d26e..50521f85f 100644 --- a/.github/workflows/github-pages.yml +++ b/.github/workflows/github-pages.yml @@ -1,7 +1,6 @@ --- -name: GitHub Pages +name: Github Pages on: - workflow_dispatch: push: branches: [main] jobs: diff --git a/.github/workflows/test-pull-request.yml b/.github/workflows/test-pull-request.yml new file mode 100644 index 000000000..115c3d00c --- /dev/null +++ b/.github/workflows/test-pull-request.yml @@ -0,0 +1,89 @@ +--- +########################### +########################### +## Pull request testing ## +########################### +########################### +name: Latest Pull Request + +# Documentation: +# - Workflow: https://help.github.com/en/articles/workflow-syntax-for-github-actions +# - SuperLinter: https://github.com/github/super-linter +# - Markdown linter: https://github.com/DavidAnson/markdownlint +# - Link validation: https://github.com/remarkjs/remark-validate-links + +###################################################### +# Start the job on a pull request to the main branch # +###################################################### +on: + pull_request: + branches: [main] + +############### +# Set the Job # +############### +jobs: + validate: + # Set the agent to run on + runs-on: ubuntu-latest + + ################## + # Load all steps # + ################## + steps: + ########################## + # Checkout the code base # + ########################## + - name: Checkout Code + uses: actions/checkout@v3 + with: + # Full git history is needed to get a proper list of changed files + # within `super-linter` + fetch-depth: 0 + - run: cat ".github/super-linter.env" >> "$GITHUB_ENV" + + ################################ + # Run Linters against code base # + ################################ + - name: Lint Code Base + # + # Use full version number to avoid cases when a next + # released version is buggy + # About slim image: https://github.com/github/super-linter#slim-image + uses: github/super-linter/slim@v4.10.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + DEFAULT_BRANCH: main + VALIDATE_ALL_CODEBASE: false + VALIDATE_GITHUB_ACTIONS: true + + - name: Setup Node v16 for Yarn v3 + uses: actions/setup-node@v3 + with: + node-version: '16.15.0' # Current LTS version + + - name: Enable Corepack for Yarn v3 + run: corepack enable + + - name: Install Yarn v3 + uses: borales/actions-yarn@v3 + with: + cmd: set version stable + + - name: Install dependencies + uses: borales/actions-yarn@v3 + env: + YARN_ENABLE_IMMUTABLE_INSTALLS: false + with: + cmd: install + + - name: Check internal links + uses: borales/actions-yarn@v3 + with: + cmd: test:links + + - name: Build site + if: ${{ success() }} + uses: borales/actions-yarn@v3 + with: + cmd: build diff --git a/buildNavigation.js b/buildNavigation.js new file mode 100644 index 000000000..8b133c44d --- /dev/null +++ b/buildNavigation.js @@ -0,0 +1,106 @@ +const path = require('path'); +const fs = require('node:fs'); +// regex to find sections: +// subPages:((\s* .*)*) + +const { siteMetadata, pathPrefix } = require('./gatsby-config.js'); + +try { + if(!pathPrefix) { + throw new TypeError("pathPrefix not found"); + } + + let topNavMarkdown = ``; + // TODO: prob need url fixer from gatsby theme + // home link defines the first link defaults to Products + // can be hidden + // siteMetadata.versions + // siteMetadata.home + + topNavMarkdown += `- pathPrefix:\n`; + topNavMarkdown += ` - ${pathPrefix}\n`; + + if (siteMetadata.home) { + topNavMarkdown += '\n- home:\n'; + topNavMarkdown += ` - [${siteMetadata.home.title}](${siteMetadata.home.path})\n`; + + if(siteMetadata.home.hidden) { + topNavMarkdown += ` - hidden\n`; + } + } + + if (siteMetadata.versions) { + topNavMarkdown += '\n- versions:\n'; + + siteMetadata.versions.forEach((versionItem) => { + let isSelectedText = versionItem.selected ? `selected` : ''; + let versionPathText = versionItem.path ? versionItem.path : '/'; + topNavMarkdown += ` - [${versionItem.title}](${versionPathText}) ${isSelectedText}\n`; + }); + } + + if(siteMetadata.pages) { + topNavMarkdown += `\n- pages:\n`; + } + + siteMetadata.pages?.forEach((navItem) => { + //let pathText = navItem.path ? navItem.path : ''; + if(navItem.path) { + topNavMarkdown += ` - [${navItem.title}](${navItem.path})\n`; + } else { + topNavMarkdown += ` - ${navItem.title}\n`; + navItem.menu.forEach((menuItem) =>{ + topNavMarkdown += ` - [${menuItem.title}](${menuItem.path})\n`; + }); + } + }); + + if(siteMetadata.subPages) { + topNavMarkdown += `\n- subPages:\n`; + let sideNavMarkdown = ``; + let depth = 1; + + sideNavMarkdown += buildSideNavRecursively(siteMetadata.subPages, depth); + topNavMarkdown += sideNavMarkdown; + } + + let configFilePath = path.resolve(__dirname + '/src/pages/config.md'); + fs.writeFileSync(configFilePath, topNavMarkdown); + console.log(`Generated file: ${configFilePath}`); + +} catch (err) { + console.error(err); +} +// subpages menu should only appear on the subpages path +// need to check paths to +function buildSideNavRecursively(sideNav, depth) { + let sideNavMarkdown = ''; + + for (var k in sideNav) { + let header = sideNav[k].header ? 'header' : ''; + sideNavMarkdown += `${insertSpace(depth)}- [${sideNav[k].title}](${sideNav[k].path}) ${header}\n`; + + if (sideNav[k].pages) { + sideNavMarkdown += buildSideNavRecursively(sideNav[k].pages, depth+1); + } + } + return sideNavMarkdown; +} + +function insertSpace(indentLevel) { + let spaces = ``; + for(var i=0; i { + mdFilePath = mdFilePath.replace(__dirname + '/src/pages', pathPrefix); + mdFilePath = path.resolve(mdFilePath); + + // Fixes paths that don't end in a trailing slash but should. + // index.md is a directory-level URL that needs a trailing slash + if(mdFilePath.endsWith('index.md')) { + const source = mdFilePath.replace('/index.md', ''); + data.push({ + "Source" : source, + "Destination" : source + '/' + }); + data.push({ + "Source" : source + '/index', + "Destination" : source + '/' + }); + } + // Fixes paths that end in a trailing slash but shouldn't. + // skip any index.md or config.md as they don't need redirect + else if(!mdFilePath.endsWith('config.md')) { + const source = mdFilePath.replace('.md', '/'); + data.push({ + "Source" : source, + "Destination" : source.replace(/\/$/, "") + }); + } + }); + + writeRedirectionsFile(data); + +} catch (err) { + console.error(err); +} diff --git a/normalizeLinks.js b/normalizeLinks.js new file mode 100644 index 000000000..ec092a947 --- /dev/null +++ b/normalizeLinks.js @@ -0,0 +1,80 @@ +const path = require('path'); +const fs = require('node:fs'); +const matchAll = require('string.prototype.matchall'); +const { + getDeployableFiles, + getMarkdownFiles, + replaceLinksInFile, + getFindPatternForMarkdownFiles: getFindPattern, + getReplacePatternForMarkdownFiles: getReplacePattern, + removeFileExtension +} = require('./scriptUtils.js'); + +// ensures link includes file name and extension +function normalizeLinksInMarkdownFile(file, files) { + const relativeToDir = path.dirname(file); + const relativeFiles = files.map(file => path.relative(relativeToDir, file)); + const linkMap = new Map(); + + const linkPattern = getFindPattern('[^)#]*'); + let data = fs.readFileSync(file, 'utf8'); + const links = matchAll(data, new RegExp(linkPattern, "gm")); + [...links].forEach(link => { + const optionalPrefix = link[2] ?? ''; + const from = link[3] ?? ''; + let to = from; + + const toHasTrailingSlash = to.endsWith('/') || optionalPrefix.endsWith('/') && !to; + if(toHasTrailingSlash) { + to = `${to}index.md` + } + + // temporarily use local machine's path separator (i.e. '\' for Windows, '/' for Mac) + // to compare files retrieved from local machine + to = to.replaceAll('/', path.sep); + + // ensure simplest relative path + // this removes trailing slash, so need to do this after check for trailing slash above + const absolute = path.resolve(relativeToDir, to); + const relative = path.relative(relativeToDir, absolute); + to = relative; + + // add missing file extension only if we're sure it's the right one + // if there's more than one option, let user manually fix it + const potentialFileExtensions = relativeFiles.filter(file => removeFileExtension(file) === to).map(file => path.extname(file)); + if (potentialFileExtensions.length === 1) { + const ext = potentialFileExtensions[0]; + if(!to.endsWith(ext) && to) { + to = `${to}${ext}`; + } + } + + // ensure the link we constructed above exists + const toExists = relativeFiles.find(file => to === file); + + // revert back to URL path separator '/' + to = to.replaceAll(path.sep, '/'); + + if(to !== from && toExists) { + linkMap.set(from, to); + } + }) + + replaceLinksInFile({ + file, + linkMap, + getFindPattern, + getReplacePattern, + }); +} + +try { + const files = getDeployableFiles(); + const mdFiles = getMarkdownFiles(); + mdFiles.forEach(mdFile => { + normalizeLinksInMarkdownFile(mdFile, files); + }); + +} catch (err) { + console.error(err); +} \ No newline at end of file diff --git a/package.json b/package.json index afafb2ef1..8f1e705d1 100644 --- a/package.json +++ b/package.json @@ -1,15 +1,18 @@ { "private": true, "name": "adobe-developer-app-builder", - "version": "1.1.0", + "version": "1.0.0", "license": "Apache-2.0", "repository": { "type": "git", - "url": "https://github.com/AdobeDocs/adobe-developer-app-builder" + "url": "https://github.com/AdobeDocs/app-builder" + }, + "author": { + "name": "Stephan Ringel", + "url": "https://github.com/icaraps" }, "dependencies": { "@adobe/gatsby-theme-aio": "4.16.0-rc9", - "@adobe/react-spectrum": "^3.35.1", "gatsby": "4.22.0", "react": "^17.0.2", "react-dom": "^17.0.2" @@ -23,12 +26,16 @@ "start:prefix": "gatsby build --prefix-paths && gatsby serve --prefix-paths", "dev": "gatsby develop", "dev:https": "gatsby develop --https --host localhost.corp.adobe.com --port 9000", - "build": "gatsby build", "build:incremental": "GATSBY_EXPERIMENTAL_PAGE_BUILD_ON_DATA_CHANGES=true gatsby build --log-pages", + "build": "gatsby build", "serve": "gatsby serve", "clean": "gatsby clean", "test:links": "remark src/pages --quiet --frail", - "lint": "docker run --rm -e RUN_LOCAL=true --env-file '.github/super-linter.env' -v \"$PWD\":/tmp/lint github/super-linter:slim-v4.10.1" + "lint": "docker run --rm -e RUN_LOCAL=true --env-file '.github/super-linter.env' -v \"$PWD\":/tmp/lint github/super-linter:slim-v4.10.1", + "buildNavigation": "node buildNavigation.js", + "buildRedirections": "node buildRedirections.js", + "renameFiles": "node renameFiles.js", + "normalizeLinks": "node normalizeLinks.js" }, "remarkConfig": { "plugins": [ @@ -37,6 +44,7 @@ }, "packageManager": "yarn@4.9.1", "devDependencies": { + "glob": "11.0.0", "remark-cli": "^11.0.0", "remark-validate-links": "^12.1.0" } diff --git a/renameFiles.js b/renameFiles.js new file mode 100644 index 000000000..dc6abcb6a --- /dev/null +++ b/renameFiles.js @@ -0,0 +1,172 @@ +const path = require('path'); +const fs = require('node:fs'); +const { pathPrefix: pathPrefixFromGatsbyConfig } = require('./gatsby-config.js'); +const { + readRedirectionsFile, + writeRedirectionsFile, + getRedirectionsFilePath, + getDeployableFiles, + getMarkdownFiles, + getFindPatternForMarkdownFiles, + getReplacePatternForMarkdownFiles, + removeFileExtension, + replaceLinksInFile +} = require('./scriptUtils.js'); + +function toKebabCase(str) { + const isScreamingSnakeCase = new RegExp(/^[A-Z0-9_]*$/).test(str); + str = isScreamingSnakeCase ? str.toLowerCase() : str; + return str + .match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g) + .map(x => x.toLowerCase()) + .join('-'); +} + +function toEdsCase(str) { + const isValid = Boolean((/^([a-z0-9-]*)$/.test(str))); + return isValid ? str : toKebabCase(str); +} + +function getPathPrefixFromConfig() { + const CONFIG_PATH = path.join('src', 'pages', 'config.md'); + if (!fs.existsSync(CONFIG_PATH)) { + return null; + } + + const data = fs.readFileSync(CONFIG_PATH).toString(); + if(!data) { + return null; + } + + const lines = data.split("\n"); + + // find the pathPrefix key + const keyIndex = lines.findIndex(line => new RegExp(/\s*-\s*pathPrefix:/).test(line)); + if (keyIndex < 0) { + return null; + } + + // find the pathPrefix value + const line = lines.slice(keyIndex + 1)?.find(line => new RegExp(/\s*-/).test(line)); + if(!line) { + null; + } + + // extract pathPrefix + const pathPrefixLine = line.match(new RegExp(/(\s*-\s*)(\S*)(\s*)/)); + if(!pathPrefixLine) { + return null; + } + return pathPrefixLine[2]; +} + +function renameFile(file, renameBaseWithoutExt) { + const renamedFileWithoutExt = removeFileExtension(file, renameBaseWithoutExt); + const ext = path.extname(file); + return `${renamedFileWithoutExt}${ext}` +} + +function getFileMap(files) { + const map = new Map(); + files.forEach(from => { + const to = renameFile(from, toEdsCase) + if(to !== from) { + map.set(from, to) + } + }); + return map; +} + +function getLinkMap(fileMap, relativeToDir) { + const linkMap = new Map(); + fileMap.forEach((toFile, fromFile) => { + let fromRelFile = path.relative(relativeToDir, fromFile); + fromRelFile = fromRelFile.replaceAll(path.sep, '/'); + + let toRelFile = path.relative(relativeToDir, toFile); + toRelFile = toRelFile.replaceAll(path.sep, '/'); + + linkMap.set(fromRelFile, toRelFile); + }); + return linkMap; +} + +function renameLinksInMarkdownFile(fileMap, file) { + const dir = path.dirname(file); + replaceLinksInFile({ + file, + linkMap: getLinkMap(fileMap, dir), + getFindPattern: getFindPatternForMarkdownFiles, + getReplacePattern: getReplacePatternForMarkdownFiles, + }); +} + +function renameLinksInRedirectsFile(fileMap, pathPrefix) { + const file = getRedirectionsFilePath(); + const dir = path.dirname(file); + replaceLinksInFile({ + file, + linkMap: getLinkMap(fileMap, dir), + getFindPattern: (from) => `(['"]?)(Source|Destination)(['"]?\\s*:\\s*['"])(${pathPrefix}${removeFileExtension(from)})(/?)(#[^'"]*)?(['"])`, + getReplacePattern: (to) => `$1$2$3${pathPrefix}${removeFileExtension(to)}$5$6$7`, + }); +} + +function renameLinksInGatsbyConfigFile(fileMap, file) { + const dir = path.join('src', 'pages'); + replaceLinksInFile({ + file, + linkMap: getLinkMap(fileMap, dir), + getFindPattern: (from) => `(['"]?path['"]?\\s*:\\s*['"])(/|./)?(${from})(#[^'"]*)?(['"])`, + getReplacePattern: (to) => `$1$2${to}$4$5`, + }); +} + +function appendRedirects(fileMap, pathPrefix) { + const file = getRedirectionsFilePath(); + const dir = path.dirname(file); + const linkMap = getLinkMap(fileMap, dir); + const newData = []; + linkMap.forEach((to, from) => { + newData.push({ + Source: `${pathPrefix}${removeFileExtension(from)}`, + Destination: `${pathPrefix}${removeFileExtension(to)}`, + }) + }); + const currData = readRedirectionsFile(); + const data = [...currData, ...newData]; + writeRedirectionsFile(data); +} + +function renameFiles(map) { + map.forEach((to, from) => { + fs.renameSync(from, to); + }); +} + +try { + const files = getDeployableFiles(); + const fileMap = getFileMap(files); + + const mdFiles = getMarkdownFiles(); + mdFiles.forEach(mdFile => { + renameLinksInMarkdownFile(fileMap, mdFile); + }); + + const redirectsFile = getRedirectionsFilePath(); + const pathPrefix = getPathPrefixFromConfig() ?? pathPrefixFromGatsbyConfig; + if(fs.existsSync(redirectsFile)) { + renameLinksInRedirectsFile(fileMap, pathPrefix); + appendRedirects(fileMap, pathPrefix); + } + + const gatsbyConfigFile = 'gatsby-config.js'; + if(fs.existsSync(gatsbyConfigFile)) { + renameLinksInGatsbyConfigFile(fileMap, gatsbyConfigFile); + } + + renameFiles(fileMap); + +} catch (err) { + console.error(err); +} \ No newline at end of file diff --git a/scriptUtils.js b/scriptUtils.js new file mode 100644 index 000000000..b1702e9f8 --- /dev/null +++ b/scriptUtils.js @@ -0,0 +1,76 @@ +const path = require('path'); +const fs = require('node:fs'); +const { globSync }= require('glob'); + +function getRedirectionsFilePath() { + const redirectionsFilePath = path.join(__dirname, 'src', 'pages', 'redirects.json'); + return path.resolve(redirectionsFilePath); +} + +function readRedirectionsFile() { + const redirectionsFilePath = getRedirectionsFilePath(); + return JSON.parse(fs.readFileSync(redirectionsFilePath)).data; +} + +function writeRedirectionsFile(data) { + let redirectionsData = + { + "total" : data.length, + "offset": 0, + "limit": data.length, + "data" : data, + ":type": "sheet" + }; + + let redirectionsFilePath = getRedirectionsFilePath(); + fs.writeFileSync(redirectionsFilePath, JSON.stringify(redirectionsData)); +} + +function getFiles(fileExtensions) { + const fileExtensionsPattern = fileExtensions.join('|'); + return globSync(__dirname + `/src/pages/**/*+(${fileExtensionsPattern})`) + .map(f => path.resolve(f)); +} + +function getDeployableFiles() { + // files types deployed to EDS in process-mds.sh + return getFiles(['.md', '.json']); +} + +function getMarkdownFiles() { + return getFiles(['.md']); +} + +function removeFileExtension(file, renameBaseWithoutExt = name => name) { + const base = path.basename(file); + const ext = path.extname(file); + const end = file.length - base.length; + const baseWithoutExt = base.substring(0, base.length - ext.length); + const newBaseWithoutExt = renameBaseWithoutExt(baseWithoutExt); + return `${file.substring(0, end)}${newBaseWithoutExt}` +} + +const getFindPatternForMarkdownFiles = (from) => `(\\[[^\\]]*]\\()(/|./)?(${from})(#[^\\()]*)?(\\))`; +const getReplacePatternForMarkdownFiles = (to) => `$1$2${to}$4$5`; + +function replaceLinksInFile({ file, linkMap, getFindPattern, getReplacePattern }) { + let data = fs.readFileSync(file, 'utf8'); + linkMap.forEach((to, from) => { + const find = getFindPattern(from); + const replace = getReplacePattern(to); + data = data.replaceAll(new RegExp(find, "gm"), replace); + }); + fs.writeFileSync(file, data, 'utf-8'); +} + +module.exports = { + getRedirectionsFilePath, + readRedirectionsFile, + writeRedirectionsFile, + getDeployableFiles, + getMarkdownFiles, + getFindPatternForMarkdownFiles, + getReplacePatternForMarkdownFiles, + removeFileExtension, + replaceLinksInFile +}; \ No newline at end of file diff --git a/src/pages/config.md b/src/pages/config.md new file mode 100644 index 000000000..010fd47ff --- /dev/null +++ b/src/pages/config.md @@ -0,0 +1,232 @@ +- pathPrefix: + - /app-builder/docs/ + +- home: + - [App Builder](/app-builder) + +- pages: + - [Overview](intro_and_overview/index.md) + - [Getting Started](get_started/index.md) + - [Guides](guides/index.md) + - [Resources](resources/index.md) + +- subPages: + - [Introduction](intro_and_overview/index.md) + - [App Builder Overview](intro_and_overview/index.md) + - [What is App Builder](intro_and_overview/what-is-app-builder.md) + - [Business Case](intro_and_overview/business-case.md) + - [FAQ](intro_and_overview/faq.md) + - [Community](intro_and_overview/community.md) + - [Quick Start](get_started/index.md) + - [App Builder Getting Started](get_started/app_builder_get_started/app-builder-intro.md) + - [Setting Up](get_started/app_builder_get_started/set-up.md) + - [Creating your First App](get_started/app_builder_get_started/first-app.md) + - [Publishing Your App](get_started/app_builder_get_started/publish-app.md) + - [Troubleshooting](get_started/app_builder_get_started/troubleshoot.md) + - [Runtime Getting Started](get_started/runtime_getting_started/index.md) + - [Overview](get_started/runtime_getting_started/index.md) + - [Activations](get_started/runtime_getting_started/activations.md) + - [Deploy](get_started/runtime_getting_started/deploy.md) + - [Entities](get_started/runtime_getting_started/entities.md) + - [How Runtime Works](get_started/runtime_getting_started/how-runtime-works.md) + - [Resources](get_started/runtime_getting_started/resources.md) + - [Setup](get_started/runtime_getting_started/setup.md) + - [Understanding Runtime](get_started/runtime_getting_started/understanding-runtime.md) + - [Develop](guides/index.md) + - [References](guides/references.md) + - [App Builder Guides](guides/app_builder_guides/index.md) + - [Architecture Overview](guides/app_builder_guides/architecture_overview/architecture-overview.md) + - [App Hooks](guides/app_builder_guides/architecture_overview/app-hooks.md) + - [Introduction to React Spectrum](guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum.md) + - [Using SDKs](guides/app_builder_guides/architecture_overview/using-sdks.md) + - [Application State](guides/app_builder_guides/application-state.md) + - [Application Logging](guides/app_builder_guides/application_logging/logging.md) + - [Azure Log Analytics](guides/app_builder_guides/application_logging/azure-log-analytics.md) + - [New Relic](guides/app_builder_guides/application_logging/new-relic.md) + - [Splunk Cloud](guides/app_builder_guides/application_logging/splunk-cloud.md) + - [Splunk Enterprise](guides/app_builder_guides/application_logging/splunk-enterprise.md) + - [Configuration](guides/app_builder_guides/configuration/configuration.md) + - [Webpack Configuration](guides/app_builder_guides/configuration/webpack-configuration.md) + - [Deployment](guides/app_builder_guides/deployment/deployment.md) + - [CI/CD for App Builder Apps](guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md) + - [Credential Rotation](guides/app_builder_guides/deployment/credential-rotation.md) + - [Setting Response Headers](guides/app_builder_guides/deployment/setting-response-headers.md) + - [Development](guides/app_builder_guides/development.md) + - [Distribution](guides/app_builder_guides/distribution.md) + - [Events](https://developer.adobe.com/events/docs/guides/using/custom_events/) + - [Webhooks](https://developer.adobe.com/events/docs/guides/) + - [Exc App](guides/app_builder_guides/exc_app/aec-integration.md) + - [Interfaces](guides/app_builder_guides/exc_app/interfaces/index.md) + - [Modules](guides/app_builder_guides/exc_app/interfaces/modules.md) + - [Page ObjectWithHref](guides/app_builder_guides/exc_app/interfaces/page-objectwithhref.md) + - [Page ObjectWithPath](guides/app_builder_guides/exc_app/interfaces/page-objectwithpath.md) + - [Page PageAPI](guides/app_builder_guides/exc_app/interfaces/page-pageapi.md) + - [Page PageAPIProperties](guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties.md) + - [Runtime](guides/app_builder_guides/exc_app/interfaces/runtime.md) + - [TopBar Callback](guides/app_builder_guides/exc_app/interfaces/topbar-callback.md) + - [TopBar CustomFeedbackConfig](guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig.md) + - [TopBar CustomSearchConfig](guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig.md) + - [TopBar ExternalFeedbackConfig](guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig.md) + - [TopBar HelpCenterFeedbackConfig](guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig.md) + - [TopBar Solution](guides/app_builder_guides/exc_app/interfaces/topbar-solution.md) + - [TopBar TopBarAPI](guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi.md) + - [TopBar TopBarAPIProperties](guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties.md) + - [User UserAPI](guides/app_builder_guides/exc_app/interfaces/user-userapi.md) + - [User UserInfo](guides/app_builder_guides/exc_app/interfaces/user-userinfo.md) + - [Migrate App to Exp Cloud SPA](guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa.md) + - [Modules](guides/app_builder_guides/exc_app/modules/index.md) + - [Page](guides/app_builder_guides/exc_app/modules/page.md) + - [TopBar](guides/app_builder_guides/exc_app/modules/topbar.md) + - [User](guides/app_builder_guides/exc_app/modules/user.md) + - [Extensions](guides/app_builder_guides/extensions/extensions.md) + - [Extension Migration Guide](guides/app_builder_guides/extensions/extension-migration-guide.md) + - [Optimization](guides/app_builder_guides/optimization.md) + - [Security](guides/app_builder_guides/security/index.md) + - [Understanding Authentication](guides/app_builder_guides/security/understanding-authentication.md) + - [Telemetry](guides/app_builder_guides/telemetry.md) + - [Runtime Guides](guides/runtime_guides/index.md) + - [Contribution Guide](guides/contribution-guide.md) + - [Asynchronous Calls](guides/runtime_guides/asynchronous-calls.md) + - [Creating Actions](guides/runtime_guides/creating-actions.md) + - [Creating REST APIs](guides/runtime_guides/creating-rest-apis.md) + - [CI/CD Pipeline](guides/runtime_guides/ci-cd-pipeline.md) + - [Debugging](guides/runtime_guides/debugging.md) + - [Logging & Monitoring](guides/runtime_guides/logging-monitoring.md) + - [Reference Docs](guides/runtime_guides/reference_docs/index.md) + - [API Reference](guides/runtime_guides/reference_docs/api-ref.md) + - [CLI Usage](guides/runtime_guides/reference_docs/cli-use.md) + - [Configuring Proxy](guides/runtime_guides/reference_docs/configuringproxy.md) + - [Environment Variables](guides/runtime_guides/reference_docs/environment-variables.md) + - [Feeds](guides/runtime_guides/reference_docs/feeds.md) + - [Multiple Regions](guides/runtime_guides/reference_docs/multiple-regions.md) + - [Packages](guides/runtime_guides/reference_docs/packages.md) + - [Prepackages](guides/runtime_guides/reference_docs/prepackages.md) + - [Runtimes](guides/runtime_guides/reference_docs/runtimes.md) + - [Sequences & Compositions](guides/runtime_guides/reference_docs/sequences-compositions.md) + - [Triggers & Rules](guides/runtime_guides/reference_docs/triggersrules.md) + - [WSK Usage](guides/runtime_guides/reference_docs/wsk-use.md) + - [Security General](guides/runtime_guides/security-general.md) + - [Securing Web Actions](guides/runtime_guides/securing-web-actions.md) + - [System Settings](guides/runtime_guides/system-settings.md) + - [Throughput Tuning](guides/runtime_guides/throughput-tuning.md) + - [Tools](guides/runtime_guides/tools/index.md) + - [CLI Install](guides/runtime_guides/tools/cli-install.md) + - [Troubleshooting](guides/runtime_guides/troubleshooting.md) + - [Using Packages](guides/runtime_guides/using-packages.md) + - [Using Runtime](guides/runtime_guides/using-runtime.md) + - [Contribution Guide](guides/contribution-guide.md) + - [Learning](resources/index.md) + - [Asset Compute Worker PS API](resources/asset-compute-worker-ps-api/index.md) + - [Requirements](resources/asset-compute-worker-ps-api/requirements.md) + - [Lesson 1: Create an app from Asset Compute template](resources/asset-compute-worker-ps-api/lesson1.md) + - [Lesson 2: Configure the app](resources/asset-compute-worker-ps-api/lesson2.md) + - [Lesson 3: Develop worker calling Photoshop API](resources/asset-compute-worker-ps-api/lesson3.md) + - [Lesson 4: Integrate worker in AEMaaCS](resources/asset-compute-worker-ps-api/lesson4.md) + - [Well done](resources/asset-compute-worker-ps-api/welldone.md) + - [Barcode Reader](resources/barcode-reader/index.md) + - [Requirements](resources/barcode-reader/requirements.md) + - [Lesson 1: Bootstrap a Headless App](resources/barcode-reader/bootstrap.md) + - [Lesson 2: Writing a Serverless Action](resources/barcode-reader/barcode.md) + - [Lesson 3: Unit and E2E Tests](resources/barcode-reader/test.md) + - [Well done](resources/barcode-reader/welldone.md) + - [Blog Articles](resources/blog-articles.md) + - [Blog Articles](resources/blog-articles.md) + - [CI/CD](resources/ci-cd/index.md) + - [Requirements](resources/ci-cd/requirements.md) + - [Lesson 1: Setup CI/CD](resources/ci-cd/lesson1.md) + - [Lesson 2: Monitoring CI/CD](resources/ci-cd/lesson2.md) + - [Lesson 3: Custom CI/CD workflow](resources/ci-cd/lesson3.md) + - [Well done](resources/ci-cd/welldone.md) + - [Cron Jobs](resources/cron-jobs/index.md) + - [Requirements](resources/cron-jobs/requirements.md) + - [Lesson 1: Bootstrap a Headless App](resources/cron-jobs/lesson1.md) + - [Lesson 2: Set up Alarm Feed with Trigger and Rule](resources/cron-jobs/lesson2.md) + - [Lesson 3: Types of Alarm Feed](resources/cron-jobs/lesson3.md) + - [Well done](resources/cron-jobs/welldone.md) + - [Custom Asset Compute Worker](resources/custom-asset-compute-worker/index.md) + - [Requirements](resources/custom-asset-compute-worker/requirements.md) + - [How AEM as Cloud assets works](resources/custom-asset-compute-worker/aem-cloud-assets.md) + - [Architecture of our worker](resources/custom-asset-compute-worker/our-worker.md) + - [Configure services](resources/custom-asset-compute-worker/lesson1.md) + - [Local environment setup](resources/custom-asset-compute-worker/lesson2.md) + - [Implement the worker](resources/custom-asset-compute-worker/lesson3.md) + - [Test the worker](resources/custom-asset-compute-worker/lesson4.md) + - [Setup AEM to use the worker](resources/custom-asset-compute-worker/lesson5.md) + - [Well Done](resources/custom-asset-compute-worker/welldone.md) + - [Customer Dashboard](resources/customer-dashboard/index.md) + - [Requirements](resources/customer-dashboard/requirements.md) + - [Lesson 1: Create a New App Builder App from Campaign Standard Template](resources/customer-dashboard/lesson1.md) + - [Lesson 2: Explore the App Builder App](resources/customer-dashboard/lesson2.md) + - [Lesson 3: Run the App Builder App Locally](resources/customer-dashboard/lesson3.md) + - [Lesson 4: List All Customer Profiles on the UI](resources/customer-dashboard/lesson4.md) + - [Lesson 5: Add Personalized Promotion Emails Triggering](resources/customer-dashboard/lesson5.md) + - [Well Done](resources/customer-dashboard/welldone.md) + - [Debugging](resources/debugging/index.md) + - [Requirements](resources/debugging/requirements.md) + - [Lesson 1: Getting familiar with Debugger](resources/debugging/lesson1.md) + - [Lesson 2: Debugging Application Code](resources/debugging/lesson2.md) + - [Lesson 3: Managing Application Logs](resources/debugging/lesson3.md) + - [Well Done](resources/debugging/welldone.md) + - [Event Driven](resources/event-driven/index.md) + - [Requirements](resources/event-driven/requirements.md) + - [Lesson 1: Create a New App Builder App from Template](resources/event-driven/lesson1.md) + - [Lesson 2: Register the App as Event Provider](resources/event-driven/lesson2.md) + - [Lesson 3: Fire an Event](resources/event-driven/lesson3.md) + - [Lesson 4: Consume Events](resources/event-driven/lesson4.md) + - [Well Done](resources/event-driven/welldone.md) + - [Events Runtime](resources/events-runtime/index.md) + - [Requirements](resources/events-runtime/requirements.md) + - [Lesson 1: Step by Step Guide](resources/events-runtime/lesson1.md) + - [Lesson 2: Verify the result](resources/events-runtime/lesson2.md) + - [Well done](resources/events-runtime/welldone.md) + - [Journaling Events](resources/journaling-events/index.md) + - [Requirements](resources/journaling-events/requirements.md) + - [Lesson 1: Create an Event Provider using App Builder](resources/journaling-events/lesson1.md) + - [Lesson 2: Create the Event Consumer using Journaling API](resources/journaling-events/lesson2.md) + - [Lesson 3: End to end test](resources/journaling-events/lesson3.md) + - [Well done](resources/journaling-events/welldone.md) + - [Sample Apps](resources/sample_apps/index.md) + - [Code Snippets](resources/sample_apps/code_snippets/index.md) + - [Caching HTTP responses](resources/sample_apps/code_snippets/caching.md) + - [App Builder Files SDK](resources/sample_apps/code_snippets/files.md) + - [App Builder State SDK](resources/sample_apps/code_snippets/state.md) + - [I/O Events handler](resources/sample_apps/code_snippets/events.md) + - [Real-time data from Adobe Analytics API 1.4](resources/sample_apps/code_snippets/analytics.md) + - [Spectrum Introduction](resources/spectrum-intro/index.md) + - [Lesson 1: What is Spectrum ?](resources/spectrum-intro/lesson1.md) + - [Lesson 2: Using Spectrum CSS](resources/spectrum-intro/lesson2.md) + - [Lesson 3: Using React Spectrum](resources/spectrum-intro/lesson3.md) + - [Lesson 4: Using React Spectrum in App Builder](resources/spectrum-intro/lesson4.md) + - [Well done](resources/spectrum-intro/welldone.md) + - [Todo App](resources/todo-app/index.md) + - [Requirements](resources/todo-app/requirements.md) + - [Lesson 1: Create a New App Builder App with the React Spectrum template](resources/todo-app/lesson1.md) + - [Lesson 2: Setup Runtime actions](resources/todo-app/lesson2.md) + - [Lesson 3: Setup the CreateTodoList component](resources/todo-app/lesson3.md) + - [Lesson 4: Setup the Todo component](resources/todo-app/lesson4.md) + - [Lesson 5: Setup the TodoList component](resources/todo-app/lesson5.md) + - [Lesson 6: Bringing the pieces together to build the App](resources/todo-app/lesson6.md) + - [Well done](resources/todo-app/welldone.md) + - [Videos](resources/videos/index.md) + - [Overview](resources/videos/overview.md) + - [Introducing App Builder](resources/videos/overview/introduction.md) + - [Getting Started](resources/videos/overview/getting-started.md) + - [Architecture](resources/videos/overview/architecture.md) + - [A Full Security Overview](resources/videos/overview/security.md) + - [User Journey](resources/videos/overview/e2-e-user-journey.md) + - [Exploring](resources/videos/exploring/) + - [Projects and Workspaces](resources/videos/exploring/projects-and-workspaces.md) + - [React Spectrum](resources/videos/exploring/react-spectrum.md) + - [Custom Events](resources/videos/exploring/custom-events.md) + - [CI/CD](resources/videos/exploring/ci-cd.md) + - [Debugging](resources/videos/exploring/debugging.md) + - [Learning Resources](resources/videos/exploring/learning-resources.md) + - [Dashboard Case Study](resources/videos/exploring/dashboard-case-study.md) + - [ODE Case Study](resources/videos/exploring/ode-case-study.md) + - [Deep Dive Use Cases](resources/videos/exploring/deep-dive-use-cases.md) + - [Live Wired Sneak](resources/videos/exploring/live-wired-sneak.md) + - [Softcrylic Partner Showcase](resources/videos/exploring/softcrylic-showcase.md) + - [Developers Live](resources/videos/developers-live/deep-dive.md) + - [App Builder Deep Dive](resources/videos/developers-live/deep-dive.md) + - [Asset Compute Service Extensibility](resources/videos/developers-live/asset-compute-service-extensibility.md) + - [Extend Adobe Experience Cloud](resources/videos/developers-live/extend-experience-cloud.md) 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 similarity index 97% rename from src/pages/get_started/app_builder_get_started/app_builder_intro.md rename to src/pages/get_started/app_builder_get_started/app-builder-intro.md index 2459eb26c..1e4291058 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 @@ -19,7 +19,7 @@ This series of tutorials will show you how to: * Troubleshoot your app and correct common error conditions -Customers with currently deployed Adobe I/O Runtime actions they wish to convert into App Builder applications should consider [this shortcut](app_builder_and_runtime.md). +Customers with currently deployed Adobe I/O Runtime actions they wish to convert into App Builder applications should consider [this shortcut](../../intro_and_overview/index.md). ## Overview @@ -49,4 +49,4 @@ Once you are ready to share the application with end users, initiate the publish ## Next step -First, we'll review the access permissions, credentials, local environment, and tools you'll need for your App Builder app: [Set up](set_up.md). +First, we'll review the access permissions, credentials, local environment, and tools you'll need for your App Builder app: [Set up](set-up.md). 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 similarity index 97% rename from src/pages/get_started/app_builder_get_started/first_app.md rename to src/pages/get_started/app_builder_get_started/first-app.md index 469d5893f..4668feb12 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 @@ -13,7 +13,7 @@ This is a guide through the steps to set up and develop an App Builder Applicati ## 1. Check your environment and tools -Make sure you have [access to App Builder](set_up.md#access-and-credentials), and that your [local environment and tooling](set_up.md#local-environment-setup) are up to date, as described in [Set up Access, Environment, and Tools](set_up.md). +Make sure you have [access to App Builder](set-up.md#access-and-credentials), and that your [local environment and tooling](set-up.md#local-environment-setup) are up to date, as described in [Set up Access, Environment, and Tools](set-up.md). ## 2. Create a new project on Developer Console @@ -29,9 +29,8 @@ Follow these instructions to set up your project: ![Org Switcher](../../images/console-2.png) -3. Once you are in the correct organization, click on `Quick Start` and select the option `Create project from template` - - > **Note:** if you don't see the `Create project from template` option, confirm that the IMS org is correct. If it is, you do not yet have access to App Builder: recheck the process in [Set up Access, Environment, and Tools](set_up.md). +3. Once you are in the correct organization, click on `Quick Start` and select the option `Create project from template` + > **Note:** if you don't see the `Create project from template` option, confirm that the IMS org is correct. If it is, you do not yet have access to App Builder: recheck the process in [Set up Access, Environment, and Tools](set-up.md). 4. Select `App Builder` from the list of templates. @@ -258,8 +257,8 @@ 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. - - 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) + + 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) You will be asked to name the instances of selected sample actions, or keep the default names: @@ -459,13 +458,13 @@ To view your deployed application in the Experience Cloud shell: -> https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=https://localhost:9080 ``` -The first URL shows your standalone application on localhost (by default; the port is configurable). The second places your local application in the context of the [Experience Cloud UI](../../guides/app_builder_guides/exc_app/aec_integration.md) for preview. +The first URL shows your standalone application on localhost (by default; the port is configurable). The second places your local application in the context of the [Experience Cloud UI](../../guides/app_builder_guides/exc_app/aec-integration.md) for preview. While most changes in your code are updated in real time when the application is running, the `.env` file is not among them. Running the application depends on `.env` file to provide necessary credentials, so the file is unmodifiable while the app is running. When your app is running, the `.env` file is backed up, and a new one is written with specific values. When you exit the process, the original `.env` is restored. As indicated in the message, when you are done, you can press `CTRL+C` to terminate the local development environment. -To have the application run completely locally, so the actions run on a locally deployed standalone version of OpenWhisk instead of on Adobe I/O Runtime, use `aio app run --local`. Some additional dependencies are required if you have not installed them already; see [Optional tool](set_up.md#optional-tool) section in [Set Up Access, Environment, and Tools](set_up.md) to set them up manually. +To have the application run completely locally, so the actions run on a locally deployed standalone version of OpenWhisk instead of on Adobe I/O Runtime, use `aio app run --local`. Some additional dependencies are required if you have not installed them already; see [Optional tool](set-up.md#optional-tool) section in [Set Up Access, Environment, and Tools](set-up.md) to set them up manually. Usually, we recommend running your applications with deployed Adobe I/O Runtime actions, since your application should run on Adobe I/O Runtimein production. However, if you need to build complex actions or sequencing, the `--local` flag is helpful to debug the application locally. Please see the "Debugging the Application"" section below for more information. @@ -488,7 +487,7 @@ All actions require `Authorization` and `x-gw-ims-org-id` in the headers by defa ![Hello World](../../images/helloworld-2.png) **Note:** If you open your application in the [Experience Cloud Shell](http://experience.adobe.com/) using the second link provided by the CLI, your Experience Cloud Shell user token will automatically be available to the SPA UI and passed to the underlying Adobe I/O Runtime actions of your application. -This is a very useful feature of the SPA UI template, which integrates with the [client-side API](../../guides/app_builder_guides/exc_app/aec_integration.md) of Experience Cloud Shell. +This is a very useful feature of the SPA UI template, which integrates with the [client-side API](../../guides/app_builder_guides/exc_app/aec-integration.md) of Experience Cloud Shell. The other sample actions require invoking additional paramaters. For example, if you try to invoke `analytics` with only the authorization header, you will see an error similar to `"error": "missing parameter(s) 'apiKey,companyId'"`. This is because these sample actions use Adobe API that requires those parameters before the actions can be invoked. @@ -531,7 +530,7 @@ As you modify and extend the application code, you will need to update the tests Adobe uses [jestJS](https://jestjs.io/) for the unit tests of the CLI, SDK, and bootstrapped application. You can change the implementation to your preferred framework. -[CI/CD for App Builder Applications](../../guides/app_builder_guides/deployment/cicd_for_app_builder_apps.md) explains how you can also execute these tests in the context of a CI/CD pipeline. +[CI/CD for App Builder Applications](../../guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md) explains how you can also execute these tests in the context of a CI/CD pipeline. ## 7. Deploy the application @@ -579,7 +578,7 @@ Well done, your app is now online 🏄 Note the last section of the output, `To view your deployed application`, shows two urls of the app by default, for the CDN host and Experience Cloud Shell. In the latter case, The URL format of the app should follow `https://experience.adobe.com/?devMode=true#/custom-apps/?localDevUrl=`. -You can undeploy your app with `aio app undeploy`. To learn more about deployment, please refer to the [Deployment Overview](../../guides/app_builder_guides/deployment/deployment.md). To automate your build, deploy, and build process with out-of-the-box CI/CD GitHub actions, please refer to [CI/CD for App Builder Applications](../../guides/app_builder_guides/deployment/cicd_for_app_builder_apps.md). +You can undeploy your app with `aio app undeploy`. To learn more about deployment, please refer to the [Deployment Overview](../../guides/app_builder_guides/deployment/deployment.md). To automate your build, deploy, and build process with out-of-the-box CI/CD GitHub actions, please refer to [CI/CD for App Builder Applications](../../guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md). ## 8. Common issues @@ -601,4 +600,4 @@ You can undeploy your app with `aio app undeploy`. To learn more about deploymen For more code examples and use cases, please refer to the [Resources page](../../resources/index.md). -Continue the tutorial at [Publishing Your First App Builder Application](publish_app.md) +Continue the tutorial at [Publishing Your First App Builder Application](publish-app.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 c3358972e..7a95efecc 100644 --- a/src/pages/get_started/app_builder_get_started/index.md +++ b/src/pages/get_started/app_builder_get_started/index.md @@ -14,11 +14,11 @@ App Builder greatly simplifies the process of building cloud native applications If you have existing actions (for example, headless applications) deployed on Adobe I/O Runtime and you want to convert them to App Builder applications, these are the main steps: * Create a new project in the [Developer Console](https://developer.adobe.com/developer-console/) and choose the App Builder template -* Configure the Adobe CLI and use it to initialize a new application for the project you created above; see also [Setting Up Your Environment](set_up.md) +* Configure the Adobe CLI and use it to initialize a new application for the project you created above; see also [Setting Up Your Environment](set-up.md) * Create copies of your actions in this project * Deploy and test the new actions * Update your applications to point to the new actions ## Next step -See what else App Builder can do: [Create your First App Builder Application](first_app.md). +See what else App Builder can do: [Create your First App Builder Application](first-app.md). 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 similarity index 85% rename from src/pages/get_started/app_builder_get_started/publish_app.md rename to src/pages/get_started/app_builder_get_started/publish-app.md index 8b5f956f3..3d7938d37 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 @@ -29,51 +29,51 @@ 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. -![](E:\GitHub\app-builder\src\pages\images\approval-production-overview.png) +![](../../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. -![](E:\GitHub\app-builder\src\pages\images\approval-app-submission-details.png) +![](../../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." -![](E:\GitHub\app-builder\src\pages\images\approval-in-review.png) +![](../../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. -![](E:\GitHub\app-builder\src\pages\images\approval-app-rejected.png) +![](../../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 My 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. -![](E:\GitHub\app-builder\src\pages\images\approval-published.png) +![](../../images/approval-published.png) ## Administrator review of your app (MyExchange part) Once an application has been submitted for approval, your organization's Administrators will see it in My Exchange -> Experience Cloud Apps, and you will see your submitted apps under Pending Review status. -![](E:\GitHub\app-builder\src\pages\images\approval-myexchange.png) +![](../../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. -![](E:\GitHub\app-builder\src\pages\images\approval-myexchange-review.png) +![](../../images/approval-myexchange-review.png) After the app is approved, you will see it in the Approved section. The reviewer can also unpublish the app, requiring the app owner to resubmit it for review and approval. -![](E:\GitHub\app-builder\src\pages\images\approval-myexchange-revoke.png) +![](../../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: -![](E:\GitHub\app-builder\src\pages\images\approval-myapp-home.png) +![](../../images/approval-myapp-home.png) Click on `App Builder Apps` to discover all the applications published for your organization. -![](E:\GitHub\app-builder\src\pages\images\approval-myapp-customapps.png) +![](../../images/approval-myapp-customapps.png) # Publishing your headless App Builder app 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 similarity index 96% rename from src/pages/get_started/app_builder_get_started/set_up.md rename to src/pages/get_started/app_builder_get_started/set-up.md index 4953d450e..9ed9d24c0 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 @@ -8,8 +8,6 @@ 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. --- -import NPMBadge from '../../../components/NPMBadge.js' - # Set Up Access, Environment, and Tools Here you'll learn what systems you need to access, how to access them, and how to configure your local environment. @@ -41,7 +39,7 @@ Here you'll learn what systems you need to access, how to access them, and how t [**Adobe I/O Command Line Interface (CLI)**](https://github.com/adobe/aio-cli) - `npm install -g @adobe/aio-cli` -- If Adobe I/O CLI is already installed, please make sure you have the latest version: +- If Adobe I/O CLI is already installed, please make sure you have the latest version: - Check your CLI version using `aio -v` and compare it to`npm show @adobe/aio-cli version`. If your CLI is outdated, update it by running `npm install -g @adobe/aio-cli`. - Even if your Adobe I/O CLI is up to date, run `aio update` to make sure all core plugins are updated. - For seven days after release of a new version of Adobe I/O CLI, you'll see a message like this before the command output: @@ -70,4 +68,4 @@ If you intend to use local development (`aio app dev`) features provided by the ## Next step -Now that you have your environment set up, you can start to [Create your First App Builder Application](first_app.md). +Now that you have your environment set up, you can start to [Create your First App Builder Application](first-app.md). 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 f37428c1c..ea03395e5 100644 --- a/src/pages/get_started/app_builder_get_started/troubleshoot.md +++ b/src/pages/get_started/app_builder_get_started/troubleshoot.md @@ -81,6 +81,6 @@ We recommend using [Node Version Manager (nvm)](https://github.com/nvm-sh/nvm) o This completes the "Getting Started" tutorial series for App Builder. -To learn how to extend App Builder capabilities using the Adobe I/O Runtime platform, proceed to the [Get Started with Adobe I/O Runtime](../runtime_getting_started/runtime_intro.md) tutorial. +To learn how to extend App Builder capabilities using the Adobe I/O Runtime platform, proceed to the [Get Started with Adobe I/O Runtime](../runtime_getting_started/index.md) tutorial. For in-depth review of App Builder architecture, development, deployment, integration, and security, visit the [Guides Index](../../guides/index.md) and select your topic of interest. diff --git a/src/pages/get_started/index.md b/src/pages/get_started/index.md index ccb64c05f..ea5f8bfdb 100644 --- a/src/pages/get_started/index.md +++ b/src/pages/get_started/index.md @@ -5,14 +5,14 @@ Welcome to the Getting Started section of App Builder documentation. Here you'll ## Choose Your Path ### App Builder Getting Started -If you're new to App Builder, start with our [App Builder Getting Started guide](app_builder_get_started/app_builder_intro/). This guide will walk you through: +If you're new to App Builder, start with our [App Builder Getting Started guide](app_builder_get_started/app_builder_intro.md). This guide will walk you through: - Setting up your development environment - Creating your first App Builder application - Publishing your app - Troubleshooting common issues ### Runtime Getting Started -If you're interested in serverless development with Adobe I/O Runtime, check out our [Runtime Getting Started guide](runtime_getting_started/). This guide covers: +If you're interested in serverless development with Adobe I/O Runtime, check out our [Runtime Getting Started guide](runtime_getting_started/index.md). This guide covers: - Understanding Runtime fundamentals - Setting up your environment - Creating and deploying actions @@ -21,6 +21,6 @@ If you're interested in serverless development with Adobe I/O Runtime, check out ## Next Steps -After completing either getting started guide, you can explore our detailed [Guides](../guides/) section for more in-depth information about specific features and capabilities. +After completing either getting started guide, you can explore our detailed [Guides](../guides/index.md) section for more in-depth information about specific features and capabilities. -For additional resources and support, visit our [Resources](../resources/) section. \ No newline at end of file +For additional resources and support, visit our [Resources](../resources/index.md) section. diff --git a/src/pages/get_started/runtime_getting_started/activations.md b/src/pages/get_started/runtime_getting_started/activations.md index 3438223d7..b5dfcd204 100644 --- a/src/pages/get_started/runtime_getting_started/activations.md +++ b/src/pages/get_started/runtime_getting_started/activations.md @@ -98,7 +98,7 @@ At a scale of millions of activations per day, it may be difficult to screen out The exceptions are asynchronous actions invoked in a non-blocking fashion. Their results are persisted regardless of success or failure, so you can extract their responses later. -You can still view the total number of executions, as described in the [Logging and Monitoring](../../guides/runtime_guides/logging_monitoring.md) Guide. +You can still view the total number of executions, as described in the [Logging and Monitoring](../../guides/runtime_guides/logging-monitoring.md) Guide. To review all activation results during development, set the extra logging header to `on` in the request: @@ -129,6 +129,6 @@ Activation time to live is seven days, a system setting, and can't be changed by This completes the "Get Started with Adobe I/O Runtime" tutorial. -For a detailed review of Runtime components, operations, settings, and tuning, see [Understanding I/O Runtime](understanding_runtime.md). +For a detailed review of Runtime components, operations, settings, and tuning, see [Understanding I/O Runtime](understanding-runtime.md). -The procedures described above will help you debug your first actions. For additional details about debugging tools and processes, review the [Logging and Monitoring](../../guides/runtime_guides/logging_monitoring.md) Guide. +The procedures described above will help you debug your first actions. For additional details about debugging tools and processes, review the [Logging and Monitoring](../../guides/runtime_guides/logging-monitoring.md) Guide. diff --git a/src/pages/get_started/runtime_getting_started/entities.md b/src/pages/get_started/runtime_getting_started/entities.md index 1d51bb84b..cca000b2c 100644 --- a/src/pages/get_started/runtime_getting_started/entities.md +++ b/src/pages/get_started/runtime_getting_started/entities.md @@ -8,9 +8,9 @@ Actions are stateless functions that run on Adobe I/O Runtime. Actions can be us For more information, see: -- [Creating Actions](../../guides/runtime_guides/creating_actions.md) -- [Securing Web Actions](../../guides/runtime_guides/securing_web_actions.md) -- [CI/CD Pipeline](../../guides/runtime_guides/ci-cd_pipeline.md) +- [Creating Actions](../../guides/runtime_guides/creating-actions.md) +- [Securing Web Actions](../../guides/runtime_guides/securing-web-actions.md) +- [CI/CD Pipeline](../../guides/runtime_guides/ci-cd-pipeline.md) ## Namespaces @@ -50,4 +50,4 @@ For more information, see [Using Feeds](../../guides/runtime_guides/reference_do ## Next step -Next we'll see how these entities interact to deliver Runtime function-as-a-service, in [How Adobe I/O Runtime works](how_runtime_works.md) +Next we'll see how these entities interact to deliver Runtime function-as-a-service, in [How Adobe I/O Runtime works](how-runtime-works.md) 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 similarity index 99% rename from src/pages/get_started/runtime_getting_started/how_runtime_works.md rename to src/pages/get_started/runtime_getting_started/how-runtime-works.md index 8992c57a1..3f73a8f9d 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 @@ -112,4 +112,4 @@ The Invoker ensures that actions are executed securely, efficiently, and in isol To begin a step-by-step tutorial for creating, deploying, and testing your first Runtime action, start with [Set up Your Environment](setup.md). -For a closer look at the programming model, components, operation, integrations, and security provisions of Adobe I/O Runtime, review [Understanding Adobe I/O Runtime](understanding_runtime.md) +For a closer look at the programming model, components, operation, integrations, and security provisions of Adobe I/O Runtime, review [Understanding Adobe I/O Runtime](understanding-runtime.md) diff --git a/src/pages/get_started/runtime_getting_started/index.md b/src/pages/get_started/runtime_getting_started/index.md index d7dfc6454..fdb415322 100644 --- a/src/pages/get_started/runtime_getting_started/index.md +++ b/src/pages/get_started/runtime_getting_started/index.md @@ -6,7 +6,7 @@ Runtime delivers a flexible, on-demand computing resource: function-as-a-service ## Next steps -For an overview of I/O Runtime terminology and its computing model, see [Entities and Core Concepts](entities.md) and [How Adobe I/O Runtime Works](how_runtime_works.md). +For an overview of I/O Runtime terminology and its computing model, see [Entities and Core Concepts](entities.md) and [How Adobe I/O Runtime Works](how-runtime-works.md). For a step-by-step tutorial for building applications on I/O Runtime, follow this tutorial: @@ -14,4 +14,4 @@ For a step-by-step tutorial for building applications on I/O Runtime, follow thi - [Deploy and invoke your first action](deploy.md) - [Retrieve action invocation results](activations.md) -For detailed description of the Runtime programming model, components, and processes, with recommendations about working with Runtime and optimizing performance, see [Understanding Adobe I/O Runtime ](understanding_runtime.md). +For detailed description of the Runtime programming model, components, and processes, with recommendations about working with Runtime and optimizing performance, see [Understanding Adobe I/O Runtime ](understanding-runtime.md). diff --git a/src/pages/get_started/runtime_getting_started/resources.md b/src/pages/get_started/runtime_getting_started/resources.md index eb01a89e7..90d7dac65 100644 --- a/src/pages/get_started/runtime_getting_started/resources.md +++ b/src/pages/get_started/runtime_getting_started/resources.md @@ -1,4 +1,4 @@ - + # Resources and support diff --git a/src/pages/get_started/runtime_getting_started/setup.md b/src/pages/get_started/runtime_getting_started/setup.md index d4370aa59..a4d25a18f 100644 --- a/src/pages/get_started/runtime_getting_started/setup.md +++ b/src/pages/get_started/runtime_getting_started/setup.md @@ -30,7 +30,7 @@ In the Developer Console: There are two ways to configure the `aio` CLI: -* **With Developer Role or System Administrator permissions**, sign in to the `aio` CLI as shown [here](../app_builder_get_started/first_app.md#3-sign-in-from-the-CLI), then use it to retrieve the projects you created in the Developer Console and select the workspace you want to work in. +* **With Developer Role or System Administrator permissions**, sign in to the `aio` CLI as shown [here](../app_builder_get_started/first-app.md#3-sign-in-from-the-CLI), then use it to retrieve the projects you created in the Developer Console and select the workspace you want to work in. * **If you lack the right permissions** but have a namespace and authorization for it, manually configure the `aio` CLI as shown in the next section. diff --git a/src/pages/get_started/runtime_getting_started/understanding_runtime.md b/src/pages/get_started/runtime_getting_started/understanding-runtime.md similarity index 97% rename from src/pages/get_started/runtime_getting_started/understanding_runtime.md rename to src/pages/get_started/runtime_getting_started/understanding-runtime.md index 93672289b..609842707 100644 --- a/src/pages/get_started/runtime_getting_started/understanding_runtime.md +++ b/src/pages/get_started/runtime_getting_started/understanding-runtime.md @@ -12,9 +12,9 @@ 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. -![](E:\GitHub\app-builder\src\pages\images\quickstart-programming-model.png) +![](../../images/quickstart-programming-model.png) -![](E:\GitHub\app-builder\src\pages\images\quickstart-shared-packages.png) +![](../../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. @@ -24,7 +24,7 @@ Adobe I/O Runtime is built on the Apache OpenWhisk open-source project, so many This diagram shows the high-level architecture of I/O Runtime built on OpenWhisk: -![](E:\GitHub\app-builder\src\pages\images\quickstart-components.png) +![](../../images/quickstart-components.png) This is the sequence by which Runtime components execute user code when an action is executed: @@ -58,7 +58,7 @@ When an action invocation request is accepted by I/O Runtime and an ActivationId ## Understanding system settings -Some system limits are relevant to your application design; you can find a full reference in the Adobe I/O Runtime [System Settings Guide](../../guides/runtime_guides/system_settings.md). +Some system limits are relevant to your application design; you can find a full reference in the Adobe I/O Runtime [System Settings Guide](../../guides/runtime_guides/system-settings.md). These are particularly important: diff --git a/src/pages/getting_started/first_app.md b/src/pages/getting_started/first-app.md similarity index 99% rename from src/pages/getting_started/first_app.md rename to src/pages/getting_started/first-app.md index 0ea826a1a..c7ce08e89 100644 --- a/src/pages/getting_started/first_app.md +++ b/src/pages/getting_started/first-app.md @@ -19,7 +19,7 @@ In this tutorial, we'll guide you through the following steps to give you an int 1. Developing the Application 1. Deploying the Application -If you run into any issues during development, please first refer to the [Common Issues section](first_app.md#common-issues) on this page. +If you run into any issues during development, please first refer to the [Common Issues section](first-app.md#common-issues) on this page. ## 1. Set up Local Environment diff --git a/src/pages/guides/app_builder_guides/application_state.md b/src/pages/guides/app_builder_guides/application-state.md similarity index 60% rename from src/pages/guides/app_builder_guides/application_state.md rename to src/pages/guides/app_builder_guides/application-state.md index dd82ff1a1..55374098f 100644 --- a/src/pages/guides/app_builder_guides/application_state.md +++ b/src/pages/guides/app_builder_guides/application-state.md @@ -1,10 +1,10 @@ --- keywords: - - Adobe I/O - - Extensibility - - API Documentation - - Developer Tooling -title: Dealing with Application State +- Adobe I/O +- Extensibility +- API Documentation +- Developer Tooling + title: Dealing with Application State --- # Dealing with Application State @@ -64,7 +64,7 @@ Please refer to the [feature matrix](#feature-matrix) for a detailed comparison. ***How is my data stored?*** - State is a multi-tenant storage. Your data is isolated in a "State container" which maps to your I/O Runtime namespace and application Workspace. This means that each application Workspace has its own isolated data. -- You have the option to store data in either the `amer`, `emea` or `apac` region. These regions operate independently, so treat them as separate instances. You may prefer one region over the other to optimize latency, as it may be closer to your users, or for compliance reasons such as GDPR. +- You have the option to store data in either the `amer`, `emea` or `apac` region. These regions operate independently, so treat them as separate instances. You may prefer one region over the other to optimize latency, as it may be closer to your users, or for compliance reasons such as GDPR. - Your data is not eternal. There is a configurable time-to-live (TTL) for each key-value pair, the default is 1 day and the maximum is 1 year (365 days). Region Acronyms are abbreviations for one or more continents that are part of a business region. @@ -157,15 +157,15 @@ The following quotas and limits apply while dealing with Application State assoc Quotas are shared across the organisation. Workspace limits are defined at the *workspace* level. The State service may return 429 (rate-limits) or 403 (storage limits) errors if limits are exceeded. -| Limit | Limit Type | Default Limit | Can it be Increased? | Notes | -|-------|-----------|--------------|----------------------|-------| -| How much data can you store in State? | Quota (increases with number of packs) | Up to 10 GB per App Builder pack | Yes, by purchasing more packs of App Builder | Storage is calculated as: `(2 * total size of keys) + (total size of values)`. | -| How much State bandwidth can you utilize? | Quota (increases with number of packs) | 1 TB per month per App Builder pack | Yes, by purchasing more packs of App Builder | Bandwidth is calculated as: total bytes uploaded + total bytes downloaded. | -| How much data can you store in State in a single App Builder workspace? | Workspace limit (fixed per workspace) | 1 GB for production workspaces
200 MB for other workspaces | Yes, by raising a support ticket. You can request an increase up to 10 GB.
*Note: Increasing the limit beyond 10 GB in a single workspace can be supported depending on your case. Raise a support ticket to find out more.* | Storage is calculated as: `(2 * total size of keys) + (total size of values)`. | -| How much State burst bandwidth can you consume in a single App Builder workspace? | Workspace limit (fixed per workspace) | 1 MB/s (bursts)

10 MB/min for production workspaces
2 MB/min for other workspaces | Yes, by raising a support ticket. You can request an increase up to 3 MB/s and 30 MB/min per App Builder packs purchased. | Bandwidth is calculated as: `total bytes uploaded + total bytes downloaded`. | -| How fast can you increase your bandwidth consumption in a single App Builder workspace? | Workspace limit (fixed per workspace) | 100 KB/s per minute | No | - | -| How many keys can you store in State in a single App Builder workspace? | Workspace limit (fixed per workspace) | 200K | Yes, by raising a support ticket. You can request an increase up to 500K keys. | This limit does not scale with the number of App Builder packs purchased. | -| How many list operations can you run per minute in a single App Builder workspace? | Workspace limit (fixed per workspace) | 1K/min | Yes, by raising a support ticket. You can request an increase up to 10K/min. | This limit does not scale with the number of App Builder packs purchased. | +| Limit | Limit Type | Default Limit | Can it be Increased? | Notes | +|-----------------------------------------------------------------------------------------|---------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------| +| How much data can you store in State? | Quota (increases with number of packs) | Up to 10 GB per App Builder pack | Yes, by purchasing more packs of App Builder | Storage is calculated as: `(2 * total size of keys) + (total size of values)`. | +| How much State bandwidth can you utilize? | Quota (increases with number of packs) | 1 TB per month per App Builder pack | Yes, by purchasing more packs of App Builder | Bandwidth is calculated as: total bytes uploaded + total bytes downloaded. | +| How much data can you store in State in a single App Builder workspace? | Workspace limit (fixed per workspace) | 1 GB for production workspaces 200 MB for other workspaces | Yes, by raising a support ticket. You can request an increase up to 10 GB. *Note: Increasing the limit beyond 10 GB in a single workspace can be supported depending on your case. Raise a support ticket to find out more.* | Storage is calculated as: `(2 * total size of keys) + (total size of values)`. | +| How much State burst bandwidth can you consume in a single App Builder workspace? | Workspace limit (fixed per workspace) | 1 MB/s (bursts) 10 MB/min for production workspaces 2 MB/min for other workspaces | Yes, by raising a support ticket. You can request an increase up to 3 MB/s and 30 MB/min per App Builder packs purchased. | Bandwidth is calculated as: `total bytes uploaded + total bytes downloaded`. | +| How fast can you increase your bandwidth consumption in a single App Builder workspace? | Workspace limit (fixed per workspace) | 100 KB/s per minute | No | - | +| How many keys can you store in State in a single App Builder workspace? | Workspace limit (fixed per workspace) | 200K | Yes, by raising a support ticket. You can request an increase up to 500K keys. | This limit does not scale with the number of App Builder packs purchased. | +| How many list operations can you run per minute in a single App Builder workspace? | Workspace limit (fixed per workspace) | 1K/min | Yes, by raising a support ticket. You can request an increase up to 10K/min. | This limit does not scale with the number of App Builder packs purchased. | ### List considerations @@ -221,22 +221,22 @@ To learn more please visit the [Adobe I/O File Storage library](https://github.c ## Feature Matrix -| | Files | State | State Legacy -| ----------- | ----------- |----------- | --------- | -| read
write
delete | Y | Y | Y | -| list | Y | Y | N -| streams | Y | N | N -| copy | Y | N | N -| deleteAll | N | Y | N -| sharing | Y (pre-sign URLs) | N | N -| Time-To-Live | N | Y | Y -| max TTL | infinite | 365 days | infinite -| max file/value size | 200GB | 1MB | 2MB | -| max key size | 1KB | 1KB | 1KB | -| key charset | open | `alphanumeric` with `_-.` | any but `/\?#` | -| max load | N/A | 10MB/min, 1MB/s
1k/min `list` requests | 900 RU/min (~KB/min) | -| max key values | N/A | 200K (scalable) | N/A | -| max storage | 1TB | 10GB | 10GB | -| max monthly load | N/A | 1TB (scalable) | N/A | -| regions | East US
West US read-only | Amer (US)
Emea (EU)
Apac (JPN) | East US
Europe read-only -| consistency | strong | strong (CRUD), eventual for `list` | eventual \ No newline at end of file +| | Files | State | State Legacy | +|---------------------|-----------------------------|----------------------------------------|----------------------------| +| read write delete | Y | Y | Y | +| list | Y | Y | N | +| streams | Y | N | N | +| copy | Y | N | N | +| deleteAll | N | Y | N | +| sharing | Y (pre-sign URLs) | N | N | +| Time-To-Live | N | Y | Y | +| max TTL | infinite | 365 days | infinite | +| max file/value size | 200GB | 1MB | 2MB | +| max key size | 1KB | 1KB | 1KB | +| key charset | open | `alphanumeric` with `_-.` | any but `/\?#` | +| max load | N/A | 10MB/min, 1MB/s 1k/min `list` requests | 900 RU/min (~KB/min) | +| max key values | N/A | 200K (scalable) | N/A | +| max storage | 1TB | 10GB | 10GB | +| max monthly load | N/A | 1TB (scalable) | N/A | +| regions | East US West US read-only | Amer (US) Emea (EU) Apac (JPN) | East US Europe read-only | +| consistency | strong | strong (CRUD), eventual for `list` | eventual | 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 similarity index 100% rename from src/pages/guides/app_builder_guides/application_logging/azure_log_analytics.md rename to src/pages/guides/app_builder_guides/application_logging/azure-log-analytics.md diff --git a/src/pages/guides/app_builder_guides/application_logging/logging.md b/src/pages/guides/app_builder_guides/application_logging/logging.md index 89f58b0c2..24a1fc7e2 100644 --- a/src/pages/guides/app_builder_guides/application_logging/logging.md +++ b/src/pages/guides/app_builder_guides/application_logging/logging.md @@ -47,7 +47,7 @@ The AIO CLI [App plugin](https://github.com/adobe/aio-cli-plugin-app) provides t To see more command options, run `aio app logs --help` on your terminal. -The `aio app logs` command can be used by developers or by scripts running in a [CI/CD pipeline](../deployment/cicd_for_app_builder_apps.md). The command can also be used for App Builder Applications deployed on Runtime, or running locally through the `aio app run --local` command as discussed in the [Deployment Guide](../deployment/deployment.md). +The `aio app logs` command can be used by developers or by scripts running in a [CI/CD pipeline](../deployment/cicd-for-app-builder-apps.md). The command can also be used for App Builder Applications deployed on Runtime, or running locally through the `aio app run --local` command as discussed in the [Deployment Guide](../deployment/deployment.md). ### Runtime plugin @@ -64,10 +64,10 @@ In addition to viewing application logs using the AIO CLI, Developers can config Supported log management solutions include: - Adobe I/O Runtime (default) -- [Splunk Cloud](splunk_cloud.md) -- [Splunk Enterprise](splunk_enterprise.md) -- [Azure Log Analytics](azure_log_analytics.md) -- [New Relic](new_relic.md) +- [Splunk Cloud](splunk-cloud.md) +- [Splunk Enterprise](splunk-enterprise.md) +- [Azure Log Analytics](azure-log-analytics.md) +- [New Relic](new-relic.md) Follow these links to see how to set up log forwarding using each solution. @@ -102,10 +102,10 @@ Running `aio app deploy --no-actions` or `aio app deploy --no-log-forwarding-upd Please visit the Guide for your log management solution of interest to see how to set up log forwarding. -- [Splunk Cloud](splunk_cloud.md) -- [Splunk Enterprise](splunk_enterprise.md) -- [Azure Log Analytics](azure_log_analytics.md) -- [New Relic](new_relic.md) +- [Splunk Cloud](splunk-cloud.md) +- [Splunk Enterprise](splunk-enterprise.md) +- [Azure Log Analytics](azure-log-analytics.md) +- [New Relic](new-relic.md) #### Viewing the current log forwarding configuration 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 similarity index 100% rename from src/pages/guides/app_builder_guides/application_logging/new_relic.md rename to src/pages/guides/app_builder_guides/application_logging/new-relic.md 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 similarity index 98% rename from src/pages/guides/app_builder_guides/application_logging/splunk_cloud.md rename to src/pages/guides/app_builder_guides/application_logging/splunk-cloud.md index ada4c6855..5fab0bcfa 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 @@ -105,7 +105,7 @@ aio app config get log-forwarding errors If you are unable to set up log forwarding using these procedures, please visit [Adobe Experience Leage App Builder Community](https://experienceleaguecommunities.adobe.com/t5/app-builder/ct-p/adobe-app-builder) for support. -Proceed to [Forwarding logs to Splunk Enterprise](splunk_enterprise.md). +Proceed to [Forwarding logs to Splunk Enterprise](splunk-enterprise.md). Return to [Managing Application Logs](logging.md). 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 similarity index 98% rename from src/pages/guides/app_builder_guides/application_logging/splunk_enterprise.md rename to src/pages/guides/app_builder_guides/application_logging/splunk-enterprise.md index 4e3e0cd80..ad1b720a9 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 @@ -105,7 +105,7 @@ This guide covers configuration of App Builder applications to forward logs to y If you are unable to set up log forwarding using these procedures, please visit [Adobe Experience Leage App Builder Community](https://experienceleaguecommunities.adobe.com/t5/app-builder/ct-p/adobe-app-builder) for support. - Proceed to [Forwarding logs to Splunk Cloud](splunk_cloud.md). + Proceed to [Forwarding logs to Splunk Cloud](splunk-cloud.md). Return to [Managing Application Logs](logging.md). 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 similarity index 97% rename from src/pages/guides/app_builder_guides/architecture_overview/app_hooks.md rename to src/pages/guides/app_builder_guides/architecture_overview/app-hooks.md index a995713c3..65262f6d5 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 @@ -152,6 +152,6 @@ These diagrams show how custom hooks are run, built, deployed, and undeployed wi ## Next steps -Return to [Architecture Overview](architecture_overview.md). +Return to [Architecture Overview](architecture-overview.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). 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 similarity index 94% rename from src/pages/guides/app_builder_guides/architecture_overview/architecture_overview.md rename to src/pages/guides/app_builder_guides/architecture_overview/architecture-overview.md index 1c8ba80a4..d81401e8c 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 @@ -18,7 +18,7 @@ These applications may be headless or headful, as described below. ### Headless applications -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 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). @@ -33,7 +33,7 @@ Single-Page App Builder applications with full-fledged UIs should follow the [JA The three main components of App Builder apps are: - Adobe Product APIs, exposed to external Developers and consumers through Adobe I/O API Gateway -- [Javascript-based SDK](https://github.com/adobe/aio-sdk) and serverless actions, sequences, and APIs deployed to [I/O Runtime](../../../intro_and_overview/what_is_app_builder.md#what-is-adobe-io-runtime) +- [Javascript-based SDK](https://github.com/adobe/aio-sdk) and serverless actions, sequences, and APIs deployed to [I/O Runtime](../../../intro_and_overview/what-is-app-builder.md#what-is-adobe-io-runtime) - [React-Spectrum](https://react-spectrum.adobe.com/), Adobe's front-end framework that applies Adobe's design system to React-based components ![JAMStack Architecture](../../../images/jamstack-anatomy-application-march2021.png) @@ -50,7 +50,7 @@ The CLI is supplied with these capabilities: - [Certificate management](https://github.com/adobe/aio-cli-plugin-certificate) - [Configuration management](https://github.com/adobe/aio-cli-plugin-certificate) - [Interactions](https://github.com/adobe/aio-cli-plugin-console) with [Adobe Developer Console](https://developer.adobe.com/developer-console/) -- [Interactions](https://github.com/adobe/aio-cli-plugin-runtime) with [I/O Runtime](../../../intro_and_overview/what_is_app_builder.md#what-is-adobe-io-runtime), Adobe's serverless platform +- [Interactions](https://github.com/adobe/aio-cli-plugin-runtime) with [I/O Runtime](../../../intro_and_overview/what-is-app-builder.md#what-is-adobe-io-runtime), Adobe's serverless platform - [Lifecycle management](https://github.com/adobe/aio-cli-plugin-app) for App Builder ### App Builder generators @@ -125,7 +125,7 @@ It lets Developers perform these actions on behalf of their App Builder applicat ### CI/CD support -[CI/CD support](../deployment/cicd_for_app_builder_apps.md) provided with App Builder for App Builder applications includes: +[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 @@ -133,16 +133,16 @@ It lets Developers perform these actions on behalf of their App Builder applicat ### Webpack -App Builder uses webpack for bundling I/O Runtime action code. See [Webpack Configuration](../configuration/webpack_configuration.md) for an overview on how to configure webpack. +App Builder uses webpack for bundling I/O Runtime action code. See [Webpack Configuration](../configuration/webpack-configuration.md) for an overview on how to configure webpack. ### Migration guides -- [Migrating Apps to DX Experience Cloud v1 SPAs](../exc_app/migrate_app_to_exp_cloud_spa.md) shows how to migrate App Builder applications initialized as Standalone Applications to a DX Experience Cloud Single-Page Application v1. This is useful if you can't view your application in Adobe Experience Cloud's App Builder Catalog. +- [Migrating Apps to DX Experience Cloud v1 SPAs](../exc_app/migrate-app-to-exp-cloud-spa.md) shows how to migrate App Builder applications initialized as Standalone Applications to a DX Experience Cloud Single-Page Application v1. This is useful if you can't view your application in Adobe Experience Cloud's App Builder Catalog. ## Next steps -Continue to [Dealing with Application State](../application_state.md). +Continue to [Dealing with Application State](../application-state.md). Return to [App Builder Overview](../../../intro_and_overview/app_builder_overview.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). 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 similarity index 90% rename from src/pages/guides/app_builder_guides/architecture_overview/introduction_to_react_spectrum.md rename to src/pages/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum.md index c70f9551c..c84da695b 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 @@ -25,6 +25,6 @@ To learn more, please review the [React Spectrum Libraries homepage](https://rea ## Next steps -Continue to [Using Client SDKs for Accessing Adobe APIs](using_sdks.md). +Continue to [Using Client SDKs for Accessing Adobe APIs](using-sdks.md). -Return to [Architecture Overview](architecture_overview.md). +Return to [Architecture Overview](architecture-overview.md). 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 similarity index 96% rename from src/pages/guides/app_builder_guides/architecture_overview/using_sdks.md rename to src/pages/guides/app_builder_guides/architecture_overview/using-sdks.md index dc865337b..276824c29 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 @@ -46,7 +46,7 @@ const token = getBearerToken(params) const orgId = params.__ow_headers['x-gw-ims-org-id'] ``` -The remaining parameters, `tenant` and `apiKey`, must be passed as default parameters as detailed in [Application State](../application_state.md). The real values would be set as environment variables in the `.env` file, mapped to the action default parameters in the `manifest.yml` file. Here are sample snippets taken from these files: +The remaining parameters, `tenant` and `apiKey`, must be passed as default parameters as detailed in [Application State](../application-state.md). The real values would be set as environment variables in the `.env` file, mapped to the action default parameters in the `manifest.yml` file. Here are sample snippets taken from these files: ```bash # in .env @@ -77,6 +77,6 @@ While many features of Adobe Analytics API have been [migrated to the new 2.0 AP ## Next steps -Continue to [App Builder Application Tooling Lifecycle Event Hooks](app_hooks.md). +Continue to [App Builder Application Tooling Lifecycle Event Hooks](app-hooks.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/configuration/configuration.md b/src/pages/guides/app_builder_guides/configuration/configuration.md index 7dbad8026..0362a0188 100644 --- a/src/pages/guides/app_builder_guides/configuration/configuration.md +++ b/src/pages/guides/app_builder_guides/configuration/configuration.md @@ -111,7 +111,7 @@ hostname: #### Runtime Manifest -The `runtimeManifest` field holds the back-end configuration deployed into Adobe I/O Runtime; its full spec can be found [here](https://github.com/apache/openwhisk-wskdeploy/tree/master/specification/html). Acceptable values for the `limits` fields below can be found on the [Runtime System Settings](../../runtime_guides/system_settings.md) page. +The `runtimeManifest` field holds the back-end configuration deployed into Adobe I/O Runtime; its full spec can be found [here](https://github.com/apache/openwhisk-wskdeploy/tree/master/specification/html). Acceptable values for the `limits` fields below can be found on the [Runtime System Settings](../../runtime_guides/system-settings.md) page. Here is an example `runtimeManifest`: ```yaml @@ -152,7 +152,7 @@ runtimeManifest: > - `concurrency`: the maximum number of action invocations that can be sent in parallel to the same container (default 200, min: 1,max: 500) > - `logs`: the maximum log size for the action (in MB, default 10, min: 0, max: 10) > -> More info on `limits` can be found on the [Runtime System Settings](../../runtime_guides/system_settings.md) page. +> More info on `limits` can be found on the [Runtime System Settings](../../runtime_guides/system-settings.md) page. ##### Annotations @@ -173,7 +173,7 @@ runtimeManifest: In addition to the [base annotations](https://github.com/adobe-apiplatform/incubator-openwhisk/blob/master/docs/annotations.md) provided by Runtime, there are two special ones: - **disable-download** (default: false) determines whether action code can be downloaded. Once this annotation is set to true, it cannot be set back to false. -- **require-adobe-auth** (Default: false) determines whether the action will require Adobe authentication to invoke. See [here](../../app_builder_guides/security/index.md#authentication-and-authorization-handling) for more. +- **require-adobe-auth** (Default: false) determines whether the action will require Adobe authentication to invoke. See [here](../security/index.md#authentication-and-authorization-handling) for more. ##### API Gateway Configuration @@ -403,8 +403,8 @@ The legacy configuration system does not have an `app.config.yaml` and instead u ## Next steps -If you can't view your application in the App Builder Catalog of Adobe Experience Cloud, this migration protocol may be useful: [Migrating Apps to DX Experience Cloud v1 SPAs](../exc_app/migrate_app_to_exp_cloud_spa.md). +If you can't view your application in the App Builder Catalog of Adobe Experience Cloud, this migration protocol may be useful: [Migrating Apps to DX Experience Cloud v1 SPAs](../exc_app/migrate-app-to-exp-cloud-spa.md). -Proceed to [Webpack Configuration](webpack_configuration.md). +Proceed to [Webpack Configuration](webpack-configuration.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/configuration/webpack_configuration.md b/src/pages/guides/app_builder_guides/configuration/webpack-configuration.md similarity index 99% rename from src/pages/guides/app_builder_guides/configuration/webpack_configuration.md rename to src/pages/guides/app_builder_guides/configuration/webpack-configuration.md index b80362922..502c108ef 100644 --- a/src/pages/guides/app_builder_guides/configuration/webpack_configuration.md +++ b/src/pages/guides/app_builder_guides/configuration/webpack-configuration.md @@ -210,4 +210,4 @@ module.exports = (env) => ({ Return to [Configuration](configuration.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). 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 similarity index 99% rename from src/pages/guides/app_builder_guides/deployment/cicd_for_app_builder_apps.md rename to src/pages/guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md index f2efd8373..be0dded04 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 @@ -86,7 +86,7 @@ The default implementation of the CI/CD workflow for App Builder Applications re ## Next steps -Continue to [Credential Rotation](credential_rotation.md). +Continue to [Credential Rotation](credential-rotation.md). Return to [Deployment Overview](deployment.md). diff --git a/src/pages/guides/app_builder_guides/deployment/credential_rotation.md b/src/pages/guides/app_builder_guides/deployment/credential-rotation.md similarity index 97% rename from src/pages/guides/app_builder_guides/deployment/credential_rotation.md rename to src/pages/guides/app_builder_guides/deployment/credential-rotation.md index 507288cb2..1056faa4c 100644 --- a/src/pages/guides/app_builder_guides/deployment/credential_rotation.md +++ b/src/pages/guides/app_builder_guides/deployment/credential-rotation.md @@ -60,7 +60,7 @@ Again, it is critically important to pass all parameters in a single `update` ca ## Next steps -Continue to [Setting Response Headers](setting_response_headers.md). +Continue to [Setting Response Headers](setting-response-headers.md). Return to [Deployment Overview](deployment.md). diff --git a/src/pages/guides/app_builder_guides/deployment/deployment.md b/src/pages/guides/app_builder_guides/deployment/deployment.md index b3582f952..1fc4c8aa4 100644 --- a/src/pages/guides/app_builder_guides/deployment/deployment.md +++ b/src/pages/guides/app_builder_guides/deployment/deployment.md @@ -98,7 +98,7 @@ This deployment is triggered when running `aio app deploy` at the root of the Cu ![Remote Runtime Actions and UI](../../../images/remote-actions-remote-ui.png) -The UI is deployed to the Content Delivery Network on behalf of the Developer's Runtime credentials. It communicates with [Runtime](../../../intro_and_overview/what_is_app_builder.md#what-is-adobe-io-runtime) actions deployed to the developer's Runtime namespace. +The UI is deployed to the Content Delivery Network on behalf of the Developer's Runtime credentials. It communicates with [Runtime](../../../intro_and_overview/what-is-app-builder.md#what-is-adobe-io-runtime) actions deployed to the developer's Runtime namespace. The [Token-Vending Machine](https://github.com/adobe/aio-tvm) supplied with App Builder is implicitely used by the CLI `aio app deploy` command, and validates the developer's Runtime credentials against Runtime. @@ -108,6 +108,6 @@ The deployed Custom Application will then be available at `https://.a ## Next steps -Continue to [CI/CD for App Builder Applications](cicd_for_app_builder_apps.md). +Continue to [CI/CD for App Builder Applications](cicd-for-app-builder-apps.md). Return to the [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/deployment/setting_response_headers.md b/src/pages/guides/app_builder_guides/deployment/setting-response-headers.md similarity index 100% rename from src/pages/guides/app_builder_guides/deployment/setting_response_headers.md rename to src/pages/guides/app_builder_guides/deployment/setting-response-headers.md diff --git a/src/pages/guides/app_builder_guides/development.md b/src/pages/guides/app_builder_guides/development.md index f4e11ecd1..4a8ec8106 100644 --- a/src/pages/guides/app_builder_guides/development.md +++ b/src/pages/guides/app_builder_guides/development.md @@ -101,7 +101,7 @@ Actions are loaded dynamically, so the code is not evaluated until an http reque You can use the step-through debugging features of VS Code, inspect variables, add watches, etc. -### Secure actions +### Secure actions The `aio app dev` command simulates Adobe authentication (i.e. `require-adobe-auth` annotation). If your actions are secured with `require-adobe-auth: true`, you will have to include both `Authorization` and `x-gw-ims-org-id` headers in your requests. Any value will work. diff --git a/src/pages/guides/app_builder_guides/distribution.md b/src/pages/guides/app_builder_guides/distribution.md index 0049fb506..4e0949a0f 100644 --- a/src/pages/guides/app_builder_guides/distribution.md +++ b/src/pages/guides/app_builder_guides/distribution.md @@ -17,7 +17,7 @@ Developers may distribute App Builder applications privately or publicly. Privately distributed apps are available only to users in the Developer's organization. They are submitted through the [Developer Console](https://developer.adobe.com/developer-console/), reviewed by an Administrator of the organization, and accessed through the [App Builder Catalog](https://experience.adobe.com/#/@adobeio/custom-apps). -See [Publishing Your First App Builder Application](../../get_started/app_builder_get_started/publish_app.md) for a thorough discussion of this topic and a hands-on sample project. +See [Publishing Your First App Builder Application](../../get_started/app_builder_get_started/publish-app.md) for a thorough discussion of this topic and a hands-on sample project. > Note: Only Adobe Experience Cloud Shell extensions may appear in the App Builder Catalog. @@ -291,7 +291,7 @@ When a Developer uploads a package to Adobe Developer Distribution, these valida #### Hooks -Two [hooks](architecture_overview/app_hooks.md) are available to customize the packaging step: +Two [hooks](architecture_overview/app-hooks.md) are available to customize the packaging step: 1. `pre-pack` - runs before packaging 2. `post-pack` - runs after packaging diff --git a/src/pages/guides/app_builder_guides/events/custom_events.md b/src/pages/guides/app_builder_guides/events/custom-events.md similarity index 100% rename from src/pages/guides/app_builder_guides/events/custom_events.md rename to src/pages/guides/app_builder_guides/events/custom-events.md 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 similarity index 88% rename from src/pages/guides/app_builder_guides/exc_app/aec_integration.md rename to src/pages/guides/app_builder_guides/exc_app/aec-integration.md index af80daa57..b6e650c80 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 @@ -153,13 +153,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | |:----------------------------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------- | -| [Object with Href](interfaces/page.objectwithhref.md) | [Callback](interfaces/topbar.callback.md) | [User API](interfaces/user.userapi.md) | -| [Object with Path](interfaces/page.objectwithpath.md) | [Custom Feedback](interfaces/topbar.customfeedbackconfig.md) | [User Info](interfaces/user.userinfo.md) | -| [Page API](interfaces/page.pageapi.md) | [Custom Search](interfaces/topbar.customsearchconfig.md) | | -| [Page API Properties](interfaces/page.pageapiproperties.md) | [Help Center Feedback](interfaces/topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](interfaces/topbar.externalfeedbackconfig.md) | | -| | [Solution](interfaces/topbar.solution.md) | | -| | [Topbar API](interfaces/topbar.topbarapi.md) | | -| | [Topbar API Properties](interfaces/topbar.topbarapiproperties.md) | ` | +| [Object with Href](interfaces/page-objectwithhref.md) | [Callback](interfaces/topbar-callback.md) | [User API](interfaces/user-userapi.md) | +| [Object with Path](interfaces/page-objectwithpath.md) | [Custom Feedback](interfaces/topbar-customfeedbackconfig.md) | [User Info](interfaces/user-userinfo.md) | +| [Page API](interfaces/page-pageapi.md) | [Custom Search](interfaces/topbar-customsearchconfig.md) | | +| [Page API Properties](interfaces/page-pageapiproperties.md) | [Help Center Feedback](interfaces/topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](interfaces/topbar-externalfeedbackconfig.md) | | +| | [Solution](interfaces/topbar-solution.md) | | +| | [Topbar API](interfaces/topbar-topbarapi.md) | | +| | [Topbar API Properties](interfaces/topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../index.md). 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 64a4c8f5c..2bbea8ebb 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 @@ -8,25 +8,25 @@ This section provides an overview and quick navigation for all interfaces availa ## Table of Contents -| Interface | Description | -|-----------|-------------| -| [Modules](modules.md) | Entry point for accessing all major APIs: runtime, page, topbar, and user. | -| [Runtime](runtime.md) | Provides unified-shell APIs and event handling for solution authors. | -| [PageApi](page.pageapi.md) | Page-level APIs for controlling shell/page behavior and properties. | -| [PageApiProperties](page.pageapiproperties.md) | Settable attributes for page-level APIs (e.g., title, favicon, modal). | -| [ObjectWithHref](page.objectwithhref.md) | Represents a solution page by its URL (href). | -| [ObjectWithPath](page.objectwithpath.md) | Represents a solution page by its relative path. | -| [TopbarAPI](topbar.topbarapi.md) | APIs for customizing the Experience Cloud top bar. | -| [TopbarAPIProperties](topbar.topbarapiproperties.md) | Settable attributes for the top bar (e.g., workspaces, solution info). | -| [Solution](topbar.solution.md) | Attributes for the solution area in the top bar (icon, title, shortTitle). | -| [Callback](topbar.callback.md) | Function signature for callback handlers (e.g., hero click, feedback). | -| [CustomFeedbackConfig](topbar.customfeedbackconfig.md) | Configures a custom feedback button in the top bar. | -| [CustomSearchConfig](topbar.customsearchconfig.md) | Configures a custom search button in the top bar. | -| [ExternalFeedbackConfig](topbar.externalfeedbackconfig.md) | Configures an external feedback button in the top bar. | -| [HelpCenterFeedbackConfig](topbar.helpcenterfeedbackconfig.md) | Configures a help center feedback button in the top bar. | -| [UserAPI](user.userapi.md) | APIs for user information, authentication, and events. | -| [UserInfo](user.userinfo.md) | Structure for user identity, org, and locale information. | +| Interface | Description | +|----------------------------------------------------------------|-------------| +| [Modules](modules.md) | Entry point for accessing all major APIs: runtime, page, topbar, and user. | +| [Runtime](runtime.md) | Provides unified-shell APIs and event handling for solution authors. | +| [PageApi](page-pageapi.md) | Page-level APIs for controlling shell/page behavior and properties. | +| [PageApiProperties](page-pageapiproperties.md) | Settable attributes for page-level APIs (e.g., title, favicon, modal). | +| [ObjectWithHref](page-objectwithhref.md) | Represents a solution page by its URL (href). | +| [ObjectWithPath](page-objectwithpath.md) | Represents a solution page by its relative path. | +| [TopbarAPI](topbar-topbarapi.md) | APIs for customizing the Experience Cloud top bar. | +| [TopbarAPIProperties](topbar-topbarapiproperties.md) | Settable attributes for the top bar (e.g., workspaces, solution info). | +| [Solution](topbar-solution.md) | Attributes for the solution area in the top bar (icon, title, shortTitle). | +| [Callback](topbar-callback.md) | Function signature for callback handlers (e.g., hero click, feedback). | +| [CustomFeedbackConfig](topbar-customfeedbackconfig.md) | Configures a custom feedback button in the top bar. | +| [CustomSearchConfig](topbar-customsearchconfig.md) | Configures a custom search button in the top bar. | +| [ExternalFeedbackConfig](topbar-externalfeedbackconfig.md) | Configures an external feedback button in the top bar. | +| [HelpCenterFeedbackConfig](topbar-helpcenterfeedbackconfig.md) | Configures a help center feedback button in the top bar. | +| [UserAPI](user-userapi.md) | APIs for user information, authentication, and events. | +| [UserInfo](user-userinfo.md) | Structure for user identity, org, and locale information. | ---- -Return to the [Guides Index](../../../index.md). \ No newline at end of file +Return to the [Guides Index](../../../index.md). + diff --git a/src/pages/guides/app_builder_guides/exc_app/interfaces/modules.md b/src/pages/guides/app_builder_guides/exc_app/interfaces/modules.md index d2eda8097..a20687bd6 100644 --- a/src/pages/guides/app_builder_guides/exc_app/interfaces/modules.md +++ b/src/pages/guides/app_builder_guides/exc_app/interfaces/modules.md @@ -27,25 +27,21 @@ description: Interface modules | ---------- | ---- | | `options?` | any | -___ ### page -• **page**: *[PageApi](page.pageapi.md)* +• **page**: *[PageApi](page-pageapi.md)* -___ ### runtime • **runtime**: *[Runtime](runtime.md)* -___ ### topbar -• **topbar**: *[TopbarApi](topbar.topbarapi.md)* +• **topbar**: *[TopbarApi](topbar-topbarapi.md)* -___ ### user @@ -53,7 +49,7 @@ ___ #### Type declaration: -▸ (): *[UserApi](user.userapi.md)* +▸ (): *[UserApi](user-userapi.md)* ## Next steps @@ -65,13 +61,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 65% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/page.objectwithhref.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref.md index a4a0124eb..3d8be31e7 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 @@ -39,13 +39,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Path](page.objectwithpath.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [API](page.pageapi.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API Properties](page.pageapiproperties.md) | [Custom Search](topbar.customsearchconfig.md) | | -| | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Path](page-objectwithpath.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [API](page-pageapi.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API Properties](page-pageapiproperties.md) | [Custom Search](topbar-customsearchconfig.md) | | +| | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 65% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/page.objectwithpath.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath.md index b1048a516..ec6f5cb75 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 @@ -39,13 +39,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [API](page.pageapi.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API Properties](page.pageapiproperties.md) | [Custom Search](topbar.customsearchconfig.md) | | -| | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [API](page-pageapi.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API Properties](page-pageapiproperties.md) | [Custom Search](topbar-customsearchconfig.md) | | +| | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 84% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/page.pageapi.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapi.md index 12a05182d..56a7e1709 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 @@ -13,7 +13,7 @@ Defines page-level APIs available to solutions. ## Hierarchy -* [PageApiProperties](page.pageapiproperties.md) +* [PageApiProperties](page-pageapiproperties.md) ↳ **PageApi** @@ -23,7 +23,7 @@ Defines page-level APIs available to solutions. **favicon**: *string* -*Inherited from [PageApiProperties.favicon](page.pageapiproperties.md#favicon)* +*Inherited from [PageApiProperties.favicon](page-pageapiproperties.md#favicon)* Gets or set the favicon for the page. If this isn't set, then the default Experience Cloud favicon will be used. @@ -33,13 +33,11 @@ Gets or set the favicon for the page. If this isn't set, then the default Experi page.favicon = "https://img.icons8.com/color/48/000000/thumb-up.png"; ``` -___ - ### modal • **modal**: *boolean* -*Inherited from [PageApiProperties.modal](page.pageapiproperties.md#modal)* +*Inherited from [PageApiProperties.modal](page-pageapiproperties.md#modal)* Configuration to show or hide a modal with full-screen overlay. Defaults to false. @@ -49,13 +47,11 @@ Configuration to show or hide a modal with full-screen overlay. Defaults to fals page.modal = true; ``` -___ - ### preventDefaultCombos • **preventDefaultCombos**: *object[]* -*Inherited from [PageApiProperties.preventDefaultCombos](page.pageapiproperties.md#preventdefaultcombos)* +*Inherited from [PageApiProperties.preventDefaultCombos](page-pageapiproperties.md#preventdefaultcombos)* An array of key combinations for the shell to prevent default browser behavior, on in cases where an application performs some other action. @@ -70,13 +66,12 @@ page.preventDefaultCombos = [ ]; ``` -___ ### spinner • **spinner**: *boolean* -*Inherited from [PageApiProperties.spinner](page.pageapiproperties.md#spinner)* +*Inherited from [PageApiProperties.spinner](page-pageapiproperties.md#spinner)* Gets or sets a value indicating whether or not to show a spinner on the page. This configuration value is not used for the initial loading spinner (see Route Configuration hideInitialSpinner for that), but can be used to dismiss it if the spinner needs to be dismissed before a solution invokes runtime.done(). @@ -86,13 +81,12 @@ Gets or sets a value indicating whether or not to show a spinner on the page. Th page.spinner = true; ``` -___ ### title • **title**: *string* -*Inherited from [PageApiProperties.title](page.pageapiproperties.md#title)* +*Inherited from [PageApiProperties.title](page-pageapiproperties.md#title)* Gets or sets the title of the page. @@ -102,13 +96,12 @@ Gets or sets the title of the page. page.title = 'Adobe Experience Cloud'; ``` -___ ### viewportTakeover • **viewportTakeover**: *boolean* -*Inherited from [PageApiProperties.viewportTakeover](page.pageapiproperties.md#viewporttakeover)* +*Inherited from [PageApiProperties.viewportTakeover](page-pageapiproperties.md#viewporttakeover)* Configuration to alter the z-index ordering of the Shell and iframe based on whether viewport takeover is needed. @@ -138,7 +131,6 @@ page.done(); **Returns:** *void* -___ ### generateShellUrl @@ -166,7 +158,6 @@ page.generateShellUrl({href: 'https://example.com/abc'}); The shell URL for the specified view of the solution. -___ ### iframeReload @@ -182,7 +173,6 @@ page.iframeReload(); **Returns:** *void* -___ ### openInNewTab @@ -204,7 +194,6 @@ page.openInNewTab('/path'); **Returns:** *void* -___ ### shellRedirect @@ -238,13 +227,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API Properties](page.pageapiproperties.md) | [Custom Search](topbar.customsearchconfig.md) | | -| | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API Properties](page-pageapiproperties.md) | [Custom Search](topbar-customsearchconfig.md) | | +| | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 81% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/page.pageapiproperties.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties.md index 04643f84a..390fd924d 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 @@ -15,7 +15,7 @@ Subset of page-level APIs available to solutions that are settable attributes. * **PageAPIProperties** - ↳ [PageAPI](page.pageapi.md) + ↳ [PageAPI](page-pageapi.md) ## Properties @@ -31,8 +31,6 @@ Gets or set the favicon for the page. If this isn't set, the default Experience page.favicon = "https://img.icons8.com/color/48/000000/thumb-up.png"; ``` -___ - ### modal • **modal**: *boolean* @@ -45,8 +43,6 @@ Configuration to show or hide a modal with full-screen overlay. Defaults to fals page.modal = true; ``` -___ - ### preventDefaultCombos • **preventDefaultCombos**: *object[]* @@ -64,8 +60,6 @@ page.preventDefaultCombos = [ ]; ``` -___ - ### spinner • **spinner**: *boolean* @@ -78,8 +72,6 @@ Gets or sets a value indicating whether or not to show a spinner on the page. Th page.spinner = true; ``` -___ - ### title • **title**: *string* @@ -92,8 +84,6 @@ Gets or sets the title of the page. page.title = 'Adobe Experience Cloud'; ``` -___ - ### viewportTakeover • **viewportTakeover**: *boolean* @@ -122,13 +112,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 88f22e0c0..b74ebbc79 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 @@ -4,10 +4,10 @@ keywords: - Extensibility - API Documentation - Developer Tooling -title: 'Interface: Runtime <**T**>' +title: 'Interface: Runtime' --- -# Interface: Runtime <**T**> +# Interface: Runtime Defines the runtime object providing all unified-shell APIs for solution authors. @@ -25,7 +25,7 @@ Defines the runtime object providing all unified-shell APIs for solution authors ### emit -▸ **emit**<**K**>(`type`: K, `event?`: T[K]): *void* +▸ **emit** \<**K**\>(`type`: K, `event?`: T[K]): *void* *Inherited from void* @@ -44,11 +44,9 @@ Invoke all handlers for the given type. **Returns:** *void* -___ - ### off -▸ **off**<**K**>(`type`: K, `handler`: function): *void* +▸ **off**\<**K**\>(`type`: K, `handler`: function): *void* *Inherited from void* @@ -78,11 +76,9 @@ Handler function to remove. **Returns:** *void* -___ - ### on -▸ **on**<**K**>(`type`: K, `handler`: function): *void* +▸ **on**\<**K**\>(`type`: K, `handler`: function): *void* *Inherited from void* @@ -122,13 +118,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 62% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.callback.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-callback.md index 4ec4327e5..84f7ac2a9 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 @@ -37,12 +37,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Search](topbar.customsearchconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Search](topbar-customsearchconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 61% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.customfeedbackconfig.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig.md index 8c510a471..4d6f43607 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 @@ -19,19 +19,16 @@ title: 'Interface: CustomFeedbackConfig' • **buttonLabel**: *string* -___ ### callback -• **callback**: *[Callback](topbar.callback.md)* +• **callback**: *[Callback](topbar-callback.md)* -___ ### enabled • **enabled**: *boolean* -___ ### type @@ -49,12 +46,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Search](topbar.customsearchconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Search](topbar-customsearchconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 66% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.customsearchconfig.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig.md index 361e6f8c8..229afe721 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 @@ -17,11 +17,10 @@ title: 'Interface: CustomSearchConfig' ### `Optional` callback -• **callback**? : *[Callback](topbar.callback.md)* +• **callback**? : *[Callback](topbar-callback.md)* The callback to execute when the search icon is clicked. -___ ### `Optional` enabled @@ -29,7 +28,6 @@ ___ Used to control whether or not the search icon in the top bar is enabled and clickable. -___ ### `Optional` open @@ -49,12 +47,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 63% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.externalfeedbackconfig.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig.md index 940d72924..f5b737f13 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 @@ -19,19 +19,16 @@ title: 'Interface: ExternalFeedbackConfig' • **buttonLabel**: *string* -___ ### enabled • **enabled**: *boolean* -___ ### type • **type**: *"external"* -___ ### url @@ -49,12 +46,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 63% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig.md index 67ad78bc9..b3b02f7d6 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 @@ -19,20 +19,15 @@ title: 'Interface: HelpCenterFeedbackConfig' • **buttonLabel**: *string* -___ ### enabled • **enabled**: *boolean* -___ - ### `Optional` subject • **subject**? : *undefined | string* -___ - ### type • **type**: *"openFeedback"* @@ -49,12 +44,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ----------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 68% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.solution.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-solution.md index 3700b924c..2fd4b94d6 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 @@ -23,7 +23,6 @@ Defines the attributes of the solution to display on the left side of the top ba The icon to display in the solution area. If this isn't set, then the default Experience Cloud icon will be used. -___ ### shortTitle @@ -31,7 +30,6 @@ ___ The title to display on smaller browser resolutions where the horizonal space is constrained. -___ ### title @@ -51,12 +49,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 72% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapi.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi.md index c5cf38ec1..7120bc894 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 @@ -13,7 +13,7 @@ Defines page-level APIs available to solutions. ## Hierarchy -* [TopbarAPIProperties](topbar.topbarapiproperties.md) +* [TopbarAPIProperties](topbar-topbarapiproperties.md) ↳ **TopbarAPI** @@ -23,7 +23,7 @@ Defines page-level APIs available to solutions. • **customEnvLabel**: *string* -*Inherited from [TopbarAPIProperties.customEnvLabel](topbar.topbarapiproperties.md#customenvlabel)* +*Inherited from [TopbarAPIProperties.customEnvLabel](topbar-topbarapiproperties.md#customenvlabel)* Gets or sets a custom environment label in the shell. @@ -33,13 +33,11 @@ Gets or sets a custom environment label in the shell. topbar.customEnvLabel = 'Beta'; ``` -___ - ### solution -• **solution**: *[Solution](topbar.solution.md)* +• **solution**: *[Solution](topbar-solution.md)* -*Inherited from [TopbarApiProperties.solution](topbar.topbarapiproperties.md#solution).* +*Inherited from [TopbarApiProperties.solution](topbar-topbarapiproperties.md#solution).* Configuration for solution name and hero. @@ -53,13 +51,11 @@ topbar.solution = { }; ``` -___ - ### workspaces • **workspaces**: *WorkspaceMenu[]* -*Inherited from [TopbarApiProperties](topbar.topbarapiproperties.md#workspaces).* +*Inherited from [TopbarApiProperties](topbar-topbarapiproperties.md#workspaces).* Configuration for the Shell workspaces. Workspace names should be unique, and localized using the unified-shell locale prior to setting runtime.workspaces. @@ -97,7 +93,7 @@ topbar.workspaces = [ ### onHeroClick -▸ **onHeroClick**(`callback`: [Callback](topbar.callback.md)): *void* +▸ **onHeroClick**(`callback`: [Callback](topbar-callback.md)): *void* Registers a callback to execute when the hero (solution) icon in the upper lefthand corner of the Shell is clicked. @@ -105,15 +101,14 @@ Registers a callback to execute when the hero (solution) icon in the upper lefth | Name | Type | Description | | ---------- | ------------------------------ | ------------------------ | -| `callback` | [Callback](topbar.callback.md) | The callback to execute. | +| `callback` | [Callback](topbar-callback.md) | The callback to execute. | **Returns:** *void* -___ ### setCustomSearch -▸ **setCustomSearch**(`config`: [CustomSearchConfig](topbar.customsearchconfig.md) | null): *void* +▸ **setCustomSearch**(`config`: [CustomSearchConfig](topbar-customsearchconfig.md) | null): *void* Determines whether or not to enable the custom search property, and enacts a callback when the custom search icon is clicked. @@ -121,15 +116,14 @@ Determines whether or not to enable the custom search property, and enacts a cal | Name | Type | | -------- | -------------------------------------------------------------- | -| `config` | [CustomSearchConfig](topbar.customsearchconfig.md) | null | +| `config` | [CustomSearchConfig](topbar-customsearchconfig.md) | null | **Returns:** *void* -___ ### setFeedbackButton -▸ **setFeedbackButton**(`config`: [CustomFeedbackConfig](topbar.customfeedbackconfig.md) | [HelpCenterFeedbackConfig](topbar.helpcenterfeedbackconfig.md) | [ExternalFeedbackConfig](topbar.externalfeedbackconfig.md) | null): *void* +▸ **setFeedbackButton**(`config`: [CustomFeedbackConfig](topbar-customfeedbackconfig.md) | [HelpCenterFeedbackConfig](topbar-helpcenterfeedbackconfig.md) | [ExternalFeedbackConfig](topbar-externalfeedbackconfig.md) | null): *void* Determines whether or not to enable a feedback button. @@ -137,7 +131,7 @@ Determines whether or not to enable a feedback button. | Name | Type | | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `config` | [CustomFeedbackConfig](topbar.customfeedbackconfig.md) | [HelpCenterFeedbackConfig](topbar.helpcenterfeedbackconfig.md) | [ExternalFeedbackConfig](topbar.externalfeedbackconfig.md) | null | +| `config` | [CustomFeedbackConfig](topbar-customfeedbackconfig.md) | [HelpCenterFeedbackConfig](topbar-helpcenterfeedbackconfig.md) | [ExternalFeedbackConfig](topbar-externalfeedbackconfig.md) | null | **Returns:** *void* @@ -153,12 +147,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 76% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapiproperties.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties.md index 946a69295..95a476733 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 @@ -13,7 +13,7 @@ title: 'Interface: TopbarAPIProperties' * **TopbarAPIProperties** - ↳ [TopbarAPI](topbar.topbarapi.md) + ↳ [TopbarAPI](topbar-topbarapi.md) ## Properties @@ -29,11 +29,9 @@ Gets or sets a custom environment label in the shell. topbar.customEnvLabel = 'Beta'; ``` -___ - ### solution -• **solution**: *[Solution](topbar.solution.md)* +• **solution**: *[Solution](topbar-solution.md)* Configuration for solution name and hero. @@ -47,7 +45,6 @@ topbar.solution = { }; ``` -___ ### workspaces @@ -97,12 +94,12 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | Return to the [Guides Index](../../../index.md). 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 similarity index 77% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/user.userapi.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/user-userapi.md index 1d5162167..5bd03768d 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 @@ -27,7 +27,7 @@ Optional. When specified, this URL will be invoked when the user logs out. This ### emit -▸ **emit**<**K**>(`type`: K, `event?`: UserInfoEvent[K]): *void* +▸ **emit** \<**K**\>(`type`: K, `event?`: UserInfoEvent[K]): *void* *Inherited from void* @@ -50,7 +50,7 @@ ___ ### off -▸ **off**<**K**>(`type`: K, `handler`: function): *void* +▸ **off**\<**K**\>(`type`: K, `handler`: function): *void* *Inherited from void* @@ -84,7 +84,7 @@ ___ ### on -▸ **on**<**K**>(`type`: K, `handler`: function): *void* +▸ **on**\<**K**\>(`type`: K, `handler`: function): *void* *Inherited from void* @@ -130,7 +130,7 @@ ___ ### get -▸ **get**<**T**>(`type`: T): *Promise‹UserInfo[T]›* +▸ **get**\<**T**\>(`type`: T): *Promise‹UserInfo[T]›* Gets the specified type of information about an user. @@ -158,13 +158,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [Info](user.userinfo.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [Info](user-userinfo.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 66% rename from src/pages/guides/app_builder_guides/exc_app/interfaces/user.userinfo.md rename to src/pages/guides/app_builder_guides/exc_app/interfaces/user-userinfo.md index 79cae1c3b..4669f27da 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 @@ -19,49 +19,41 @@ title: 'Interface: UserInfo' • **imsOrg**: *string* -___ ### imsOrgName • **imsOrgName**: *string* -___ ### imsOrgs • **imsOrgs**: *object[]* -___ ### imsProfile • **imsProfile**: *Record‹string, any›* -___ ### imsToken • **imsToken**: *string* -___ ### locale • **locale**: *string* -___ ### preferredLanguages • **preferredLanguages**: *string[]* -___ ### subOrg • **subOrg**: *string | null* -___ ### tenant @@ -79,13 +71,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------- | ---------------------------------------------------------- | ------------------------ | -| [Object with Href](page.objectwithhref.md) | [Callback](topbar.callback.md) | [API](user.userapi.md) | -| [Object with Path](page.objectwithpath.md) | [Custom Feedback](topbar.customfeedbackconfig.md) | [Info](user.userinfo.md) | -| [API](page.pageapi.md) | [Custom Search](topbar.customsearchconfig.md) | | -| [API Properties](page.pageapiproperties.md) | [Help Center Feedback](topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](topbar.externalfeedbackconfig.md) | | -| | [Solution](topbar.solution.md) | | -| | [API](topbar.topbarapi.md) | | -| | [API Properties](topbar.topbarapiproperties.md) | ` | +| [Object with Href](page-objectwithhref.md) | [Callback](topbar-callback.md) | [API](user-userapi.md) | +| [Object with Path](page-objectwithpath.md) | [Custom Feedback](topbar-customfeedbackconfig.md) | [Info](user-userinfo.md) | +| [API](page-pageapi.md) | [Custom Search](topbar-customsearchconfig.md) | | +| [API Properties](page-pageapiproperties.md) | [Help Center Feedback](topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](topbar-externalfeedbackconfig.md) | | +| | [Solution](topbar-solution.md) | | +| | [API](topbar-topbarapi.md) | | +| | [API Properties](topbar-topbarapiproperties.md) | ` | Return to the [Guides Index](../../../index.md). 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 similarity index 93% rename from src/pages/guides/app_builder_guides/exc_app/migrate_app_to_exp_cloud_spa.md rename to src/pages/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa.md index 5dfd9bfa6..2a7d6ef20 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 @@ -26,7 +26,7 @@ Standalone applications will **not** have the `App Builder ExcShell` sub-heading ## Understanding the difference -The [Extension Migration Guide](../extensions/extension_migration_guide.md#old-file-structure) details the differences between standalone applications and DX Experience Cloud v1 SPAs, provides an overview of the directory structure for DX Experience Cloud v1 SPAs )under [New file structure](../extensions/extension_migration_guide.md#new-file-structure)), and shows how to configure extension points. +The [Extension Migration Guide](../extensions/extension-migration-guide.md#old-file-structure) details the differences between standalone applications and DX Experience Cloud v1 SPAs, provides an overview of the directory structure for DX Experience Cloud v1 SPAs )under [New file structure](../extensions/extension-migration-guide.md#new-file-structure)), and shows how to configure extension points. ## Migration steps @@ -114,6 +114,6 @@ The [Extension Migration Guide](../extensions/extension_migration_guide.md#old-f ## Next steps -Explore migration details in the [Extension Migration Guide](../extensions/extension_migration_guide.md). +Explore migration details in the [Extension Migration Guide](../extensions/extension-migration-guide.md). Return to the [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/exc_app/modules/index.md b/src/pages/guides/app_builder_guides/exc_app/modules/index.md index 8659ed68a..7333d0e7d 100644 --- a/src/pages/guides/app_builder_guides/exc_app/modules/index.md +++ b/src/pages/guides/app_builder_guides/exc_app/modules/index.md @@ -53,7 +53,6 @@ The callback used to bootstrap a solution. The runtime object is passed in as a **Returns:** *void* -___ ### runtime @@ -91,13 +90,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------------ | ---------------------------------------------------------- | ----------------------------- | -| [Object with Href](../interfaces/page.objectwithhref.md) | [Callback](../interfaces/topbar.callback.md) | [User API](../interfaces/user.userapi.md) | -| [Object with Path](../interfaces/page.objectwithpath.md) | [Custom Feedback](../interfaces/topbar.customfeedbackconfig.md) | [User Info](../interfaces/user.userinfo.md) | -| [Page API](../interfaces/page.pageapi.md) | [Custom Search](../interfaces/topbar.customsearchconfig.md) | | -| [Page API Properties](../interfaces/page.pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](../interfaces/topbar.externalfeedbackconfig.md) | | -| | [Solution](../interfaces/topbar.solution.md) | | -| | [Topbar API](../interfaces/topbar.topbarapi.md) | | -| | [Topbar API Properties](../interfaces/topbar.topbarapiproperties.md) | | +| [Object with Href](../interfaces/page-objectwithhref.md) | [Callback](../interfaces/topbar-callback.md) | [User API](../interfaces/user-userapi.md) | +| [Object with Path](../interfaces/page-objectwithpath.md) | [Custom Feedback](../interfaces/topbar-customfeedbackconfig.md) | [User Info](../interfaces/user-userinfo.md) | +| [Page API](../interfaces/page-pageapi.md) | [Custom Search](../interfaces/topbar-customsearchconfig.md) | | +| [Page API Properties](../interfaces/page-pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](../interfaces/topbar-externalfeedbackconfig.md) | | +| | [Solution](../interfaces/topbar-solution.md) | | +| | [Topbar API](../interfaces/topbar-topbarapi.md) | | +| | [Topbar API Properties](../interfaces/topbar-topbarapiproperties.md) | | Return to the [Guides Index](../../../index.md). 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 a4b0a1507..2a92e95ea 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 @@ -13,16 +13,16 @@ Page APIs let solutions interact with and personalize the main page, for example ### Interfaces -- [ObjectWithHref](../interfaces/page.objectwithhref.md) -- [ObjectWithPath](../interfaces/page.objectwithpath.md) -- [PageApi](../interfaces/page.pageapi.md) -- [PageApiProperties](../interfaces/page.pageapiproperties.md) +- [ObjectWithHref](../interfaces/page-objectwithhref.md) +- [ObjectWithPath](../interfaces/page-objectwithpath.md) +- [PageApi](../interfaces/page-pageapi.md) +- [PageApiProperties](../interfaces/page-pageapiproperties.md) ## Type aliases ### LocationLike -Ƭ **LocationLike**: *[ObjectWithHref](../interfaces/page.objectwithhref.md) | [ObjectWithPath](../interfaces/page.objectwithpath.md)* +Ƭ **LocationLike**: *[ObjectWithHref](../interfaces/page-objectwithhref.md) | [ObjectWithPath](../interfaces/page-objectwithpath.md)* Defines the location-like object for which to get the shell URL. You may specify either a path or an absolute URL. @@ -38,7 +38,7 @@ import page from '@adobe/exc-app/page'; ***Default export:*** -[PageApi](../interfaces/page.pageapi.md) +[PageApi](../interfaces/page-pageapi.md) ***Usage:*** @@ -74,13 +74,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------------ | ---------------------------------------------------------- | ----------------------------- | -| [Object with Href](../interfaces/page.objectwithhref.md) | [Callback](../interfaces/topbar.callback.md) | [User API](../interfaces/user.userapi.md) | -| [Object with Path](../interfaces/page.objectwithpath.md) | [Custom Feedback](../interfaces/topbar.customfeedbackconfig.md) | [User Info](../interfaces/user.userinfo.md) | -| [Page API](../interfaces/page.pageapi.md) | [Custom Search](../interfaces/topbar.customsearchconfig.md) | | -| [Page API Properties](../interfaces/page.pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](../interfaces/topbar.externalfeedbackconfig.md) | | -| | [Solution](../interfaces/topbar.solution.md) | | -| | [Topbar API](../interfaces/topbar.topbarapi.md) | | -| | [Topbar API Properties](../interfaces/topbar.topbarapiproperties.md) | | +| [Object with Href](../interfaces/page-objectwithhref.md) | [Callback](../interfaces/topbar-callback.md) | [User API](../interfaces/user-userapi.md) | +| [Object with Path](../interfaces/page-objectwithpath.md) | [Custom Feedback](../interfaces/topbar-customfeedbackconfig.md) | [User Info](../interfaces/user-userinfo.md) | +| [Page API](../interfaces/page-pageapi.md) | [Custom Search](../interfaces/topbar-customsearchconfig.md) | | +| [Page API Properties](../interfaces/page-pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](../interfaces/topbar-externalfeedbackconfig.md) | | +| | [Solution](../interfaces/topbar-solution.md) | | +| | [Topbar API](../interfaces/topbar-topbarapi.md) | | +| | [Topbar API Properties](../interfaces/topbar-topbarapiproperties.md) | | Return to the [Guides Index](../../../index.md). 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 466a25585..c40aae1e4 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 @@ -13,14 +13,14 @@ Topbar APIs let solutions interact with and personalize the top bar, for example ### Interfaces -- [Callback](../interfaces/topbar.callback.md) -- [CustomFeedbackConfig](../interfaces/topbar.customfeedbackconfig.md) -- [CustomSearchConfig](../interfaces/topbar.customsearchconfig.md) -- [ExternalFeedbackConfig](../interfaces/topbar.externalfeedbackconfig.md) -- [HelpCenterFeedbackConfig](../interfaces/topbar.helpcenterfeedbackconfig.md) -- [Solution](../interfaces/topbar.solution.md) -- [TopbarApi](../interfaces/topbar.topbarapi.md) -- [TopbarApiProperties](../interfaces/topbar.topbarapiproperties.md) +- [Callback](../interfaces/topbar-callback.md) +- [CustomFeedbackConfig](../interfaces/topbar-customfeedbackconfig.md) +- [CustomSearchConfig](../interfaces/topbar-customsearchconfig.md) +- [ExternalFeedbackConfig](../interfaces/topbar-externalfeedbackconfig.md) +- [HelpCenterFeedbackConfig](../interfaces/topbar-helpcenterfeedbackconfig.md) +- [Solution](../interfaces/topbar-solution.md) +- [TopbarApi](../interfaces/topbar-topbarapi.md) +- [TopbarApiProperties](../interfaces/topbar-topbarapiproperties.md) ***Import:*** @@ -30,7 +30,7 @@ import topbar from '@adobe/exc-app/topbar'; ***Default export:*** -[TopbarAPI](../interfaces/topbar.topbarapi.md) +[TopbarAPI](../interfaces/topbar-topbarapi.md) ***Usage:*** @@ -52,13 +52,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------------ | ---------------------------------------------------------- | ----------------------------- | -| [Object with Href](../interfaces/page.objectwithhref.md) | [Callback](../interfaces/topbar.callback.md) | [User API](../interfaces/user.userapi.md) | -| [Object with Path](../interfaces/page.objectwithpath.md) | [Custom Feedback](../interfaces/topbar.customfeedbackconfig.md) | [User Info](../interfaces/user.userinfo.md) | -| [Page API](../interfaces/page.pageapi.md) | [Custom Search](../interfaces/topbar.customsearchconfig.md) | | -| [Page API Properties](../interfaces/page.pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](../interfaces/topbar.externalfeedbackconfig.md) | | -| | [Solution](../interfaces/topbar.solution.md) | | -| | [Topbar API](../interfaces/topbar.topbarapi.md) | | -| | [Topbar API Properties](../interfaces/topbar.topbarapiproperties.md) | | +| [Object with Href](../interfaces/page-objectwithhref.md) | [Callback](../interfaces/topbar-callback.md) | [User API](../interfaces/user-userapi.md) | +| [Object with Path](../interfaces/page-objectwithpath.md) | [Custom Feedback](../interfaces/topbar-customfeedbackconfig.md) | [User Info](../interfaces/user-userinfo.md) | +| [Page API](../interfaces/page-pageapi.md) | [Custom Search](../interfaces/topbar-customsearchconfig.md) | | +| [Page API Properties](../interfaces/page-pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](../interfaces/topbar-externalfeedbackconfig.md) | | +| | [Solution](../interfaces/topbar-solution.md) | | +| | [Topbar API](../interfaces/topbar-topbarapi.md) | | +| | [Topbar API Properties](../interfaces/topbar-topbarapiproperties.md) | | Return to the [Guides Index](../../../index.md). 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 f201791da..650da08e0 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 @@ -19,7 +19,7 @@ import user from '@adobe/exc-app/user'; ***Default export:*** -[UserApi](../interfaces/user.userapi.md) +[UserApi](../interfaces/user-userapi.md) ***Usage:*** @@ -75,13 +75,13 @@ Explore the attributes and behavior of Adobe Experience Cloud Interfaces: | Page | Topbar | User | | ------------------------------------------------ | ---------------------------------------------------------- | ----------------------------- | -| [Object with Href](../interfaces/page.objectwithhref.md) | [Callback](../interfaces/topbar.callback.md) | [User API](../interfaces/user.userapi.md) | -| [Object with Path](../interfaces/page.objectwithpath.md) | [Custom Feedback](../interfaces/topbar.customfeedbackconfig.md) | [User Info](../interfaces/user.userinfo.md) | -| [Page API](../interfaces/page.pageapi.md) | [Custom Search](../interfaces/topbar.customsearchconfig.md) | | -| [Page API Properties](../interfaces/page.pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar.helpcenterfeedbackconfig.md) | | -| | [External Feedback](../interfaces/topbar.externalfeedbackconfig.md) | | -| | [Solution](../interfaces/topbar.solution.md) | | -| | [Topbar API](../interfaces/topbar.topbarapi.md) | | -| | [Topbar API Properties](../interfaces/topbar.topbarapiproperties.md) | | +| [Object with Href](../interfaces/page-objectwithhref.md) | [Callback](../interfaces/topbar-callback.md) | [User API](../interfaces/user-userapi.md) | +| [Object with Path](../interfaces/page-objectwithpath.md) | [Custom Feedback](../interfaces/topbar-customfeedbackconfig.md) | [User Info](../interfaces/user-userinfo.md) | +| [Page API](../interfaces/page-pageapi.md) | [Custom Search](../interfaces/topbar-customsearchconfig.md) | | +| [Page API Properties](../interfaces/page-pageapiproperties.md) | [Help Center Feedback](../interfaces/topbar-helpcenterfeedbackconfig.md) | | +| | [External Feedback](../interfaces/topbar-externalfeedbackconfig.md) | | +| | [Solution](../interfaces/topbar-solution.md) | | +| | [Topbar API](../interfaces/topbar-topbarapi.md) | | +| | [Topbar API Properties](../interfaces/topbar-topbarapiproperties.md) | | Return to the [Guides Index](../../../index.md). 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 similarity index 99% rename from src/pages/guides/app_builder_guides/extensions/extension_migration_guide.md rename to src/pages/guides/app_builder_guides/extensions/extension-migration-guide.md index 6e00577ed..63402b6da 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 @@ -77,7 +77,7 @@ Please follow these steps to migrate your application: ### 1. Update tooling -Make sure your local tooling and environment setup is current, as described [here](../../../get_started/app_builder_get_started/set_up.md#local-environment-setup). +Make sure your local tooling and environment setup is current, as described [here](../../../get_started/app_builder_get_started/set-up.md#local-environment-setup). ### 2. Update configuration diff --git a/src/pages/guides/app_builder_guides/extensions/extensions.md b/src/pages/guides/app_builder_guides/extensions/extensions.md index 8c5063446..3824ca3e4 100644 --- a/src/pages/guides/app_builder_guides/extensions/extensions.md +++ b/src/pages/guides/app_builder_guides/extensions/extensions.md @@ -56,11 +56,11 @@ These instructions will show you how to set up extension point information in ne ### New projects -The instructions in [Creating your First App Builder Application](../../../get_started/app_builder_get_started/first_app.md) show how to set up extension point information by default in App Builder projects. +The instructions in [Creating your First App Builder Application](../../../get_started/app_builder_get_started/first-app.md) show how to set up extension point information by default in App Builder projects. ### Migrating projects and editing endpoints -If you would like to migrate an App Builder application created before July 28, 2021 or edit an application's endpoints, please follow the [Extension Migration Guide](extension_migration_guide.md). +If you would like to migrate an App Builder application created before July 28, 2021 or edit an application's endpoints, please follow the [Extension Migration Guide](extension-migration-guide.md). ## UI extensibility @@ -72,6 +72,6 @@ A complete discussion and hands-on sample project may be found in the [Adobe Dev Explore [Adobe Developer documentation for UI Extensibility](https://developer.adobe.com/uix/docs/). -Continue to the [Extension Migration Guide](extension_migration_guide.md). +Continue to the [Extension Migration Guide](extension-migration-guide.md). Return to the [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/index.md b/src/pages/guides/app_builder_guides/index.md index 33d4eb5a2..d2667ae2a 100644 --- a/src/pages/guides/app_builder_guides/index.md +++ b/src/pages/guides/app_builder_guides/index.md @@ -13,8 +13,8 @@ Welcome to the App Builder Guides section. Here you'll find comprehensive docume ## Architecture and Development -* [Architecture Overview](architecture_overview/architecture_overview.md) -* [Application State](application_state.md) +* [Architecture Overview](architecture_overview/architecture-overview.md) +* [Application State](application-state.md) * [Development](development.md) * [Distribution](distribution.md) * [Optimization](optimization.md) @@ -25,14 +25,14 @@ Welcome to the App Builder Guides section. Here you'll find comprehensive docume * [Configuration](configuration/configuration.md) * [Deployment](deployment/deployment.md) * [Application Logging](application_logging/logging.md) -* [Events](events/custom_events.md) +* [Events](events/custom-events.md) * [Extensions](extensions/extensions.md) * [Security](security/index.md) ## Integration -* [Adobe Experience Cloud Integration](exc_app/aec_integration.md) +* [Adobe Experience Cloud Integration](exc_app/aec-integration.md) ## Next step -Return to [Guides Index](../index.md). \ No newline at end of file +Return to [Guides Index](../index.md). diff --git a/src/pages/guides/app_builder_guides/optimization.md b/src/pages/guides/app_builder_guides/optimization.md index dd3d567fa..4b7dfa8ee 100644 --- a/src/pages/guides/app_builder_guides/optimization.md +++ b/src/pages/guides/app_builder_guides/optimization.md @@ -33,7 +33,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/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/index.md b/src/pages/guides/app_builder_guides/security/index.md index 04326bbac..0c426df33 100644 --- a/src/pages/guides/app_builder_guides/security/index.md +++ b/src/pages/guides/app_builder_guides/security/index.md @@ -15,11 +15,11 @@ App Builder saves Developers' time with an [SDK](https://github.com/adobe/aio-sd ## Securing access to App Builder applications -All interactions with [Adobe Product APIs](https://developer.adobe.com/apis) need to be authenticated against Adobe Identity Management Services (IMS). [Understanding Authentication](understanding_authentication.md) outlines Adobe's approach to authentication, with links to in-depth resources and a code library. +All interactions with [Adobe Product APIs](https://developer.adobe.com/apis) need to be authenticated against Adobe Identity Management Services (IMS). [Understanding Authentication](understanding-authentication.md) outlines Adobe's approach to authentication, with links to in-depth resources and a code library. ### Adobe IMS support for App Builder applications -App Builder [SDK](https://github.com/adobe/aio-sdk) and [CLI](https://github.com/adobe/aio-cli) help developers [bootstrap applications](../../../get_started/app_builder_get_started/set_up.md) easily from templates, using `aio app init`. Included are templates for Runtime web actions, which integrate with [Adobe Product APIs](https://developer.adobe.com/apis) that can be extended using App Builder. +App Builder [SDK](https://github.com/adobe/aio-sdk) and [CLI](https://github.com/adobe/aio-cli) help developers [bootstrap applications](../../../get_started/app_builder_get_started/set-up.md) easily from templates, using `aio app init`. Included are templates for Runtime web actions, which integrate with [Adobe Product APIs](https://developer.adobe.com/apis) that can be extended using App Builder. Any generated action is initialized with boilerplate code based on App Builder [SDK libraries](https://github.com/adobe/aio-sdk). Out of the box, these steps are implemented: - **Validation** that an Adobe IMS bearer token has been passed as Authorization header of the request that invoked the action @@ -50,10 +50,10 @@ These SPAs are business-to-employee custom applications that deploy into the [Ex ![SPA Access Sequence Diagram](../../../images/security-spa-access-sequence-diagram.png) The SPA front end interacts with Runtime web actions on specific events triggered at UI level. -In this scenario, the Experience Cloud Shell exposes a [client-side API](../exc_app/aec_integration.md), which can be used by the SPA to obtain the OAuth token generated for the logged-in user. +In this scenario, the Experience Cloud Shell exposes a [client-side API](../exc_app/aec-integration.md), which can be used by the SPA to obtain the OAuth token generated for the logged-in user. This token will be used by back-end Runtime actions to call [Adobe Product APIs](https://developer.adobe.com/apis), which need to be integrated in the application. -SPAs bootstrapped from the [CLI](https://github.com/adobe/aio-cli) using `aio app init` automatically include a [React-Spectrum](https://react-spectrum.adobe.com/)-based front end that integrates with the Experience Cloud Shell [client-side API](../exc_app/aec_integration.md), and sends the user OAuth token from the client to the invoked Runtime actions. +SPAs bootstrapped from the [CLI](https://github.com/adobe/aio-cli) using `aio app init` automatically include a [React-Spectrum](https://react-spectrum.adobe.com/)-based front end that integrates with the Experience Cloud Shell [client-side API](../exc_app/aec-integration.md), and sends the user OAuth token from the client to the invoked Runtime actions. ### Authentication and authorization handling @@ -151,7 +151,7 @@ Please use a different variable until this issue is resolved. ### I/O Runtime Specific guidelines -[Security guidelines for I/O Runtime](../../runtime_guides/security_general.md) generally apply to the back-end actions of App Builder applications. The guidelines below are specific to App Builder applications. +[Security guidelines for I/O Runtime](../../runtime_guides/security-general.md) generally apply to the back-end actions of App Builder applications. The guidelines below are specific to App Builder applications. ### Transport Security @@ -168,11 +168,11 @@ This combination of `Enterprise Organization`, `Project`, `Workspace`, and `Runt #### Runtime actions -Back-end Runtime actions used by App Builder applications respect the [tenant isolation model](../../../get_started/runtime_getting_started/understanding_runtime.md#security-considerations) implemented by I/O Runtime. +Back-end Runtime actions used by App Builder applications respect the [tenant isolation model](../../../get_started/runtime_getting_started/understanding-runtime.md#security-considerations) implemented by I/O Runtime. #### Cloud storage and content delivery network (CDN) for SPA static files -When an App Builder single-page application (SPA) is deployed into the [Experience Cloud Shell](https://experience.adobe.com), the static assets of the SPA are deployed from the CLI or a [CI/CD pipeline](../deployment/cicd_for_app_builder_apps.md) to App Builder's cloud storage and CDN. +When an App Builder single-page application (SPA) is deployed into the [Experience Cloud Shell](https://experience.adobe.com), the static assets of the SPA are deployed from the CLI or a [CI/CD pipeline](../deployment/cicd-for-app-builder-apps.md) to App Builder's cloud storage and CDN. Both of these have a strict isolation according to the Runtime namespace. Cloud Storage containers hosting App Builder SPAs can be accessed only by configuring the [CLI](https://github.com/adobe/aio-cli) with appropriate workspace credentials. @@ -195,6 +195,6 @@ Developers can build serverless processes and user-context-aware applications wi ## Next steps -Continue to [Understanding Authentication](understanding_authentication.md). +Continue to [Understanding Authentication](understanding-authentication.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/security/understanding_authentication.md b/src/pages/guides/app_builder_guides/security/understanding-authentication.md similarity index 96% rename from src/pages/guides/app_builder_guides/security/understanding_authentication.md rename to src/pages/guides/app_builder_guides/security/understanding-authentication.md index 5e6544085..cada18f1e 100644 --- a/src/pages/guides/app_builder_guides/security/understanding_authentication.md +++ b/src/pages/guides/app_builder_guides/security/understanding-authentication.md @@ -23,4 +23,4 @@ The Adobe I/O IMS SDK Library can simplify your interaction with Adobe authentic Return to [Security Overview](index.md). -Return to [Guides Index](../../../guides/index.md). +Return to [Guides Index](../../index.md). diff --git a/src/pages/guides/app_builder_guides/telemetry.md b/src/pages/guides/app_builder_guides/telemetry.md index 1088df8a5..70b6ac8f2 100644 --- a/src/pages/guides/app_builder_guides/telemetry.md +++ b/src/pages/guides/app_builder_guides/telemetry.md @@ -71,6 +71,6 @@ Telemetry itself is implemented as a CLI plugin. It is developed in the open an ## Next steps -Review Adobe policies and guidelines for [contributions](../contribution_guide.md). +Review Adobe policies and guidelines for [contributions](../contribution-guide.md). Return to the [Guides Index](../index.md). diff --git a/src/pages/guides/contribution_guide.md b/src/pages/guides/contribution-guide.md similarity index 100% rename from src/pages/guides/contribution_guide.md rename to src/pages/guides/contribution-guide.md diff --git a/src/pages/guides/index.md b/src/pages/guides/index.md index 82a0bf5cf..715da866b 100644 --- a/src/pages/guides/index.md +++ b/src/pages/guides/index.md @@ -11,38 +11,38 @@ title: Reference Documentation ## App Builder guides -For a close examination of App Builder's components, operation, and resources, follow the [Architecture overview](app_builder_guides/architecture_overview/architecture_overview.md) thread. For details of specific technologies and processes, consult the materials under your topic of interest below. +For a close examination of App Builder's components, operation, and resources, follow the [Architecture overview](app_builder_guides/architecture_overview/architecture-overview.md) thread. For details of specific technologies and processes, consult the materials under your topic of interest below. -* [Architecture overview](app_builder_guides/architecture_overview/architecture_overview.md) +* [Architecture overview](app_builder_guides/architecture_overview/architecture-overview.md) * [Application logging](app_builder_guides/application_logging/logging.md) * [Configuration](app_builder_guides/configuration/configuration.md) * [Deployment](app_builder_guides/deployment/deployment.md) * [Development](app_builder_guides/development.md) * [Distribution](app_builder_guides/distribution.md) -* [Events](app_builder_guides/events/custom_events.md) +* [Events](app_builder_guides/events/custom-events.md) * [Extensions](app_builder_guides/extensions/extensions.md) -* [Integration with Adobe Experience Cloud](app_builder_guides/exc_app/aec_integration.md) +* [Integration with Adobe Experience Cloud](app_builder_guides/exc_app/aec-integration.md) * [Optimization](app_builder_guides/optimization.md) * [Security](app_builder_guides/security/index.md) * [Telemetry](app_builder_guides/telemetry.md) -* [App Builder reference documentation index](../guides/references.md) +* [App Builder reference documentation index](references.md) ## Adobe I/O Runtime guides -These materials may be read as a tutorial or as a set of reference materials. Start the tutorial with [Using Adobe I/O Runtime](runtime_guides/using_runtime.md), or select the reference topic of interest. +These materials may be read as a tutorial or as a set of reference materials. Start the tutorial with [Using Adobe I/O Runtime](runtime_guides/using-runtime.md), or select the reference topic of interest. -* [Creating Actions](runtime_guides/creating_actions.md) -* [Asynchronous Calls](runtime_guides/asynchronous_calls.md) -* [Throughput Tuning](runtime_guides/throughput_tuning.md) -* [Security Guide](runtime_guides/security_general.md) -* [Securing Web Actions](runtime_guides/securing_web_actions.md) -* [Creating REST APIs](runtime_guides/creating_rest_apis.md) -* [Using Packages](runtime_guides/using_packages.md) -* [Logging and Monitoring](runtime_guides/logging_monitoring.md) +* [Creating Actions](runtime_guides/creating-actions.md) +* [Asynchronous Calls](runtime_guides/asynchronous-calls.md) +* [Throughput Tuning](runtime_guides/throughput-tuning.md) +* [Security Guide](runtime_guides/security-general.md) +* [Securing Web Actions](runtime_guides/securing-web-actions.md) +* [Creating REST APIs](runtime_guides/creating-rest-apis.md) +* [Using Packages](runtime_guides/using-packages.md) +* [Logging and Monitoring](runtime_guides/logging-monitoring.md) * [Debugging](runtime_guides/debugging.md) * [Troubleshooting](runtime_guides/troubleshooting.md) -* [System Settings](runtime_guides/system_settings.md) -* [CI/CD Pipeline](runtime_guides/ci-cd_pipeline.md) +* [System Settings](runtime_guides/system-settings.md) +* [CI/CD Pipeline](runtime_guides/ci-cd-pipeline.md) * [I/O Runtime reference documentation index](runtime_guides/reference_docs/index.md) ## Next step diff --git a/src/pages/guides/references.md b/src/pages/guides/references.md index c4197a42c..053f1ddc9 100644 --- a/src/pages/guides/references.md +++ b/src/pages/guides/references.md @@ -38,4 +38,4 @@ title: Reference Documentation ## Next step - Return to [Guides Index](../guides/). + Return to [Guides Index](index.md). diff --git a/src/pages/guides/runtime_guides/asynchronous_calls.md b/src/pages/guides/runtime_guides/asynchronous-calls.md similarity index 100% rename from src/pages/guides/runtime_guides/asynchronous_calls.md rename to src/pages/guides/runtime_guides/asynchronous-calls.md diff --git a/src/pages/guides/runtime_guides/ci-cd_pipeline.md b/src/pages/guides/runtime_guides/ci-cd-pipeline.md similarity index 90% rename from src/pages/guides/runtime_guides/ci-cd_pipeline.md rename to src/pages/guides/runtime_guides/ci-cd-pipeline.md index 885f9786b..7337c4bd8 100644 --- a/src/pages/guides/runtime_guides/ci-cd_pipeline.md +++ b/src/pages/guides/runtime_guides/ci-cd-pipeline.md @@ -8,11 +8,11 @@ Namespaces can be used to separate different environments such as Development, Q ## CLI tools -CLI tools `aio` and `wskdeploy` can help you automate deployments, manage action dependencies, and create manifest files that describe your packages and actions. Details about using `wskdeploy` can be found [here](creating_actions.md). +CLI tools `aio` and `wskdeploy` can help you automate deployments, manage action dependencies, and create manifest files that describe your packages and actions. Details about using `wskdeploy` can be found [here](creating-actions.md). ## Swagger specifications -If you plan to expose your actions as REST APIs, Swagger definition files can help you to manage the API life cycle through creation, editing, and deletion, as described [here](creating_rest_apis.md#using-swagger-files). +If you plan to expose your actions as REST APIs, Swagger definition files can help you to manage the API life cycle through creation, editing, and deletion, as described [here](creating-rest-apis.md#using-swagger-files). ## Versioning actions @@ -24,4 +24,4 @@ The AEM Commerce team documented this approach in a [blog post](https://medium.c ## Next step -Return to the [Guides Index](../../guides/index.md). +Return to the [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/creating_actions.md b/src/pages/guides/runtime_guides/creating-actions.md similarity index 98% rename from src/pages/guides/runtime_guides/creating_actions.md rename to src/pages/guides/runtime_guides/creating-actions.md index 1f970acbf..7c16f9a89 100644 --- a/src/pages/guides/runtime_guides/creating_actions.md +++ b/src/pages/guides/runtime_guides/creating-actions.md @@ -5,7 +5,7 @@ To execute as an action on Adobe I/O Runtime, the function you code must both : - Either be named *main* or have an entry point exported as *main* - the function that will be executed when invoked - Accept valid JSON objects as input, and output valid JSON objects -To create and invoke actions, you must also configure the `aio` CLI on your machine: refer to the [aio CLI](tools/cli_install.md) page for installation and configuration instructions. +To create and invoke actions, you must also configure the `aio` CLI on your machine: refer to the [aio CLI](tools/cli-install.md) page for installation and configuration instructions. Let's assume you have this function available on your machine: @@ -197,7 +197,7 @@ or like this: curl https://[your namespace].adobeioruntime.net/api/v1/web/default/test -X GET ``` -> Note the difference between this URL and the one `aio` returns. This is because when invoking web actions, Runtime adds protections that segregate namespaces from each other . The `aio`-generated link will still work, but it will return a 308 redirect to your namespace's subdomain on Runtime. For a further discussion of this please see [Securing Web Actions](securing_web_actions.md). +> Note the difference between this URL and the one `aio` returns. This is because when invoking web actions, Runtime adds protections that segregate namespaces from each other . The `aio`-generated link will still work, but it will return a 308 redirect to your namespace's subdomain on Runtime. For a further discussion of this please see [Securing Web Actions](securing-web-actions.md). ### Successful response @@ -297,7 +297,7 @@ When executing actions as web actions, the `params` object is decorated with add | `__ow_body` | the request body entity, as a base64-encoded string when its content is binary or JSON object/array, or as a plain string otherwise | | `__ow_query` | the query parameters from the request as an unparsed string | -By default, web actions are accessible to anyone who knows their URLs. To secure access, review [Securing Web Actions](securing_web_actions.md). +By default, web actions are accessible to anyone who knows their URLs. To secure access, review [Securing Web Actions](securing-web-actions.md). ## Deploying ZIP actions @@ -377,4 +377,4 @@ wskdeploy undeploy ## Next step -Return to [Guides Index](../../guides/index.md). +Return to [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/creating_rest_apis.md b/src/pages/guides/runtime_guides/creating-rest-apis.md similarity index 98% rename from src/pages/guides/runtime_guides/creating_rest_apis.md rename to src/pages/guides/runtime_guides/creating-rest-apis.md index 07049d3ad..a5245a75a 100644 --- a/src/pages/guides/runtime_guides/creating_rest_apis.md +++ b/src/pages/guides/runtime_guides/creating-rest-apis.md @@ -57,7 +57,7 @@ curl https://.adobeioruntime.net:443/apis/pet-store/pet/2345 -X In this example, the `{di}` value, 2335, will be mapped to a {payload.id}. -> **Note** that this URL differs from what `aio` returns. This is due to protections in Runtime that segregate namespaces from one another when invoking web actions. The `aio`-generated link will still work, but it will return a `308` redirect to your namespace's subdomain on Runtime. For a further discussion of this issue, please see [Securing Web Actions](securing_web_actions.md). +> **Note** that this URL differs from what `aio` returns. This is due to protections in Runtime that segregate namespaces from one another when invoking web actions. The `aio`-generated link will still work, but it will return a `308` redirect to your namespace's subdomain on Runtime. For a further discussion of this issue, please see [Securing Web Actions](securing-web-actions.md). ## Using Swagger files @@ -274,7 +274,7 @@ This configuration allows the action to accept requests with access tokens that ### Basic authentication -APIs are secured in the same way as web actions. You can read more about this in [Securing Web Actions](securing_web_actions.md). +APIs are secured in the same way as web actions. You can read more about this in [Securing Web Actions](securing-web-actions.md). Once basic authentication is enabled for an action, it's necessary to pass the `X-Require-Whisk-Auth` header and the secret you chose when making an API call. @@ -325,4 +325,4 @@ It can take up to five minutes to see the changes from creation or update of an ## Next step -Return to [Guides Index](../index.md). \ No newline at end of file +Return to [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/index.md b/src/pages/guides/runtime_guides/index.md index c5482e833..ae5eb7d79 100644 --- a/src/pages/guides/runtime_guides/index.md +++ b/src/pages/guides/runtime_guides/index.md @@ -13,32 +13,32 @@ Welcome to the Runtime Guides section. Here you'll find comprehensive documentat ## Getting Started -* [Using Adobe I/O Runtime](using_runtime.md) -* [Creating Actions](creating_actions.md) -* [Creating REST APIs](creating_rest_apis.md) -* [Using Packages](using_packages.md) +* [Using Adobe I/O Runtime](using-runtime.md) +* [Creating Actions](creating-actions.md) +* [Creating REST APIs](creating-rest-apis.md) +* [Using Packages](using-packages.md) ## Development and Operations -* [Asynchronous Calls](asynchronous_calls.md) -* [Throughput Tuning](throughput_tuning.md) -* [Logging and Monitoring](logging_monitoring.md) +* [Asynchronous Calls](asynchronous-calls.md) +* [Throughput Tuning](throughput-tuning.md) +* [Logging and Monitoring](logging-monitoring.md) * [Debugging](debugging.md) * [Troubleshooting](troubleshooting.md) -* [System Settings](system_settings.md) -* [CI/CD Pipeline](ci-cd_pipeline.md) +* [System Settings](system-settings.md) +* [CI/CD Pipeline](ci-cd-pipeline.md) ## Security -* [Security Guide](security_general.md) -* [Securing Web Actions](securing_web_actions.md) +* [Security Guide](security-general.md) +* [Securing Web Actions](securing-web-actions.md) ## Tools and Reference -* [CLI Usage](tools/cli_install.md) +* [CLI Usage](tools/cli-install.md) * [WSKDeploy Install](tools/wskdeploy_install.md) * [Reference Documentation](reference_docs/index.md) ## Next step -Return to [Guides Index](../index.md). \ No newline at end of file +Return to [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/logging_monitoring.md b/src/pages/guides/runtime_guides/logging-monitoring.md similarity index 98% rename from src/pages/guides/runtime_guides/logging_monitoring.md rename to src/pages/guides/runtime_guides/logging-monitoring.md index 2390272d4..cd80f8d88 100644 --- a/src/pages/guides/runtime_guides/logging_monitoring.md +++ b/src/pages/guides/runtime_guides/logging-monitoring.md @@ -80,7 +80,7 @@ function main(params) { } ``` -You need to package the new relic agent as part of your action code and deploy the action as [.zip file](creating_actions.md#deploying-zip-actions). +You need to package the new relic agent as part of your action code and deploy the action as [.zip file](creating-actions.md#deploying-zip-actions). ## Debugging locally diff --git a/src/pages/guides/runtime_guides/reference_docs/api_ref.md b/src/pages/guides/runtime_guides/reference_docs/api-ref.md similarity index 83% rename from src/pages/guides/runtime_guides/reference_docs/api_ref.md rename to src/pages/guides/runtime_guides/reference_docs/api-ref.md index 6ccba842d..d10a60513 100644 --- a/src/pages/guides/runtime_guides/reference_docs/api_ref.md +++ b/src/pages/guides/runtime_guides/reference_docs/api-ref.md @@ -28,10 +28,10 @@ Returns the details of the namespace associated with the specified organization Response content type: `application/json` | Code | Description | -| ---- | ---------------------------------- | -| 200 | Successful operationExample value: | -| { | | - +| --- | ---------------------------------- | +| 200 | Successful operationExample value: | +``` +{ "name": "string", "auth": "string" @@ -43,8 +43,8 @@ description: Namespace Details Namespace name auth string Auth associated with Namespace -}| - +} +``` ### POST /runtime/admin/namespaces/{orgId}/{intId} Creates a new namespace and returns the details of the newly created namespace. If namespace already exists it returns the details of the namespace. @@ -61,9 +61,11 @@ Creates a new namespace and returns the details of the newly created namespace. #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| +``` { "name": "string", "auth": "string" @@ -75,8 +77,8 @@ description: Namespace Details Namespace name auth string Auth associated with Namespace -}| - +} +``` ### DELETE /runtime/admin/namespaces/{orgId}/{intId} Deletes the namespace associated with the specified organization and integration. @@ -93,8 +95,9 @@ Deletes the namespace associated with the specified organization and integration #### _Responses:_ Response content type: `application/json` -| Code | Description | -|---|---| + +| Code | Description | +| ------------------------------------ | ----------------------------------------------- | | _default_ | Successful operation | ### GET /runtime/namespaces/{orgId}/{intId}/actions @@ -113,9 +116,12 @@ Returns the list of actions associated with the specified organization and integ #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| + +``` [ { "name": "string", @@ -200,26 +206,29 @@ exec ExecDTO { } url string Action url -}]| - +}] +``` ### POST /runtime/namespaces/{orgId}/{intId}/actions Creates a new action. #### _Parameters:_ -| Name | Description | -| ---------------------- | ---------------------------- | -| orgId (string: path) | Organization ID | -| intId (string: path) | Integration ID | -| body (body) | Action form. Example value: | -| { | | -| "name": "string", | | -| "code": "string", | | -| "namespace": "string", | | -| "version": "string", | | -| "params": [ | | +| Name | Description | +|--------------------------------|-----------------------------------------------| +| orgId (string: path) | Organization ID | +| intId (string: path) | Integration ID | +| Authorization (string: header) | Authorization token in format: Bearer {token} | +| X-Api-Key (string: header) | Api key | +| body (body) | Action form. Example value: | +``` +{ + "name": "string", + "code": "string", + "namespace": "string", + "version": "string", + "params": [ { "key": "string", "value": {} @@ -298,15 +307,14 @@ exec ExecDTO { } url string Action url -}]| -|Authorization (string: header)|Authorization token in format: Bearer {token}| -|X-Api-Key (string: header)|Api key| - +}] +``` #### _Responses:_ Response content type: `application/json` -| Code | Description | -|---|---| + +| Code | Description | +| --- | ---------------------------------- | | _default_ | Successful operation | ### GET /runtime/namespaces/{orgId}/{intId}/actions/{name} @@ -326,9 +334,12 @@ Returns the details of an action. #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| + +``` { "name": "string", "namespace": "string", @@ -394,8 +405,8 @@ exec ExecDTO { } url string Action url -}]| - +}] +``` ### POST /runtime/namespaces/{orgId}/{intId}/actions/{name} Executes an action. @@ -413,9 +424,11 @@ Executes an action. #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| +``` { "name": "string", "code": "string", @@ -474,28 +487,32 @@ version string response { description: Action invocation response -}| - +} +``` ### PUT /runtime/namespaces/{orgId}/{intId}/actions/{name} Updates an action. #### _Parameters:_ -| Name | Description | -| ---------------------- | ---------------------------- | -| orgId (string: path) | Organization ID | -| intId (string: path) | Integration ID | -| name (string: path) | Action name | -| body (body) | Action form. Example value: | -| { | | -| "name": "string", | | -| "code": "string", | | -| "namespace": "string", | | -| "version": "string", | | -| "params": [ | | - - { +| Name | Description | +|-------------------------------|-----------------------------------------------| +| orgId (string: path) | Organization ID | +| intId (string: path) | Integration ID | +| name (string: path) | Action name | +| Authorization (string: header) | Authorization token in format: Bearer {token} | +| X-Api-Key (string: header) | Api key | +| body (body) | Action form. Example value: | + + +``` +{ + "name": "string", + "code": "string", + "namespace": "string", + "version": "string", + "params": [ + { "key": "string", "value": {} } @@ -572,15 +589,15 @@ exec ExecDTO { } url string Action url -}]| -|Authorization (string: header)|Authorization token in format: Bearer {token}| -|X-Api-Key (string: header)|Api key| +}] +``` #### _Responses:_ Response content type: `application/json` -| Code | Description | -|---|---| + +| Code | Description | +| --- | ---------------------------------- | | _default_ | Successful operation | ### DELETE /runtime/namespaces/{orgId}/{intId}/actions/{name} @@ -600,8 +617,9 @@ Deletes an action. #### _Responses:_ Response content type: `application/json` -| Code | Description | -|---|---| + +| Code | Description | +| --- | ---------------------------------- | | _default_ | Successful operation | ### GET /runtime/system/actions @@ -618,9 +636,12 @@ Returns a list of built-in actions. #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operationExample value: + +| Code | Description | +| --- |-------------------------------------| +|200| Successful operationExample value: | + +``` [ { "name": "string", @@ -705,30 +726,35 @@ exec ExecDTO { } url string Action url -}]| - +}] +``` ### POST /runtime/namespaces/{orgId}/{intId}/handleEventRegistration Registers an event registration and assigns a given action to the event. #### _Parameters:_ -| Name | Description | -| ------------------------------- | --------------- | -| orgId (string: path) | Organization ID | -| intId (string: path) | Integration ID | -| body (body) | Example value: | -| { | | -| "id": "string", | | -| "name": "string", | | -| "description": "string", | | -| "client_id": "string", | | -| "type": "string", | | -| "integration_status": "string", | | -| "delivery_type": "string", | | -| "webhook_url": "string", | | -| "events_of_interest": [ | | - +| Name | Description | +|---------------------------------------|-----------------------------------------------| +| orgId (string: path) | Organization ID | +| intId (string: path) | Integration ID | +| Authorization (string: header) | Authorization token in format: Bearer {token} | +| X-Ams-Consumer-Id (string: header) | AMS consumer ID | +| X-Ams-Application-Id (string: header) | AMS application ID | +| X-Api-Key (string: header) | Api key | +| body (body) | Example value: | + +``` +{ + "id": "string", + "name": "string", + "description": "string", + "client_id": "string", + "type": "string", + "integration_status": "string", + "delivery_type": "string", + "webhook_url": "string", + "events_of_interest": [ { "event_code": "string", "provider": "string" @@ -770,18 +796,18 @@ runtime_action string Action to handle event registration_id string Event registration id -}| -|Authorization (string: header)|Authorization token in format: Bearer {token}| -|X-Ams-Consumer-Id (string: header)|AMS consumer ID| -|X-Ams-Application-Id (string: header)|AMS application ID| -|X-Api-Key (string: header)|Api key| +} +``` #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| + +``` { "id": "string", "name": "string", @@ -832,7 +858,8 @@ runtime_action string Action to handle event registration_id string Event registration id -}| +} +``` ### DELETE /runtime/namespaces/{orgId}/{intId}/handleEventDeletion/{clientId}/{registrationId} @@ -854,8 +881,9 @@ Deletes an event registration. #### _Responses:_ Response content type: `application/json` -| Code | Description | -|---|---| + +| Code | Description | +| --- | ---------------------------------- | | _default_ | Successful operation | ### PUT /runtime/namespaces/{orgId}/{intId}/handleEventUpdate/{clientId}/{registrationId} @@ -864,26 +892,29 @@ Updates an event registration. #### _Parameters:_ -| Name | Description | -| ------------------------------------- | ------------------ | -| orgId (string: path) | Organization ID | -| intId (string: path) | Integration ID | -| clientId (string: path) | IMS client ID | -| registrationId (string: path) | Registration ID | -| X-Ams-Consumer-Id (string: header) | AMS consumer ID | -| X-Ams-Application-Id (string: header) | AMS application ID | -| body (body) | Example value: | -| { | | -| "id": "string", | | -| "name": "string", | | -| "description": "string", | | -| "client_id": "string", | | -| "type": "string", | | -| "integration_status": "string", | | -| "delivery_type": "string", | | -| "webhook_url": "string", | | -| "events_of_interest": [ | | - +| Name | Description | +|---------------------------------------|-----------------------------------------------| +| orgId (string: path) | Organization ID | +| intId (string: path) | Integration ID | +| clientId (string: path) | IMS client ID | +| registrationId (string: path) | Registration ID | +| X-Ams-Consumer-Id (string: header) | AMS consumer ID | +| X-Ams-Application-Id (string: header) | AMS application ID | +| Authorization (string: header) | Authorization token in format: Bearer {token} | +| X-Api-Key (string: header) | Api key | +| body (body) | Example value: | + +``` +{ + "id": "string", + "name": "string", + "description": "string", + "client_id": "string", + "type": "string", + "integration_status": "string", + "delivery_type": "string", + "webhook_url": "string", + "events_of_interest": [ { "event_code": "string", "provider": "string" @@ -925,16 +956,17 @@ runtime_action string Action to handle event registration_id string Event registration id -}| -|Authorization (string: header)|Authorization token in format: Bearer {token}| -|X-Api-Key (string: header)|Api key| +} +``` #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| +``` { "id": "string", "name": "string", @@ -985,8 +1017,8 @@ runtime_action string Action to handle event registration_id string Event registration id -}| - +} +``` ### POST /runtime/namespaces/{orgId}/{intId}/handleEventStatus/{clientId}/{registrationId}/{status} Updates the status of an event registration. @@ -1008,9 +1040,11 @@ Updates the status of an event registration. #### _Responses:_ Response content type: `application/json` -|Code|Description| -|--- |--- | -|200|Successful operation Example value: + +| Code | Description | +| --- | ---------------------------------- | +|200|Successful operation Example value:| +``` { "id": "string", "name": "string", @@ -1061,8 +1095,8 @@ runtime_action string Action to handle event registration_id string Event registration id -}| - +} +``` ## Next steps Return to the [Runtime Reference Documentation Index](index.md). diff --git a/src/pages/guides/runtime_guides/reference_docs/cli_use.md b/src/pages/guides/runtime_guides/reference_docs/cli-use.md similarity index 100% rename from src/pages/guides/runtime_guides/reference_docs/cli_use.md rename to src/pages/guides/runtime_guides/reference_docs/cli-use.md diff --git a/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md b/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md index 28428a02b..d205f7cc6 100644 --- a/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md +++ b/src/pages/guides/runtime_guides/reference_docs/configuringproxy.md @@ -4,7 +4,7 @@ For security reasons, Runtime does not expose egress IPs. Customers who need a w 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. -![](E:\GitHub\app-builder\src\pages\images\configure-proxy.png) +![](../../../images/configure-proxy.png) The following steps outline how to: @@ -130,4 +130,4 @@ An EC2 instance with NGINX installed is a prerequisite for configuring this prox Return to the [Runtime Reference Documentation Index](index.md). -Return to the [Guides Index](../../index.md). \ No newline at end of file +Return to the [Guides Index](../../index.md). diff --git a/src/pages/guides/runtime_guides/reference_docs/environment_variables.md b/src/pages/guides/runtime_guides/reference_docs/environment-variables.md similarity index 100% rename from src/pages/guides/runtime_guides/reference_docs/environment_variables.md rename to src/pages/guides/runtime_guides/reference_docs/environment-variables.md diff --git a/src/pages/guides/runtime_guides/reference_docs/index.md b/src/pages/guides/runtime_guides/reference_docs/index.md index 4f5d72b81..e4cea6627 100644 --- a/src/pages/guides/runtime_guides/reference_docs/index.md +++ b/src/pages/guides/runtime_guides/reference_docs/index.md @@ -2,16 +2,16 @@ This Guide contains reference documentation for Runtime APIs, command-line tools, and entities. -* [aio CLI](cli_use.md): how to use the `aio` CLI -* [Environment Variables](environment_variables.md): what environment variables you can access -* [Multiple Regions](multiple_regions.md): where actions are deployed -* [API Reference](api_ref.md): I/O Management API +* [aio CLI](cli-use.md): how to use the `aio` CLI +* [Environment Variables](environment-variables.md): what environment variables you can access +* [Multiple Regions](multiple-regions.md): where actions are deployed +* [API Reference](api-ref.md): I/O Management API * [Packages](packages.md): working with packages * [Pre-installed Packages](prepackages.md): what packages are pre-installed with Runtime * [Runtimes](runtimes.md): details about available runtimes * [Triggers and Rules](triggersrules.md): working with triggers and rules * [Feeds](feeds.md): working with feeds -* [Sequences and Compositions](sequences_compositions.md): how to orchestrate actions +* [Sequences and Compositions](sequences-compositions.md): how to orchestrate actions * [Configuring a Secure Proxy](configuringproxy.md): communicating securely with back-end services. #### Next step diff --git a/src/pages/guides/runtime_guides/reference_docs/multiple_regions.md b/src/pages/guides/runtime_guides/reference_docs/multiple-regions.md similarity index 100% rename from src/pages/guides/runtime_guides/reference_docs/multiple_regions.md rename to src/pages/guides/runtime_guides/reference_docs/multiple-regions.md diff --git a/src/pages/guides/runtime_guides/reference_docs/sequences_compositions.md b/src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md similarity index 98% rename from src/pages/guides/runtime_guides/reference_docs/sequences_compositions.md rename to src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md index e8a11cef3..2e465590c 100644 --- a/src/pages/guides/runtime_guides/reference_docs/sequences_compositions.md +++ b/src/pages/guides/runtime_guides/reference_docs/sequences-compositions.md @@ -27,7 +27,7 @@ When invoking a sequence in a blocking manner, there is a 60-second timeout limi If we apply this limitation to the example above, then `actionA` and `actionB` have a total budget of 60 seconds. Although the system allows you to set a higher timeout value for `mySequence`, it will ignore the value and enforce the 60-second limit. -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](../../runtime_guides/asynchronous_calls.md). +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). diff --git a/src/pages/guides/runtime_guides/reference_docs/wsk_use.md b/src/pages/guides/runtime_guides/reference_docs/wsk-use.md similarity index 100% rename from src/pages/guides/runtime_guides/reference_docs/wsk_use.md rename to src/pages/guides/runtime_guides/reference_docs/wsk-use.md diff --git a/src/pages/guides/runtime_guides/securing_web_actions.md b/src/pages/guides/runtime_guides/securing-web-actions.md similarity index 97% rename from src/pages/guides/runtime_guides/securing_web_actions.md rename to src/pages/guides/runtime_guides/securing-web-actions.md index 3bb493c98..e83794c5a 100644 --- a/src/pages/guides/runtime_guides/securing_web_actions.md +++ b/src/pages/guides/runtime_guides/securing-web-actions.md @@ -49,7 +49,7 @@ or aio rt:action:update my-require-validation-web-action main.js --web true -a require-gw-validation true ``` -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). +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 @@ -69,6 +69,6 @@ For a fuller discussion of this topic you can read [Heroku's discussion of their ## Next steps -Review the [Security Guide](security_general.md). +Review the [Security Guide](security-general.md). Return to [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/security_general.md b/src/pages/guides/runtime_guides/security-general.md similarity index 96% rename from src/pages/guides/runtime_guides/security_general.md rename to src/pages/guides/runtime_guides/security-general.md index 53b3fb6c5..2af33f860 100644 --- a/src/pages/guides/runtime_guides/security_general.md +++ b/src/pages/guides/runtime_guides/security-general.md @@ -16,7 +16,7 @@ Parameters sent to actions are not sanitized by the Runtime system. These inputs 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. -We discourage the use of cookies directly from web actions on Runtime: please see [Securing Web Actions](securing_web_actions.md) for details. +We discourage the use of cookies directly from web actions on Runtime: please see [Securing Web Actions](securing-web-actions.md) for details. ## Secrets @@ -46,7 +46,7 @@ Actions should include the [aio-lib-ims](https://github.com/adobe/aio-lib-ims) l ### Securing web actions -For web actions, see [Securing Web Actions](securing_web_actions.md). +For web actions, see [Securing Web Actions](securing-web-actions.md). ## Transport security @@ -68,7 +68,7 @@ You can secure web actions using any CDN by following these steps: 1. Choose a provider that meets your needs and sign up for their service. [Wikipedia](https://en.wikipedia.org/wiki/Content_delivery_network#notable_content_delivery_service_providers) provides a list of alternatives. 2. Configure the CDN and point it to Runtime’s domain name, `.adobeioruntime.net`. This can usually be done through the CDN provider's web interface or API. -3. Configure your action to use a security header as described in [Securing Web Actions](securing_web_actions.md). +3. Configure your action to use a security header as described in [Securing Web Actions](securing-web-actions.md). 4. Configure the CDN to add the `X-Require-Whisk-Auth` security header, with the secret hash value, for all requests made to the secured web actions. ## Secure communication with back-end services @@ -79,6 +79,6 @@ Runtime ingress IPs are not static. To facilitate operational changes, IPs retu ## Next steps -Proceed to [Securing Web Actions](securing_web_actions.md). +Proceed to [Securing Web Actions](securing-web-actions.md). Return to [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/system_settings.md b/src/pages/guides/runtime_guides/system-settings.md similarity index 99% rename from src/pages/guides/runtime_guides/system_settings.md rename to src/pages/guides/runtime_guides/system-settings.md index a5d38ea0b..c518f690f 100644 --- a/src/pages/guides/runtime_guides/system_settings.md +++ b/src/pages/guides/runtime_guides/system-settings.md @@ -24,7 +24,7 @@ These are the system settings and limitations to consider when designing and deb When invoking a sequence in a blocking manner, there is a 60-second limit for timeout that can't be changed. This means the sum of the execution times of all actions in the sequence must be 60 seconds or less. You can specify a timeout value greater than 60 seconds, but the system will ignore it and impose the 60-second limit. -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 example above, 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). +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 example above, 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). ## Using pre-warmed containers diff --git a/src/pages/guides/runtime_guides/throughput_tuning.md b/src/pages/guides/runtime_guides/throughput-tuning.md similarity index 97% rename from src/pages/guides/runtime_guides/throughput_tuning.md rename to src/pages/guides/runtime_guides/throughput-tuning.md index 4599d4597..116007a53 100644 --- a/src/pages/guides/runtime_guides/throughput_tuning.md +++ b/src/pages/guides/runtime_guides/throughput-tuning.md @@ -18,7 +18,7 @@ aio rt:action:create actionName fileName.js -c 100 ### Concurrency considerations -1. Containers are kept warm after for 5 minutes after an invocation finishes. For those 5 minutes, it is highly unlikely (p<.01) that invoking the same action will require a cold start. +1. Containers are kept warm after for 5 minutes after an invocation finishes. For those 5 minutes, it is highly unlikely (p<.01) that invoking the same action will require a cold start. 2. Experiment with the value you set for concurrency limits. The default, `200`, is a good place to start, but a smaller or a larger value may be better depending on how much memory and other resources your action consumes. 3. Be sure your code is designed to work when executed in parallel. For example, avoid using global variables to store values that may differ between invocations. 4. If an action works on a large data set that is not different from one invocation to another, a global variable can maximize the chances that the next execution can use it. But your code should handle the condition in which the variable is not initialized. diff --git a/src/pages/guides/runtime_guides/tools/cli_install.md b/src/pages/guides/runtime_guides/tools/cli-install.md similarity index 100% rename from src/pages/guides/runtime_guides/tools/cli_install.md rename to src/pages/guides/runtime_guides/tools/cli-install.md diff --git a/src/pages/guides/runtime_guides/tools/index.md b/src/pages/guides/runtime_guides/tools/index.md index 7a09f3700..9954dc1c1 100644 --- a/src/pages/guides/runtime_guides/tools/index.md +++ b/src/pages/guides/runtime_guides/tools/index.md @@ -2,7 +2,7 @@ The most important tools for working with Adobe I/O Runtime are: -- [aio CLI](cli_install.md) to manage namespaces and authentication for the `aio` CLI +- [aio CLI](cli-install.md) to manage namespaces and authentication for the `aio` CLI - [wskdeploy CLI](wskdeploy_install.md) to deploy multiple actions and packages ## Next step diff --git a/src/pages/guides/runtime_guides/troubleshooting.md b/src/pages/guides/runtime_guides/troubleshooting.md index f44916512..2f876e88e 100644 --- a/src/pages/guides/runtime_guides/troubleshooting.md +++ b/src/pages/guides/runtime_guides/troubleshooting.md @@ -9,7 +9,7 @@ The most common reasons for exceeding local storage for an action are: - Writing too many verbose logs - Storing large files on local storage without cleaning them up -Please refer to the local storage limit configured for an action, found in [System Settings](./system_settings.md) section. +Please refer to the local storage limit configured for an action, found in [System Settings](./system-settings.md) section. Exceeding this limit will result in the action being terminated or not completing successfully. ### Mitigation Strategies @@ -20,6 +20,6 @@ Exceeding this limit will result in the action being terminated or not completin ## Next step -Review [System Settings](system_settings.md) and defaults. +Review [System Settings](system-settings.md) and defaults. Return to [Guides Index](../index.md). diff --git a/src/pages/guides/runtime_guides/using_packages.md b/src/pages/guides/runtime_guides/using-packages.md similarity index 100% rename from src/pages/guides/runtime_guides/using_packages.md rename to src/pages/guides/runtime_guides/using-packages.md diff --git a/src/pages/guides/runtime_guides/using_runtime.md b/src/pages/guides/runtime_guides/using-runtime.md similarity index 56% rename from src/pages/guides/runtime_guides/using_runtime.md rename to src/pages/guides/runtime_guides/using-runtime.md index 6c47b7210..e591b757c 100644 --- a/src/pages/guides/runtime_guides/using_runtime.md +++ b/src/pages/guides/runtime_guides/using-runtime.md @@ -2,32 +2,32 @@ 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: -* [Creating Actions](creating_actions.md), including actions, web actions, invocation and management, and setting parameters +* [Creating Actions](creating-actions.md), including actions, web actions, invocation and management, and setting parameters -* [Asynchronous Calls](asynchronous_calls.md) and how to execute these long-running, non-blocking calls +* [Asynchronous Calls](asynchronous-calls.md) and how to execute these long-running, non-blocking calls -* [Security](security_general.md) issues to consider when working with I/O Runtime +* [Security](security-general.md) issues to consider when working with I/O Runtime -* [Throughput Tuning](throughput_tuning.md) to maximize invocations and performance +* [Throughput Tuning](throughput-tuning.md) to maximize invocations and performance -* [Securing Web Actions](securing_web_actions.md) through effective access control +* [Securing Web Actions](securing-web-actions.md) through effective access control -* [Creating REST APIs](creating_rest_apis.md) from your web actions +* [Creating REST APIs](creating-rest-apis.md) from your web actions -* [Using Packages](using_packages.md) to bundle and share your actions, set default parameters, and maintain security +* [Using Packages](using-packages.md) to bundle and share your actions, set default parameters, and maintain security -* [Logging and Monitoring](logging_monitoring.md) to assist with troubleshooting your actions +* [Logging and Monitoring](logging-monitoring.md) to assist with troubleshooting your actions * [Debugging](debugging.md) with advanced techniques for debugging Node.js actions -* [System Settings](system_settings.md) and constraints to consider when designing and debugging actions +* [System Settings](system-settings.md) and constraints to consider when designing and debugging actions -* [CI/CD Pipeline](ci-cd_pipeline.md) tools available for the Runtime environment +* [CI/CD Pipeline](ci-cd-pipeline.md) tools available for the Runtime environment * [Troubleshooting](troubleshooting.md) common issues and solutions ## Next steps -Continue to [Creating Actions](creating_actions.md). +Continue to [Creating Actions](creating-actions.md). Return to [Guides Index](../index.md). diff --git a/src/pages/intro_and_overview/business_case.md b/src/pages/intro_and_overview/business-case.md similarity index 100% rename from src/pages/intro_and_overview/business_case.md rename to src/pages/intro_and_overview/business-case.md diff --git a/src/pages/intro_and_overview/community.md b/src/pages/intro_and_overview/community.md index c2bfe82c3..e23a140b5 100644 --- a/src/pages/intro_and_overview/community.md +++ b/src/pages/intro_and_overview/community.md @@ -21,4 +21,4 @@ Adobe welcomes contributions from customer, partner, and independent Developers. * [SDK repository]( https://github.com/adobe/aio-sdk) * [App Builder](https://github.com/AdobeDocs/app-builder) and [I/O Runtime](https://github.com/AdobeDocs/adobe-io-runtime) documentation repositories -Adobe and its contributors agree to a Code of Conduct, and to follow established protocols and best practices to maintain a respectful, productive working environment for all of us. Please review our [contribution guidelines](../guides/contribution_guide.md) for details. +Adobe and its contributors agree to a Code of Conduct, and to follow established protocols and best practices to maintain a respectful, productive working environment for all of us. Please review our [contribution guidelines](../guides/contribution-guide.md) for details. diff --git a/src/pages/intro_and_overview/faq.md b/src/pages/intro_and_overview/faq.md index b73162b31..459faed11 100644 --- a/src/pages/intro_and_overview/faq.md +++ b/src/pages/intro_and_overview/faq.md @@ -66,7 +66,7 @@ Finally, customers can purchase a license for use with any Adobe Experience Clou ### Are trials available? -Not at this time. +Not at this time. ### What is included with an App Builder license? @@ -74,15 +74,15 @@ App Builder is licensed in packs that include runtime, event, storage, and other ### How can I get access to App Builder if my company is already licensed? -First, make sure you have Developer or System Admin permissions from Adobe's Identity Management System (IMS) organization. Please contact the system administrator of your Adobe IMS organization for help getting Developer access. Once you confirm access use either the Adobe I/O Command Line Interface (CLI) or the [Adobe Developer Console](https://developer.adobe.com/console) to start a project. +First, make sure you have Developer or System Admin permissions from Adobe's Identity Management System (IMS) organization. Please contact the system administrator of your Adobe IMS organization for help getting Developer access. Once you confirm access use either the Adobe I/O Command Line Interface (CLI) or the [Adobe Developer Console](https://developer.adobe.com/console) to start a project. ### Is App Builder available to individuals who are not part of a company? -No. App Builder is availabile only to Adobe enterprise customers and partners. +No. App Builder is availabile only to Adobe enterprise customers and partners. ### How can I get access to I/O Runtime? -I/O Runtime is part of App Builder, if your company has a license for App Builder you already have access. +I/O Runtime is part of App Builder, if your company has a license for App Builder you already have access. ## Using App Builder @@ -114,11 +114,11 @@ Visit our [App Builder Community](https://experienceleaguecommunities.adobe.com/ ### What limits does I/O Runtime impose on actions? -Limits and their default values are listed under [System Settings](../guides/runtime_guides/system_settings.md); the most important are function timeouts and the maximum payloads that can be posted to functions. +Limits and their default values are listed under [System Settings](../guides/runtime_guides/system-settings.md); the most important are function timeouts and the maximum payloads that can be posted to functions. ### Do ingress IP addresses for Adobe I/O Runtime ever change? -Yes, IP addresses returned when looking up an Adobe I/O Runtime endpoint's DNS record can change at any time. To avoid issues connecting and routing to the platform, clients should not cache DNS-lookup responses for Adobe I/O Runtime endpoints beyond the TTL of the DNS record. For more information, see [Secure communication with back-end services](../guides/runtime_guides/security_general.md#secure-communication-with-back-end-services) in the [Security Guide](../guides/runtime_guides/security_general.md). +Yes, IP addresses returned when looking up an Adobe I/O Runtime endpoint's DNS record can change at any time. To avoid issues connecting and routing to the platform, clients should not cache DNS-lookup responses for Adobe I/O Runtime endpoints beyond the TTL of the DNS record. For more information, see [Secure communication with back-end services](../guides/runtime_guides/security-general.md#secure-communication-with-back-end-services) in the [Security Guide](../guides/runtime_guides/security-general.md). ### What ports and outbound connections does I/O Runtime support? @@ -132,4 +132,4 @@ If you need a port not on the list, please share the use case with us. I/O Runtime runs in multiple regions, deploys code in all of them, and executes it in the region closest to the caller (latency-based routing). Execution cannot be restricted to a specific region or regions. -For more information about regions and where actions are executed, see [Multiple Regions](../guides/runtime_guides/reference_docs/multiple_regions.md). +For more information about regions and where actions are executed, see [Multiple Regions](../guides/runtime_guides/reference_docs/multiple-regions.md). diff --git a/src/pages/intro_and_overview/index.md b/src/pages/intro_and_overview/index.md index 302bec53c..b81355480 100644 --- a/src/pages/intro_and_overview/index.md +++ b/src/pages/intro_and_overview/index.md @@ -10,7 +10,7 @@ App Builder is for Adobe enterprise customers and Adobe partners working with th ## How to use these documents -**Business users and decision-makers** can review the [Business Case for App Builder](business_case.md), outlining the agility, efficiency, and security App Builder brings to the modern enterprise, as well as the most pertinent App Builder [use cases](business_case.md#example-use-cases) and links to [real-world success stories](business_case.md#examples-from-the-real-world) from Adobe customers and partners. +**Business users and decision-makers** can review the [Business Case for App Builder](business-case.md), outlining the agility, efficiency, and security App Builder brings to the modern enterprise, as well as the most pertinent App Builder [use cases](business-case.md#example-use-cases) and links to [real-world success stories](business-case.md#examples-from-the-real-world) from Adobe customers and partners. Please refer to the [FAQ](faq.md) for information about licensing or trial of App Builder, or contact your Adobe Sales representative. @@ -18,17 +18,17 @@ Please refer to the [FAQ](faq.md) for information about licensing or trial of Ap - **Explore** - - App Builder and I/O Runtime design concepts in [What Is App Builder?](what_is_app_builder.md) + - App Builder and I/O Runtime design concepts in [What Is App Builder?](what-is-app-builder.md) - - Key App Builder components and concepts in the [Architecture Overview](../guides/app_builder_guides/architecture_overview/architecture_overview.md) + - Key App Builder components and concepts in the [Architecture Overview](../guides/app_builder_guides/architecture_overview/architecture-overview.md) - - How the App Builder framework aligns to the development cycle in [How App Builder Works](../get_started/app_builder_get_started/app_builder_intro.md#overview) + - How the App Builder framework aligns to the development cycle in [How App Builder Works](../get_started/app_builder_get_started/app-builder-intro.md#overview) - **Learn** how to build custom applications and deploy them on Adobe infrastructure through hands-on tutorials: - - [Get Started with App Builder](../get_started/app_builder_get_started/app_builder_intro.md) covering access, setup, creation, publication, and troubleshooting of your first App Builder app + - [Get Started with App Builder](../get_started/app_builder_get_started/app-builder-intro.md) covering access, setup, creation, publication, and troubleshooting of your first App Builder app - - [Get Started with Adobe I/O Runtime](../get_started/runtime_getting_started/runtime_intro.md) covering access, setup, deployment, and invocation of your first Adobe Runtime action, recovery and interpretation of results, and core concepts and tactics for optimizing performance + - [Get Started with Adobe I/O Runtime](../get_started/runtime_getting_started/index.md) covering access, setup, deployment, and invocation of your first Adobe Runtime action, recovery and interpretation of results, and core concepts and tactics for optimizing performance - **Resolve issues** and optimize performance with App Builder resources: @@ -46,7 +46,7 @@ Please refer to the [FAQ](faq.md) for information about licensing or trial of Ap To learn more about App Builder, please consult the following: -- [What Is App Builder?](what_is_app_builder.md) -- [Architecture Overview](../guides/app_builder_guides/architecture_overview/architecture_overview.md) +- [What Is App Builder?](what-is-app-builder.md) +- [Architecture Overview](../guides/app_builder_guides/architecture_overview/architecture-overview.md) -Or start building right now: [Get Started with App Builder](../get_started/app_builder_get_started/app_builder_intro.md). +Or start building right now: [Get Started with App Builder](../get_started/app_builder_get_started/app-builder-intro.md). diff --git a/src/pages/intro_and_overview/what_is_app_builder.md b/src/pages/intro_and_overview/what-is-app-builder.md similarity index 97% rename from src/pages/intro_and_overview/what_is_app_builder.md rename to src/pages/intro_and_overview/what-is-app-builder.md index 5d97f3d5f..0da3892fc 100644 --- a/src/pages/intro_and_overview/what_is_app_builder.md +++ b/src/pages/intro_and_overview/what-is-app-builder.md @@ -28,4 +28,4 @@ Serverless computing platforms like Adobe I/O Runtime host those portions of app ## Next step -Understand core App Builder concepts and start building your first App Builder application with the [Get Started with App Builder](../get_started/app_builder_get_started/app_builder_intro.md) tutorial series. +Understand core App Builder concepts and start building your first App Builder application with the [Get Started with App Builder](../get_started/app_builder_get_started/app-builder-intro.md) tutorial series. diff --git a/src/pages/redirects.json b/src/pages/redirects.json new file mode 100644 index 000000000..9772f6ea3 --- /dev/null +++ b/src/pages/redirects.json @@ -0,0 +1 @@ +{"total":371,"offset":0,"limit":371,"data":[{"Source":"/app-builder/docs/resources","Destination":"/app-builder/docs/resources/"},{"Source":"/app-builder/docs/resources/index","Destination":"/app-builder/docs/resources/"},{"Source":"/app-builder/docs/resources/blog-articles/","Destination":"/app-builder/docs/resources/blog-articles"},{"Source":"/app-builder/docs/resources/videos","Destination":"/app-builder/docs/resources/videos/"},{"Source":"/app-builder/docs/resources/videos/index","Destination":"/app-builder/docs/resources/videos/"},{"Source":"/app-builder/docs/resources/videos/overview/security/","Destination":"/app-builder/docs/resources/videos/overview/security"},{"Source":"/app-builder/docs/resources/videos/overview/introduction/","Destination":"/app-builder/docs/resources/videos/overview/introduction"},{"Source":"/app-builder/docs/resources/videos/overview/getting-started/","Destination":"/app-builder/docs/resources/videos/overview/getting-started"},{"Source":"/app-builder/docs/resources/videos/overview/e2e-user-journey/","Destination":"/app-builder/docs/resources/videos/overview/e2e-user-journey"},{"Source":"/app-builder/docs/resources/videos/overview/architecture/","Destination":"/app-builder/docs/resources/videos/overview/architecture"},{"Source":"/app-builder/docs/resources/videos/exploring/softcrylic-showcase/","Destination":"/app-builder/docs/resources/videos/exploring/softcrylic-showcase"},{"Source":"/app-builder/docs/resources/videos/exploring/react-spectrum/","Destination":"/app-builder/docs/resources/videos/exploring/react-spectrum"},{"Source":"/app-builder/docs/resources/videos/exploring/projects-and-workspaces/","Destination":"/app-builder/docs/resources/videos/exploring/projects-and-workspaces"},{"Source":"/app-builder/docs/resources/videos/exploring/ode-case-study/","Destination":"/app-builder/docs/resources/videos/exploring/ode-case-study"},{"Source":"/app-builder/docs/resources/videos/exploring/live-wired-sneak/","Destination":"/app-builder/docs/resources/videos/exploring/live-wired-sneak"},{"Source":"/app-builder/docs/resources/videos/exploring/learning-resources/","Destination":"/app-builder/docs/resources/videos/exploring/learning-resources"},{"Source":"/app-builder/docs/resources/videos/exploring/deep-dive-use-cases/","Destination":"/app-builder/docs/resources/videos/exploring/deep-dive-use-cases"},{"Source":"/app-builder/docs/resources/videos/exploring/debugging/","Destination":"/app-builder/docs/resources/videos/exploring/debugging"},{"Source":"/app-builder/docs/resources/videos/exploring/dashboard-case-study/","Destination":"/app-builder/docs/resources/videos/exploring/dashboard-case-study"},{"Source":"/app-builder/docs/resources/videos/exploring/custom-events/","Destination":"/app-builder/docs/resources/videos/exploring/custom-events"},{"Source":"/app-builder/docs/resources/videos/exploring/ci-cd/","Destination":"/app-builder/docs/resources/videos/exploring/ci-cd"},{"Source":"/app-builder/docs/resources/videos/developers-live/extend-experience-cloud/","Destination":"/app-builder/docs/resources/videos/developers-live/extend-experience-cloud"},{"Source":"/app-builder/docs/resources/videos/developers-live/deep-dive/","Destination":"/app-builder/docs/resources/videos/developers-live/deep-dive"},{"Source":"/app-builder/docs/resources/videos/developers-live/asset-compute-service-extensibility/","Destination":"/app-builder/docs/resources/videos/developers-live/asset-compute-service-extensibility"},{"Source":"/app-builder/docs/resources/transclusions/requirements/","Destination":"/app-builder/docs/resources/transclusions/requirements"},{"Source":"/app-builder/docs/resources/todo-app/welldone/","Destination":"/app-builder/docs/resources/todo-app/welldone"},{"Source":"/app-builder/docs/resources/todo-app/requirements/","Destination":"/app-builder/docs/resources/todo-app/requirements"},{"Source":"/app-builder/docs/resources/todo-app/lesson6/","Destination":"/app-builder/docs/resources/todo-app/lesson6"},{"Source":"/app-builder/docs/resources/todo-app/lesson5/","Destination":"/app-builder/docs/resources/todo-app/lesson5"},{"Source":"/app-builder/docs/resources/todo-app/lesson4/","Destination":"/app-builder/docs/resources/todo-app/lesson4"},{"Source":"/app-builder/docs/resources/todo-app/lesson3/","Destination":"/app-builder/docs/resources/todo-app/lesson3"},{"Source":"/app-builder/docs/resources/todo-app/lesson2/","Destination":"/app-builder/docs/resources/todo-app/lesson2"},{"Source":"/app-builder/docs/resources/todo-app/lesson1/","Destination":"/app-builder/docs/resources/todo-app/lesson1"},{"Source":"/app-builder/docs/resources/todo-app","Destination":"/app-builder/docs/resources/todo-app/"},{"Source":"/app-builder/docs/resources/todo-app/index","Destination":"/app-builder/docs/resources/todo-app/"},{"Source":"/app-builder/docs/resources/spectrum-intro/welldone/","Destination":"/app-builder/docs/resources/spectrum-intro/welldone"},{"Source":"/app-builder/docs/resources/spectrum-intro/requirements/","Destination":"/app-builder/docs/resources/spectrum-intro/requirements"},{"Source":"/app-builder/docs/resources/spectrum-intro/lesson4/","Destination":"/app-builder/docs/resources/spectrum-intro/lesson4"},{"Source":"/app-builder/docs/resources/spectrum-intro/lesson3/","Destination":"/app-builder/docs/resources/spectrum-intro/lesson3"},{"Source":"/app-builder/docs/resources/spectrum-intro/lesson2/","Destination":"/app-builder/docs/resources/spectrum-intro/lesson2"},{"Source":"/app-builder/docs/resources/spectrum-intro/lesson1/","Destination":"/app-builder/docs/resources/spectrum-intro/lesson1"},{"Source":"/app-builder/docs/resources/spectrum-intro","Destination":"/app-builder/docs/resources/spectrum-intro/"},{"Source":"/app-builder/docs/resources/spectrum-intro/index","Destination":"/app-builder/docs/resources/spectrum-intro/"},{"Source":"/app-builder/docs/resources/sample_apps","Destination":"/app-builder/docs/resources/sample_apps/"},{"Source":"/app-builder/docs/resources/sample_apps/index","Destination":"/app-builder/docs/resources/sample_apps/"},{"Source":"/app-builder/docs/resources/sample_apps/demo/","Destination":"/app-builder/docs/resources/sample_apps/demo"},{"Source":"/app-builder/docs/resources/sample_apps/code_snippets/state/","Destination":"/app-builder/docs/resources/sample_apps/code_snippets/state"},{"Source":"/app-builder/docs/resources/sample_apps/code_snippets","Destination":"/app-builder/docs/resources/sample_apps/code_snippets/"},{"Source":"/app-builder/docs/resources/sample_apps/code_snippets/index","Destination":"/app-builder/docs/resources/sample_apps/code_snippets/"},{"Source":"/app-builder/docs/resources/sample_apps/code_snippets/files/","Destination":"/app-builder/docs/resources/sample_apps/code_snippets/files"},{"Source":"/app-builder/docs/resources/sample_apps/code_snippets/events/","Destination":"/app-builder/docs/resources/sample_apps/code_snippets/events"},{"Source":"/app-builder/docs/resources/sample_apps/code_snippets/analytics/","Destination":"/app-builder/docs/resources/sample_apps/code_snippets/analytics"},{"Source":"/app-builder/docs/resources/journaling-events/welldone/","Destination":"/app-builder/docs/resources/journaling-events/welldone"},{"Source":"/app-builder/docs/resources/journaling-events/requirements/","Destination":"/app-builder/docs/resources/journaling-events/requirements"},{"Source":"/app-builder/docs/resources/journaling-events/lesson3/","Destination":"/app-builder/docs/resources/journaling-events/lesson3"},{"Source":"/app-builder/docs/resources/journaling-events/lesson2/","Destination":"/app-builder/docs/resources/journaling-events/lesson2"},{"Source":"/app-builder/docs/resources/journaling-events/lesson1/","Destination":"/app-builder/docs/resources/journaling-events/lesson1"},{"Source":"/app-builder/docs/resources/journaling-events","Destination":"/app-builder/docs/resources/journaling-events/"},{"Source":"/app-builder/docs/resources/journaling-events/index","Destination":"/app-builder/docs/resources/journaling-events/"},{"Source":"/app-builder/docs/resources/events-runtime/welldone/","Destination":"/app-builder/docs/resources/events-runtime/welldone"},{"Source":"/app-builder/docs/resources/events-runtime/requirements/","Destination":"/app-builder/docs/resources/events-runtime/requirements"},{"Source":"/app-builder/docs/resources/events-runtime/lesson2/","Destination":"/app-builder/docs/resources/events-runtime/lesson2"},{"Source":"/app-builder/docs/resources/events-runtime/lesson1/","Destination":"/app-builder/docs/resources/events-runtime/lesson1"},{"Source":"/app-builder/docs/resources/events-runtime","Destination":"/app-builder/docs/resources/events-runtime/"},{"Source":"/app-builder/docs/resources/events-runtime/index","Destination":"/app-builder/docs/resources/events-runtime/"},{"Source":"/app-builder/docs/resources/event-driven/welldone/","Destination":"/app-builder/docs/resources/event-driven/welldone"},{"Source":"/app-builder/docs/resources/event-driven/requirements/","Destination":"/app-builder/docs/resources/event-driven/requirements"},{"Source":"/app-builder/docs/resources/event-driven/lesson4/","Destination":"/app-builder/docs/resources/event-driven/lesson4"},{"Source":"/app-builder/docs/resources/event-driven/lesson3/","Destination":"/app-builder/docs/resources/event-driven/lesson3"},{"Source":"/app-builder/docs/resources/event-driven/lesson2/","Destination":"/app-builder/docs/resources/event-driven/lesson2"},{"Source":"/app-builder/docs/resources/event-driven/lesson1/","Destination":"/app-builder/docs/resources/event-driven/lesson1"},{"Source":"/app-builder/docs/resources/event-driven","Destination":"/app-builder/docs/resources/event-driven/"},{"Source":"/app-builder/docs/resources/event-driven/index","Destination":"/app-builder/docs/resources/event-driven/"},{"Source":"/app-builder/docs/resources/debugging/welldone/","Destination":"/app-builder/docs/resources/debugging/welldone"},{"Source":"/app-builder/docs/resources/debugging/requirements/","Destination":"/app-builder/docs/resources/debugging/requirements"},{"Source":"/app-builder/docs/resources/debugging/lesson3/","Destination":"/app-builder/docs/resources/debugging/lesson3"},{"Source":"/app-builder/docs/resources/debugging/lesson2/","Destination":"/app-builder/docs/resources/debugging/lesson2"},{"Source":"/app-builder/docs/resources/debugging/lesson1/","Destination":"/app-builder/docs/resources/debugging/lesson1"},{"Source":"/app-builder/docs/resources/debugging","Destination":"/app-builder/docs/resources/debugging/"},{"Source":"/app-builder/docs/resources/debugging/index","Destination":"/app-builder/docs/resources/debugging/"},{"Source":"/app-builder/docs/resources/customer-dashboard/welldone/","Destination":"/app-builder/docs/resources/customer-dashboard/welldone"},{"Source":"/app-builder/docs/resources/customer-dashboard/requirements/","Destination":"/app-builder/docs/resources/customer-dashboard/requirements"},{"Source":"/app-builder/docs/resources/customer-dashboard/lesson5/","Destination":"/app-builder/docs/resources/customer-dashboard/lesson5"},{"Source":"/app-builder/docs/resources/customer-dashboard/lesson4/","Destination":"/app-builder/docs/resources/customer-dashboard/lesson4"},{"Source":"/app-builder/docs/resources/customer-dashboard/lesson3/","Destination":"/app-builder/docs/resources/customer-dashboard/lesson3"},{"Source":"/app-builder/docs/resources/customer-dashboard/lesson2/","Destination":"/app-builder/docs/resources/customer-dashboard/lesson2"},{"Source":"/app-builder/docs/resources/customer-dashboard/lesson1/","Destination":"/app-builder/docs/resources/customer-dashboard/lesson1"},{"Source":"/app-builder/docs/resources/customer-dashboard","Destination":"/app-builder/docs/resources/customer-dashboard/"},{"Source":"/app-builder/docs/resources/customer-dashboard/index","Destination":"/app-builder/docs/resources/customer-dashboard/"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/welldone/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/welldone"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/requirements/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/requirements"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/our-worker/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/our-worker"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/lesson5/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/lesson5"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/lesson4/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/lesson4"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/lesson3/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/lesson3"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/lesson2/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/lesson2"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/lesson1/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/lesson1"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/index","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/"},{"Source":"/app-builder/docs/resources/custom-asset-compute-worker/aem-cloud-assets/","Destination":"/app-builder/docs/resources/custom-asset-compute-worker/aem-cloud-assets"},{"Source":"/app-builder/docs/resources/cron-jobs/welldone/","Destination":"/app-builder/docs/resources/cron-jobs/welldone"},{"Source":"/app-builder/docs/resources/cron-jobs/requirements/","Destination":"/app-builder/docs/resources/cron-jobs/requirements"},{"Source":"/app-builder/docs/resources/cron-jobs/lesson3/","Destination":"/app-builder/docs/resources/cron-jobs/lesson3"},{"Source":"/app-builder/docs/resources/cron-jobs/lesson2/","Destination":"/app-builder/docs/resources/cron-jobs/lesson2"},{"Source":"/app-builder/docs/resources/cron-jobs/lesson1/","Destination":"/app-builder/docs/resources/cron-jobs/lesson1"},{"Source":"/app-builder/docs/resources/cron-jobs","Destination":"/app-builder/docs/resources/cron-jobs/"},{"Source":"/app-builder/docs/resources/cron-jobs/index","Destination":"/app-builder/docs/resources/cron-jobs/"},{"Source":"/app-builder/docs/resources/ci-cd/welldone/","Destination":"/app-builder/docs/resources/ci-cd/welldone"},{"Source":"/app-builder/docs/resources/ci-cd/requirements/","Destination":"/app-builder/docs/resources/ci-cd/requirements"},{"Source":"/app-builder/docs/resources/ci-cd/lesson3/","Destination":"/app-builder/docs/resources/ci-cd/lesson3"},{"Source":"/app-builder/docs/resources/ci-cd/lesson2/","Destination":"/app-builder/docs/resources/ci-cd/lesson2"},{"Source":"/app-builder/docs/resources/ci-cd/lesson1/","Destination":"/app-builder/docs/resources/ci-cd/lesson1"},{"Source":"/app-builder/docs/resources/ci-cd","Destination":"/app-builder/docs/resources/ci-cd/"},{"Source":"/app-builder/docs/resources/ci-cd/index","Destination":"/app-builder/docs/resources/ci-cd/"},{"Source":"/app-builder/docs/resources/barcode-reader/welldone/","Destination":"/app-builder/docs/resources/barcode-reader/welldone"},{"Source":"/app-builder/docs/resources/barcode-reader/test/","Destination":"/app-builder/docs/resources/barcode-reader/test"},{"Source":"/app-builder/docs/resources/barcode-reader/requirements/","Destination":"/app-builder/docs/resources/barcode-reader/requirements"},{"Source":"/app-builder/docs/resources/barcode-reader","Destination":"/app-builder/docs/resources/barcode-reader/"},{"Source":"/app-builder/docs/resources/barcode-reader/index","Destination":"/app-builder/docs/resources/barcode-reader/"},{"Source":"/app-builder/docs/resources/barcode-reader/bootstrap/","Destination":"/app-builder/docs/resources/barcode-reader/bootstrap"},{"Source":"/app-builder/docs/resources/barcode-reader/barcode/","Destination":"/app-builder/docs/resources/barcode-reader/barcode"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/welldone/","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/welldone"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/requirements/","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/requirements"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson4/","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson4"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson3/","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson3"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson2/","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson2"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson1/","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/lesson1"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/"},{"Source":"/app-builder/docs/resources/asset-compute-worker-ps-api/index","Destination":"/app-builder/docs/resources/asset-compute-worker-ps-api/"},{"Source":"/app-builder/docs/intro_and_overview/what-is-app-builder/","Destination":"/app-builder/docs/intro_and_overview/what-is-app-builder"},{"Source":"/app-builder/docs/intro_and_overview","Destination":"/app-builder/docs/intro_and_overview/"},{"Source":"/app-builder/docs/intro_and_overview/index","Destination":"/app-builder/docs/intro_and_overview/"},{"Source":"/app-builder/docs/intro_and_overview/faq/","Destination":"/app-builder/docs/intro_and_overview/faq"},{"Source":"/app-builder/docs/intro_and_overview/community/","Destination":"/app-builder/docs/intro_and_overview/community"},{"Source":"/app-builder/docs/intro_and_overview/business-case/","Destination":"/app-builder/docs/intro_and_overview/business-case"},{"Source":"/app-builder/docs/guides/references/","Destination":"/app-builder/docs/guides/references"},{"Source":"/app-builder/docs/guides","Destination":"/app-builder/docs/guides/"},{"Source":"/app-builder/docs/guides/index","Destination":"/app-builder/docs/guides/"},{"Source":"/app-builder/docs/guides/contribution-guide/","Destination":"/app-builder/docs/guides/contribution-guide"},{"Source":"/app-builder/docs/guides/runtime_guides/using-runtime/","Destination":"/app-builder/docs/guides/runtime_guides/using-runtime"},{"Source":"/app-builder/docs/guides/runtime_guides/using-packages/","Destination":"/app-builder/docs/guides/runtime_guides/using-packages"},{"Source":"/app-builder/docs/guides/runtime_guides/troubleshooting/","Destination":"/app-builder/docs/guides/runtime_guides/troubleshooting"},{"Source":"/app-builder/docs/guides/runtime_guides/throughput-tuning/","Destination":"/app-builder/docs/guides/runtime_guides/throughput-tuning"},{"Source":"/app-builder/docs/guides/runtime_guides/system-settings/","Destination":"/app-builder/docs/guides/runtime_guides/system-settings"},{"Source":"/app-builder/docs/guides/runtime_guides/security-general/","Destination":"/app-builder/docs/guides/runtime_guides/security-general"},{"Source":"/app-builder/docs/guides/runtime_guides/securing-web-actions/","Destination":"/app-builder/docs/guides/runtime_guides/securing-web-actions"},{"Source":"/app-builder/docs/guides/runtime_guides/logging-monitoring/","Destination":"/app-builder/docs/guides/runtime_guides/logging-monitoring"},{"Source":"/app-builder/docs/guides/runtime_guides","Destination":"/app-builder/docs/guides/runtime_guides/"},{"Source":"/app-builder/docs/guides/runtime_guides/index","Destination":"/app-builder/docs/guides/runtime_guides/"},{"Source":"/app-builder/docs/guides/runtime_guides/debugging/","Destination":"/app-builder/docs/guides/runtime_guides/debugging"},{"Source":"/app-builder/docs/guides/runtime_guides/creating-rest-apis/","Destination":"/app-builder/docs/guides/runtime_guides/creating-rest-apis"},{"Source":"/app-builder/docs/guides/runtime_guides/creating-actions/","Destination":"/app-builder/docs/guides/runtime_guides/creating-actions"},{"Source":"/app-builder/docs/guides/runtime_guides/ci-cd-pipeline/","Destination":"/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"},{"Source":"/app-builder/docs/guides/runtime_guides/asynchronous-calls/","Destination":"/app-builder/docs/guides/runtime_guides/asynchronous-calls"},{"Source":"/app-builder/docs/guides/runtime_guides/tools","Destination":"/app-builder/docs/guides/runtime_guides/tools/"},{"Source":"/app-builder/docs/guides/runtime_guides/tools/index","Destination":"/app-builder/docs/guides/runtime_guides/tools/"},{"Source":"/app-builder/docs/guides/runtime_guides/tools/cli-install/","Destination":"/app-builder/docs/guides/runtime_guides/tools/cli-install"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/triggersrules/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/triggersrules"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/runtimes/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/runtimes"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/prepackages/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/prepackages"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/packages/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/packages"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/index","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/feeds/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/feeds"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/configuringproxy/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/configuringproxy"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/cli-use/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/cli-use"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/api-ref/","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/api-ref"},{"Source":"/app-builder/docs/guides/app_builder_guides/telemetry/","Destination":"/app-builder/docs/guides/app_builder_guides/telemetry"},{"Source":"/app-builder/docs/guides/app_builder_guides/optimization/","Destination":"/app-builder/docs/guides/app_builder_guides/optimization"},{"Source":"/app-builder/docs/guides/app_builder_guides","Destination":"/app-builder/docs/guides/app_builder_guides/"},{"Source":"/app-builder/docs/guides/app_builder_guides/index","Destination":"/app-builder/docs/guides/app_builder_guides/"},{"Source":"/app-builder/docs/guides/app_builder_guides/distribution/","Destination":"/app-builder/docs/guides/app_builder_guides/distribution"},{"Source":"/app-builder/docs/guides/app_builder_guides/development/","Destination":"/app-builder/docs/guides/app_builder_guides/development"},{"Source":"/app-builder/docs/guides/app_builder_guides/application-state/","Destination":"/app-builder/docs/guides/app_builder_guides/application-state"},{"Source":"/app-builder/docs/guides/app_builder_guides/security/understanding-authentication/","Destination":"/app-builder/docs/guides/app_builder_guides/security/understanding-authentication"},{"Source":"/app-builder/docs/guides/app_builder_guides/security","Destination":"/app-builder/docs/guides/app_builder_guides/security/"},{"Source":"/app-builder/docs/guides/app_builder_guides/security/index","Destination":"/app-builder/docs/guides/app_builder_guides/security/"},{"Source":"/app-builder/docs/guides/app_builder_guides/extensions/extensions/","Destination":"/app-builder/docs/guides/app_builder_guides/extensions/extensions"},{"Source":"/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide/","Destination":"/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/user/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/user"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/topbar/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/topbar"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/page/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/page"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/modules","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/index","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/modules/"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/runtime/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/runtime"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/modules/","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/modules"},{"Source":"/app-builder/docs/guides/app_builder_guides/events/webhooks/","Destination":"/app-builder/docs/guides/app_builder_guides/events/webhooks"},{"Source":"/app-builder/docs/guides/app_builder_guides/events/custom-events/","Destination":"/app-builder/docs/guides/app_builder_guides/events/custom-events"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers/","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/deployment/","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/deployment"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation/","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps/","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps"},{"Source":"/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration/","Destination":"/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration"},{"Source":"/app-builder/docs/guides/app_builder_guides/configuration/configuration/","Destination":"/app-builder/docs/guides/app_builder_guides/configuration/configuration"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks/","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum/","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview/","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks/","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise/","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud/","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/new-relic/","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/new-relic"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/logging/","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/logging"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics/","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics"},{"Source":"/app-builder/docs/getting_started/first-app/","Destination":"/app-builder/docs/getting_started/first-app"},{"Source":"/app-builder/docs/get_started","Destination":"/app-builder/docs/get_started/"},{"Source":"/app-builder/docs/get_started/index","Destination":"/app-builder/docs/get_started/"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/understanding-runtime/","Destination":"/app-builder/docs/get_started/runtime_getting_started/understanding-runtime"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/setup/","Destination":"/app-builder/docs/get_started/runtime_getting_started/setup"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/resources/","Destination":"/app-builder/docs/get_started/runtime_getting_started/resources"},{"Source":"/app-builder/docs/get_started/runtime_getting_started","Destination":"/app-builder/docs/get_started/runtime_getting_started/"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/index","Destination":"/app-builder/docs/get_started/runtime_getting_started/"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/how-runtime-works/","Destination":"/app-builder/docs/get_started/runtime_getting_started/how-runtime-works"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/entities/","Destination":"/app-builder/docs/get_started/runtime_getting_started/entities"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/deploy/","Destination":"/app-builder/docs/get_started/runtime_getting_started/deploy"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/activations/","Destination":"/app-builder/docs/get_started/runtime_getting_started/activations"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/troubleshoot/","Destination":"/app-builder/docs/get_started/app_builder_get_started/troubleshoot"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/set-up/","Destination":"/app-builder/docs/get_started/app_builder_get_started/set-up"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/publish-app/","Destination":"/app-builder/docs/get_started/app_builder_get_started/publish-app"},{"Source":"/app-builder/docs/get_started/app_builder_get_started","Destination":"/app-builder/docs/get_started/app_builder_get_started/"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/index","Destination":"/app-builder/docs/get_started/app_builder_get_started/"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/first-app/","Destination":"/app-builder/docs/get_started/app_builder_get_started/first-app"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/app-builder-intro/","Destination":"/app-builder/docs/get_started/app_builder_get_started/app-builder-intro"},{"Source":"/app-builder/docs/resources/blog-articles","Destination":"/app-builder/docs/resources/blog-articles"},{"Source":"/app-builder/docs/resources/transclusions/_requirements","Destination":"/app-builder/docs/resources/transclusions/requirements"},{"Source":"/app-builder/docs/intro_and_overview/what-is-app-builder","Destination":"/app-builder/docs/intro_and_overview/what-is-app-builder"},{"Source":"/app-builder/docs/intro_and_overview/business-case","Destination":"/app-builder/docs/intro_and_overview/business-case"},{"Source":"/app-builder/docs/guides/contribution-guide","Destination":"/app-builder/docs/guides/contribution-guide"},{"Source":"/app-builder/docs/guides/runtime_guides/using-runtime","Destination":"/app-builder/docs/guides/runtime_guides/using-runtime"},{"Source":"/app-builder/docs/guides/runtime_guides/using-packages","Destination":"/app-builder/docs/guides/runtime_guides/using-packages"},{"Source":"/app-builder/docs/guides/runtime_guides/throughput-tuning","Destination":"/app-builder/docs/guides/runtime_guides/throughput-tuning"},{"Source":"/app-builder/docs/guides/runtime_guides/system-settings","Destination":"/app-builder/docs/guides/runtime_guides/system-settings"},{"Source":"/app-builder/docs/guides/runtime_guides/security-general","Destination":"/app-builder/docs/guides/runtime_guides/security-general"},{"Source":"/app-builder/docs/guides/runtime_guides/securing-web-actions","Destination":"/app-builder/docs/guides/runtime_guides/securing-web-actions"},{"Source":"/app-builder/docs/guides/runtime_guides/logging-monitoring","Destination":"/app-builder/docs/guides/runtime_guides/logging-monitoring"},{"Source":"/app-builder/docs/guides/runtime_guides/creating-rest-apis","Destination":"/app-builder/docs/guides/runtime_guides/creating-rest-apis"},{"Source":"/app-builder/docs/guides/runtime_guides/creating-actions","Destination":"/app-builder/docs/guides/runtime_guides/creating-actions"},{"Source":"/app-builder/docs/guides/runtime_guides/ci-cd_pipeline","Destination":"/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"},{"Source":"/app-builder/docs/guides/runtime_guides/asynchronous-calls","Destination":"/app-builder/docs/guides/runtime_guides/asynchronous-calls"},{"Source":"/app-builder/docs/guides/runtime_guides/tools/cli-install","Destination":"/app-builder/docs/guides/runtime_guides/tools/cli-install"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/cli-use","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/cli-use"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/api-ref","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/api-ref"},{"Source":"/app-builder/docs/guides/app_builder_guides/application-state","Destination":"/app-builder/docs/guides/app_builder_guides/application-state"},{"Source":"/app-builder/docs/guides/app_builder_guides/security/understanding-authentication","Destination":"/app-builder/docs/guides/app_builder_guides/security/understanding-authentication"},{"Source":"/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide","Destination":"/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref"},{"Source":"/app-builder/docs/guides/app_builder_guides/events/custom-events","Destination":"/app-builder/docs/guides/app_builder_guides/events/custom-events"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps"},{"Source":"/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration","Destination":"/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/new-relic","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/new-relic"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics"},{"Source":"/app-builder/docs/getting_started/first_app","Destination":"/app-builder/docs/getting_started/first-app"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/understanding-runtime","Destination":"/app-builder/docs/get_started/runtime_getting_started/understanding-runtime"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/how-runtime-works","Destination":"/app-builder/docs/get_started/runtime_getting_started/how-runtime-works"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/set-up","Destination":"/app-builder/docs/get_started/app_builder_get_started/set-up"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/publish-app","Destination":"/app-builder/docs/get_started/app_builder_get_started/publish-app"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/first-app","Destination":"/app-builder/docs/get_started/app_builder_get_started/first-app"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/app-builder-intro","Destination":"/app-builder/docs/get_started/app_builder_get_started/app-builder-intro"},{"Source":"/app-builder/docs/intro_and_overview/what-is-app-builder","Destination":"/app-builder/docs/intro_and_overview/what-is-app-builder"},{"Source":"/app-builder/docs/intro_and_overview/business-case","Destination":"/app-builder/docs/intro_and_overview/business-case"},{"Source":"/app-builder/docs/intro_and_overview/what_is_app_builder","Destination":"/app-builder/docs/intro_and_overview/what-is-app-builder"},{"Source":"/app-builder/docs/intro_and_overview/business_case","Destination":"/app-builder/docs/intro_and_overview/business-case"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/set_up","Destination":"/app-builder/docs/get_started/app_builder_get_started/set-up"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/publish_app","Destination":"/app-builder/docs/get_started/app_builder_get_started/publish-app"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/first_app","Destination":"/app-builder/docs/get_started/app_builder_get_started/first-app"},{"Source":"/app-builder/docs/get_started/app_builder_get_started/app_builder_intro","Destination":"/app-builder/docs/get_started/app_builder_get_started/app-builder-intro"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/understanding_runtime","Destination":"/app-builder/docs/get_started/runtime_getting_started/understanding-runtime"},{"Source":"/app-builder/docs/get_started/runtime_getting_started/how_runtime_works","Destination":"/app-builder/docs/get_started/runtime_getting_started/how-runtime-works"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/using_sdks","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/using-sdks"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction_to_react_spectrum","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/introduction-to-react-spectrum"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture_overview","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/architecture-overview"},{"Source":"/app-builder/docs/guides/app_builder_guides/architecture_overview/app_hooks","Destination":"/app-builder/docs/guides/app_builder_guides/architecture_overview/app-hooks"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_state","Destination":"/app-builder/docs/guides/app_builder_guides/application-state"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk_enterprise","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-enterprise"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk_cloud","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/splunk-cloud"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/new_relic","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/new-relic"},{"Source":"/app-builder/docs/guides/app_builder_guides/application_logging/azure_log_analytics","Destination":"/app-builder/docs/guides/app_builder_guides/application_logging/azure-log-analytics"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/setting_response_headers","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/setting-response-headers"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/credential_rotation","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/credential-rotation"},{"Source":"/app-builder/docs/guides/app_builder_guides/deployment/cicd_for_app_builder_apps","Destination":"/app-builder/docs/guides/app_builder_guides/deployment/cicd-for-app-builder-apps"},{"Source":"/app-builder/docs/guides/app_builder_guides/configuration/webpack_configuration","Destination":"/app-builder/docs/guides/app_builder_guides/configuration/webpack-configuration"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/aec_integration","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/aec-integration"},{"Source":"/app-builder/docs/guides/app_builder_guides/events/custom_events","Destination":"/app-builder/docs/guides/app_builder_guides/events/custom-events"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapiproperties","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapiproperties"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.topbarapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-topbarapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.solution","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-solution"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.helpcenterfeedbackconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-helpcenterfeedbackconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.externalfeedbackconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-externalfeedbackconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.customsearchconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customsearchconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.customfeedbackconfig","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-customfeedbackconfig"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar.callback","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/topbar-callback"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.pageapiproperties","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapiproperties"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.pageapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-pageapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.objectwithpath","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithpath"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page.objectwithhref","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/page-objectwithhref"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userinfo","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userinfo"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user.userapi","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/interfaces/user-userapi"},{"Source":"/app-builder/docs/guides/app_builder_guides/security/understanding_authentication","Destination":"/app-builder/docs/guides/app_builder_guides/security/understanding-authentication"},{"Source":"/app-builder/docs/guides/app_builder_guides/extensions/extension_migration_guide","Destination":"/app-builder/docs/guides/app_builder_guides/extensions/extension-migration-guide"},{"Source":"/app-builder/docs/guides/app_builder_guides/exc_app/migrate_app_to_exp_cloud_spa","Destination":"/app-builder/docs/guides/app_builder_guides/exc_app/migrate-app-to-exp-cloud-spa"},{"Source":"/app-builder/docs/guides/contribution-guide","Destination":"/app-builder/docs/guides/contribution-guide"},{"Source":"/app-builder/docs/guides/runtime_guides/logging_monitoring","Destination":"/app-builder/docs/guides/runtime_guides/logging-monitoring"},{"Source":"/app-builder/docs/guides/runtime_guides/creating_rest_apis","Destination":"/app-builder/docs/guides/runtime_guides/creating-rest-apis"},{"Source":"/app-builder/docs/guides/runtime_guides/creating_actions","Destination":"/app-builder/docs/guides/runtime_guides/creating-actions"},{"Source":"/app-builder/docs/guides/runtime_guides/ci-cd-pipeline","Destination":"/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"},{"Source":"/app-builder/docs/guides/runtime_guides/asynchronous_calls","Destination":"/app-builder/docs/guides/runtime_guides/asynchronous-calls"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/api_ref","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/api-ref"},{"Source":"/app-builder/docs/guides/runtime_guides/ci_cd_pipeline","Destination":"/app-builder/docs/guides/runtime_guides/ci-cd-pipeline"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/wsk_use","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/wsk-use"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/sequences_compositions","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/sequences-compositions"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/multiple_regions","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/multiple-regions"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/environment_variables","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/environment-variables"},{"Source":"/app-builder/docs/guides/runtime_guides/reference_docs/cli_use","Destination":"/app-builder/docs/guides/runtime_guides/reference_docs/cli-use"},{"Source":"/app-builder/docs/guides/contribution_guide","Destination":"/app-builder/docs/guides/contribution-guide"},{"Source":"/app-builder/docs/guides/runtime_guides/using_runtime","Destination":"/app-builder/docs/guides/runtime_guides/using-runtime"},{"Source":"/app-builder/docs/guides/runtime_guides/using_packages","Destination":"/app-builder/docs/guides/runtime_guides/using-packages"},{"Source":"/app-builder/docs/guides/runtime_guides/throughput_tuning","Destination":"/app-builder/docs/guides/runtime_guides/throughput-tuning"},{"Source":"/app-builder/docs/guides/runtime_guides/system_settings","Destination":"/app-builder/docs/guides/runtime_guides/system-settings"},{"Source":"/app-builder/docs/guides/runtime_guides/security_general","Destination":"/app-builder/docs/guides/runtime_guides/security-general"},{"Source":"/app-builder/docs/guides/runtime_guides/securing_web_actions","Destination":"/app-builder/docs/guides/runtime_guides/securing-web-actions"},{"Source":"/app-builder/docs/guides/runtime_guides/tools/cli_install","Destination":"/app-builder/docs/guides/runtime_guides/tools/cli-install"},{"Source":"/app-builder/docs/resources/blog_articles","Destination":"/app-builder/docs/resources/blog-articles"},{"Source":"/app-builder/docs/resources/videos/overview/e2e_user_journey","Destination":"/app-builder/docs/resources/videos/overview/e2-e-user-journey"},{"Source":"/app-builder/docs/resources/videos/exploring/react_spectrum","Destination":"/app-builder/docs/resources/videos/exploring/react-spectrum"},{"Source":"/app-builder/docs/resources/videos/exploring/projects_and_workspaces","Destination":"/app-builder/docs/resources/videos/exploring/projects-and-workspaces"},{"Source":"/app-builder/docs/resources/videos/exploring/custom_events","Destination":"/app-builder/docs/resources/videos/exploring/custom-events"},{"Source":"/app-builder/docs/resources/videos/exploring/ci_cd","Destination":"/app-builder/docs/resources/videos/exploring/ci-cd"}],":type":"sheet"} \ No newline at end of file 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 fcc3b70c1..edb00102a 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/lesson1.md +++ b/src/pages/resources/asset-compute-worker-ps-api/lesson1.md @@ -11,13 +11,13 @@ title: 'Lesson 1: Create an App Builder app from the Asset Compute template' # Lesson 1: Create an App Builder App from the Asset Compute Template -To begin this Code Lab, you should have [a project already created from App Builder Template in Adobe Developer Console](../../get_started/app_builder_get_started/first_app.md#2-create-a-new-project-on-developer-console). Please add the `Asset Compute` and `Adobe Photoshop APIs (Trial)` services to the workspace that you are using for the Code Lab. +To begin this Code Lab, you should have [a project already created from App Builder Template in Adobe Developer Console](../../get_started/app_builder_get_started/first-app.md#2-create-a-new-project-on-developer-console). Please add the `Asset Compute` and `Adobe Photoshop APIs (Trial)` services to the workspace that you are using for the Code Lab. ![Console Workspace](assets/console-workspace.png) Make sure to have the Adobe I/O CLI installed locally. In your terminal, execute the command `aio app init `. -If you have not logged in already, this command prompts a browser asking you to sign into the Adobe Developer Console with your Adobe ID. See [here](../../get_started/app_builder_get_started/first_app.md#3-sign-in-from-the-CLI) for more information on signing in from the CLI. +If you have not logged in already, this command prompts a browser asking you to sign into the Adobe Developer Console with your Adobe ID. See [here](../../get_started/app_builder_get_started/first-app.md#3-sign-in-from-the-CLI) for more information on signing in from the CLI. After logging in, follow the prompts in the CLI and select the Organization, Project, and Workspace to use for the application. Choose the project and workspace you created when you set up your environment. When prompted `Which extension point(s) do you wish to implement? `, make sure to select `DX Asset Compute Worker`: 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 48150da3f..356f71698 100644 --- a/src/pages/resources/asset-compute-worker-ps-api/requirements.md +++ b/src/pages/resources/asset-compute-worker-ps-api/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/barcode-reader/requirements.md b/src/pages/resources/barcode-reader/requirements.md index 1f237758a..35af9d9b3 100644 --- a/src/pages/resources/barcode-reader/requirements.md +++ b/src/pages/resources/barcode-reader/requirements.md @@ -7,6 +7,7 @@ keywords: title: 'Requirements' --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' + diff --git a/src/pages/resources/blog_articles.md b/src/pages/resources/blog-articles.md similarity index 100% rename from src/pages/resources/blog_articles.md rename to src/pages/resources/blog-articles.md diff --git a/src/pages/resources/ci-cd/index.md b/src/pages/resources/ci-cd/index.md index 3ec62bf7a..b89189f6b 100644 --- a/src/pages/resources/ci-cd/index.md +++ b/src/pages/resources/ci-cd/index.md @@ -18,7 +18,7 @@ App Builder allows you to manage multiple environments called workspaces. Each w * Content Delivery Network (CDN) delegation and sub-domain provisioned on adobeio-static.net * Related credentials and secrets (API Key, access token, Runtime namespace credentials...) -We recommend reviewing the [App Builder CI/CD documentation](../../guides/app_builder_guides/deployment/cicd_for_app_builder_apps.md) to learn more about the architectural details. +We recommend reviewing the [App Builder CI/CD documentation](../../guides/app_builder_guides/deployment/cicd-for-app-builder-apps.md) to learn more about the architectural details. This Code Lab will show you how to create a CI/CD worflow for a stage and production environment using [Github actions](https://github.com/features/actions) within an App Builder App. diff --git a/src/pages/resources/ci-cd/requirements.md b/src/pages/resources/ci-cd/requirements.md index 2d7ee7022..4cfc87425 100644 --- a/src/pages/resources/ci-cd/requirements.md +++ b/src/pages/resources/ci-cd/requirements.md @@ -7,7 +7,7 @@ keywords: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/cron-jobs/index.md b/src/pages/resources/cron-jobs/index.md index dbb47ae97..7b0e98947 100644 --- a/src/pages/resources/cron-jobs/index.md +++ b/src/pages/resources/cron-jobs/index.md @@ -17,4 +17,4 @@ This Code Lab will guide you through creating cron jobs in an App Builder applic App Builder simplifies the process of building Cloud Native Applications that use Adobe I/O Runtime, which is based on OpenWhisk and uses its architecture to provide function-as-a-service (FaaS). -For [headless applications](../../guides/app_builder_guides/architecture_overview/architecture_overview.md#headless-applications), you may need to set up recurring jobs or tasks, such as invoking a data importing action every hour. To achieve that, you could use [OpenWhisk Alarms Package](https://github.com/apache/openwhisk-package-alarms) to fire a trigger at a specified frequency. +For [headless applications](../../guides/app_builder_guides/architecture_overview/architecture-overview.md#headless-applications), you may need to set up recurring jobs or tasks, such as invoking a data importing action every hour. To achieve that, you could use [OpenWhisk Alarms Package](https://github.com/apache/openwhisk-package-alarms) to fire a trigger at a specified frequency. diff --git a/src/pages/resources/cron-jobs/lesson1.md b/src/pages/resources/cron-jobs/lesson1.md index 9538e9c3d..fde34c267 100644 --- a/src/pages/resources/cron-jobs/lesson1.md +++ b/src/pages/resources/cron-jobs/lesson1.md @@ -12,7 +12,7 @@ title: 'Lesson 1: Bootstrap a Headless App' # Lesson 1: Bootstrap a Headless App First, you need a new headless app created with AIO CLI. This app needs only a simple action to test the cron job, so all other components have been deselected. -Follow this, from [Creating your First App Builder Application](../../get_started/app_builder_get_started/first_app.md) +Follow this, from [Creating your First App Builder Application](../../get_started/app_builder_get_started/first-app.md) ![app-init](assets/app-init.png) diff --git a/src/pages/resources/cron-jobs/requirements.md b/src/pages/resources/cron-jobs/requirements.md index 01928681c..4017e1681 100644 --- a/src/pages/resources/cron-jobs/requirements.md +++ b/src/pages/resources/cron-jobs/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/custom-asset-compute-worker/index.md b/src/pages/resources/custom-asset-compute-worker/index.md index edad16208..8e0e852c5 100644 --- a/src/pages/resources/custom-asset-compute-worker/index.md +++ b/src/pages/resources/custom-asset-compute-worker/index.md @@ -13,7 +13,8 @@ contributors: # Build Custom Asset Compute Worker ![front-banner](assets/hero-banner.jpg) -Hero banner created by starline - www.freepik.com + +[Hero banner created by starline - www.freepik.com](https://www.freepik.com/vectors/banner) > Note: This Code Lab is based on the [How to generate intelligent renditions with AEM as a Cloud](https://experienceleaguecommunities.adobe.com/t5/adobe-experience-manager/how-to-generate-intelligent-renditions-with-aem-as-a-cloud/m-p/379588) blog post. diff --git a/src/pages/resources/custom-asset-compute-worker/requirements.md b/src/pages/resources/custom-asset-compute-worker/requirements.md index ef45d30fd..5a0962d1b 100644 --- a/src/pages/resources/custom-asset-compute-worker/requirements.md +++ b/src/pages/resources/custom-asset-compute-worker/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/customer-dashboard/lesson2.md b/src/pages/resources/customer-dashboard/lesson2.md index 5081e11d3..8f040ff76 100644 --- a/src/pages/resources/customer-dashboard/lesson2.md +++ b/src/pages/resources/customer-dashboard/lesson2.md @@ -47,9 +47,9 @@ runtimeManifest: Your app currently has only one action, `get-profiles`: * Source code is at `src/dx-excshell-1/actions/get-profiles/index.js` -* It is a [web action](../../guides/runtime_guides/creating_actions.md) +* It is a [web action](../../guides/runtime_guides/creating-actions.md) * The action will be run in the `nodejs:18` [runtime container on I/O Runtime](../../guides/runtime_guides/reference_docs/runtimes.md#node-js-v18-14-2) -* It has some [default parameters](../../guides/runtime_guides/creating_actions.md#working-with-parameters) such as `LOG_LEVEL`, `tenant`, `apiKey`, which are automatically available in the `params` object of the action without passing it to the action for every invocation. The `final` annotation set as `true` reveals that those parameters are immutable. +* It has some [default parameters](../../guides/runtime_guides/creating-actions.md#working-with-parameters) such as `LOG_LEVEL`, `tenant`, `apiKey`, which are automatically available in the `params` object of the action without passing it to the action for every invocation. The `final` annotation set as `true` reveals that those parameters are immutable. * Setting the `require-adobe-auth` annotation as `true` enables this action to be protected by the Adobe IMS user token in the request header. Without it, the action will return a `401 Unauthorized` error. Now let's take a deeper look at the action's source code: diff --git a/src/pages/resources/customer-dashboard/requirements.md b/src/pages/resources/customer-dashboard/requirements.md index 4bb87b0c4..5d69f26b9 100644 --- a/src/pages/resources/customer-dashboard/requirements.md +++ b/src/pages/resources/customer-dashboard/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/debugging/requirements.md b/src/pages/resources/debugging/requirements.md index 16d1edcbf..1b9585e7a 100644 --- a/src/pages/resources/debugging/requirements.md +++ b/src/pages/resources/debugging/requirements.md @@ -9,10 +9,10 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' ## Code Lab Environment -The optional [Visual Studio Code](../../get_started/app_builder_get_started/set_up.md#optional-tool) IDE is required for this lab. Please make sure it is installed. +The optional [Visual Studio Code](../../get_started/app_builder_get_started/set-up.md#optional-tool) IDE is required for this lab. Please make sure it is installed. diff --git a/src/pages/resources/event-driven/lesson1.md b/src/pages/resources/event-driven/lesson1.md index cd5f25d88..31e7e6224 100644 --- a/src/pages/resources/event-driven/lesson1.md +++ b/src/pages/resources/event-driven/lesson1.md @@ -37,7 +37,7 @@ To use the custom events CLI plugin, you need this information from the console ## Initialize an App Builder app using a CLI template -To initialize an App Builder app, let's use the `init` command from the CLI. For more information, please refer to [Creating your First App Builder App](../../get_started/app_builder_get_started/first_app.md). +To initialize an App Builder app, let's use the `init` command from the CLI. For more information, please refer to [Creating your First App Builder App](../../get_started/app_builder_get_started/first-app.md). ```bash aio app init --no-extensions @@ -53,6 +53,6 @@ You will be presented with several options: Once you have named your action, you have created your App Builder template and can use it to start your app. -For this lab, you will use this generic template to create a web page. If this is your first time using App Builder, please follow the instructions at [Creating your First App Builder App](../../get_started/app_builder_get_started/first_app.md). +For this lab, you will use this generic template to create a web page. If this is your first time using App Builder, please follow the instructions at [Creating your First App Builder App](../../get_started/app_builder_get_started/first-app.md). In the next lesson, we will show how to use the custom events plugin to register this app as event provider and click the `invoke` button to fire an event. The event will be consumed by Journaling API, webhook URL, and runtime action. diff --git a/src/pages/resources/event-driven/lesson3.md b/src/pages/resources/event-driven/lesson3.md index 12e5ad3a5..10973d8aa 100644 --- a/src/pages/resources/event-driven/lesson3.md +++ b/src/pages/resources/event-driven/lesson3.md @@ -57,9 +57,9 @@ application: In the template code: * Source code is at `actions/publish-events/index.js` -* It is a [web action](../../guides/runtime_guides/creating_actions.md#invoking-web-actions) +* It is a [web action](../../guides/runtime_guides/creating-actions.md#invoking-web-actions) * The action will be run in the `nodejs:18` [runtime container on I/O Runtime](../../guides/runtime_guides/reference_docs/runtimes.md#nodejs-v18142) -* It has some [default parameters](../../guides/runtime_guides/creating_actions.md#working-with-parameters) such as `LOG_LEVEL`, and those you can pass in your `params` like `apiKey`, `provideId` and `eventCode`from `manifest.yml` +* It has some [default parameters](../../guides/runtime_guides/creating-actions.md#working-with-parameters) such as `LOG_LEVEL`, and those you can pass in your `params` like `apiKey`, `provideId` and `eventCode`from `manifest.yml` ```javascript const { Core, Events } = require('@adobe/aio-sdk') diff --git a/src/pages/resources/event-driven/requirements.md b/src/pages/resources/event-driven/requirements.md index 20b4986b9..45e8107d5 100644 --- a/src/pages/resources/event-driven/requirements.md +++ b/src/pages/resources/event-driven/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/events-runtime/lesson2.md b/src/pages/resources/events-runtime/lesson2.md index d3a39bb4c..568826cf9 100644 --- a/src/pages/resources/events-runtime/lesson2.md +++ b/src/pages/resources/events-runtime/lesson2.md @@ -30,7 +30,7 @@ You can use this Activation ID in the aio cli to trace the error that occurred i `aio rt activation logs` - +[failed_activation_id] You may now get activation IDs for two types of failed activations: diff --git a/src/pages/resources/events-runtime/requirements.md b/src/pages/resources/events-runtime/requirements.md index 306dd34e0..da461bf55 100644 --- a/src/pages/resources/events-runtime/requirements.md +++ b/src/pages/resources/events-runtime/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/journaling-events/index.md b/src/pages/resources/journaling-events/index.md index 7bfb202ef..b3dee690c 100644 --- a/src/pages/resources/journaling-events/index.md +++ b/src/pages/resources/journaling-events/index.md @@ -33,7 +33,7 @@ This Code Lab provides an end-to-end solution that demonstrates how to use the J - **Event consumer**, the most important demonstration in this Code Lab. We will create another App Builder headless app to create cron jobs with alarms, and set up recurring jobs to pull from the Journaling API every x mins and write into App Builder storage. Event provider and event consumer both need to be deployed as App Builder apps under different namespaces to endsure end-to-end workflow. -If you don't have them already, create two projects at Console following the steps detailed in [Creating your First App Builder Application](../../get_started/app_builder_get_started/first_app.md). +If you don't have them already, create two projects at Console following the steps detailed in [Creating your First App Builder Application](../../get_started/app_builder_get_started/first-app.md). When they are successfully set up, you should be able to see your event consumer periodically pull events from the Journaling API and write them into storage. For your convenience, there is a complete solution of this Code Lab [here](https://github.com/AdobeDocs/adobeio-samples-journaling-events). diff --git a/src/pages/resources/journaling-events/requirements.md b/src/pages/resources/journaling-events/requirements.md index d352627b6..7bcb0b1a3 100644 --- a/src/pages/resources/journaling-events/requirements.md +++ b/src/pages/resources/journaling-events/requirements.md @@ -9,7 +9,7 @@ contributors: title: Codelab Environment Requirements --- -import Requirements from '../transclusions/_requirements.md' +import Requirements from '../transclusions/requirements.md' diff --git a/src/pages/resources/sample_apps/code_snippets/index.md b/src/pages/resources/sample_apps/code_snippets/index.md index b35f7b79d..15551f8bf 100644 --- a/src/pages/resources/sample_apps/code_snippets/index.md +++ b/src/pages/resources/sample_apps/code_snippets/index.md @@ -9,7 +9,7 @@ title: App Builder Code Snippets - Caching HTTP responses # Caching HTTP responses -Demonstrates how to cache the response of an action at Gateway level. To test this functionality, make sure that the Cache-Control header in your HTTP request is not set to `no-cache`, the default if you use Postman or your browser's developer tools. More information is available [here](../../../guides/runtime_guides/throughput_tuning.md#caching-responses). +Demonstrates how to cache the response of an action at Gateway level. To test this functionality, make sure that the Cache-Control header in your HTTP request is not set to `no-cache`, the default if you use Postman or your browser's developer tools. More information is available [here](../../../guides/runtime_guides/throughput-tuning.md#caching-responses). ```javascript const { Core } = require('@adobe/aio-sdk') diff --git a/src/pages/resources/sample_apps/demo.md b/src/pages/resources/sample_apps/demo.md index e1566f9e5..419ad7851 100644 --- a/src/pages/resources/sample_apps/demo.md +++ b/src/pages/resources/sample_apps/demo.md @@ -1,13 +1,12 @@ --- - keywords: - - Adobe I/O -- Extensibility -- API Documentation -- Developer Tooling + - Extensibility + - API Documentation + - Developer Tooling title: App Builder Demo App -frameSrc: https://53444-stocksearch-stage.adobeio-static.net/index.html -frameHeight: 500px +--- + +