Git Product home page Git Product logo

api-manager's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

api-manager's Issues

Investigate if database dependency can be removed

API Manager currently uses a database to check if the user is logged and for general session management. Maybe this can be accomplished completely by cookies and no database is required at all?

Design & Implement Monitoring Dashboard with relevant KPIs

Know your developers

  • Location of developers
  • Category of developers (Individual, Startup/SME, Consulting/Solution Provider, Corporate, Other)
  • Time to first API call (from moment developer sign up to making first API call)
  • Avg number of app per developers
  • Monthly (or weekly) developer sign up
  • Monthly (or weekly) developer activation (who made their first API Call)
  • Monthly (or weekly) active developers (who made at least one API call)

Know your APIs

  • Total number of API endpoints actually used by developers (vs the available 130 APIs or so)
  • 10 most used partial function-
  • 10 least used partial function
  • Avg Number of API calls per day
  • Avg response time per API call
  •  List of all existing partial function + count (how many time they have been called)
    

Know Your Consumers

  • 10 most used Apps (apps consuming most API calls)
  • 10 most used NON-TEST Apps (apps consuming most API calls where app maturity is not TEST)
  • App Use case (for instance PFM, could it be derived from app description)
  • App Maturity (Test, Prototype, Production. If description contains "test", then maturity=test, else maturity=prototype)
  • Distribution for each platform: web, mobile, other
  • Monthly (or weekly) active apps (who made at least one API call)

Distribution of

  • Developer registration per day
  • Active Developers per day (who made at least one API call that day)
  • Consumer registration per day
  • Active Apps/Consumer per day(who made at least one API call)
  • API calls per day

Monthly (or weekly) Growth rate

  • Developer registration
  • Activation (number of developer who made their first API call that month)
  • Active Developer (number of developer who made at least one API call that month)
  • Consumer registration
  • Active Apps
  • API calls / Usage

Add Current User tab

This tab will allow a user to see details about him/her self

Will allow a super admin to easily give them selves other roles.

Should be based on the Users tab.

Use something better to get user detail

Currently the app uses the API's Get Users by Email Address to implement the user detail view. From the returned list, it just takes the first item. This is obiously not ideal.

@simonredfern Is there a call to get an individual user?
If not, i'd like to suggest a new call Get User by User ID using /user/USER_ID .

There is a problem on legacy systems, though: apisandbox has quite a few users where /users returns an empty user_id. How could we get those?

Add Branches page

Branches page should be under the new "Resources" menu item.

List Branches
Add Branch
Delete Branch
Update Branch.

Use OBP Branches APIs

Improvements to User search field / button.

Search for Users button doesn't seem to work (Firefox Mac)
Have to hit enter key for search to work.
Also buttton should be to the right (not left) of search box
Also field text button says we have to enter email address - but username works as well.

Prevent 502 if API becomes unavailable

@ichaib experienced this issue on 2017-03-31, shortly before 5pm. At this time, the API had Akka future timeouts and the API Manager (nginx) threw a 502 after a while. The API Manager should resolve the situation more gently, although the author of this issue has the suspicion that on these occasions the whole machine becomes unresponsive and there is nothing the API Manager can do about, except for being installed on a different machine than the API. Needs more investigation.

Prevent 500 on TokenRequestDenied

If the API does not accept a (previously used?) token, requests_oauthlib throws a TokenRequestDenied. This should not result in a 500 by API Manager. It should probably just forward the error message to the user.

In Summary By Partial Function bar graph

... clicking on the name of partial function should take the user back to the list view and only show the calls to that partial function (with other search criteria still there).

This would allow us to see the details related to that call e.g. response codes etc.

Show user email on consumers detail

Now that the API has added a user object to the consumer, the user's email address should be shown next to the developer email address on the consumer detail page.

The developer email address can be removed from consumer list page (proably replaced by description not needing its own row anymore)

Add Entitlement Requests tab

Add page to list Entitlement Requests.

Each row will contain

Username (includes link to User), Email, Role Requested. Accept Button, Reject Button.

When Accept Button is pressed:

  1. Role Entitlment is created.
  2. Entitlment Request status is set to GRANTED.

When Reject button is pressed

    1. Entitlment Request status is set to REJECTED.

Prevent 500 if oauth_token missing for /oauth/authorize

Somehow a user accessed /oauth/authorize without oauth credentials in session data.

KeyError at /oauth/authorize
'oauth_token'

...

File "/var/www/apimanager/API-Manager/apimanager/oauth/views.py" in get_redirect_url
  79.             resource_owner_key=self.request.session['oauth_token'],

self.request.session.get('oauth_token', '') should be more defensive.

Prevent 500 on API sending a 500

When accessing the API, sometimes requests end up in a 500 response from it, e.g. when accessing /, /metrics or /users. The view should catch the APIError exception and propably show it to the user.

Create customer

A manager should be able to create a customer for a user using call createCustomer. user_id could be a select which shows user_id and username. API docs says This call may require additional permissions/role in the future. For now the authenticated user can create at most one linked customer. tho, maybe the API needs to be extended.

Listing of customers seems to be only possible for the logged in user, so not applicable here.
Deleting or editing also currently seems impossible.

Keeping @simonredfern in the loop.

Create a summary view for metrics

As requested by @simonredfern , the metrics should get a view to show some sort of summary in addition to text-centric list view. It should start with a bar chart with implemented by partial function on y- and count on x-axis. The filter form should be available in both views.

D3.js could be used for that. Or Chart.js

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.