Abhey Sharma
Abhey Sharma

Reputation: 11

Map bitbucker repo data from atlassian connect app to my FastAPI User/Org

I am developing a code security scanner platform on FastAPI in which I need to integrate bitbucket with a Atlassian Connect App like https://marketplace.atlassian.com/apps/1232592/ox-security-bitbucket-app?hosting=cloud&tab=overview

I am able to make the connect app and called my app API from connect app. I am getting all the repos but the issue occurs when I need to map this data to user that asked for integration.

This is my Atlassian Connect App config

{
    "key": "aquilax-bitbucket-integration",
    "name": "Aquilax Bitbucket Integration",
    "description": "Integration that allows Aquilax to access Bitbucket repositories for code scanning",
    "vendor": {
      "name": "Aquilax",
      "url": "https://aquilax.ai"
    },
    "baseUrl": "https://d0f67ad65d00b9.lhr.life/",  
    "authentication": {
      "type": "jwt"
    },
    "lifecycle": {
      "installed": "/installed",
      "uninstalled": "/uninstalled"
    },
    "scopes": [
    "account:write",
    "issue",
    "issue:write",
    "pipeline",
    "pipeline:write",
    "repository",
    "repository:write",
    "repository:admin",
    "repository:delete",
    "webhook",
    "wiki",
    "pullrequest",
    "pullrequest:write",
    "team",
    "team:write",
    "snippet",
    "snippet:write",
    "runner",
    "project",
    "project:write"
  ],
    "modules": {
      "webhooks": [
        {
          "event": "repo:push",
          "url": "/webhook/repo-access"
        }
      ]
    },
    "contexts": ["account"]

  }
  

This is index.js

Handle /installed lifecycle event
    app.post('/installed', (req, res) => {
        const payload = req.body;

        // Forward the payload to FastAPI's /installed endpoint
        fetch('https://bb63-43-248-153-252.ngrok-free.app/bitbucket/installed/webhook', {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify(payload)
        })
        .then(response => {
            if (!response.ok) {
                console.error('Error forwarding to FastAPI:', response.statusText);
                res.sendStatus(500);
            } else {
                console.log('Successfully forwarded to FastAPI /installed');
                console.log('Response:', response);
                res.sendStatus(200);
            }
        })
        .catch(error => {
            console.error('Error forwarding to FastAPI:', error);
            res.sendStatus(500);
        });
    });

Which calls my FastAPI endpoint to fetch all the data from the shared secret.

I maybe missing something in config but I found no way to connect org_id/user_id of my FastAPI user while itegrating bitbucket so I can't map the data I get to org or user when I get the response from bitbucket affter creating the access_token.

I have tried redirecting process in index.js but bitbucket requires a 200 response not redirect response so that is out of question.

Upvotes: 1

Views: 30

Answers (0)

Related Questions