Sending dynamic values to manifest.yml file during runtime in forge jira app

Hello Community,

I’m currently developing an Atlassian Forge app and I have a requirement to dynamically send URL to manifest.yml file. I understand that the manifest.yml file is static and cannot be modified at runtime.

Here’s a snippet of my manifest.yml file:

modules:
  jira:issuePanel:
    - key: ....
      resource: ...
      resolver:
        function: resolver
      viewportSize: small
      title: ABCD
      icon: https://developer.atlassian.com/platform/forge/images/issue-panel-icon.svg
      displayConditions:
        issueType: Story
  function:
    - key: resolver
      handler: index.handler
      providers:
        auth:
          - microsoft
providers:
  auth:
    - key: microsoft
      name: microsoft
      scopes:
        - User.Read
        - offline_access
      type: oauth2
      clientId: CLIENT_ID
      remotes:
        - microsoft-graph
        - custom-backend
      bearerMethod: authorization-header
      actions:
        authorization:
          remote: microsoft-login
          path: /TENENT_ID/oauth2/v2.0/authorize
        exchange:
          remote: microsoft-login
          path: /TENENT_ID/oauth2/v2.0/token
        retrieveProfile:
          remote: microsoft-graph
          path: /v1.0/me
          resolvers:
            id: id
            displayName: displayName
remotes:
  - key: microsoft-login
    baseUrl: https://login.microsoftonline.com
  - key: microsoft-graph
    baseUrl: https://graph.microsoft.com
  - key: custom-backend
    baseUrl: CUSTOM_BACKEND_BASE_URL
    operations:
      - fetch
resources:
  - key: .....
    path: .....
app:
  id: ari:cloud:ecosystem::app/APP_ID
  runtime:
    name: nodejs20.x
permissions:
  scopes:
    - read:jira-work
    - .....
  content:
    styles:
      - "unsafe-inline"
    scripts:
      - "unsafe-inline"
      - "unsafe-hashes"
  external:
    images:
      - "*"
    fetch:
      client:
        - "*"
      backend:
        - remote: custom-backend
        - "*"
        - "https://graph.microsoft.com"
        - "https://login.microsoftonline.com"
 

I’ve built an input form that accepts baseURL (CUSTOM_BACKEND_BASE_URL) . However, I’m looking for a way to send this baseURL dynamically and automatically when they are added from the input form.

I’m considering storing the dynamic data (i.e., new baseURL) in an Atlassian’s product storage, and then fetching this data at runtime to determine which baseURL to be utilised.

Has anyone implemented something similar or could provide some guidance on how to achieve this? Any help would be greatly appreciated!

Thank you!

Hey @PatilShashidhar,

Today remotes can only be defined statically at deployment time for Forge apps, however you can modify it on each deployment through the utilisation of environment variables.

We recently published RFC-94: Configurable Egress and Remotes, which may be similar to the use case you’ve mentioned here. It would support the ability to define / modify the remote at runtime.