Last week I was playing with defining API monitoring APIs so I can map to each stop along the API life cycle. I took three of the API monitoring services I use (APIMetrics, API Science, and Runscope), and like I do for other areas along the API life cycle, and for common API stacks, I profiled their APIs using the OpenAPI Spec. This is standard operating procedure for any of my research areas, in that part of profiling each company's operations, I profile the API surface area in detail.
For each of my research projects, I will include this listing of each API endpoint available as part of the work. As I was adding one for my API monitoring research, I had a thought--I wanted to reorganize the endpoints, across the three API monitoring service providers, and group them by tag. So I started playing with a new way to look at the APIs available in any given APIs.json driven collection.
This is a listing of API resources available in this projects APIs.json, organized by tag.
Account
- Account Resource - (GET) - /account
- Team integrations list - (GET) - /teams/{teamId}/integrations
- Teams Resource - (GET) - /teams/{teamId}/people
Auth
- Delete an Authentication Setting - (DELETE) - /auth/{id}/
- Get an existing Authentication Setting - (GET) - /auth/{id}/
- List Authentication Settings - (GET) - /auth/
- Update an existing Authentication Setting - (PUT) - /auth/{id}/
Buckets
- Create a new bucket - (POST) - /buckets
- Delete a single bucket resource. - (DELETE) - /buckets/{bucketKey}
- Returns a list of buckets. - (GET) - /buckets
- Returns a single bucket resource. - (GET) - /buckets/{bucketKey}
Calls
- Create new API Call - (POST) - /calls/
- Delete an API Call - (DELETE) - /calls/{id}/
- Get an existing API Call - (GET) - /calls/{id}/
- List API Calls - (GET) - /calls/
- List API Calls by Authentication - (GET) - /calls/auth/{auth_id}/
- List Stats from before a date for an API Call - (GET) - /calls/{id}/stats/before
- List Stats since a date for an API Call - (GET) - /calls/{id}/stats/since
- Trigger an API Call to run - (POST) - /calls/{id}/run
- Update an existing API Call - (PUT) - /calls/{id}/
Checks
- Get Checks For A Monitor - (GET) - /monitors/{id}/checks.json
Contacts
- Create a Contact - (POST) - /contacts.json
- Delete a Contact - (DELETE) - /contacts/{id}.json
- Get All Contacts - (GET) - /contacts.json
- Get a Specific Contact - (GET) - /contacts/{id}.json
- Update a Contact - (PATCH) - /contacts/{id}.json
Deployments
- Create a new Deployment - (POST) - /deployments/
- Delete a Deployment - (DELETE) - /deployments/{id}/
- Get all Deployments for a Workflow - (GET) - /deployments/workflow/{workflow_id}
- Get all Deployments for an API Call - (GET) - /deployments/call/{call_id}/
- Get an existing Deployment - (GET) - /deployments/{id}/
- List all Deployment - (GET) - /deployments/
- Update an existing Deployment - (PUT) - /deployments/{id}/
Messages
- Clear a bucket (remove all messages). - (DELETE) - /buckets/{bucketKey}/messages
- Create a message - (POST) - /buckets/{bucketKey}/messages
- Retrieve a list of error messages in a bucket - (GET) - /buckets/{bucketKey}/errors
- Retrieve a list of messages in a bucket - (GET) - /buckets/{bucketKey}/messages
- Retrieve the details for a single message. - (GET) - /buckets/{bucketKey}/messages/{messageId}
Monitors
- Apply Actions to Multiple Monitors - (PUT) - /monitors
- Create a Monitor - (POST) - /monitors
- Get All Monitors - (GET) - /monitors
- Get a Specific Monitor - (GET) - /monitors/{id}
- Testing your Monitor - (GET) - /monitors/{id}/test
Reports
- Create a new Report - (POST) - /reports/
- Delete a Report - (DELETE) - /reports/{id}/
- Get an existing Report - (GET) - /reports/{id}/
- List all Reports - (GET) - /reports/
- Performance Report - (GET) - /monitors/{id}/performance
- Update an existing Report - (PUT) - /reports/{id}/
- Uptime Report - (GET) - /monitors/{id}/uptime.json
Shared Environments
Tags
Templates
- Create a Template - (POST) - /monitors/{id}/templates/{templates]
- Get a Template - (GET) - /monitors/{id}/templates/{templates]
- Show a Monitors Templates - (GET) - /monitors/{id}/templates
Test Environments
- Create new test environment. - (POST) - /buckets/{bucketKey}/tests/{testId}/environments
- Return details of the test's environments (only those that belong to the specified test) - (GET) -/buckets/{bucketKey}/tests/{testId}/environments
- Update the details of a test environment. - (PUT) -/buckets/{bucketKey}/tests/{testId}/environments/{environmentId}
Test Steps
- Add new test step. - (POST) - /buckets/{bucketKey}/tests/{testId}/steps
- Delete a step from a test. - (DELETE) - /buckets/{bucketKey}/tests/{testId}/steps/{stepId}
- List test steps for a test. - (GET) - /buckets/{bucketKey}/tests/{testId}/steps
- Update the details of a single test step. - (PUT) - /buckets/{bucketKey}/tests/{testId}/steps/{stepId}
Tests
- Create a test. - (POST) - /buckets/{bucketKey}/tests
- Delete a single test. - (DELETE) - /buckets/{bucketKey}/tests/{testId}
- Returns a list of tests. - (GET) - /buckets/{bucketKey}/tests
Tokens
- Create a new Auth Token - (POST) - /tokens/
- Delete an Auth Token - (DELETE) - /tokens/{id}/
- Get all tokens for an Authentication Setting - (GET) - /tokens/auth/{auth_id}/
- Get an existing Auth Token - (GET) - /tokens/{id}/
- List Auth Tokens - (GET) - /tokens/
- Update an Auth Token - (PUT) - /tokens/{id}/
Workflows
- Create a new Workflow - (PUT) - /workflows/{id}/
- Create new Authentication Settings - (POST) - /workflows/
- Delete a Workflow - (DELETE) - /workflows/{id}/
- Get an existing Workflow - (GET) - /workflows/{id}/
- List all Workflows - (GET) - /workflows/
- Trigger a Workflow to run now - (POST) - /workflows/{id}/
If you mouse over each actual endpoint, it will tell you the host of the API it is for. I am just playing around. I have no idea what value this would present for anyone, except for just helping provide a new dimension for viewing the APIs involved. For me, this particular one helps me understand API resources across many providers, while also encouraging me to think more critically about how I tag the APIs I define using OpenAPI Spec.
You can view the listing by provider, as well as listing by tag, for my API monitoring research. I will be adding these two views to all of my core research areas, and the API stacks I define as I have time, but I thought it would be interesting to add to my own API stack, which is probably the most defined of all of my stacks--here is listing by provider, and listing by tag, for my API Evangelist stack.
We'll see how this plays out as I roll out for more of my research. I am sure I will learn a lot along the way, by adding new APIs.json driven dimensions like these. I'd like to eventually have a whole toolbox of these types of views, and even some APIs.json and OpenAPI Spec driven visualizations.