SlideShare a Scribd company logo
apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger
2
API Request Builder
Exploring APIs with blocks
Larry Kluger
Lead Developer Advocate
Larry.Kluger@docusign.com
@larrykluger
linkedin.com/in/larrykluger
4
What’s an API Explorer?
A tool for making live
calls to the API
endpoints.
AKA, “API Playground”
Make it easy to try your API
API Explorers
developer.dailymotion.com/tools/
5
• Zero to hero: quickly
try the API without
writing a program or
script.
• Best: typed requests
enable Select boxes,
numeric entry,
checkboxes, etc
API Explorers: Benefits
developer.dailymotion.com/tools/
6
Some API Explorers use
a text area for creating
the request.
Benefits: easily save
and reuse the request;
easily support nested
objects
Issue: more thinking is
required; easier to make
an error; the explorer is
no longer click & go
Text areas for the
request
docs.adyen.com/api-explorer
7
Issue: text format has
no guardrails—you’re
programming, not
exploring
Six levels of nesting,
and this is not a
complicated request
Nested objects in the API requests
8
An API explorer that supports:
• Click & go, easy request
creation
• Supports deeply nested API
attributes (arrays and objects)
Goal #1
9
• Include API documentation
• Show the request as JSON
• Auto-program the request
using an SDK in multiple
languages
• Load pre-built examples and
then modify them
• Save your work for re-use
• Share your examples to help
others
Additional feature requests
10
Demo
11
An API explorer that supports:
• Click & go, easy request creation
• Supports deeply nested API
elements (arrays and objects)
Solution step 1
• Use the open source Google
Blockly library
developers.google.com/blockly
Solving Goal #1
12
Solution step 2
• Use the builder pattern to add data
to the request object
• Order counts! Each block affects
the nearest prior appropriate object
Solving Goal #1
13
Solution step 3
• The blocks
create a fluent
(or chained)
output
program.
Solving Goal #1
new docusign.EnvelopePlusJSON()
.add_envDefAttribute("emailSubject",
"Please sign the attached document")
.add_envDefAttribute("status", "sent")
.add_object("document", {
filename: "anchorfields.pdf",
name: "Example document",
fileExtension: "pdf",
documentId: "1"
})
.add_object("signer", {
email: "signer_email@example.com",
name: "Signer's name",
recipientId: "1",
clientUserId: "1000"
})
.add_object("signHere", {
anchorString: "/sig1/",
anchorXOffset: "20",
anchorUnits: "pixels"
})
.add_object("recipientViewRequest", {
returnUrl: "http://localhost:3000/",
authenticationMethod: "none",
clientUserId: "1000",
email: "signer_email@example.com",
userName: "Signer's name"
})
14
Solving Goal #1
new docusign.EnvelopePlusJSON()
.add_envDefAttribute("emailSubject",
"Please sign the attached document")
.add_envDefAttribute("status", "sent")
.add_object("document", {
filename: "anchorfields.pdf",
name: "Example document",
fileExtension: "pdf",
documentId: "1"
})
.add_object("signer", {
email: "signer_email@example.com",
name: "Signer's name",
recipientId: "1",
clientUserId: "1000"
})
.add_object("signHere", {
anchorString: "/sig1/",
anchorXOffset: "20",
anchorUnits: "pixels"
})
.add_object("recipientViewRequest", {
returnUrl: "http://localhost:3000/",
authenticationMethod: "none",
clientUserId: "1000",
email: "signer_email@example.com",
userName: "Signer's name"
})
Solution step 4
• Software
creates the
JSON version
• (Recursion is
fun!)
15
The Swagger (OpenAPI Specification) file defines
the API’s methods, objects, their attributes, types,
and relationships. It includes documentation too.
The DocuSign eSignature Swagger file is
automatically produced by the platform software
itself.
The tool is built from the API’s Swagger file
16
Auto-programming the API’s SDKs
The CodeGen software auto-
generates the SDKs from the
Swagger file
The API Request Builder tool
uses recursion to auto-program
the SDK from the JSON,
starting with the deepest leaf
nodes
17
Auto-programming the API’s SDKs
18
• C#
• Java
• PHP
• Node.js
• Visual Basic (no SDK)
• Python
• Ruby
Auto-programming
19
ü Include API documentation
ü Show the request as JSON
ü Auto-program the request
using an SDK
ü Load pre-built examples and
then modify them
ü Save your work for re-use
ü Share your examples for
helping others
Additional feature requests
20
Preliminary customer developer
feedback was positive
Internal reviews have also been
positive
The tool includes an NPS survey and
will enable developers to supply
feedback
Feedback
21 CONFIDENTIAL
Release planned for December
Open source version available
now:
github.com/docusign/api-request-
builder-open-src
Status
22
Questions?
Thank YouThank You
Larry.Kluger@docusign.com
@larrykluger
apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger
25
Just three methods are needed
(per SDK language)
• Assign an array of objects to a
variable
• Assign an array of scalars to a
variable
• Assign an associative array
(aka object or hash) to a
variable
Auto-programming SDK source
26
Building the API Request Builder
27
• As a separate batch process, a
configuration app parses the
Swagger file and creates the block
definitions, plus relationship
records.
The output of the configuration tool
is used to build the React tool.
• React single page application
• DocuSign UX library
• No significant server components.
The tool makes direct calls to
DocuSign via CORS.
API Request Builder tool
28
• When new documents or diagrams
are “uploaded” to the tool, they’re
processed within the browser since
there is no server.
• Likewise, when a diagram file is
“downloaded” from the tool, the file
is being created within the browser,
then downloaded to the desktop.
API Request Builder tool
29
Demo items
Sections of the tool
Demo the initial diagram
Open an example diagram for checkboxes
Show comments
Show hover documentation
Move blocks around to show error message
Undo, re-do Control-Z and SHIFT Control-Z
Duplicate blocks
Show toolbox
Show documents
Show video

