The document provides an introduction and overview of APIs, REST, and OpenAPI specification. It discusses key concepts like resources, HTTP verbs, and OpenAPI structure. It also demonstrates OpenAPI syntax using JSON and YAML examples and highlights best practices for documenting APIs with OpenAPI.
OpenAPI is an the emerging standard for creating, managing and consuming REST APIs. Previously named Swagger, in the last year has been adopted by the Linux Foundation and gained the support of companies like Google, Microsoft, IBM, Paypal, etc. to become a de-facto standard for APIs. In this talk we will review 3 uses cases to apply OpenAPI to enhance and speed-up our developments to create OpenAPI compliant APIs.
OpenAPI 3.0, And What It Means for the Future of SwaggerSmartBear
OpenAPI 3.0, which is based on the original Swagger 2.0 specification, is meant to provide a standard format to unify how an industry defines and describes RESTful APIs.
The release of OAS 3.0 marks a significant milestone in the growth of the API economy — bringing together collaborators from across industries, to evolve the specification to meet the needs of API developers and consumers across the world in an open and transparent manner.
We hosted a free Swagger training: OpenAPI 3.0, And What it Means for the Future of Swagger. More than 2,000 people signed up to learn more about the new specification, and to find out about what’s coming next for Swagger and SwaggerHub!
You can watch the full recording of the presentation here: https://swaggerhub.com/blog/api-resources/openapi-3-0-video-tutorial/
Lots of people talk about the benefits OpenAPI Specification (OAS) can bring to your documentation and testing efforts, but few people talk about the real complexities involved when you try to scale OpenAPI usage across a large organization. This talk is about how to scale your OAS usage, who should be using OAS, and what concrete steps you can take now to save lots of time later.
Finally, we’ll take a look at some real world API growing pains that we see at larger Stoplight customers, and their potential solutions.
Writing REST APIs with OpenAPI and Swagger AdaStephane Carrez
The presentation was held in the Ada devroom at the FOSDEM 2018.
The OpenAPI specification is an emerging specification to describe RESTful web services. The Swagger suite is a collection of tools to write such API descriptions and have the code generated in more than 29 languages, including Ada. The presentation will describe how to write a REST operation with OpenAPI, generate the Ada client with Swagger Codegen and use the generated code to interact with the server. We will also describe the generated Ada server code and how to implement the server side and run a complete REST server.
Swagger is a simple yet powerful representation of your RESTful API. With the largest ecosystem of API tooling on the planet, thousands of developers are supporting Swagger in almost every modern programming language and deployment environment. With a Swagger-enabled API, you get interactive documentation, client SDK generation and discoverability.
OpenAPI is an the emerging standard for creating, managing and consuming REST APIs. Previously named Swagger, in the last year has been adopted by the Linux Foundation and gained the support of companies like Google, Microsoft, IBM, Paypal, etc. to become a de-facto standard for APIs. In this talk we will review 3 uses cases to apply OpenAPI to enhance and speed-up our developments to create OpenAPI compliant APIs.
OpenAPI 3.0, And What It Means for the Future of SwaggerSmartBear
OpenAPI 3.0, which is based on the original Swagger 2.0 specification, is meant to provide a standard format to unify how an industry defines and describes RESTful APIs.
The release of OAS 3.0 marks a significant milestone in the growth of the API economy — bringing together collaborators from across industries, to evolve the specification to meet the needs of API developers and consumers across the world in an open and transparent manner.
We hosted a free Swagger training: OpenAPI 3.0, And What it Means for the Future of Swagger. More than 2,000 people signed up to learn more about the new specification, and to find out about what’s coming next for Swagger and SwaggerHub!
You can watch the full recording of the presentation here: https://swaggerhub.com/blog/api-resources/openapi-3-0-video-tutorial/
Lots of people talk about the benefits OpenAPI Specification (OAS) can bring to your documentation and testing efforts, but few people talk about the real complexities involved when you try to scale OpenAPI usage across a large organization. This talk is about how to scale your OAS usage, who should be using OAS, and what concrete steps you can take now to save lots of time later.
Finally, we’ll take a look at some real world API growing pains that we see at larger Stoplight customers, and their potential solutions.
Writing REST APIs with OpenAPI and Swagger AdaStephane Carrez
The presentation was held in the Ada devroom at the FOSDEM 2018.
The OpenAPI specification is an emerging specification to describe RESTful web services. The Swagger suite is a collection of tools to write such API descriptions and have the code generated in more than 29 languages, including Ada. The presentation will describe how to write a REST operation with OpenAPI, generate the Ada client with Swagger Codegen and use the generated code to interact with the server. We will also describe the generated Ada server code and how to implement the server side and run a complete REST server.
Swagger is a simple yet powerful representation of your RESTful API. With the largest ecosystem of API tooling on the planet, thousands of developers are supporting Swagger in almost every modern programming language and deployment environment. With a Swagger-enabled API, you get interactive documentation, client SDK generation and discoverability.
An introduction to a popular framework for Service Oriented REST APIs, Proof of Concepts and Rapid Development. Swagger is a indispensable tool for Software Engineers, Developers and Architects.
Swagger is an open source software framework backed by
a large ecosystem of tools that helps developers
design, build, document and consume RESTful Web
services.
Supporting slide deck for Tony Tam's presentation at I Love APIs 2015. Covers the new swagger project, Swagger Inflector, which allows an API-first definition for REST APIs.
This is a presentation which describe the big picture of the Rest API. In this presentation I simply describe the theories with practical examples. Hope this presentation will cover the overall Rest API domain.
API Testing: The heart of functional testing" with Bj RollisonTEST Huddle
View webinar: http://www.eurostarconferences.com/community/member/webinar-archive/webinar-81-api-testing-the-heart-of-functional-testing
An API, or Application Programming Interface, is a collection of functions that provide much of the functional capabilities in complex software systems. Most customers are accustomed to interacting with a graphical user interface on the computer. But, many customers do not realize the much of the functionality of a program comes from APIs in the operating system or program's dynamic-link libraries (DLL). So, if the business logic or core functionality is exposed via an API call then and if we want to find functional bugs sooner than API testing may be an approach that provides additional value in your overall test strategy. Additionally, API testing can start even before the user interface is complete so functional capabilities can be tested while designers are hashing out the "look and feel." API testing will not replace testing through the user interface, but it can augment your test strategy and provide a solid foundation of automated tests that increase your confidence in the functional quality of your product.
Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services. The overarching goal of Swagger is to enable client and documentation systems to update at the same pace as the server. The documentation of methods, parameters, and models are tightly integrated into the server code, allowing APIs to always stay in sync. With Swagger, deploying managing, and using powerful APIs has never been easier.
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
Presentation to Gluecon 2014 about Swagger for API development and adoption of services. Reverb also announced the Swagger 2.0 Working Group, with Apigee as a founding member
With special guests Ron Ratovsky and Darrel Miller from the OpenAPI Initiative's Technical Steering Committee, this SmartBear webinar session covered the history of Swagger and the OpenAPI Specification, and all the latest changes in OAS 3.1.
RESTful API Testing using Postman, Newman, and JenkinsQASymphony
INCLUDE AUTOMATED RESTFUL API TESTING USING POSTMAN, NEWMAN, AND JENKINS
If you’re going to automate one kind of tests at your company, API testing is the perfect place to start! It’s fast and simple to write as well as fast to execute. If your company writes an API for its software, then you understand the need and importance of testing it. In this webinar, we’ll do a live demonstration of how you can use free tools, such as Postman, Newman, and Jenkins, to enhance your software quality and security.
Elise Carmichael will cover:
Why your API tests should be included with your CI
Real examples using Postman, Newman and Jenkins + Newman
An active Q&A where you can get your automated testing questions answered, live!
To get the most out of this session:
Download these free tools prior to the webinar: Postman, Newman (along with node and npm) and Jenkins
Read up on how to parse JSON objects using javascript
*Can’t attend the webinar live? Register and we will send the recording after the webinar is over.
Document your rest api using swagger - Devoxx 2015johannes_fiala
This session will show you how you can easily document your REST API's using Spring & Swagger.
It will show you how to use the Swagger-Spring integration in a Spring Boot application:
Setup a basic REST API using Spring-Boot together with Swagger-Springfox
Access and test the REST-API using the Swagger-UI client
Generate client code stubs for your language (e.g. Java, PHP, Python, ...) using Swagger-Codegen
Graphically display your REST-API using the Chrome plugin Swagger.ed
Devoxx Belgium Nov. 2015
Spend some time working with OpenAPI and gRPC and you’ll notice that these two technologies have a lot in common. Both are open source efforts, both describe APIs, and both promise better experiences for API producers and consumers. So why do we need both? If we do, what value does each provide? What can each project learn from the other? We’ll bring the two together for a side-by-side comparison and pose answers to these and other questions about two API methodologies that will do much to influence the future of networked APIs.
This presentation walks through essential points for developing and working with REST APIs or web services to communicate through various platforms. This also explains HTTP methods.
An introduction to a popular framework for Service Oriented REST APIs, Proof of Concepts and Rapid Development. Swagger is a indispensable tool for Software Engineers, Developers and Architects.
Swagger is an open source software framework backed by
a large ecosystem of tools that helps developers
design, build, document and consume RESTful Web
services.
Supporting slide deck for Tony Tam's presentation at I Love APIs 2015. Covers the new swagger project, Swagger Inflector, which allows an API-first definition for REST APIs.
This is a presentation which describe the big picture of the Rest API. In this presentation I simply describe the theories with practical examples. Hope this presentation will cover the overall Rest API domain.
API Testing: The heart of functional testing" with Bj RollisonTEST Huddle
View webinar: http://www.eurostarconferences.com/community/member/webinar-archive/webinar-81-api-testing-the-heart-of-functional-testing
An API, or Application Programming Interface, is a collection of functions that provide much of the functional capabilities in complex software systems. Most customers are accustomed to interacting with a graphical user interface on the computer. But, many customers do not realize the much of the functionality of a program comes from APIs in the operating system or program's dynamic-link libraries (DLL). So, if the business logic or core functionality is exposed via an API call then and if we want to find functional bugs sooner than API testing may be an approach that provides additional value in your overall test strategy. Additionally, API testing can start even before the user interface is complete so functional capabilities can be tested while designers are hashing out the "look and feel." API testing will not replace testing through the user interface, but it can augment your test strategy and provide a solid foundation of automated tests that increase your confidence in the functional quality of your product.
Swagger is a specification and complete framework implementation for describing, producing, consuming, and visualizing RESTful web services. The overarching goal of Swagger is to enable client and documentation systems to update at the same pace as the server. The documentation of methods, parameters, and models are tightly integrated into the server code, allowing APIs to always stay in sync. With Swagger, deploying managing, and using powerful APIs has never been easier.
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
Presentation to Gluecon 2014 about Swagger for API development and adoption of services. Reverb also announced the Swagger 2.0 Working Group, with Apigee as a founding member
With special guests Ron Ratovsky and Darrel Miller from the OpenAPI Initiative's Technical Steering Committee, this SmartBear webinar session covered the history of Swagger and the OpenAPI Specification, and all the latest changes in OAS 3.1.
RESTful API Testing using Postman, Newman, and JenkinsQASymphony
INCLUDE AUTOMATED RESTFUL API TESTING USING POSTMAN, NEWMAN, AND JENKINS
If you’re going to automate one kind of tests at your company, API testing is the perfect place to start! It’s fast and simple to write as well as fast to execute. If your company writes an API for its software, then you understand the need and importance of testing it. In this webinar, we’ll do a live demonstration of how you can use free tools, such as Postman, Newman, and Jenkins, to enhance your software quality and security.
Elise Carmichael will cover:
Why your API tests should be included with your CI
Real examples using Postman, Newman and Jenkins + Newman
An active Q&A where you can get your automated testing questions answered, live!
To get the most out of this session:
Download these free tools prior to the webinar: Postman, Newman (along with node and npm) and Jenkins
Read up on how to parse JSON objects using javascript
*Can’t attend the webinar live? Register and we will send the recording after the webinar is over.
Document your rest api using swagger - Devoxx 2015johannes_fiala
This session will show you how you can easily document your REST API's using Spring & Swagger.
It will show you how to use the Swagger-Spring integration in a Spring Boot application:
Setup a basic REST API using Spring-Boot together with Swagger-Springfox
Access and test the REST-API using the Swagger-UI client
Generate client code stubs for your language (e.g. Java, PHP, Python, ...) using Swagger-Codegen
Graphically display your REST-API using the Chrome plugin Swagger.ed
Devoxx Belgium Nov. 2015
Spend some time working with OpenAPI and gRPC and you’ll notice that these two technologies have a lot in common. Both are open source efforts, both describe APIs, and both promise better experiences for API producers and consumers. So why do we need both? If we do, what value does each provide? What can each project learn from the other? We’ll bring the two together for a side-by-side comparison and pose answers to these and other questions about two API methodologies that will do much to influence the future of networked APIs.
This presentation walks through essential points for developing and working with REST APIs or web services to communicate through various platforms. This also explains HTTP methods.
Practices and Tools for Building Better APIsPeter Hendriks
The most important part of well-designed Java code is a nice API. A good API helps developers be more productive and write high-quality code quickly. API design matters for any developer, especially in building larger systems with a team. Modern coding tools such as Eclipse and FindBugs contain advanced tooling to help with designing an API and checking for bad usage. This session demonstrates the latest innovations, including new capabilities in Java 8, by presenting realistic examples based on real experiences in large codebases. They show that just a few Java tricks and simple annotations can make all the difference for building a great API.
Practices and tools for building better API (JFall 2013)Peter Hendriks
Een belangrijke voorwaarde om goede en leesbare Java code te schrijven is om gebruik te maken van een goede API. Een goede API helpt ontwikkelaars om sneller hoogwaardige code te schrijven. Het ontwerp van een API is daarom belangrijk, zeker als er grotere systemen worden gerealiseerd in teamverband. Moderne ontwikkeltools als Eclipse, IntelliJ IDEA en FindBugs helpen met het schrijven van goede API, en het detecteren van slecht gebruik. Deze sessie gaat in op de laatste ontwikkelingen en mogelijkheden, inclusief nieuwe taalmogelijkheden in Java 8. Er wordt hierbij gebruik gemaakt van praktische situaties en concrete codevoorbeelden, gebaseerd op echte ervaringen in grote codebases. Met praktische tips en toegankelijke tools kan al een grote stap gemaakt worden om in de praktijk beter met API ontwerp om te gaan!
apidays LIVE Paris 2021 - Lessons from the API Stewardship Journey in Azure b...apidays
apidays LIVE Paris 2021 - APIs and the Future of Software
December 7, 8 & 9, 2021
Lessons from the API Stewardship Journey in Azure
Ryan Sweet, Principal Architect at Microsoft
The Schema-first API design approach advocates for writing your API definition first in one of many API Specification languages before writing any code. This talk introduces you to the realm of Schema-First API design and how to get started with the OpenAPI ecosystem.
INTERFACE by apidays 2023 - API Design Governance, Nauman Ali, Stoplightapidays
INTERFACE by apidays 2023
APIs for a “Smart” economy. Embedding AI to deliver Smart APIs and turn into an exponential organization
June 28 & 29, 2023
API Design Governance - Key to building consistent APIs at scale
Nauman Ali, Product Manager at Stoplight
------
Check out our conferences at https://www.apidays.global/
Do you want to sponsor or talk at one of our conferences?
https://apidays.typeform.com/to/ILJeAaV8
Learn more on APIscene, the global media made by the community for the community:
https://www.apiscene.io
Explore the API ecosystem with the API Landscape:
https://apilandscape.apiscene.io/
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamtakuyayamamoto1800
In this slide, we show the simulation example and the way to compile this solver.
In this solver, the Helmholtz equation can be solved by helmholtzFoam. Also, the Helmholtz equation with uniformly dispersed bubbles can be simulated by helmholtzBubbleFoam.
Designing for Privacy in Amazon Web ServicesKrzysztofKkol1
Data privacy is one of the most critical issues that businesses face. This presentation shares insights on the principles and best practices for ensuring the resilience and security of your workload.
Drawing on a real-life project from the HR industry, the various challenges will be demonstrated: data protection, self-healing, business continuity, security, and transparency of data processing. This systematized approach allowed to create a secure AWS cloud infrastructure that not only met strict compliance rules but also exceeded the client's expectations.
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
First Steps with Globus Compute Multi-User EndpointsGlobus
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Globus Compute wth IRI Workflows - GlobusWorld 2024Globus
As part of the DOE Integrated Research Infrastructure (IRI) program, NERSC at Lawrence Berkeley National Lab and ALCF at Argonne National Lab are working closely with General Atomics on accelerating the computing requirements of the DIII-D experiment. As part of the work the team is investigating ways to speedup the time to solution for many different parts of the DIII-D workflow including how they run jobs on HPC systems. One of these routes is looking at Globus Compute as a way to replace the current method for managing tasks and we describe a brief proof of concept showing how Globus Compute could help to schedule jobs and be a tool to connect compute at different facilities.
How to Position Your Globus Data Portal for Success Ten Good PracticesGlobus
Science gateways allow science and engineering communities to access shared data, software, computing services, and instruments. Science gateways have gained a lot of traction in the last twenty years, as evidenced by projects such as the Science Gateways Community Institute (SGCI) and the Center of Excellence on Science Gateways (SGX3) in the US, The Australian Research Data Commons (ARDC) and its platforms in Australia, and the projects around Virtual Research Environments in Europe. A few mature frameworks have evolved with their different strengths and foci and have been taken up by a larger community such as the Globus Data Portal, Hubzero, Tapis, and Galaxy. However, even when gateways are built on successful frameworks, they continue to face the challenges of ongoing maintenance costs and how to meet the ever-expanding needs of the community they serve with enhanced features. It is not uncommon that gateways with compelling use cases are nonetheless unable to get past the prototype phase and become a full production service, or if they do, they don't survive more than a couple of years. While there is no guaranteed pathway to success, it seems likely that for any gateway there is a need for a strong community and/or solid funding streams to create and sustain its success. With over twenty years of examples to draw from, this presentation goes into detail for ten factors common to successful and enduring gateways that effectively serve as best practices for any new or developing gateway.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
2. What is an API? And a Web API?
• API stands for Application Programming Interface
• APIs provide ways for software to communicate with other software
• A Web API is an API whose endpoints are exposed to the web
• Want to explore? More than 23k web APIs are listed at
https://www.programmableweb.com/apis/directory
Howdy! My name’s Soundwave, and I’m an API.
Sort of.
4. REST is king (for now)
https://smartbear.com/SmartBearBrand/media/pdf/SmartBear_State_of_API_2019.pdf
5. What is REST?
Representation State Transfer, a software architectural style. REST web
services allow to access and manipulate resources by using a uniform,
idempotent (HTTP), predefined set of stateless operations.
https://en.wikipedia.org/wiki/Representational_state_transfer
REST API
GET /accounts
Response (JSON,
XML, etc.)
Stuff happening behind
the scenes
Client
Data
6. Resources are stuff, not what you do on stuff
• A resource are objetcs you manipulate using the API, from data to
states to attributes. But they can’t be actions!
• ✅ POST /pictures/1/metadata
• 🛑 POST /pictures/1/delete
• Resources have identifiers (that’s why you usually pluralize the nouns)
• Resources usually carry a data model
• Technical writers have much to say about resource naming and styling
https://restfulapi.net/resource-naming/
7. Uniform set of operations: HTTP verbs
• GET: Retrieve a resource or a list of resources
• POST: Create a resource or a list of resources, or send data
• PUT: Update a resource or a list of resources
• PATCH: Partially update a resource or a list of resources
• DELETE: Removes or disable a resource or a list of resources
All you’ll find are recommendations: actions can be implemented in a
variety of non-standard ways – check with your engineering team!
8. Design is Documentation is Design
• You should not limit yourself to the task of documenting the API
• As an API technical writer, you’ve a complete view of the whole API
• You can, and should, help the engineering team to decide:
• Naming and formatting conventions for the API
• Structure of the API
• Style guide for summaries, examples, and descriptions
• Text for the error codes
• Examples
• If nobody is in charge, take the helm
• Recruit architects / lead engineers to deal with the most technical bits
15. OpenAPI 3
• JSON or YAML format
• Can be written using any text or code editor
• Can contain extensions (custom fields)
• Supports CommonMark in description fields
• Names are case sensitive
(cuteDog != cutedog)
• Allows external references ($ref) to reuse
definitions or split large specifications
• https://swagger.io/specification/
17. YAML Basics
• Two-space indent to nest objects
• No need for quotes or braces
• Hyphens for arrays (sequences)
• Arrays (sequences) can be nested
https://learnxinyminutes.com/docs/yaml/
18. Swagger 2 or OpenAPI 3?
https://blog.readme.io/an-example-filled-guide-to-swagger-3-2/
26. Parameters
• path parameters, such as /users/{id}
• query parameters, such as /users?role=admin
• header parameters, such as X-MyHeader: Value
• cookie parameters
• default values can be set in non-required params
• Empty parameters: allowEmptyValue: true
• Nullable? Use nullable: true
• Constant parameters are allowed as well
• Predefined values can be defined using enum:
• Parameters shared by all operations of a path can be defined on the path
level instead of the operation level. Path-level parameters are inherited
by all operations of that path and can be overridden.
27. Let’s go to the pet store
https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml
28. Parameter serialization
• Serialization is translating data into a format that can be transmitted and reconstructed later
• Operation parameters support serialization for path, query, header, and cookie
• Default settings are OK for most cases, but can be overridden using style and explode
Default values
https://swagger.io/docs/specification/serialization
In Style Explode URI template Array example
path simple false /users/{id} /users/3,4,5
query form true /users{?id*} /users?id=3&id=4&id=5
header simple false {id} X-MyHeader: 3,4,5
cookie form true
29. Data types
Type Format Attributes
number /
integer
- float, double
- int32, int64
- minimum, maximum (number)
- exclusiveMinimum, exclusiveMaximum
(bool)
- multipleOf (number)
string - date, date-time, password,
byte, binary (files)
- email, uuid, uri…
- minLength, maxLength (number)
- pattern (regex!)
boolean
array - items: of other types,
including objects
- minItems, maxItems (number)
- uniqueItems (bool)
objects - properties: - required (bool)
- readOnly, writeOnly (bool)
null (nullable:)
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
30. Enum
• Enums can be used to specify acceptable values of a request or a model property
https://swagger.io/docs/specification/data-models/enums/
31. Dictionaries, hashmaps, and associative arrays
• A dictionary (also known as a map, hashmap or associative array) is a set of key/value pairs. OpenAPI lets you
define dictionaries where the keys are strings.
• To define a dictionary, use type: object and use the additionalProperties keyword to specify the
type of values in key/value pairs.
• If the dictionary values can be of any type (aka free-form object), use additionalProperties: true
https://swagger.io/docs/specification/data-models/dictionaries/
32. one of, anyof, allof, not
• oneOf – validates the value against exactly one of the
subschemas
• allOf – validates the value against all the subschemas
• anyOf – validates the value against any (one or more)
of the subschemas
• not – make sure value is not
valid against the specified
schema
• Inheritance: allOf
• Polymorphism: anyOf / oneOf
https://swagger.io/docs/specification/data-models/oneof-anyof-allof-not/
https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/
33. Media types
• Media type declarations go within the
content object
• They have a schema and can have several
examples
• Vendor-specific types are indicated by
.vnd
• Wildcards can be used (for example,
image/*)
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
34. Request body
https://swagger.io/docs/specification/describing-request-body/
• POST, PUT, PATCH can have request bodies
• Optional by default, but can set to required:
true
• Admits summary, description, and examples
• Can link to reusable bodies ($ref)
• File uploads can be specified via media type +
format: binary or format: base64
• multipart/form-data allows to send files
alongside other data
36. Responses
https://swagger.io/docs/specification/describing-responses/
• Each operation must have at least one
response
• Responses are defined by HTTP status codes
• Response data is defined as primitives or
objects
• default: can be used to describe HTTP
codes that are not covered individually for an
operation (for instance, all undescribed error
codes)
• Responses can be reused by defining them
under components
37. Links
• Provide next actions in responses
• Enable self-documented APIs
• Added at responses: level
• operationId: ID of the path element
• operationRef: when ID is not available
• parameters / requestBody: what
parameters or request body are relayed to
the target operation
• Strings containing embedded runtime expressions
or hardcoded values can be used as well:
ID_{$response.body#/id}
start_date: ‘’
https://swagger.io/docs/specification/links/
38. Callbacks
• Used for webhooks and
subscription mechanisms
• Multiple callbacks can be defined
https://swagger.io/docs/specification/callbacks/
39. Examples
• Part of the reference documentation
• Can be added to parameters, properties, and objects
• They can be used to simulate the API behavior
• NOT the same as default values
40. Runtime expressions
Expression Description
$url The full request URL, including the query string.
$method Request HTTP method, such as GET or POST.
$request.query.param_name
The value of the specified query parameter. The parameter must be defined in the operation’s parameters section, otherwise, it
cannot be evaluated. Parameter names are case sensitive.
$request.path.param_name
The value of the specified path parameter. The parameter must be defined in the operation’s parameters section, otherwise, it
cannot be evaluated. Parameter names are case sensitive.
$request.header.header_name
The value of the specified request header. This header must be defined in the operation’s parameters section, otherwise, it
cannot be evaluated. Header names are case insensitive.
$request.body The entire request body.
$request.body#/foo/bar A portion of the request body specified by a JSON Pointer.
$statusCode HTTP status code of the response. For example, 200 or 404.
$response.header.header_name
The complete value of the specified response header, as a string. Header names are case-insensitive. The header does not need
to be defined in the response’s headers section.
$response.body The entire response body.
$response.body#/foo/bar A portion of the request body specified by a JSON Pointer.
foo{$request.path.id}bar Enclose an expression into {} curly braces to embed it into a string.
41. $REF and component reuse
• $ref keyword allows to reuse a definition (so that you type less!)
• Links to the path of the object (can be local, remote, or an URL)
• $ref: '#/definitions/myElement’
• $ref: '../document.json#/myElement’
• $ref: 'http://path/to/your/resource.json#myElement'
https://swagger.io/docs/specification/using-ref/
42. Components object
• Serves as a container of
various reusable definitions,
parameters, examples, etc.
• Only used when $referenced
• Components can act as
aliases for external definitions
45. Most Frequent mistakes (OPENAPI + YAML)
Not indenting properly: not enough spaces, nesting inside the wrong object
Typos: bad paths, names, etc. Names in YAML are case sensitive, too
Using hyphen notation (array) when not needed—writing lists is so tempting
Not escaping strings (for instance description: This is the item: oh hello breaks due to the colon)
Forgetting about colons and slashes, especially in path objects (#components or /users{id})
Using required as a property attribute instead of object-level list
Using wrong data types and keywords
Keywords without a value
Forgetting about keywords (for instance, not adding type to properties)
Using default with required parameters/properties
Forgetting about components—you’ll regret that in the long run
46. Validate your specs!
• Speccy - https://speccy.io/
• speccy lint openapi.yaml
• OpenAPI Lint for VS Code
• SwaggerHub Editor
50. Improve the Gelato API
The Gelato API lets everyone get data on ice creams and toppings. With proper authentication, users
can also add ice creams, toppings, and customers. Let’s improve it!
• Open Swagger Editor and load the gelato.yaml file from here:
http://bit.do/gelatoapi
1. Add contact information to the info object
2. Add the gelatoKey security to the POST operations
3. Define the topping schema in components (toppings need to have an id)
4. Add a DELETE operation to get rid of a topping via its id (don’t forget to tag it and add security)
5. Add the person object properties to the customer object via inheritance
6. Complete the POST operation to add a new customer (hint: it needs request data)
7. Check that the specification is valid and generate .NET server code from the specification
Editor's Notes
REST stands for representational state transfer, a software architectural style.
Resources are abstractions for data you access or manipulate. It can be documents, persons, accounts, or even likes on a page.
Instead of using arbitrary operations as in SOAP, REST web services can use a uniform set of HTTP operations and it’s stateless, meaning that the server remembers nothing about previous queries: every request is treated as new. “No client context shall be stored on the server between requests. The client is responsible for managing the state of the application.”
making multiple identical requests has the same effect as making a single request – then that REST API is called idempotent.
There’s degrees of REST. That’s why we say RESTful. An API can be more or less RESTful depending on how it implements the REST style. The more RESTful an API is, the more uniform, self-descriptive, and stateless it is.
At level 0, which is where we are right now with SOAP, we simply send arbitrary operations over HTTP. We use HTTP as a tunnel, and that’s it. Everything is hidden.
At level 1, we use resources, so there’s an URI per resource, like /user. But we could be using the same HTTP action for two different things, such as creating and deleting gusers.
At level 2, we use HTTP verbs, like GET, DELETE, PUT, etc. Actions are not in the URL, but in the HTTP method. There’s idempotence, meaning that actions can be applied multiple times without changing the result .
At level 3, the API is self-descriptive and can be navigated. Responses include links to dig deeper into the API. Level 4 includes versioning. Level 5 includes next actions!
OpenAPI is a specification format for describing RESTful APIs. It started as Swagger, but it’s now an open source project managed by the Linux Foundation.
The OpenAPI Specification (OAS) defines a standard, language-agnostic interface to RESTful APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic.
An OpenAPI definition can then be used by documentation generation tools to display the API, code generation tools to generate servers and clients in various programming languages, testing tools, and many other use cases.
In OpenAPI you find this powerful idea that you can describe an API with a structured text file, and that that file can be used for multiple purposes, as the single source of truth on the API.
Serves as a contract between team members
Everyone collaborates on REST API design
One spec for testing, implementation, documentation…
Dependencies are removed (FE doesn’t wait for BE, etc.)
Allows to…
…generate interactive reference documentation (try out the API)
…generate code stubs/boilerplate for server-side logic
…create Node tests for the API using oatts
OpenAPI is the most popular API design and specification standard according to the State of the API survey 2019.
Using OpenAPI means having
Not using a standard for defining an API is a bad choice. But then again, why OpenAPI?
This is how a typical OpenAPI 3.0 file looks like. It can be in either JSON or YAML formats…
OpenAPI specification files can be written in JSON or YAML.
My choice is to go with YAML. It’s a superset of JSON, and it’s way easier to write and read. You can insert JSON into YAML but not viceversa. You can also convert between the two of them.
First tough question: Swagger 2.0 or OpenAPI 3.0?
Well, OpenAPI 3.0 is the future, has a simpler, better structure, and better support for the JSON schema. It supports links, callbacks, and other cool features.
Swagger is still the name of the tools, so it can be a bit confusing.
Security schemes are added at API level through the security object.
They can be combined in several ways. In the first example, either basicAuth or apiKey can be used, while in the second it’s apiKey1 AND apiKey2. In the third, it’s OAUTH2 or the combination of two apiKeys.
Security can be defined at path / method level, which overrides global settings.
The PATH object contains the meat of the whole specification. It’s where you’ll spend the most time designing and documenting the API.
The path object is composed of /paths, followed by HTTP operations that contain information such as request parameters/body, responses, etc.
Since OpenAPI 3.0, paths can be deprecated.
Path parameters are variable parts of a URL path. The parameter name must be the same as specified in the path. Also remember to add required: true, because path parameters are always required.
Query parameters go in the URL. To describe API keys passed as query parameters, use securitySchemes and security instead. With allowReserved: true you can avoid the typical percent-encoded URLs.
Header parameters go in the header of the HTTP request. Header parameters named Accept, Content-Type and Authorization are not allowed. To describe these headers, use the corresponding OpenAPI keywords.
OpenAPI 3.0 does not support parameter dependencies and mutually exclusive parameters. There is an open feature request at https://github.com/OAI/OpenAPI-Specification/issues/256.
You can use uniqueItems: true to specify that all items in the array must be unique:
An object is a collection of property/value pairs. The properties keyword is used to define the object properties – you need to list the property names and specify a schema for each property. An object can include nested objects
Tip: In OpenAPI, objects are usually defined in the global components/schemas section rather than inline in the request and response definitions.A schema without a type matches any data type – numbers, strings, objects, and so on. {} is shorthand syntax for an arbitrary-type schema:
OpenAPI 3.0 provides several keywords which you can use to combine schemas. You can use these keywords to create a complex schema, or validate a value against multiple criteria.
Use the anyOf keyword to validate the data against any amount of the given subschemas. That is, the data may be valid against one or more subschemas at the same time.
The not keyword does not exactly combine schemas, but as all of the keywords mentioned above it helps you to modify your schemas and make them more specific.
When request bodies or response payloads may be one of a number of different schemas, a discriminator object can be used to aid in serialization, deserialization, and validation. The discriminator is a specific object in a schema which is used to inform the consumer of the specification of an alternative schema based on the value associated with it.
The term “form data” is used for the media types application/x-www-form-urlencoded and multipart/form-data, which are commonly used to submit HTML forms.
Links are one of the new features of OpenAPI 3.0. Using links, you can describe how various values returned by one operation can be used as input for other operations. It allows an API to be more self-descriptive.
In OpenAPI 3 specs, you can define callbacks – asynchronous, out-of-band requests that your service will send to some other service in response to certain events. This helps you improve the workflow your API offers to clients. A typical example of a callback is subscription functionality – users subscribe to certain events of your service and receive a notification when this or that event occurs. For example, an e-shop can send a notification to the manager on each purchase. These notifications will be “out-of-band”, that is, they will go through a connection other than the connection through which a visitor works, and they will be asynchronous, as they will be out of the regular request-response flow. In OpenAPI 3, you can define the format of the “subscription” operation as well as the format of callback messages and expected responses to these messages. This description will simplify communication between different servers and will help you standardize the use of webhooks in your API.
The way you implement the unsubscription mechanism is up to you. For example, the receiving server can return specific code in response to the callback message to indicate that it is no longer interested in callbacks. In this case, clients can unsubscribe only in response to a callback request. To allow clients to unsubscribe at any time, your API can provide a special “unsubscribe” operation. This is a rather common approach.
OpenAPI runtime expressions are syntax for extracting various values from an operation’s request and response. Links use runtime expressions to specify the parameter values to be passed to the linked operation. The expressions are called “runtime” because the values are extracted from the actual request and response of the API call and not, say, the example valuesprovided in the API specification.
Extensions, or vendor extensions, are custom properties that start with x-, such as x-logo. They can be used to describe extra functionality that is not covered by the standard OpenAPI Specification.