Platform Engineering Team/API Value Stream

Mission / Objective
The API Platform facilitates self-service application development using Application Programming Interfaces (APIs). Our goal is to make it easier to develop, access, and maintain open knowledge products through an API framework. The team will create solutions that are extensible, scalable, and reusable. These solutions will contribute to the platform evolution goals.

The API platform will include four key components:


 * guidelines and tools for the full API Lifecycle,
 * access to API services through an API gateway,
 * access to information about our API services through an API Portal, and
 * API management that provides transparency, consistency, and security.

API Lifecycle
An API Lifecycle has six main stages:


 * 1) Design: This is a planning phase where the technical and business needs are reviewed, key requirements are formalized and design specifications are created. This process will apply best practices outlined in the API Design Guidelines (forthcoming).
 * 2) Implementation: Developers code the API based on the key requirements and design specifications.
 * 3) Testing: Once built, the API build will be tested for functionality, performance, and security. Testing will follow processes outlined in API Testing Practices (forthcoming).
 * 4) Deployment: Once the API has been approved for deployment, a clear path outlined in API Deployment Process and, when applicable, API Version Control Strategy will be followed (both process documentations are forthcoming).
 * 5) Management: A dynamic catalog of the various APIs, their versions, and the datasets and applications that they connect to will enable reliable governance. Observability of the usage of the APIs will ensure we understand and can pinpoint areas that need improvement.
 * 6) Deprecation: Over time, some API may be retired in favor of offering an alternative improved service. This process must be intentional and not cause major service interruption.

Once completed, the Wikimedia Foundation API LIfecycle Guidelines, will provide API producers a clear set of steps and principles that support platform independence, consistent APIs, and easier adoption, usability, and maintenance. This work is in the planning stage.

API Gateway
The API gateway is a proxy server that sits between consumers and producers of API services. It acts as a vetting process between clients requesting data and the servers that provide it. This intermediary communication improves performance through traffic control and load balancing, increases security, and enables the rapid development of products and services. The API Gateway provides protection from overuse and abuse, allows us to understand API usage so we can improve performance equity, and removes complexity for the API consumers. Our API gateway is in its alpha release. Technical documentation is available on Wikitech.

API Portal
The API Portal connects API producers with API consumers. People will be able to access our available range of APIs and get to know about their usage and capabilities. It includes centrally located documentation about the available API services, versioning and depreciation information, and our API Lifecycle Guidelines. The API Portal also educates developers about how to use our API services with getting started guides, API integration details, and processes for generating client keys and configuring access. The API Portal also promotes available API services and open knowledge products made with our APIs through curated discovery pathways of highlights from our community of developers. Our API Portal is in its pre-alpha release.

Universal API Management
API management creates a centrally visible and scalable process for managing APIs across an enterprise and multi-environment setting. It creates the conditions for APIs to be consumable, secured, and transparently maintained. It allows us to observe traffic, pinpoint bugs, and understand utilization and performance. This framework is in the design phase.

Work Intake Process
The team meets throughout the week to review and triage incoming requests, bugs, or feature support on a rolling basis.

For questions or requests for consultations, you can create a task on the API Platform Consultation Phabricator board and tag it #api platform.

For work related to bugs, features or support on API Platform products and services, you can create a task on |our API Platform Phabricator board, and assigned it to vpoundstone(Virginia Poundstone). We also welcome questions and feedback on our talk page.

Demos & Artifacts
Note: You'll need to be signed in with your WMF account to view these videos.