More Related Content

PDF
Exploring an API with Blocks
PDF
O365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
PPTX
SQLDay 2021 PL AI Enrichment Azure Search.pptx
PDF
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
PPTX
GraphQL, Redux, and React
PPTX
A serverless IoT story from design to production and monitoring
PPTX
PL SQLDay Machine Learning- Hands on ML.NET.pptx
PDF
Securing java web applications
Exploring an API with Blocks
O365Con18 - Automate your Tasks through Azure Functions - Elio Struyf
SQLDay 2021 PL AI Enrichment Azure Search.pptx
MongoDB.local Berlin: Building a GraphQL API with MongoDB, Prisma and Typescript
GraphQL, Redux, and React
A serverless IoT story from design to production and monitoring
PL SQLDay Machine Learning- Hands on ML.NET.pptx
Securing java web applications

What's hot (19)

PDF
Building Event-Driven Serverless Applications
PPTX
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
PDF
Azure Container Apps
PDF
O365Con18 - Connect SharePoint Framework Solutions to API's secured with Azur...
PDF
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
DOCX
Labs And Walkthroughs
PPTX
Dsc Firebase Introduction
PPTX
SQLlite and Full Text Search Presentation
PPTX
Valentine with Angular js - Introduction
PPTX
Microsoft Graph developer community call-March 2020
KEY
Introduction to Google Apps Platform
PPTX
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
PPTX
Identity management and single sign on - how much flexibility
PDF
Introduction to GraphQL at API days
PPTX
DIY Flex
PDF
Build and Distributing SDK Add-Ons
PDF
Foreman Single Sign-On Made Easy with Keycloak
PPTX
Reactive Development: Commands, Actors and Events. Oh My!!
PPTX
Getting Started with Firebase Cloud Functions
Building Event-Driven Serverless Applications
Cloud Dev with Azure Functions - DogFoodCon 2018 - Brian T Jackett
Azure Container Apps
O365Con18 - Connect SharePoint Framework Solutions to API's secured with Azur...
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)
Labs And Walkthroughs
Dsc Firebase Introduction
SQLlite and Full Text Search Presentation
Valentine with Angular js - Introduction
Microsoft Graph developer community call-March 2020
Introduction to Google Apps Platform
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Identity management and single sign on - how much flexibility
Introduction to GraphQL at API days
DIY Flex
Build and Distributing SDK Add-Ons
Foreman Single Sign-On Made Easy with Keycloak
Reactive Development: Commands, Actors and Events. Oh My!!
Getting Started with Firebase Cloud Functions
Ad

