10 Designing user-friendly, interoperable operation flows

 

This chapter covers

  • Designing concise, error-limiting, flexible flows
  • Designing flexible data-saving flows

Imagine that buying 10 copies of The Design of Web APIs using the shopping API involves searching for products, listing promotions, merging these two operations’ data to show accurate prices, adding the product to the cart 10 times, and failing to check out due to insufficient stock. Such an operation flow leads to a cumbersome experience for developers who are creating applications that consume the API and also for their end users. Even built with user-friendly, interoperable operations, the flows needed to achieve use cases can be complex, require heavy data processing to transform previous output data into the following input, or lead to complex and inflexible UI flows. Optimizing API operation flows can limit such annoyances and ensure a smooth experience for developers and end users.

This chapter examines what makes operation flows user-friendly and interoperable and explains when and how to optimize flows to take these concerns into consideration. We then illustrate how to optimize a flow to make it concise, error-limiting, and flexible so that it is easily usable in various contexts and minimizes effects on consuming applications and end users. Finally, we show how to optimize a flow to enable flexible partial and one-shot complete data saving.

10.1 What makes an operation flow user-friendly and interoperable?

10.1.1 Using user-friendly, interoperable elements

10.1.2 Being designed as a whole

10.1.3 Being concise and flexible

10.1.4 Meeting user needs within the flow

10.1.5 Being helpful across operations

10.1.6 Aiming for consistency and standardization

10.2 When and how to optimize flows

10.2.1 When to consider flow optimization

10.2.2 How to optimize flows

10.3 Designing concise, error-limiting, flexible flows

10.3.1 Introducing the money-transfer use case

10.3.2 Uncovering operation flow problems

10.3.3 Calling read and search operations once

10.3.4 Enhancing operations with use-case-specific features

10.3.5 Adding use-case-specific operations

10.3.6 Combining operations into a use-case-specific operation

10.3.7 Adding use-case-specific output data

10.3.8 Avoiding constraining consumer flow

10.4 Designing flexible data-saving flows