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
- Create new shared environment. - (POST) - /buckets/{bucketKey}/environments
- Returns list of shared environments for a specified bucket. - (GET) -/buckets/{bucketKey}/environments
- Update the details of a test environment. - (PUT) -/buckets/{bucketKey}/environments/{environmentId}
Tags
- List All Tags - (GET) - /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.