Similar to apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger (20)

PDF
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
PDF
Docs Like Code
PDF
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
PDF
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
PDF
Building APIs in an easy way using API Platform
PDF
Kasten securing access to your kubernetes applications
PPTX
Prairie DevCon 2015 - Crafting Evolvable API Responses
PDF
Docs Like Code: Strategies and Stories
PDF
Building RESTful APIs
DOCX
sudheer_resume
PPTX
API workshop: Introduction to APIs (TC Camp)
PDF
Microservices and the Art of Taming the Dependency Hell Monster
PDF
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
PPTX
Docs as Part of the Product - Open Source Summit North America 2018
PDF
Building APIs in an easy way using API Platform
PDF
2.28.17 Introducing DSpace 7 Webinar Slides
PPTX
Guidelines for Working with Contract Developers in Evergreen
PDF
automation framework
PPTX
IBM Social Business Toolkit
PPTX
An introduction to Microsoft Graph for developers
apidays LIVE Paris - Exploring an API with Blocks by Larry Kluger
Docs Like Code
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Build an AI/ML-driven image archive processing workflow: Image archive, analy...
Building APIs in an easy way using API Platform
Kasten securing access to your kubernetes applications
Prairie DevCon 2015 - Crafting Evolvable API Responses
Docs Like Code: Strategies and Stories
Building RESTful APIs
sudheer_resume
API workshop: Introduction to APIs (TC Camp)
Microservices and the Art of Taming the Dependency Hell Monster
Matteo Gazzurelli - Andorid introduction - Google Dev Fest 2013
Docs as Part of the Product - Open Source Summit North America 2018
Building APIs in an easy way using API Platform
2.28.17 Introducing DSpace 7 Webinar Slides
Guidelines for Working with Contract Developers in Evergreen
automation framework
IBM Social Business Toolkit
An introduction to Microsoft Graph for developers
Ad

More from apidays (20)

