topcoder-platform / challenge-api

This microservice provides access and interaction with all sorts of Challenge data
16 stars 49 forks source link

WIP Billing Account & Markup #393

Open rootelement opened 3 years ago

rootelement commented 3 years ago

For this issue, we'll implement billing account on the challenge object and then calculate the markup. This challenge depends on the projects api implementing the sfdc billing account markup property.

1. Implement Challenge API

Allow the challenge api to have a billing object:

{
  "billing": {
    "billingAccountId": 20394002,
    "markup": "<float>0.85"
  }
}
  1. Billing Account ID should NOT be required to create a challenge
  2. Billing Account ID SHOULD be required to Activate a challenge
  3. Billing Account should be "Active" when Activating a challenge, otherwise throw an error. Active means if you query the v5 project for the projectId the billing account ID that comes back should match.
  4. The v5 project should be query-able by the jwt - meaning the user should be on the v5 project
  5. GET /challenge and GET /challenges/:uuid should only return the billing object for Admin or m2m

2. legacy-challenge-processor

There is currently a hack where it pulls the billing account id and writes it to the payload, change this to use the billing.billingAccountId

TBD - project update notification

We might need to listen to project update notifications and update the BA/markup. Will confirm.

ThomasKranitsas commented 3 years ago

Working on https://github.com/topcoder-platform/challenge-api/tree/feature/v5-ba

The flow will be like this:

Assumptions:

  1. The billingAccountId is read-only
  2. The markup can be different than what's in the Project info but we default to the one from the project info. (Values from 0 to 100 as it's a percentage)
ThomasKranitsas commented 3 years ago

PRs: