diff --git a/.github/workflows/ai-deploy-request.yml b/.github/workflows/ai-deploy-request.yml
new file mode 100644
index 000000000..4ae188a70
--- /dev/null
+++ b/.github/workflows/ai-deploy-request.yml
@@ -0,0 +1,45 @@
+---
+###########################
+###########################
+## Deployment AI generation testing ##
+###########################
+###########################
+
+name: Hackathon Deployment Request
+
+######################################################
+# Start the job on a "deployment" to hackathon-test or other branch #
+######################################################
+
+on:
+ workflow_dispatch:
+ inputs:
+ target_branch:
+ description: "Target branch to send PR to (e.g., main, stage, etc)"
+ type: string
+ required: false
+ default: "hackathon-test"
+
+###############
+# Set the Job #
+###############
+
+jobs:
+ ai-metadata-update:
+ name: AI Metadata Update on Deployment
+ uses: AdobeDocs/adp-devsite-workflow/.github/workflows/ai-deploy-metadata.yml@app-builder-test
+ with:
+ FILE_NAME: "all_pages_content.txt"
+ secrets:
+ AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
+ AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
+
+ lint:
+ name: Lint
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Lint
+ run: npx --yes github:AdobeDocs/adp-devsite-utils#add-lint-check runLint -v
diff --git a/.github/workflows/ai-pr-request.yml b/.github/workflows/ai-pr-request.yml
new file mode 100644
index 000000000..e738dea27
--- /dev/null
+++ b/.github/workflows/ai-pr-request.yml
@@ -0,0 +1,40 @@
+---
+###########################
+###########################
+## Pull request testing ##
+###########################
+###########################
+name: Hackathon 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 hackathon-test branch #
+######################################################
+on:
+ pull_request:
+ branches: [hackathon-test]
+ paths:
+ - 'src/pages/**'
+
+###############
+# Set the Job #
+###############
+jobs:
+ call_reusable_workflow:
+ name: Generate AI Metadata
+ # Skip if PR title starts with "[AI PR] Metadata Update" or branch name starts with "ai-metadata"
+ if: >-
+ !startsWith(github.event.pull_request.title, '[AI PR] Metadata Update') ||
+ !startsWith(github.event.pull_request.head.ref, 'ai-metadata')
+ uses: AdobeDocs/adp-devsite-workflow/.github/workflows/ai-pr-request-metadata.yml@app-builder-test
+ with:
+ PR_ID: ${{ github.event.pull_request.number }}
+ FILE_NAME: "pr_content.txt"
+ secrets:
+ AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
+ AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
diff --git a/src/pages/get_started/adobe-express (1).svg b/src/pages/get_started/adobe-express (1).svg
new file mode 100644
index 000000000..b7f4834d4
--- /dev/null
+++ b/src/pages/get_started/adobe-express (1).svg
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/src/pages/get_started/random.json b/src/pages/get_started/random.json
new file mode 100644
index 000000000..190cbf3ed
--- /dev/null
+++ b/src/pages/get_started/random.json
@@ -0,0 +1,385 @@
+{
+ "total": 1,
+ "offset": 0,
+ "limit": 1,
+ "data": [
+ {
+ "SignIn": {
+ "title": "Get credentials",
+ "paragraph": "Create unique credentials that you will use to call multiple APIs from your application.",
+ "buttonText": "Sign in to create credentials"
+ },
+ "Form": {
+ "title": "Get credentials",
+ "paragraph": "Create unique credentials that you will use to call multiple APIs from your application.",
+ "className": "formClass",
+ "components": {
+ "CredentialName": {
+ "label": "Credential name",
+ "description": "Credential name must be unique and between 6 and 45 characters long and must not contain any special characters. A project will be automatically created with the same name in Adobe Developer Console.",
+ "range": "45"
+ },
+ "AllowedOrigins": {
+ "label": "Allowed domains (up to 5)",
+ "contextHelp": true,
+ "contextHelpHeading": "What are allowed domains",
+ "placeholder": "Example: www.domain-1.com, www.domain-2.com, *.my-domain.com, localhost:5000",
+ "contextHelpText": "To prevent a third party from using your client ID on their own website, the use of your client ID is restricted to a list of domains that you specifically authorize.",
+ "contextHelpLink": "https://www.adobe.com/",
+ "contextHelpLabelForLink": "Learn more in our documentation",
+ "description": "Use wildcards to enter multiple subdomains (*.my-domain.com) or commas to separate multiple domains (www.domain-1.com, www.domain-2.com). During local development, you can include ports greater than 1023 with localhost (e.g. localhost:3000). Standard ports (80, 443) will be used for non-localhost domains."
+ },
+ "Products": {
+ "label": "Included products and services",
+ "items": [
+ {
+ "Product": {
+ "label": "Adobe Express Embed SDK",
+ "icon": "creativeCloud"
+ }
+ }
+ ]
+ },
+ "Downloads": {
+ "label": "Download a personalized code sample",
+ "contextHelp": true,
+ "contextHelpHeading": "Select Language",
+ "items": [
+ {
+ "Download": {
+ "title": "JavaScript",
+ "href": "https://acrobatservices.adobe.com/dc-integration-creation-app-cdn/8bab684/files/samples_q3_2023/PROD/dc-pdf-services-sdk-java-samples.zip"
+ }
+ },
+ {
+ "Download": {
+ "title": ".Net",
+ "href": "/Net.zip"
+ }
+ },
+ {
+ "Download": {
+ "title": "Python",
+ "href": "https://python.zip/"
+ }
+ },
+ {
+ "Download": {
+ "title": "Ruby",
+ "href": "https://www.ruby.zip/"
+ }
+ }
+ ]
+ },
+ "AdobeDeveloperConsole": {
+ "label": "By checking this box, you agree to",
+ "linkText": "Adobe Developer Terms of Use",
+ "href": "https://wwwimages2.adobe.com/content/dam/cc/en/legal/servicetou/Adobe-Developer-Additional-Terms_en-US_20230822.pdf"
+ },
+ "Side": {
+ "content": {
+ "style": {
+ "display": "flex",
+ "gap": "16px",
+ "flexDirection": "column"
+ },
+ "elements": [
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeS side-header",
+ "text": "API key credential"
+ },
+ {
+ "type": "p",
+ "className": "spectrum-Body spectrum-Body--sizeM",
+ "text": "Submitting this form creates an API Key credential. The API key credential identifies your application to Adobe servers and can help accept or reject requests originating from certain domains."
+ },
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeS side-header",
+ "text": "Learn more"
+ },
+ {
+ "type": "a",
+ "className": "side-documentation",
+ "style": {
+ "color": "#0265DC"
+ },
+ "href": "https://some_help_link",
+ "text": "Authentication documentation"
+ },
+ {
+ "type": "a",
+ "className": "side-documentation",
+ "style": {
+ "color": "#0265DC"
+ },
+ "href": "https://some_help_link",
+ "text": "Express Embed SDK documentation"
+ }
+ ]
+ }
+ }
+ }
+ },
+ "UnknownError": {
+ "helpLink": "https://some_help_link",
+ "helpLinkText": "Get Help",
+ "className": "unKnownError"
+ },
+ "Card": {
+ "title": "Your credential is ready to use",
+ "paragraph": "Check the downloads section of your browser for the ZIP file, or find it where you save downloads on your machine.",
+ "className": "card_developer_console",
+ "nextStepsLabel": "Next steps",
+ "nextStepsHref": "/credentials/nextsteps",
+ "isCollapsable": "true",
+ "components": {
+ "Side": {
+ "content": {
+ "style": {
+ "display": "flex",
+ "gap": "16px",
+ "flexDirection": "column"
+ },
+ "elements": [
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeS side-header",
+ "text": "API key credential"
+ },
+ {
+ "type": "p",
+ "className": "spectrum-Body spectrum-Body--sizeM",
+ "text": "Submitting this form creates an API Key credential. The API key credential identifies your application to Adobe servers and can help accept or reject requests originating from certain domains."
+ },
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeS side-header",
+ "text": "Learn more"
+ },
+ {
+ "type": "a",
+ "className": "side-documentation",
+ "style": {
+ "color": "#0265DC"
+ },
+ "href": "https://some_help_link",
+ "text": "Authentication documentation"
+ },
+ {
+ "type": "a",
+ "className": "side-documentation",
+ "style": {
+ "color": "#0265DC"
+ },
+ "href": "https://some_help_link",
+ "text": "Express Embed SDK documentation"
+ }
+ ]
+ }
+ },
+ "Products": {
+ "label": "Included products and services",
+ "items": [
+ {
+ "Product": {
+ "label": "Adobe Express Embed SDK",
+ "icon": "creativeCloud"
+ }
+ }
+ ]
+ },
+ "DevConsoleLink": {
+ "heading": "Developer Console Project"
+ },
+ "CredentialDetails": {
+ "heading": "Credential details",
+ "orderBy": "APIKey,OrganizationName,ImsOrgID,AllowedOrigins",
+ "components": {
+ "APIKey": {
+ "heading": "API Key"
+ },
+ "AllowedOrigins": {
+ "heading": "Allowed domains"
+ },
+ "OrganizationName": {
+ "heading": "Organization"
+ },
+ "ImsOrgID": {
+ "heading": "IMS Organization ID"
+ }
+ }
+ }
+ }
+ },
+ "Return": {
+ "title": "Previously created projects",
+ "paragraph": "Select a project and access your existing credentials for Firefly - Firefly and Creative Cloud Automation.",
+ "className": "card_developer_console",
+ "nextStepsLabel": "Next steps",
+ "nextStepsHref": "/credentials/nextsteps",
+ "isCollapsable": "true",
+ "components": {
+ "Side": {
+ "components": {
+ "Custom": {
+ "content": {
+ "style": {
+ "display": "flex",
+ "gap": "15px",
+ "flexDirection": "column",
+ "width": "100%"
+ },
+ "elements": [
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeM",
+ "text": "Welcome back"
+ },
+ {
+ "type": "p",
+ "className": "spectrum-Body spectrum-Body--sizeM",
+ "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation."
+ }
+ ]
+ }
+ },
+ "NewCredential": {
+ "heading": "Need another credential?",
+ "buttonLabel": "Create new credential"
+ }
+ }
+ },
+ "CredentialDetails": {
+ "heading": "Credential details",
+ "orderBy": "APIKey,OrganizationName,ImsOrgID,AllowedOrigins",
+ "components": {
+ "APIKey": {
+ "heading": "API Key"
+ },
+ "AllowedOrigins": {
+ "heading": "Allowed domains"
+ },
+ "OrganizationName": {
+ "heading": "Organization"
+ },
+ "ImsOrgID": {
+ "heading": "IMS Organization ID"
+ }
+ }
+ },
+ "ProjectsDropdown": {
+ "label": "Projects",
+ "subHeading": "Only your projects that contain credentials are shown"
+ },
+ "ManageDeveloperConsole": {
+ "label": "Manage all your projects and credentials on Adobe Developer Console",
+ "direction": "/console/projects"
+ },
+ "DevConsoleLink": {
+ "heading": "Developer Console Project"
+ },
+ "Products": {
+ "label": "Included products and services",
+ "items": [
+ {
+ "Product": {
+ "label": "Adobe Express Embed SDK",
+ "icon": "creativeCloud"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "RequestAccess": {
+ "title": "Get credentials",
+ "paragraph": "Create unique credentials that you will use to call multiple APIs from your application.",
+ "components": {
+ "EdgeCase": {
+ "components": {
+ "NoProduct": {
+ "title": "Your organization does not have access to Express Embed SDK",
+ "buttonLabel": "Contact us to learn more",
+ "buttonLink": "#someLink"
+ },
+ "NotMember": {
+ "title": "Access to Express Embed SDK APIs is not available at this time.",
+ "buttonLabel": "Learn more about Express Embed SDK",
+ "buttonLink": "#someLink"
+ },
+ "NotSignUp": {
+ "title": "Express Embed SDK APIs is available as part of the beta program. Sign up for the program or log in to an account that has access.",
+ "buttonLabel": "Sign up for the beta",
+ "buttonLink": "#someLink"
+ }
+ }
+ },
+ "RestrictedAccess": {
+ "title": "Restricted Access",
+ "buttonLabel": "Request access",
+ "components": {
+ "Products": {
+ "label": "Included products and services",
+ "items": [
+ {
+ "Product": {
+ "label": "Adobe Express Embed SDK",
+ "icon": "creativeCloud"
+ }
+ }
+ ]
+ }
+ }
+ },
+ "RequestAccessSide": {
+ "content": {
+ "style": {
+ "display": "flex",
+ "gap": "16px",
+ "flexDirection": "column"
+ },
+ "elements": [
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeS side-header",
+ "text": "API key credential"
+ },
+ {
+ "type": "p",
+ "className": "spectrum-Body spectrum-Body--sizeM",
+ "text": "Submitting this form creates an API Key credential. The API key credential identifies your application to Adobe servers and can help accept or reject requests originating from certain domains."
+ },
+ {
+ "type": "h3",
+ "className": "spectrum-Heading spectrum-Heading--sizeS side-header",
+ "text": "Learn more"
+ },
+ {
+ "type": "a",
+ "className": "side-documentation",
+ "style": {
+ "color": "#0265DC"
+ },
+ "href": "https://some_help_link",
+ "text": "Authentication documentation"
+ },
+ {
+ "type": "a",
+ "className": "side-documentation",
+ "style": {
+ "color": "#0265DC"
+ },
+ "href": "https://some_help_link",
+ "text": "Express Embed SDK documentation"
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+ ],
+ ":type": "sheet"
+}
\ No newline at end of file
diff --git a/src/pages/getting_started/page-with-component.md b/src/pages/getting_started/page-with-component.md
new file mode 100644
index 000000000..25ec6b18b
--- /dev/null
+++ b/src/pages/getting_started/page-with-component.md
@@ -0,0 +1,12 @@
+[//]: # (Copied from https://github.com/AdobeDocs/cis-photoshop-api-docs/blob/119eb74473b3eeac12ea6e8f4630a8f59971b49d/src/pages/index.md?plain=1#L15-L21, https://developer.adobe.com/firefly-services/docs/photoshop/)
+[//]: # (Other examples: https://stage--adp-devsite-stage--adobedocs.aem.page/github-actions-test/test/test-file)
+
+
+
+
+
+# Adobe Photoshop and Lightroom API
+
+Unlock the potential of Photoshop, Lightroom, and cutting edge Sensei services through an easy-to-use RESTful API.
+
+[Get the SDKs](https://developer.adobe.com/console/servicesandapis/ae)
\ No newline at end of file
diff --git a/src/pages/hackathon-images/aep-foundation.png b/src/pages/hackathon-images/aep-foundation.png
new file mode 100644
index 000000000..3d831be45
Binary files /dev/null and b/src/pages/hackathon-images/aep-foundation.png differ
diff --git a/src/pages/images/banner.png b/src/pages/hackathon-images/banner.png
similarity index 100%
rename from src/pages/images/banner.png
rename to src/pages/hackathon-images/banner.png