I have been working with an organization to expose its services and capabilities as a set of APIs on AWS Cloud. To be able to do so, I believe an organization got to have a minimum set of API Technology Delivery capabilities. I will provide a brief description of the capabilities that I helped develop:

- API Design and Development: i.e., the design of and the development of APIs
- Reusable Asset Discovery: A capability that provides a repository to store, and easily search API assets such as reusable code libraries, reusable API Specification fragments such as schemas etc.
- API Specification Design: A utility/ Editor to facilitate the design and mocking of the API.
- API Implementation: implementing the APIs in a programming language or through an API Integration platform.
- API Specification Testing and Mocking: A Mocking API utility to test and validate the usability of the API before implementation contribute to high quality API products.
- API Implementation Testing: Like any software, the ability to run automated tests against API implementation will speed up delivery.
- Artefact versioning: the ability to version various artifacts form API specifications, fragments to the actual implementation code.
- Automated Build Pipeline: the presence of a build pipeline as part of the DevOps for the API delivery will facilitate building, running automated tests and deploying to various environments Dev/QA/pre-Prod/prod etc.
- API Runtime Execution and Hosting: the deployment and execution of API clients and API implementations with certain runtime characteristics
- API Hosting: form using Docker containers, or Cloud Serverless environments like AWS Lambda .. etc.
- Runtime High Availability & Scalability: The AWS Lambda is both high available & scalable by nature though there are limitation on AWS Lambda (https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.html) these need to be carefully evaluated to verify that the implementation will not exceed these limits.
- If EC2 or containers clusters are consider the high availability and scalability should be addressed
- API operations and management: i.e., operations and management of APIs and API policies, API implementations and API invocations
- API Versioning: API Versioning scheme to deliver different versions of the same API. Versioning is discussed in more detail in another blog post.
- Runtime Analytics & Monitoring: The capability to report on the logs and errors, diagnoses capabilities. IAWS Elastic Search and Kabana can be utilized to provide dashboards and reporting to cover these areas.
- API Policy Management: The ability to apply various policies (authentication, authorization, rate limiting, throttling, caching, SLA layers etc.) In the AWS implementation AWS API Gateway will be utilized to deliver this functionality.
- API Client Credentials Management: The API client’s credentials to login and use the API. AWS Cognito can be utilized to provide these services
- API Usage analytics: the capability to report on the usage of the API, API Invocations. AWS Elastic Search & Kibana can be utilized to provide dashboards and reporting to cover these areas
- API consumer engagement: the engagement of developers of API clients and the management of the API clients they develop. This is the most crucial for enabling the adoption of the API and the success of the Insight Platform as APIs.
- API Catalog and Portals: the list or available APIs (packages or collections of APIs) , what each package provides, each API, and Portal that allows the user to use/ try the API
- ASPI Consumer & Client On Boarding: a web portal that allows the subscription of API consumers etc.
- API Consumer Analytics: the portal should allow the clients to see analytics about the API calls from their account, can see the diagnostics for the API calls (why an API call has failed), which can also help support.
These capabilities are to be deployed in such a way as to contribute to and be in alignment with the organization’s (strategic) goals, drivers, outcomes, etc.