PDF
apidays Munich 2025 - The Physics of Requirement Sciences Through Application...
PDF
apidays Munich 2025 - Developer Portals, API Catalogs, and Marketplaces, Miri...
PDF
apidays Munich 2025 - Making Sense of AI-Ready APIs in a Buzzword World, Andr...
PDF
apidays Munich 2025 - Integrate Your APIs into the New AI Marketplace, Senthi...
PDF
apidays Munich 2025 - The Double Life of the API Product Manager, Emmanuel Pa...
PDF
apidays Munich 2025 - Let’s build, debug and test a magic MCP server in Postm...
PDF
apidays Munich 2025 - The life-changing magic of great API docs, Jens Fischer...
PDF
apidays Munich 2025 - Automating Operations Without Reinventing the Wheel, Ma...
PDF
apidays Munich 2025 - Geospatial Artificial Intelligence (GeoAI) with OGC API...
PPTX
apidays Munich 2025 - GraphQL 101: I won't REST, until you GraphQL, Surbhi Si...
PPTX
apidays Munich 2025 - Effectively incorporating API Security into the overall...
PPTX
apidays Munich 2025 - Federated API Management and Governance, Vince Baker (D...
PPTX
apidays Munich 2025 - Agentic AI: A Friend or Foe?, Merja Kajava (Aavista Oy)
PPTX
apidays Munich 2025 - Streamline & Secure LLM Traffic with APISIX AI Gateway ...
PPTX
apidays Munich 2025 - Building Telco-Aware Apps with Open Gateway APIs, Subhr...
PPTX
apidays Munich 2025 - Building an AWS Serverless Application with Terraform, ...
PDF
apidays Helsinki & North 2025 - REST in Peace? Hunting the Dominant Design fo...
PDF
apidays Helsinki & North 2025 - Monetizing AI APIs: The New API Economy, Alla...
PDF
apidays Helsinki & North 2025 - How (not) to run a Graphql Stewardship Group,...
PDF
apidays Helsinki & North 2025 - APIs in the healthcare sector: hospitals inte...
apidays Munich 2025 - The Physics of Requirement Sciences Through Application...
apidays Munich 2025 - Developer Portals, API Catalogs, and Marketplaces, Miri...
apidays Munich 2025 - Making Sense of AI-Ready APIs in a Buzzword World, Andr...
apidays Munich 2025 - Integrate Your APIs into the New AI Marketplace, Senthi...
apidays Munich 2025 - The Double Life of the API Product Manager, Emmanuel Pa...
apidays Munich 2025 - Let’s build, debug and test a magic MCP server in Postm...
apidays Munich 2025 - The life-changing magic of great API docs, Jens Fischer...
apidays Munich 2025 - Automating Operations Without Reinventing the Wheel, Ma...
apidays Munich 2025 - Geospatial Artificial Intelligence (GeoAI) with OGC API...
apidays Munich 2025 - GraphQL 101: I won't REST, until you GraphQL, Surbhi Si...
apidays Munich 2025 - Effectively incorporating API Security into the overall...
apidays Munich 2025 - Federated API Management and Governance, Vince Baker (D...
apidays Munich 2025 - Agentic AI: A Friend or Foe?, Merja Kajava (Aavista Oy)
apidays Munich 2025 - Streamline & Secure LLM Traffic with APISIX AI Gateway ...
apidays Munich 2025 - Building Telco-Aware Apps with Open Gateway APIs, Subhr...
apidays Munich 2025 - Building an AWS Serverless Application with Terraform, ...
apidays Helsinki & North 2025 - REST in Peace? Hunting the Dominant Design fo...
apidays Helsinki & North 2025 - Monetizing AI APIs: The New API Economy, Alla...
apidays Helsinki & North 2025 - How (not) to run a Graphql Stewardship Group,...
apidays Helsinki & North 2025 - APIs in the healthcare sector: hospitals inte...

Recently uploaded (20)

PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Approach and Philosophy of On baking technology
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
KodekX | Application Modernization Development
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
cuic standard and advanced reporting.pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Empathic Computing: Creating Shared Understanding
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Review of recent advances in non-invasive hemoglobin estimation
Approach and Philosophy of On baking technology
Reach Out and Touch Someone: Haptics and Empathic Computing
KodekX | Application Modernization Development
Chapter 3 Spatial Domain Image Processing.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
cuic standard and advanced reporting.pdf
MYSQL Presentation for SQL database connectivity
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Empathic Computing: Creating Shared Understanding
Building Integrated photovoltaic BIPV_UPV.pdf
Diabetes mellitus diagnosis method based random forest with bat algorithm
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Programs and apps: productivity, graphics, security and other tools
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Build a system with the filesystem maintained by OSTree @ COSCUP 2025

apidays LIVE LONDON - Exploring an API with Blocks by Larry Kluger

  • 2. 2 API Request Builder Exploring APIs with blocks Larry Kluger Lead Developer Advocate Larry.Kluger@docusign.com @larrykluger linkedin.com/in/larrykluger
  • 3. 4 What’s an API Explorer? A tool for making live calls to the API endpoints. AKA, “API Playground” Make it easy to try your API API Explorers developer.dailymotion.com/tools/
  • 4. 5 • Zero to hero: quickly try the API without writing a program or script. • Best: typed requests enable Select boxes, numeric entry, checkboxes, etc API Explorers: Benefits developer.dailymotion.com/tools/
  • 5. 6 Some API Explorers use a text area for creating the request. Benefits: easily save and reuse the request; easily support nested objects Issue: more thinking is required; easier to make an error; the explorer is no longer click & go Text areas for the request docs.adyen.com/api-explorer
  • 6. 7 Issue: text format has no guardrails—you’re programming, not exploring Six levels of nesting, and this is not a complicated request Nested objects in the API requests
  • 7. 8 An API explorer that supports: • Click & go, easy request creation • Supports deeply nested API attributes (arrays and objects) Goal #1
  • 8. 9 • Include API documentation • Show the request as JSON • Auto-program the request using an SDK in multiple languages • Load pre-built examples and then modify them • Save your work for re-use • Share your examples to help others Additional feature requests
  • 10. 11 An API explorer that supports: • Click & go, easy request creation • Supports deeply nested API elements (arrays and objects) Solution step 1 • Use the open source Google Blockly library developers.google.com/blockly Solving Goal #1
  • 11. 12 Solution step 2 • Use the builder pattern to add data to the request object • Order counts! Each block affects the nearest prior appropriate object Solving Goal #1
  • 12. 13 Solution step 3 • The blocks create a fluent (or chained) output program. Solving Goal #1 new docusign.EnvelopePlusJSON() .add_envDefAttribute("emailSubject", "Please sign the attached document") .add_envDefAttribute("status", "sent") .add_object("document", { filename: "anchorfields.pdf", name: "Example document", fileExtension: "pdf", documentId: "1" }) .add_object("signer", { email: "signer_email@example.com", name: "Signer's name", recipientId: "1", clientUserId: "1000" }) .add_object("signHere", { anchorString: "/sig1/", anchorXOffset: "20", anchorUnits: "pixels" }) .add_object("recipientViewRequest", { returnUrl: "http://localhost:3000/", authenticationMethod: "none", clientUserId: "1000", email: "signer_email@example.com", userName: "Signer's name" })
  • 13. 14 Solving Goal #1 new docusign.EnvelopePlusJSON() .add_envDefAttribute("emailSubject", "Please sign the attached document") .add_envDefAttribute("status", "sent") .add_object("document", { filename: "anchorfields.pdf", name: "Example document", fileExtension: "pdf", documentId: "1" }) .add_object("signer", { email: "signer_email@example.com", name: "Signer's name", recipientId: "1", clientUserId: "1000" }) .add_object("signHere", { anchorString: "/sig1/", anchorXOffset: "20", anchorUnits: "pixels" }) .add_object("recipientViewRequest", { returnUrl: "http://localhost:3000/", authenticationMethod: "none", clientUserId: "1000", email: "signer_email@example.com", userName: "Signer's name" }) Solution step 4 • Software creates the JSON version • (Recursion is fun!)
  • 14. 15 The Swagger (OpenAPI Specification) file defines the API’s methods, objects, their attributes, types, and relationships. It includes documentation too. The DocuSign eSignature Swagger file is automatically produced by the platform software itself. The tool is built from the API’s Swagger file
  • 15. 16 Auto-programming the API’s SDKs The CodeGen software auto- generates the SDKs from the Swagger file The API Request Builder tool uses recursion to auto-program the SDK from the JSON, starting with the deepest leaf nodes
  • 17. 18 • C# • Java • PHP • Node.js • Visual Basic (no SDK) • Python • Ruby Auto-programming
  • 18. 19 ü Include API documentation ü Show the request as JSON ü Auto-program the request using an SDK ü Load pre-built examples and then modify them ü Save your work for re-use ü Share your examples for helping others Additional feature requests
  • 19. 20 Preliminary customer developer feedback was positive Internal reviews have also been positive The tool includes an NPS survey and will enable developers to supply feedback Feedback
  • 20. 21 CONFIDENTIAL Release planned for December Open source version available now: github.com/docusign/api-request- builder-open-src Status
  • 24. 25 Just three methods are needed (per SDK language) • Assign an array of objects to a variable • Assign an array of scalars to a variable • Assign an associative array (aka object or hash) to a variable Auto-programming SDK source
  • 25. 26 Building the API Request Builder
  • 26. 27 • As a separate batch process, a configuration app parses the Swagger file and creates the block definitions, plus relationship records. The output of the configuration tool is used to build the React tool. • React single page application • DocuSign UX library • No significant server components. The tool makes direct calls to DocuSign via CORS. API Request Builder tool
  • 27. 28 • When new documents or diagrams are “uploaded” to the tool, they’re processed within the browser since there is no server. • Likewise, when a diagram file is “downloaded” from the tool, the file is being created within the browser, then downloaded to the desktop. API Request Builder tool
  • 28. 29 Demo items Sections of the tool Demo the initial diagram Open an example diagram for checkboxes Show comments Show hover documentation Move blocks around to show error message Undo, re-do Control-Z and SHIFT Control-Z Duplicate blocks Show toolbox Show documents Show video