SlideShare a Scribd company logo
1 of 68
Download to read offline
1
● Continuous Integration
● Pipelines
● Continuous Testing
● Microservices
● Continuous Delivery
● CHAOS
● Integration Issues
● Misunderstandings
● Waiting
● Blockers
My Teams Should Be
Moving Faster!
You are adopting “DevOps” and “Microservices” because of the promise of delivering
value faster to your users/customers. But you are not seeing the gains you want to
see. You’ve got CI/CD/Pipelines/Tests/Microservices/etc… But you are still getting
bogged down with teams being dependent on the progress of each other. Service A
isn’t done, so service B cannot work on integration. The UI requires access to ALL of
the services, so it has to wait until the end to be integrated, and integration takes
WEEKS because of back-and-forth issues between the frontend and backend and
between different dependent services. This is NOT how this is supposed to work!
Many of us are familiar with writing code which other people interface with. In C & C+
+ we provide header files to tell other people what our code can do for them. In Java
it might be an Interface definition. This works great for compile-time guarantees, but
what do you do when you are writing services which work over the network or over
the web?
If you have ever written an API or service which is consumed by others, even inside
of your own team, this should be obvious. Every time you make a change to your
service, those external and internal users are going to be annoyed because you just
broke a BUNCH of their code. Take that annoyance and then consider what happens
where there are multiple (perhaps multitudes of) services and worse yet when those
APIs are consumed in the public by your customers. Add into that all of the
complexities of operating a distributed system and you have a recipe for disaster.
2
Source:
https://twitter.com/jezhumble/status/1021897540445196288
Service Architectures Are HARD
“Reminder: If you're building microservices,
you're building a distributed system.”
- Jez Humble
Lots of people have jumped on the Microservices bandwagon in recent years without
TRULY understanding what that means. They have heard that their developer teams
can achieve greater productivity, that their applications can achieve greater
scalability, that their organizations can achieve greater agility, etc… What they fail to
consider, in order to capitalize on those promises, is that they MUST fundamentally
change how their teams/customers/consumers/partners work together. JUST
implementing microservices is NOT going to achieve those goals because you are
now designing a distributed system, and those components all have to work in a
coordinated fashion. If you do not have a way for those disparate groups to
coordinate with one another asynchronously, then you still have a major bottleneck.
Your back-end devs are waiting on Database schemas and provisioning, your front-
end devs are awaiting an API to code against, your customers and partners are
awaiting documentation of those APIs in order to integrate with your services, etc….
Why You Should Be Doing Contract-
First API Development
Deven Phillips
Architect, Cloud-Native Runtimes Practice
@infosec812
3
4
Why Contract-First?
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
● Unambiguous Requirements
● Strong Guarantees
● Enhanced Collaboration
● Parallel Workstreams
● Code Generation
Now that I set the stage for the bad things about cloud-native and microservices
development, let’s talk about how we can make it better…
When you have an API contract, you have enabled:
- Unambiguous requirements - An API contract leaves no doubt or question
about how the API MUST function, and the contract can be used to validate
any implementation
- The Contract provides strong guarantees in the same way that Header files in
C and interfaces in Java provide guarantees. If you comply with the contact, it
will work.
- Enhanced collaboration - The contract provides a place for developers,
consumers, customers, and partners to collaborate on improve the API before
any code is even written
- Parallel Worksteams - And because of these things, we can allow developers
and teams to work independently and in parallel without concern about
compatibility of integration issues
- Code generation - And last, but not least, is the ability to generate the majority
of the boilerplate code - And trust me, this works and is very effective.
Regardless of if you find the code generation and tooling useful, having a simple
format for sharing the contracts for your services amongst all of the users of that
service is of significant value. Let’s learn a little about how simple and expressive it is
to write OpenAPI specifications.
What WAS My Workflow?
5 Source:
https://swagger.io/docs/specification/about/
https://www.apicur.io/
https://openapi-generator.tech/
Build An API Specification
Using a tool like OpenAPI, write an API
specification FIRST
Publish The API Specification
Using a tool like Swagger or Apicur.io, publish
the API specification where others have access
and can collaborate
Generate Code Contracts
Using a tool like OpenAPI Generator, create the
API stubs for both client and server applications.
You can also generate “mock” services and
client SDK libraries!
When I first started to learn about and then teach about API development in this
manner, I had a workflow like what is pictured above. We would build the contract,
publish it and collaborate with consumers of the contract to find out what was right,
what was wrong, what needed improvement, and then we would go an implement the
API. This was OK, and quite effective. We could get the backend implemented so
much faster and avoid lots of wasted effort because we worked out the issues before
we ever invested time in writing implementation code. This was before I had really
been using this extensively across multiple
teams/products/customers/languages/frameworks. This lead to some modifications to
how I, and my team, started using API contracts.
What is my NEW Workflow?
6 Source:
https://swagger.io/docs/specification/about/
https://www.apicur.io/
https://openapi-generator.tech/
Build An API Specification
Using a tool like OpenAPI,
write an API specification
FIRST
Publish The API Specification
Using a tool like Swagger or
Apicur.io, publish the API
specification where others have
access and can collaborate
Generate Code Contracts
Using a tool like OpenAPI
Generator, create the stubs for
the server implementation in your
language of choice.
Design
If you will be creating a UI, create prototypes and rough
implementations. Do usability research with target
users of the UI or API
But I have recently started to see an emergent behavior among my teams,
customers, and colleagues who are adopting Contract-First…
We let the users drive the design of the API… Through user research and design
thinking we determine how the application (and by extension the API) should work.
Especially when developing UIs with APIs… If we prototype and implement the UI
while completely disregarding the backend implementation… For example, we
implement a Vue or React single-page app and work out all of the data that we need
to make a workable user experience. We do usability testing with that UI and get
feedback. We unchain those UI developers to implement the best user experience
possible… We actually have NPM scripts and automation set up in our projects to
allow for live coding the UI against a mock API implementation. If the UI developers
need to change something in the API, they modify the contract and the automation
regenerates the API client and the mock API server reloads and adjusts almost
instantly. This leads to outstanding user experiences because we are focused on
meeting the needs of the users/consumers rather than trying to get the right data
from a backend we didn’t have enough say in defining.
When Designing For A UI
7
Source:
https://github.com/JustinFeng/fakeit
https://vuejs.org/
https://reactjs.org
https://appdev.consulting.redhat.com/tracks/contract-first/contract-first-for-ui-development.html
Dev Server
OpenAPI
Spec
HTTP/REST
When we’re developing an API-driven Vue or React app, we add an OpenAPI YAML
contract to the project. We launch “FakeIt” to provide a mock REST server we can
code against… When we need an API call to get data for the UI, we write it into the
OpenAPI Spec and our package.json is configured to automatically rebuild our API
client code using OpenAPI Generator. FakeIt also watches the OpenAPI YAML file
and updates when the file changes. This means that we can tweak the API in nearly
real-time and only write the implementation once we are certain that the API will suit
the needs of the people who will use it.
I recommend you watch the video our team has published on YouTube showing how
this works with an example Vue application.
Developing The API Server Implementation
8 Source:
https://openapi-generator.tech/
https://appdev.consulting.redhat.com/tracks/contract-first/
https://schemathesis.readthedocs.io/en/stable/
API Contract OpenAPI Generator
SCHEMATHESIS
Test &
Validate
We take the API contract, we generate the server stubs in our preferred language or
framework, implement the business logic/persistence. All the while we are using a
tool like Schemathesis to automatically test our implementation by using the API
contract to create validations. No code needed and schemathesis will generate
HUNDREDS of tests for each operation in our API Spec. Without needing to write
any tests we can know at development time if our implementation satisfies our API
contract. THAT is shifting left and shortening feedback cycles. That’s not to say that
we don’t need to write tests, but we’re able to write fewer tests and develop faster
with a clear and visible finish-line.
But the generated code isn’t right for my . . .
9
Source:
https://openapi-generator.tech/
https://appdev.consulting.redhat.com/tracks/contract-first/
https://mustache.github.io/
https://github.com/redhat-appdev-practice/
CUSTOMIZE IT!
...team!
...organization!
...database!
...library!
...security!
…compliance!
In our experience, the code which is generated should be treated like a “black box”....
You should never directly modify it. We go so far as to say that generated code
should not even be committed to version control. You should instead seek to extend
the generated code through composition or inheritance… If that’s insufficient, then
you can customize the code being generated. We have done this ourselves with
OpenAPI Generator and it’s Mustache Templates. We have added things like ORM
support, distributed tracing support, metrics and monitoring support, health checks,
and more. This is an opportunity. Those of you who are or seek to become architects
can build out best-practices into your customized OpenAPI Generator Templates and
everyone in the company can benefit the next time they update their build! It
accelerates innovation for every team using that language/framework! We have
several examples of customized OpenAPI Generator templates on our GitHub site
linked in this slide.
10
● Design First
● Get Feedback From Users
● Generate Server Code
● Generated Code Is Disposable
● Use Automated Testing Tools
● Publish Client Libraries
Lessons Learned
Design First! Make sure that the API you are preparing to create is the API that your
users will love to use. You can achieve that by performing user research. Look into
The “Sprint” book and learn how a Design Sprint is done and how the associated
user research is done… Even better, hire a designer!
Once you have confirmed your API design, GENERATE most of the server code
using a tool like OpenAPI Generator. This will have multiple positive effects:
1. It pretty much guarantees that your server complies with the API Spec
2. You avoid writing a lot of boilerplate code
3. You make it easier to do Test Driven Development
4. When your API Spec changes, you get hints from your IDE/Build Tools about
what needs to be changed
Treat the generated code the way that all generated code should be treated, ignore
it… Specifically, gitignore it. Let your build process regenerate the code on every
build. This ensures that your API is always up-to-date with the Spec
Use automated testing tools like Schemathesis to validate that your API is compliant
with your specification. This can accelerate your acceptance testing and shorten your
feedback loops.
Finally, use your specification to generate, then publish client libraries for your API. I
have NEVER had to modify a client library generated by OpenAPI Generator, and
your users will love you for making it that much easier for them to consume your API.
Let me tell you a story . . .
11
Source:
https://www.redhat.com/en/about/videos/the-puckboard-story-transforming-us-armed-forces
About 2 years ago, we used this approach in a rather unique situation… Several
branches of the US Military needs a solution for scheduling training for their pilots
and air crew. Since the beginning, this scheduling was done by hand with qualifies
pilots and aircrew using a “puckboard”, a whiteboard dividing into grids and magnetic
“pucks” to indicate what, who, and where training would happen. This means that
many individuals who could be flying planes and managing cargo were in fact running
around collecting paperwork, training records, airspace allocations, and lots of other
information in order to do this scheduling. They had tried several times in the past to
hire contractors to build a system which could help them accomplish the task and all
of those initiatives had failed because only people truly immersed in the job could
comprehend what was involved. We took 6 uniformed service members . . . Airmen
and pilots . . . people with little or no skills in software development. We helped them
to prototype, design, validate, analyze, and synthesize a system. We then used this
contract-first approach to generate most of their implementation code. In the span of
about 2 months they produced a working MVP which they demonstrated to their
senior leadership in Washington D.C. The project was a HUGE success and is still
ongoing. In fact, the US Air Force has created a new division within their service
where uniformed service members develop software internally instead of outsourcing,
and are achieving higher quality, better fit, improved efficiency, and major cost
savings. This is just one of many examples I have seen first-hand over the last few
years.
Red Hat is the world’s leading provider of enterprise
open source software solutions. Award-winning
support, training, and consulting services make
Red Hat a trusted adviser to the Fortune 500.
Thank you
12
Try It Yourself
Learn More
https://bit.ly/rhcnad
bit.ly Red Hat Cloud Native App Dev RHCNAD
The Traditional Workflow
Service Architectures Are HARD
13
Project Planning
The business stakeholders spend time writing
up a project plan for a series of services and
potentially a user interface
Send To Developers
The various development teams attempt to
interpret the project plan and implement their
code so that they are compatible
Iterate And Integrate
The developer teams iteratively try to resolve
integration issues and spends lots of time
ensuring compatibility
This is a lot like traditional waterfall development of products, and as such it has lots
of bottleneck which prevent efficient progress. The project planning is a time
consuming process and often creates documents that are too vague and leave too
much room for interpretation. The developers try to consistently implement code
which is defined in the project plan, but differences of understanding and terminology
make it easy for separate teams to end up with incompatible implementations. This
results in lots of time and iterations required to resolve compatibility and integration
issues at a point very far along in the development process. Lots of re-work,
debugging, miscommunications, etc… Wouldn’t it be better if we could get faster
feedback?
14
● Editors
● Server Implementations
● Client Implementations
● Testing Tools
● Mocking Tools
OpenAPI Tools
There are many tools around OpenAPI which make it possible to do faster and more
asynchronous development so that teams, developers, customers, and partners can
develop clients and servers reliably.
OpenAPI Tools
15
Editors:
Source:
https://openapi.tools/
● APICurio (apicur.io)
● Swagger Editor (editor.swagger.io)
● VSCode
● IntelliJ
● Eclipse
There are a number of editors and tools which can be used to create/edit/validate an
OpenAPI specification. Red Hat actually has people working on Apicur.io, but
Swagger Editor and IDE plugins are also viable options.
OpenAPI Tools
16
Server Implementations:
Source:
https://openapi.tools/
● OpenAPI Generator (50+ Language/Framework combinations)
● NSwag (ASP.NET)
● Vert.x Web OpenAPI (Reactive)
● MicroTS (TypeScript)
● @smartrecruiters/openapi-first (JavaScript)
OpenAPI Generator can GENERATE code for a number of different languages (Java,
JavaScript, Go, Erlang, Elixir, Typescript, Ruby, Python, etc…) and frameworks (JAX-
RS, Spring, Express, Phoenix, etc…)
Vert.x toolkit includes the ability to generate RESTful endpoints and even generate
code for Service stubs
MicroTS generates a NodeJS/Express service using TypeScript
openapi-first also generates a NodeJS/Express server, but much of the boilerplate
code is generated on-the-fly at runtime and we just write business logic.
OpenAPI Tools
17
Client Implementations:
Source:
https://openapi.tools/
● OpenAPI Generator (65+ Language/Framework combinations)
● NSwag (CSharp/.NET)
● APIMATIC
● openapi-client-axios
OpenAPI Generator can GENERATE code for a number of different platforms (Java,
JavaScript, Go, Erlang, Elixir, Typescript, Ruby, Python, etc…) and frameworks (JAX-
RS, Spring, Express, Phoenix, etc…)
Vert.x toolkit includes the ability to generate client implementations in ANY of the
supported Vert.x languages (Java, JavaScript, Typescript, Clojure, Scala, Kotlin,
Groovy, etc..)
APIMatic is a SaaS solution for generating an SDK package in any number of
languages based on an OpenAPI Spec
openapi-client-axios can use an OpenAPI spec to create a fully async-enabled Axios
client for your JavaScript and Typescript applications
OpenAPI Tools
18
Testing Tools:
Source:
https://openapi.tools/
● Schemathesis
● Chai OpenAPI Response Validator
● hikaku
● Assertible
Schemathesis - My personal favorite right now. It’s a command-line tool which
reads your OpenAPI Spec and the base URL for your implementation. It then
uses property-based testing techniques to create tests to validate your
implementation. For example, in my simple Todo API it generates over 2000
tests for just 6 methods!!!
Chai OpenAPI Response Validator - Simple Chai support for asserting that
HTTP responses satisfy an OpenAPI spec.
hikaku - A library that tests if the implementation of a REST-API meets its
specification.
Assertible - Import an OpenAPI specification into Assertible to generate tests
that validate JSONSchema responses and status codes on every endpoint.
What’s The Workflow?
Service Architectures Are HARD
19 Source:
https://grpc.io/
https://github.com/
https://developers.google.com/protocol-buffers/
Build An API Specification
Using a tool like gRPC, write an API specification
FIRST
Publish The API Specification
Write your specification in protoc format and
publish it to a public repository
Generate Code Contracts
Using a tool like protoc, create the API stubs for
both client and server applications. You can also
generate “mock” services and client SDK
libraries!
Another valid option for doing contract-first API development is to use gRPC:
gRPC is a modern open source high performance RPC framework that can run in
any environment. It can efficiently connect services in and across data centers with
pluggable support for load balancing, tracing, health checking and authentication. It is
also applicable in last mile of distributed computing to connect devices, mobile
applications and browsers to backend services.
gRPC specifications are written in a format called “protocol buffers” which is it’s own,
small, domain-specific language.
There are other solutions for contract-first, but OpenAPI and gRPC seem to be the
most widely adopted. Others include: RAML, RSDL, OData, APIBlueprint, I/O Docs,
Apache Avro, etc….
20
● Types
● Endpoints
● Verbs
● Parameters
● Security
● Extensions
Learning OpenAPI
Because of it’s massive amount of available tooling, we’re going to focus on OpenAPI
for now. There is significant documentation for gRPC available on-line if you should
choose to go that direction as well.
OpenAPI Basics
21
API Description:
---
openapi: 3.0.2
info:
title: Petstore
description: 'This is a sample Petstore API.'
termsOfService: http://redhat.com/terms/
contact:
email: open-innovation-labs@redhat.com
license:
name: Apache 2.0
url: http://apache.org/licenses/LICENSE-2.0
version: 1.0.0
---
openapi: 3.0.2
info:
title: Petstore
description: 'This is a sample Petstore API.'
termsOfService: http://redhat.com/terms/
contact:
email: open-innovation-labs@redhat.com
license:
name: Apache 2.0
url: http://apache.org/licenses/LICENSE-2.0
version: 1.0.0
externalDocs:
description: Find out more about OpenAPI
url: http://swagger.io
servers:
- url: https://petstore.swagger.io/v2
- url: http://petstore.swagger.io/v2
tags:
- name: pet
description: Everything about your Pets
externalDocs:
description: Find out more
url: http://swagger.io
externalDocs:
description: Find out more about OpenAPI
url: http://swagger.io
servers:
- url: https://petstore.swagger.io/v2
- url: http://petstore.swagger.io/v2
tags:
- name: pet
description: Everything about your Pets
externalDocs:
description: Find out more
url: http://swagger.io
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
OpenAPI documents are written in either YAML or JSON.
- They start with a declaration of which version of the OpenAPI specification we
are going to use to describe our API.
- The title and description are used when generating client SDKs from code
generators
- The “servers” section can be used to set up appropriate CORS and XSS
configurations
- The license lets your customers and partners know how they may re-use this
content.
Everything else here is informational and pretty much optional, though still good
practice for us to include.
OpenAPI Basics
22
Type Definitions:
components:
schemas:
Order:
type: object
required:
- id
- petId
properties:
id:
type: string
format: uuid
petId:
type: integer
format: int64
quantity:
type: integer
format: int32
components:
schemas:
Order:
type: object
required:
- id
- petId
properties:
id:
type: string
format: uuid
petId:
type: integer
format: int64
quantity:
type: integer
format: int32
shipDate:
type: string
format: date-time
status:
type: string
description: Order Status
enum:
- placed
- approved
- delivered
complete:
type: boolean
default: false
xml:
name: Order
shipDate:
type: string
format: date-time
status:
type: string
description: Order Status
enum:
- placed
- approved
- delivered
complete:
type: boolean
default: false
xml:
name: Order
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
In a section called “components” and a subsection called “schemas”, we can define
the data types which will be produced and consumed by our API. For example, here
we see an “Order” object defined. These schemas are defining the resources our API
will be producing/consuming.
- When defining a new type, you specify the type as “object”
- Next, you can define which fields are required to be valid
- Each field can be a primitive type or a reference to another object type, also
format
- If you wish to support XML, you can define what the top-level XML element
will be named
- Enumerated types are also supported
OpenAPI Basics
23
Endpoints:
/store/order:
post:
tags:
- store
summary: Place an order for a pet
operationId: placeOrder
requestBody:
description: order placed
content:
'*/*':
schema:
$ref: '#/components/schemas/Order'
required: true
/store/order:
post:
tags:
- store
summary: Place an order for a pet
operationId: placeOrder
requestBody:
description: order placed
content:
'*/*':
schema:
$ref: '#/components/schemas/Order'
required: true
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref:
'#/components/schemas/Order'
application/json:
schema:
$ref:
'#/components/schemas/Order'
400:
description: Invalid Order
content: {}
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref:
'#/components/schemas/Order'
application/json:
schema:
$ref:
'#/components/schemas/Order'
400:
description: Invalid Order
content: {}
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
Here we have defined a REST endpoint which handles a POST verb. The content of
the POST body is defined as accepting the “Order” type we showed in the previous
slide. We have also defined that our API consume and produces both JSON and
XML.
- The PATH for the endpoint
- The HTTP Verb for this operation
- The “operationId” is used by many code-generators to create method names
for both the server and client SDK implementations
- The content of the request is described either directly or using a reference to
a previously defined type
- Response codes and their associated bodies are defined either directly or
using a reference to a previously defined type
OpenAPI Basics
24
Parameters:
/store/order:
get:
summary: Retrieve all orders
operationId: getOrders
parameters:
- in: query
name: startDate
required: false
schema:
type: string
format: datetime
- in: query
name: endDate
required: false
schema:
type: string
format: datetime
/store/order:
get:
summary: Retrieve all orders
operationId: getOrders
parameters:
- in: query
name: startDate
required: false
schema:
type: string
format: datetime
- in: query
name: endDate
required: false
schema:
type: string
format: datetime
/store/order/{orderId}:
get:
summary: Retrieve all orders
operationId: getOrderById
parameters:
- in: path
name: orderId
required: true
schema:
type: string
format: uuid
/store/order/{orderId}:
get:
summary: Retrieve all orders
operationId: getOrderById
parameters:
- in: path
name: orderId
required: true
schema:
type: string
format: uuid
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
We can also specify the parameters which can be passed for various endpoints in
our API. Here we see query parameters and path parameters defined and we can
also see that some are required while others are not.
OpenAPI Basics
25
Security:
components:
securitySchemes:
BasicAuth:
type: http
scheme: basic
BearerAuth:
type: http
scheme: bearer
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
OpenID:
type: openIdConnect
openIdConnectUrl: https://ex.io/oid-config
components:
securitySchemes:
BasicAuth:
type: http
scheme: basic
BearerAuth:
type: http
scheme: bearer
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
OpenID:
type: openIdConnect
openIdConnectUrl: https://ex.io/oid-config
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://ex.io/oauth/auth
tokenUrl: https://ex.io/oauth/token
scopes:
read: Grants read access
write: Grants write access
admin: Grants admin access
OAuth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://ex.io/oauth/auth
tokenUrl: https://ex.io/oauth/token
scopes:
read: Grants read access
write: Grants write access
admin: Grants admin access
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
Here we have defined a REST endpoint which handles a POST verb. The content of
the POST body is defined as accepting the “Order” type we showed in the previous
slide. We have also defined that our API consume and produces both JSON and
XML.
- The PATH for the endpoint
- The HTTP Verb for this operation
- The “operationId” is used by many code-generators to create method names
for both the server and client SDK implementations
- The content of the request is described either directly or using a reference to
a previously defined type
- Response codes and their associated bodies are defined either directly or
using a reference to a previously defined type
OpenAPI Basics
26
Extensions:
/store/order:
post:
tags:
- store
summary: Place an order for a pet
operationId: placeOrder
x-vertx-event-bus:
address: com.myapp.store.order
requestBody:
description: order placed
content:
'*/*':
schema:
$ref: '#/components/schemas/Order'
required: true
/store/order:
post:
tags:
- store
summary: Place an order for a pet
operationId: placeOrder
x-vertx-event-bus:
address: com.myapp.store.order
requestBody:
description: order placed
content:
'*/*':
schema:
$ref: '#/components/schemas/Order'
required: true
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref:
'#/components/schemas/Order'
application/json:
schema:
$ref:
'#/components/schemas/Order'
400:
description: Invalid Order
content: {}
responses:
200:
description: successful operation
content:
application/xml:
schema:
$ref:
'#/components/schemas/Order'
application/json:
schema:
$ref:
'#/components/schemas/Order'
400:
description: Invalid Order
content: {}
Source:
https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md
The OpenAPI specification leaves room for extension, so if you want to implement
something specific to a toolkit/framework/platform; you can. For example, here we
see a field which start with “x-”, indicating it’s an extension to the OpenAPI
specification standard. This one is specific to writing applications using Vert.x and
allows us to tell Vert.x more information about our API in order to help it integrate with
the OpenAPI spec in a way which is toolkit specific. Sometimes you will see
extensions for database schema generation, or security support systems, etc… The
OpenAPI spec can be extended without writing any custom code, but you may like to
extend OpenAPI Generator so that it can generate more/better code for your
organization and even further reduce the amount of work required.
27
Optional subheading Lorem ipsum dolor sit
amet consectetuer adipiscing elit sed diam
Presentation title
should not exceed
three lines
Presenter’s Name
Title
OPTIONALSECTIONMARKERORTITLE
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
28
Red Hat is the world’s leading provider of enterprise
open source software solutions. Award-winning support,
training, and consulting services make Red Hat a trusted
adviser to the Fortune 500.
Thank you
OPTIONALSECTIONMARKERORTITLE
29
OPTIONAL SECTION MARKER OR TITLE
Optional supporting copy.
Lorem ipsum dolor sit
amet, consectetuer adipis
elit, sed diam nonummy
nibh euismod tincidunt ut
laoreet. magna aliquam.
Divider title
limit to two lines
QUICK TIP
Try right clicking on the photo and
using “Replace Image” to insert
your own photo. You are also
welcome to use this photo.
30
OPTIONAL SECTION MARKER OR TITLE
Optional supporting copy.
Lorem ipsum dolor sit
amet, consectetuer adipis
elit, sed diam nonummy
nibh euismod tincidunt ut
laoreet. magna aliquam.
Divider title
limit to two lines
QUICK TIP
Try right clicking on the photo and
using “Replace Image” to insert
your own photo. You are also
welcome to use this photo.
31
OPTIONAL SECTION MARKER OR TITLE
Divider title
limit to two lines
QUICK TIP
Try right clicking on the photo and
using “Replace Image” to insert
your own photo. You are also
welcome to use this photo.
Optional supporting copy.
Lorem ipsum dolor sit
amet, consectetuer adipis
elit, sed diam nonummy
nibh euismod tincidunt ut
laoreet. magna aliquam.
Lorem ipsum dolor sit
amet, consectetuer
adipisc elit sed dia nibh?
32
OPTIONALSECTIONMARKERORTITLE
Lorem ipsum dolor sit
amet, consectetuer
adipisc elit sed dia nibh?
33
OPTIONAL SECTION MARKER OR TITLE
34
OPTIONALSECTIONMARKERORTITLE
Lorem ipsum
dolor sit amet,
consectetuer
adipisc elit?
CORPORATE SLIDE TEMPLATES
35
This section
includes:Agenda slide templates
Content slide templates
Quote slide templates
What we’ll be
discussing today
AGENDA
36 Source:
Insert source data here
Insert source data here
Insert source data here
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
AGENDA
37 Source:
Insert source data here
Insert source data here
Insert source data here
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
Topic
What we’ll be
discussing today
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
38 Source:
Insert source data here
Insert source data here
Insert source data here
QUICK TIP
Try right clicking on the photo and using
“Replace Image” to insert your own photo.
You are also welcome to use this photo.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim
veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea
commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
39 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia.
Body headline
Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia.
Body headline
Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia.
Body headline
Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia.
QUICK TIP
Try right clicking on the icon and using
“Replace Image” to insert your own icons.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
40 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
QUICK TIP
Try right clicking on
the photo and using
“Replace Image” to
insert your own photo.
You are also welcome
to use this photo.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
41 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
QUICK TIP
Try right clicking on the icon and using
“Replace Image” to insert your own icons.
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
sed diam nonummy nibh
euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
42 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
erat volutpat. Ut wisi enim ad minim veniam, quis nost.
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
erat volutpat. Ut wisi enim ad minim veniam, quis nost.
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam
erat volutpat. Ut wisi enim ad minim veniam, quis nost.
QUICK TIP
Try right clicking on the icon and using
“Replace Image” to insert your own icons.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
43 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna.
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna.
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna.
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna.
QUICK TIP
Try right clicking on the icon and using
“Replace Image” to insert your own icons.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
44 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscin
elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi
enim ad minim veniam, quis nost.
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscin
elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi
enim ad minim veniam, quis nost.
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscin
elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi
enim ad minim veniam, quis nost.
Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscin
elit, sed diam nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat volutpat. Ut wisi
enim ad minim veniam, quis nost.
QUICK TIP
Try right clicking on the icon and using
“Replace Image” to insert your own icons.
OPTIONAL SECTION MARKER OR TITLE
45 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Duis id auctor dui. Ut neque
sem, convallis sit amet ultrices et, facilisis
vestibulum ligula. Donec euismod elementum
erat vitae fermentum. Mauris hendrerit
maximus bibendum.
“”
John Doe
CTO, Acme Unlimited
QUICK TIP
Using a photo with the large quote is optional.
Try right clicking on the photo and using
“Replace Image” to insert your own photo.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
46 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetuer adipis
elit, sed diam nonummy nibh euismod tincidunt
ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud
exerci tation ullam.
“”
John Doe
CTO, Acme Unlimited
Lorem ipsum dolor sit amet, consectetuer adipis
elit, sed diam nonummy nibh euismod tincidunt
ut laoreet dolore magna aliquam erat volutpat.
Ut wisi enim ad minim veniam, quis nostrud
exerci tation ullam.
“”
Jane Doe
CTO, Acme Unlimited
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
47 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat
volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation.
John Doe
CTO, Acme Unlimited
“” Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat
volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation.
John Doe
CTO, Acme Unlimited
“” Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut
laoreet dolore magna aliquam erat
volutpat. Ut wisi enim ad minim veniam,
quis nostrud exerci tation.
John Doe
CTO, Acme Unlimited
“”
CORPORATE SLIDE TEMPLATES
48
This section
includes:Data slide templates
Table slide templates
Timeline slide templates
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
49 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore magna aliquam erat.
65%
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore magna aliquam erat.
82%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
50 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna
aliquam erat volutpat. Ut wisi enim
ad minim veniam, quis nostrud
exerci tation ullam.
Label
00%
Lorem ipsum
dolor sit amet
00%
Lorem ipsum
dolor sit amet
00%
Lorem ipsum
dolor sit amet
00%
Lorem ipsum
dolor sit amet
00%
Lorem ipsum
dolor sit amet
00%
Lorem ipsum
dolor sit amet
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
51 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna
aliquam erat volutpat. Ut wisi enim
ad minim veniam, quis nostrud
exerci tation ullam.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh
euismod tincidunt ut laoreet dolore.
00% 00%
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
52 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
00% 00% 00%
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
53 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
sed diam nonummy nibh
euismod tincidunt ut laoreet
dolore magna aliquam erat
volutpat. Wisi enim ad minim.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh mod
tincidunt ut laoreet dolore.
000 000
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
54 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore.
000Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore.
000Body headline
Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod
tincidunt ut laoreet dolore.
000Body headline
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
55 Source:
Insert source data here
Insert source data here
Insert source data here
01 Title of chart
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
Lorem ipsum
dolor sit amet
Lorem ipsum
dolor sit amet
QUICK TIP
Use the “Width Scale” in the “Size & Position” pane of the format
options panel to adjust the percentage of the bar.
OPTIONAL SECTION MARKER OR TITLE
56 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
sed diam nonummy nibh
euismod tincidunt ut laoreet
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
00% Lorem ipsum
Lorem ipsum
dolor sit amet
Lorem ipsum
dolor sit amet
01 Title of chart
QUICK TIP
Use the “Width Scale” in the “Size & Position” pane of the format
options panel to adjust the percentage of the bar.
OPTIONAL SECTION MARKER OR TITLE
57 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit
amet, consectetuer
adipiscing elit, sed diam
nonummy nibh euismod
tincidunt ut laoreet
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit, sed
diam nonummy nibh euismod
tincidunt ut laoreet dolore magna
COLUMN HEADER
TWO LINES MAXIMUM
COLUMN HEADER
TWO LINES MAXIMUM
COLUMN HEADER
TWO LINES MAXIMUM
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
01 Title of table
OPTIONAL SECTION MARKER OR TITLE
58 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
01 Title of table
COLUMN HEADER
TWO LINES MAXIMUM
COLUMN HEADER
TWO LINES MAXIMUM
COLUMN HEADER
TWO LINES MAXIMUM
COLUMN HEADER
TWO LINES MAXIMUM
COLUMN HEADER
TWO LINES MAXIMUM
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
ROW HEADER
TWO LINES MAXIMUM
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Body cell should be
limited to two lines
Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet
OPTIONAL SECTION MARKER OR TITLE
59 Source:
Insert source data here
Insert source data here
Insert source data here
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
diam nonummy nibh euismod.
20XX
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
diam nonummy nibh euismod.
20XX
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
diam nonummy nibh euismod.
20XX
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
diam nonummy nibh euismod.
20XX
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
diam nonummy nibh euismod.
20XX
Body headline
Lorem ipsum dolor sit amet,
consectetuer adipiscing elit,
diam nonummy nibh euismod.
20XX
OPTIONAL SECTION MARKER OR TITLE
60 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sedie
diam nonummy nibh euismod tincidunt ut laoreet dolore magna
aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud
exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea
Heading
QUICK TIP
Try right clicking on the photo and using
“Replace Image” to insert your own photo.
You are also welcome to use this photo.
OPTIONAL SECTION MARKER OR TITLE
61 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectet adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolor aliquam.
Heading
Lorem ipsum dolor sit amet, consectet adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolor aliquam.
Heading
Lorem ipsum dolor sit amet, consectet adipiscing elit, sed diam
nonummy nibh euismod tincidunt ut laoreet dolor aliquam.
Heading
20XX
20XX
QUICK TIP
Try right clicking on
the photo and using
“Replace Image” to
insert your own photo.
You are also welcome
to use this photo.
OPTIONAL SECTION MARKER OR TITLE
62 Source:
Insert source data here
Insert source data here
Insert source data here
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sedie
diam nonummy nibh euismod tincidunt ut laoreet dolore magna
aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud
exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea
Heading
QUICK TIP
Try right clicking on the photo and using
“Replace Image” to insert your own photo.
You are also welcome to use this photo.
New template
63
Many people experience our brand by seeing
one of the thousands of presentations
Red Hatters deliver each year.
From Summit keynotes to conference-room sales meetings, we want our public face
to be coherent and recognizable. Our content must be meaningful and relevant to
our audiences. Our stories should be told in a clear, compelling way.
CORPORATE SLIDE TEMPLATES
64
HOW TO BUILD AN EFFECTIVE PRESENTATION
https://pnt.redhat.com/pnt/p-611879/
GETTING STARTED WITH GOOGLE SLIDES
https://gsuite.google.com/learning-center/products/slides/get-started/#!/
Please use the Overpass font for
your presentation.
The Red Hat Display and Text fonts will be available in Google Slides
soon. We will update the template when it is available.
CORPORATE SLIDE TEMPLATES
65
CORPORATE SLIDE TEMPLATES
66
This section
includes:Title slide templates
Closing slide templates
Divider slide templates
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat
Red Hat is the world’s leading provider of enterprise
open source software solutions. Award-winning
support, training, and consulting services make
Red Hat a trusted adviser to the Fortune 500.
Thank you
67
Optional subheading
Presentation title should not
exceed two lines
Presenter’s Name
Title
Presenter’s Name
Title
68
QUICK TIP
Right click on the logo and using “Replace Image”
insert the product logo of your choice. Simply
delete if no product logo is needed.

More Related Content

What's hot

Kong API Gateway
Kong API Gateway Kong API Gateway
Kong API Gateway Chris Mague
 
Introduction to Kong API Gateway
Introduction to Kong API GatewayIntroduction to Kong API Gateway
Introduction to Kong API GatewayYohann Ciurlik
 
Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Judy Breedlove
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQAraf Karsh Hamid
 
An Introduction to OAuth2
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2Aaron Parecki
 
Introduction to OpenID Connect
Introduction to OpenID Connect Introduction to OpenID Connect
Introduction to OpenID Connect Nat Sakimura
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot ObservabilityVMware Tanzu
 
Implementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakImplementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakYuichi Nakamura
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message BrokerMartin Toshev
 
API Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementAPI Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementBizTalk360
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services ArchitectureAraf Karsh Hamid
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - IntroductionKnoldus Inc.
 
OpenAPI at Scale
OpenAPI at ScaleOpenAPI at Scale
OpenAPI at ScaleNordic APIs
 

What's hot (20)

Kong API Gateway
Kong API Gateway Kong API Gateway
Kong API Gateway
 
Introduction to Kong API Gateway
Introduction to Kong API GatewayIntroduction to Kong API Gateway
Introduction to Kong API Gateway
 
Building mobile apps on aws
Building mobile apps on awsBuilding mobile apps on aws
Building mobile apps on aws
 
Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)Introduction to red hat agile integration (Red Hat Workshop)
Introduction to red hat agile integration (Red Hat Workshop)
 
KrakenD API Gateway
KrakenD API GatewayKrakenD API Gateway
KrakenD API Gateway
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
An Introduction to OAuth2
An Introduction to OAuth2An Introduction to OAuth2
An Introduction to OAuth2
 
Demystifying OAuth 2.0
Demystifying OAuth 2.0Demystifying OAuth 2.0
Demystifying OAuth 2.0
 
Introduction to OpenID Connect
Introduction to OpenID Connect Introduction to OpenID Connect
Introduction to OpenID Connect
 
Spring Boot Observability
Spring Boot ObservabilitySpring Boot Observability
Spring Boot Observability
 
API Management in Azure
API Management in AzureAPI Management in Azure
API Management in Azure
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Implementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on KeycloakImplementing WebAuthn & FAPI supports on Keycloak
Implementing WebAuthn & FAPI supports on Keycloak
 
The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
Golang Channels
Golang ChannelsGolang Channels
Golang Channels
 
API Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementAPI Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API Management
 
Micro services Architecture
Micro services ArchitectureMicro services Architecture
Micro services Architecture
 
Api presentation
Api presentationApi presentation
Api presentation
 
OAuth2 - Introduction
OAuth2 - IntroductionOAuth2 - Introduction
OAuth2 - Introduction
 
OpenAPI at Scale
OpenAPI at ScaleOpenAPI at Scale
OpenAPI at Scale
 

Similar to Here are some key points about the workflow:- The OpenAPI specification is used to define the API contract first before any code is written. This allows collaboration on the API design.- Code generation tools like OpenAPI Generator are used to produce server stubs and client SDKs from the OpenAPI spec to get started quickly. - For UI development, a mock API server like FakeIt is used to prototype the UI against before the real backend is implemented. This allows independent and parallel work.- As the UI is developed, the OpenAPI spec is updated and changes are automatically picked up by the mock server and regenerated client. - For the backend, OpenAPI Generator produces the initial server stubs which are then implemented with the business

Practical guide to building public APIs
Practical guide to building public APIsPractical guide to building public APIs
Practical guide to building public APIsReda Hmeid MBCS
 
Introduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleIntroduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleSandeep Hijam
 
How AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdf
How AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdfHow AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdf
How AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdfMoon Technolabs Pvt. Ltd.
 
Role of CMS & Webservices - Mobile Apps
Role of CMS & Webservices - Mobile AppsRole of CMS & Webservices - Mobile Apps
Role of CMS & Webservices - Mobile AppsDivya Jyot
 
React Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfReact Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfTechugo
 
From API-First to SDK-First
From API-First to SDK-FirstFrom API-First to SDK-First
From API-First to SDK-FirstNordic APIs
 
Case study for software architect
Case study for software architectCase study for software architect
Case study for software architectOsama Mustafa
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first classLibbySchulze
 
React Native App Development.
React Native App Development.React Native App Development.
React Native App Development.Techugo
 
Meetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdfMeetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdfLuca Mattia Ferrari
 
RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture StrategyOCTO Technology
 
Dependency Down, Flexibility Up – The Benefits of API-First Development
Dependency Down, Flexibility Up – The Benefits of API-First DevelopmentDependency Down, Flexibility Up – The Benefits of API-First Development
Dependency Down, Flexibility Up – The Benefits of API-First DevelopmentNordic APIs
 
Documenting the Mobile API Development Process 2023.pptx
Documenting the Mobile API Development Process 2023.pptxDocumenting the Mobile API Development Process 2023.pptx
Documenting the Mobile API Development Process 2023.pptxXDuce Corporation
 
The Complete Guide to API Development in 2022.pdf
The Complete Guide to API Development in 2022.pdfThe Complete Guide to API Development in 2022.pdf
The Complete Guide to API Development in 2022.pdfConcetto Labs
 
APIs as a Product Strategy
APIs as a Product StrategyAPIs as a Product Strategy
APIs as a Product StrategyRavi Kumar
 
Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1Gabriel Ortiz
 
COMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docxCOMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docxwrite31
 

Similar to Here are some key points about the workflow:- The OpenAPI specification is used to define the API contract first before any code is written. This allows collaboration on the API design.- Code generation tools like OpenAPI Generator are used to produce server stubs and client SDKs from the OpenAPI spec to get started quickly. - For UI development, a mock API server like FakeIt is used to prototype the UI against before the real backend is implemented. This allows independent and parallel work.- As the UI is developed, the OpenAPI spec is updated and changes are automatically picked up by the mock server and regenerated client. - For the backend, OpenAPI Generator produces the initial server stubs which are then implemented with the business (20)

API.docx
API.docxAPI.docx
API.docx
 
SlideShare Test-1
SlideShare Test-1SlideShare Test-1
SlideShare Test-1
 
Practical guide to building public APIs
Practical guide to building public APIsPractical guide to building public APIs
Practical guide to building public APIs
 
Introduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning SimpleIntroduction to Docker and Containers- Learning Simple
Introduction to Docker and Containers- Learning Simple
 
How AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdf
How AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdfHow AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdf
How AWS Mobile Services Providers Will Benefit From Amplify Studio_.pdf
 
Role of CMS & Webservices - Mobile Apps
Role of CMS & Webservices - Mobile AppsRole of CMS & Webservices - Mobile Apps
Role of CMS & Webservices - Mobile Apps
 
React Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfReact Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdf
 
From API-First to SDK-First
From API-First to SDK-FirstFrom API-First to SDK-First
From API-First to SDK-First
 
Case study for software architect
Case study for software architectCase study for software architect
Case study for software architect
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
 
React Native App Development.
React Native App Development.React Native App Development.
React Native App Development.
 
Meetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdfMeetup 2022 - API Gateway landscape.pdf
Meetup 2022 - API Gateway landscape.pdf
 
RefCard API Architecture Strategy
RefCard API Architecture StrategyRefCard API Architecture Strategy
RefCard API Architecture Strategy
 
Dependency Down, Flexibility Up – The Benefits of API-First Development
Dependency Down, Flexibility Up – The Benefits of API-First DevelopmentDependency Down, Flexibility Up – The Benefits of API-First Development
Dependency Down, Flexibility Up – The Benefits of API-First Development
 
Service virtualization with npm modules updated
Service virtualization with npm modules updatedService virtualization with npm modules updated
Service virtualization with npm modules updated
 
Documenting the Mobile API Development Process 2023.pptx
Documenting the Mobile API Development Process 2023.pptxDocumenting the Mobile API Development Process 2023.pptx
Documenting the Mobile API Development Process 2023.pptx
 
The Complete Guide to API Development in 2022.pdf
The Complete Guide to API Development in 2022.pdfThe Complete Guide to API Development in 2022.pdf
The Complete Guide to API Development in 2022.pdf
 
APIs as a Product Strategy
APIs as a Product StrategyAPIs as a Product Strategy
APIs as a Product Strategy
 
Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1Clickslide Datadipity Beta V1
Clickslide Datadipity Beta V1
 
COMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docxCOMP6210 Web Services And Design Methodologies.docx
COMP6210 Web Services And Design Methodologies.docx
 

Recently uploaded

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 

Recently uploaded (20)

Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 

Here are some key points about the workflow:- The OpenAPI specification is used to define the API contract first before any code is written. This allows collaboration on the API design.- Code generation tools like OpenAPI Generator are used to produce server stubs and client SDKs from the OpenAPI spec to get started quickly. - For UI development, a mock API server like FakeIt is used to prototype the UI against before the real backend is implemented. This allows independent and parallel work.- As the UI is developed, the OpenAPI spec is updated and changes are automatically picked up by the mock server and regenerated client. - For the backend, OpenAPI Generator produces the initial server stubs which are then implemented with the business

  • 1. 1 ● Continuous Integration ● Pipelines ● Continuous Testing ● Microservices ● Continuous Delivery ● CHAOS ● Integration Issues ● Misunderstandings ● Waiting ● Blockers My Teams Should Be Moving Faster! You are adopting “DevOps” and “Microservices” because of the promise of delivering value faster to your users/customers. But you are not seeing the gains you want to see. You’ve got CI/CD/Pipelines/Tests/Microservices/etc… But you are still getting bogged down with teams being dependent on the progress of each other. Service A isn’t done, so service B cannot work on integration. The UI requires access to ALL of the services, so it has to wait until the end to be integrated, and integration takes WEEKS because of back-and-forth issues between the frontend and backend and between different dependent services. This is NOT how this is supposed to work! Many of us are familiar with writing code which other people interface with. In C & C+ + we provide header files to tell other people what our code can do for them. In Java it might be an Interface definition. This works great for compile-time guarantees, but what do you do when you are writing services which work over the network or over the web? If you have ever written an API or service which is consumed by others, even inside of your own team, this should be obvious. Every time you make a change to your service, those external and internal users are going to be annoyed because you just broke a BUNCH of their code. Take that annoyance and then consider what happens where there are multiple (perhaps multitudes of) services and worse yet when those APIs are consumed in the public by your customers. Add into that all of the complexities of operating a distributed system and you have a recipe for disaster.
  • 2. 2 Source: https://twitter.com/jezhumble/status/1021897540445196288 Service Architectures Are HARD “Reminder: If you're building microservices, you're building a distributed system.” - Jez Humble Lots of people have jumped on the Microservices bandwagon in recent years without TRULY understanding what that means. They have heard that their developer teams can achieve greater productivity, that their applications can achieve greater scalability, that their organizations can achieve greater agility, etc… What they fail to consider, in order to capitalize on those promises, is that they MUST fundamentally change how their teams/customers/consumers/partners work together. JUST implementing microservices is NOT going to achieve those goals because you are now designing a distributed system, and those components all have to work in a coordinated fashion. If you do not have a way for those disparate groups to coordinate with one another asynchronously, then you still have a major bottleneck. Your back-end devs are waiting on Database schemas and provisioning, your front- end devs are awaiting an API to code against, your customers and partners are awaiting documentation of those APIs in order to integrate with your services, etc….
  • 3. Why You Should Be Doing Contract- First API Development Deven Phillips Architect, Cloud-Native Runtimes Practice @infosec812 3
  • 4. 4 Why Contract-First? Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md ● Unambiguous Requirements ● Strong Guarantees ● Enhanced Collaboration ● Parallel Workstreams ● Code Generation Now that I set the stage for the bad things about cloud-native and microservices development, let’s talk about how we can make it better… When you have an API contract, you have enabled: - Unambiguous requirements - An API contract leaves no doubt or question about how the API MUST function, and the contract can be used to validate any implementation - The Contract provides strong guarantees in the same way that Header files in C and interfaces in Java provide guarantees. If you comply with the contact, it will work. - Enhanced collaboration - The contract provides a place for developers, consumers, customers, and partners to collaborate on improve the API before any code is even written - Parallel Worksteams - And because of these things, we can allow developers and teams to work independently and in parallel without concern about compatibility of integration issues - Code generation - And last, but not least, is the ability to generate the majority of the boilerplate code - And trust me, this works and is very effective. Regardless of if you find the code generation and tooling useful, having a simple format for sharing the contracts for your services amongst all of the users of that service is of significant value. Let’s learn a little about how simple and expressive it is to write OpenAPI specifications.
  • 5. What WAS My Workflow? 5 Source: https://swagger.io/docs/specification/about/ https://www.apicur.io/ https://openapi-generator.tech/ Build An API Specification Using a tool like OpenAPI, write an API specification FIRST Publish The API Specification Using a tool like Swagger or Apicur.io, publish the API specification where others have access and can collaborate Generate Code Contracts Using a tool like OpenAPI Generator, create the API stubs for both client and server applications. You can also generate “mock” services and client SDK libraries! When I first started to learn about and then teach about API development in this manner, I had a workflow like what is pictured above. We would build the contract, publish it and collaborate with consumers of the contract to find out what was right, what was wrong, what needed improvement, and then we would go an implement the API. This was OK, and quite effective. We could get the backend implemented so much faster and avoid lots of wasted effort because we worked out the issues before we ever invested time in writing implementation code. This was before I had really been using this extensively across multiple teams/products/customers/languages/frameworks. This lead to some modifications to how I, and my team, started using API contracts.
  • 6. What is my NEW Workflow? 6 Source: https://swagger.io/docs/specification/about/ https://www.apicur.io/ https://openapi-generator.tech/ Build An API Specification Using a tool like OpenAPI, write an API specification FIRST Publish The API Specification Using a tool like Swagger or Apicur.io, publish the API specification where others have access and can collaborate Generate Code Contracts Using a tool like OpenAPI Generator, create the stubs for the server implementation in your language of choice. Design If you will be creating a UI, create prototypes and rough implementations. Do usability research with target users of the UI or API But I have recently started to see an emergent behavior among my teams, customers, and colleagues who are adopting Contract-First… We let the users drive the design of the API… Through user research and design thinking we determine how the application (and by extension the API) should work. Especially when developing UIs with APIs… If we prototype and implement the UI while completely disregarding the backend implementation… For example, we implement a Vue or React single-page app and work out all of the data that we need to make a workable user experience. We do usability testing with that UI and get feedback. We unchain those UI developers to implement the best user experience possible… We actually have NPM scripts and automation set up in our projects to allow for live coding the UI against a mock API implementation. If the UI developers need to change something in the API, they modify the contract and the automation regenerates the API client and the mock API server reloads and adjusts almost instantly. This leads to outstanding user experiences because we are focused on meeting the needs of the users/consumers rather than trying to get the right data from a backend we didn’t have enough say in defining.
  • 7. When Designing For A UI 7 Source: https://github.com/JustinFeng/fakeit https://vuejs.org/ https://reactjs.org https://appdev.consulting.redhat.com/tracks/contract-first/contract-first-for-ui-development.html Dev Server OpenAPI Spec HTTP/REST When we’re developing an API-driven Vue or React app, we add an OpenAPI YAML contract to the project. We launch “FakeIt” to provide a mock REST server we can code against… When we need an API call to get data for the UI, we write it into the OpenAPI Spec and our package.json is configured to automatically rebuild our API client code using OpenAPI Generator. FakeIt also watches the OpenAPI YAML file and updates when the file changes. This means that we can tweak the API in nearly real-time and only write the implementation once we are certain that the API will suit the needs of the people who will use it. I recommend you watch the video our team has published on YouTube showing how this works with an example Vue application.
  • 8. Developing The API Server Implementation 8 Source: https://openapi-generator.tech/ https://appdev.consulting.redhat.com/tracks/contract-first/ https://schemathesis.readthedocs.io/en/stable/ API Contract OpenAPI Generator SCHEMATHESIS Test & Validate We take the API contract, we generate the server stubs in our preferred language or framework, implement the business logic/persistence. All the while we are using a tool like Schemathesis to automatically test our implementation by using the API contract to create validations. No code needed and schemathesis will generate HUNDREDS of tests for each operation in our API Spec. Without needing to write any tests we can know at development time if our implementation satisfies our API contract. THAT is shifting left and shortening feedback cycles. That’s not to say that we don’t need to write tests, but we’re able to write fewer tests and develop faster with a clear and visible finish-line.
  • 9. But the generated code isn’t right for my . . . 9 Source: https://openapi-generator.tech/ https://appdev.consulting.redhat.com/tracks/contract-first/ https://mustache.github.io/ https://github.com/redhat-appdev-practice/ CUSTOMIZE IT! ...team! ...organization! ...database! ...library! ...security! …compliance! In our experience, the code which is generated should be treated like a “black box”.... You should never directly modify it. We go so far as to say that generated code should not even be committed to version control. You should instead seek to extend the generated code through composition or inheritance… If that’s insufficient, then you can customize the code being generated. We have done this ourselves with OpenAPI Generator and it’s Mustache Templates. We have added things like ORM support, distributed tracing support, metrics and monitoring support, health checks, and more. This is an opportunity. Those of you who are or seek to become architects can build out best-practices into your customized OpenAPI Generator Templates and everyone in the company can benefit the next time they update their build! It accelerates innovation for every team using that language/framework! We have several examples of customized OpenAPI Generator templates on our GitHub site linked in this slide.
  • 10. 10 ● Design First ● Get Feedback From Users ● Generate Server Code ● Generated Code Is Disposable ● Use Automated Testing Tools ● Publish Client Libraries Lessons Learned Design First! Make sure that the API you are preparing to create is the API that your users will love to use. You can achieve that by performing user research. Look into The “Sprint” book and learn how a Design Sprint is done and how the associated user research is done… Even better, hire a designer! Once you have confirmed your API design, GENERATE most of the server code using a tool like OpenAPI Generator. This will have multiple positive effects: 1. It pretty much guarantees that your server complies with the API Spec 2. You avoid writing a lot of boilerplate code 3. You make it easier to do Test Driven Development 4. When your API Spec changes, you get hints from your IDE/Build Tools about what needs to be changed Treat the generated code the way that all generated code should be treated, ignore it… Specifically, gitignore it. Let your build process regenerate the code on every build. This ensures that your API is always up-to-date with the Spec Use automated testing tools like Schemathesis to validate that your API is compliant with your specification. This can accelerate your acceptance testing and shorten your feedback loops. Finally, use your specification to generate, then publish client libraries for your API. I have NEVER had to modify a client library generated by OpenAPI Generator, and your users will love you for making it that much easier for them to consume your API.
  • 11. Let me tell you a story . . . 11 Source: https://www.redhat.com/en/about/videos/the-puckboard-story-transforming-us-armed-forces About 2 years ago, we used this approach in a rather unique situation… Several branches of the US Military needs a solution for scheduling training for their pilots and air crew. Since the beginning, this scheduling was done by hand with qualifies pilots and aircrew using a “puckboard”, a whiteboard dividing into grids and magnetic “pucks” to indicate what, who, and where training would happen. This means that many individuals who could be flying planes and managing cargo were in fact running around collecting paperwork, training records, airspace allocations, and lots of other information in order to do this scheduling. They had tried several times in the past to hire contractors to build a system which could help them accomplish the task and all of those initiatives had failed because only people truly immersed in the job could comprehend what was involved. We took 6 uniformed service members . . . Airmen and pilots . . . people with little or no skills in software development. We helped them to prototype, design, validate, analyze, and synthesize a system. We then used this contract-first approach to generate most of their implementation code. In the span of about 2 months they produced a working MVP which they demonstrated to their senior leadership in Washington D.C. The project was a HUGE success and is still ongoing. In fact, the US Air Force has created a new division within their service where uniformed service members develop software internally instead of outsourcing, and are achieving higher quality, better fit, improved efficiency, and major cost savings. This is just one of many examples I have seen first-hand over the last few years.
  • 12. Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 12 Try It Yourself Learn More https://bit.ly/rhcnad bit.ly Red Hat Cloud Native App Dev RHCNAD
  • 13. The Traditional Workflow Service Architectures Are HARD 13 Project Planning The business stakeholders spend time writing up a project plan for a series of services and potentially a user interface Send To Developers The various development teams attempt to interpret the project plan and implement their code so that they are compatible Iterate And Integrate The developer teams iteratively try to resolve integration issues and spends lots of time ensuring compatibility This is a lot like traditional waterfall development of products, and as such it has lots of bottleneck which prevent efficient progress. The project planning is a time consuming process and often creates documents that are too vague and leave too much room for interpretation. The developers try to consistently implement code which is defined in the project plan, but differences of understanding and terminology make it easy for separate teams to end up with incompatible implementations. This results in lots of time and iterations required to resolve compatibility and integration issues at a point very far along in the development process. Lots of re-work, debugging, miscommunications, etc… Wouldn’t it be better if we could get faster feedback?
  • 14. 14 ● Editors ● Server Implementations ● Client Implementations ● Testing Tools ● Mocking Tools OpenAPI Tools There are many tools around OpenAPI which make it possible to do faster and more asynchronous development so that teams, developers, customers, and partners can develop clients and servers reliably.
  • 15. OpenAPI Tools 15 Editors: Source: https://openapi.tools/ ● APICurio (apicur.io) ● Swagger Editor (editor.swagger.io) ● VSCode ● IntelliJ ● Eclipse There are a number of editors and tools which can be used to create/edit/validate an OpenAPI specification. Red Hat actually has people working on Apicur.io, but Swagger Editor and IDE plugins are also viable options.
  • 16. OpenAPI Tools 16 Server Implementations: Source: https://openapi.tools/ ● OpenAPI Generator (50+ Language/Framework combinations) ● NSwag (ASP.NET) ● Vert.x Web OpenAPI (Reactive) ● MicroTS (TypeScript) ● @smartrecruiters/openapi-first (JavaScript) OpenAPI Generator can GENERATE code for a number of different languages (Java, JavaScript, Go, Erlang, Elixir, Typescript, Ruby, Python, etc…) and frameworks (JAX- RS, Spring, Express, Phoenix, etc…) Vert.x toolkit includes the ability to generate RESTful endpoints and even generate code for Service stubs MicroTS generates a NodeJS/Express service using TypeScript openapi-first also generates a NodeJS/Express server, but much of the boilerplate code is generated on-the-fly at runtime and we just write business logic.
  • 17. OpenAPI Tools 17 Client Implementations: Source: https://openapi.tools/ ● OpenAPI Generator (65+ Language/Framework combinations) ● NSwag (CSharp/.NET) ● APIMATIC ● openapi-client-axios OpenAPI Generator can GENERATE code for a number of different platforms (Java, JavaScript, Go, Erlang, Elixir, Typescript, Ruby, Python, etc…) and frameworks (JAX- RS, Spring, Express, Phoenix, etc…) Vert.x toolkit includes the ability to generate client implementations in ANY of the supported Vert.x languages (Java, JavaScript, Typescript, Clojure, Scala, Kotlin, Groovy, etc..) APIMatic is a SaaS solution for generating an SDK package in any number of languages based on an OpenAPI Spec openapi-client-axios can use an OpenAPI spec to create a fully async-enabled Axios client for your JavaScript and Typescript applications
  • 18. OpenAPI Tools 18 Testing Tools: Source: https://openapi.tools/ ● Schemathesis ● Chai OpenAPI Response Validator ● hikaku ● Assertible Schemathesis - My personal favorite right now. It’s a command-line tool which reads your OpenAPI Spec and the base URL for your implementation. It then uses property-based testing techniques to create tests to validate your implementation. For example, in my simple Todo API it generates over 2000 tests for just 6 methods!!! Chai OpenAPI Response Validator - Simple Chai support for asserting that HTTP responses satisfy an OpenAPI spec. hikaku - A library that tests if the implementation of a REST-API meets its specification. Assertible - Import an OpenAPI specification into Assertible to generate tests that validate JSONSchema responses and status codes on every endpoint.
  • 19. What’s The Workflow? Service Architectures Are HARD 19 Source: https://grpc.io/ https://github.com/ https://developers.google.com/protocol-buffers/ Build An API Specification Using a tool like gRPC, write an API specification FIRST Publish The API Specification Write your specification in protoc format and publish it to a public repository Generate Code Contracts Using a tool like protoc, create the API stubs for both client and server applications. You can also generate “mock” services and client SDK libraries! Another valid option for doing contract-first API development is to use gRPC: gRPC is a modern open source high performance RPC framework that can run in any environment. It can efficiently connect services in and across data centers with pluggable support for load balancing, tracing, health checking and authentication. It is also applicable in last mile of distributed computing to connect devices, mobile applications and browsers to backend services. gRPC specifications are written in a format called “protocol buffers” which is it’s own, small, domain-specific language. There are other solutions for contract-first, but OpenAPI and gRPC seem to be the most widely adopted. Others include: RAML, RSDL, OData, APIBlueprint, I/O Docs, Apache Avro, etc….
  • 20. 20 ● Types ● Endpoints ● Verbs ● Parameters ● Security ● Extensions Learning OpenAPI Because of it’s massive amount of available tooling, we’re going to focus on OpenAPI for now. There is significant documentation for gRPC available on-line if you should choose to go that direction as well.
  • 21. OpenAPI Basics 21 API Description: --- openapi: 3.0.2 info: title: Petstore description: 'This is a sample Petstore API.' termsOfService: http://redhat.com/terms/ contact: email: open-innovation-labs@redhat.com license: name: Apache 2.0 url: http://apache.org/licenses/LICENSE-2.0 version: 1.0.0 --- openapi: 3.0.2 info: title: Petstore description: 'This is a sample Petstore API.' termsOfService: http://redhat.com/terms/ contact: email: open-innovation-labs@redhat.com license: name: Apache 2.0 url: http://apache.org/licenses/LICENSE-2.0 version: 1.0.0 externalDocs: description: Find out more about OpenAPI url: http://swagger.io servers: - url: https://petstore.swagger.io/v2 - url: http://petstore.swagger.io/v2 tags: - name: pet description: Everything about your Pets externalDocs: description: Find out more url: http://swagger.io externalDocs: description: Find out more about OpenAPI url: http://swagger.io servers: - url: https://petstore.swagger.io/v2 - url: http://petstore.swagger.io/v2 tags: - name: pet description: Everything about your Pets externalDocs: description: Find out more url: http://swagger.io Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md OpenAPI documents are written in either YAML or JSON. - They start with a declaration of which version of the OpenAPI specification we are going to use to describe our API. - The title and description are used when generating client SDKs from code generators - The “servers” section can be used to set up appropriate CORS and XSS configurations - The license lets your customers and partners know how they may re-use this content. Everything else here is informational and pretty much optional, though still good practice for us to include.
  • 22. OpenAPI Basics 22 Type Definitions: components: schemas: Order: type: object required: - id - petId properties: id: type: string format: uuid petId: type: integer format: int64 quantity: type: integer format: int32 components: schemas: Order: type: object required: - id - petId properties: id: type: string format: uuid petId: type: integer format: int64 quantity: type: integer format: int32 shipDate: type: string format: date-time status: type: string description: Order Status enum: - placed - approved - delivered complete: type: boolean default: false xml: name: Order shipDate: type: string format: date-time status: type: string description: Order Status enum: - placed - approved - delivered complete: type: boolean default: false xml: name: Order Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md In a section called “components” and a subsection called “schemas”, we can define the data types which will be produced and consumed by our API. For example, here we see an “Order” object defined. These schemas are defining the resources our API will be producing/consuming. - When defining a new type, you specify the type as “object” - Next, you can define which fields are required to be valid - Each field can be a primitive type or a reference to another object type, also format - If you wish to support XML, you can define what the top-level XML element will be named - Enumerated types are also supported
  • 23. OpenAPI Basics 23 Endpoints: /store/order: post: tags: - store summary: Place an order for a pet operationId: placeOrder requestBody: description: order placed content: '*/*': schema: $ref: '#/components/schemas/Order' required: true /store/order: post: tags: - store summary: Place an order for a pet operationId: placeOrder requestBody: description: order placed content: '*/*': schema: $ref: '#/components/schemas/Order' required: true responses: 200: description: successful operation content: application/xml: schema: $ref: '#/components/schemas/Order' application/json: schema: $ref: '#/components/schemas/Order' 400: description: Invalid Order content: {} responses: 200: description: successful operation content: application/xml: schema: $ref: '#/components/schemas/Order' application/json: schema: $ref: '#/components/schemas/Order' 400: description: Invalid Order content: {} Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md Here we have defined a REST endpoint which handles a POST verb. The content of the POST body is defined as accepting the “Order” type we showed in the previous slide. We have also defined that our API consume and produces both JSON and XML. - The PATH for the endpoint - The HTTP Verb for this operation - The “operationId” is used by many code-generators to create method names for both the server and client SDK implementations - The content of the request is described either directly or using a reference to a previously defined type - Response codes and their associated bodies are defined either directly or using a reference to a previously defined type
  • 24. OpenAPI Basics 24 Parameters: /store/order: get: summary: Retrieve all orders operationId: getOrders parameters: - in: query name: startDate required: false schema: type: string format: datetime - in: query name: endDate required: false schema: type: string format: datetime /store/order: get: summary: Retrieve all orders operationId: getOrders parameters: - in: query name: startDate required: false schema: type: string format: datetime - in: query name: endDate required: false schema: type: string format: datetime /store/order/{orderId}: get: summary: Retrieve all orders operationId: getOrderById parameters: - in: path name: orderId required: true schema: type: string format: uuid /store/order/{orderId}: get: summary: Retrieve all orders operationId: getOrderById parameters: - in: path name: orderId required: true schema: type: string format: uuid Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md We can also specify the parameters which can be passed for various endpoints in our API. Here we see query parameters and path parameters defined and we can also see that some are required while others are not.
  • 25. OpenAPI Basics 25 Security: components: securitySchemes: BasicAuth: type: http scheme: basic BearerAuth: type: http scheme: bearer ApiKeyAuth: type: apiKey in: header name: X-API-Key OpenID: type: openIdConnect openIdConnectUrl: https://ex.io/oid-config components: securitySchemes: BasicAuth: type: http scheme: basic BearerAuth: type: http scheme: bearer ApiKeyAuth: type: apiKey in: header name: X-API-Key OpenID: type: openIdConnect openIdConnectUrl: https://ex.io/oid-config OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://ex.io/oauth/auth tokenUrl: https://ex.io/oauth/token scopes: read: Grants read access write: Grants write access admin: Grants admin access OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://ex.io/oauth/auth tokenUrl: https://ex.io/oauth/token scopes: read: Grants read access write: Grants write access admin: Grants admin access Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md Here we have defined a REST endpoint which handles a POST verb. The content of the POST body is defined as accepting the “Order” type we showed in the previous slide. We have also defined that our API consume and produces both JSON and XML. - The PATH for the endpoint - The HTTP Verb for this operation - The “operationId” is used by many code-generators to create method names for both the server and client SDK implementations - The content of the request is described either directly or using a reference to a previously defined type - Response codes and their associated bodies are defined either directly or using a reference to a previously defined type
  • 26. OpenAPI Basics 26 Extensions: /store/order: post: tags: - store summary: Place an order for a pet operationId: placeOrder x-vertx-event-bus: address: com.myapp.store.order requestBody: description: order placed content: '*/*': schema: $ref: '#/components/schemas/Order' required: true /store/order: post: tags: - store summary: Place an order for a pet operationId: placeOrder x-vertx-event-bus: address: com.myapp.store.order requestBody: description: order placed content: '*/*': schema: $ref: '#/components/schemas/Order' required: true responses: 200: description: successful operation content: application/xml: schema: $ref: '#/components/schemas/Order' application/json: schema: $ref: '#/components/schemas/Order' 400: description: Invalid Order content: {} responses: 200: description: successful operation content: application/xml: schema: $ref: '#/components/schemas/Order' application/json: schema: $ref: '#/components/schemas/Order' 400: description: Invalid Order content: {} Source: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md The OpenAPI specification leaves room for extension, so if you want to implement something specific to a toolkit/framework/platform; you can. For example, here we see a field which start with “x-”, indicating it’s an extension to the OpenAPI specification standard. This one is specific to writing applications using Vert.x and allows us to tell Vert.x more information about our API in order to help it integrate with the OpenAPI spec in a way which is toolkit specific. Sometimes you will see extensions for database schema generation, or security support systems, etc… The OpenAPI spec can be extended without writing any custom code, but you may like to extend OpenAPI Generator so that it can generate more/better code for your organization and even further reduce the amount of work required.
  • 27. 27 Optional subheading Lorem ipsum dolor sit amet consectetuer adipiscing elit sed diam Presentation title should not exceed three lines Presenter’s Name Title OPTIONALSECTIONMARKERORTITLE
  • 28. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 28 Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you OPTIONALSECTIONMARKERORTITLE
  • 29. 29 OPTIONAL SECTION MARKER OR TITLE Optional supporting copy. Lorem ipsum dolor sit amet, consectetuer adipis elit, sed diam nonummy nibh euismod tincidunt ut laoreet. magna aliquam. Divider title limit to two lines QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo.
  • 30. 30 OPTIONAL SECTION MARKER OR TITLE Optional supporting copy. Lorem ipsum dolor sit amet, consectetuer adipis elit, sed diam nonummy nibh euismod tincidunt ut laoreet. magna aliquam. Divider title limit to two lines QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo.
  • 31. 31 OPTIONAL SECTION MARKER OR TITLE Divider title limit to two lines QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo. Optional supporting copy. Lorem ipsum dolor sit amet, consectetuer adipis elit, sed diam nonummy nibh euismod tincidunt ut laoreet. magna aliquam.
  • 32. Lorem ipsum dolor sit amet, consectetuer adipisc elit sed dia nibh? 32 OPTIONALSECTIONMARKERORTITLE
  • 33. Lorem ipsum dolor sit amet, consectetuer adipisc elit sed dia nibh? 33 OPTIONAL SECTION MARKER OR TITLE
  • 34. 34 OPTIONALSECTIONMARKERORTITLE Lorem ipsum dolor sit amet, consectetuer adipisc elit?
  • 35. CORPORATE SLIDE TEMPLATES 35 This section includes:Agenda slide templates Content slide templates Quote slide templates
  • 36. What we’ll be discussing today AGENDA 36 Source: Insert source data here Insert source data here Insert source data here Topic Topic Topic Topic Topic Topic Topic Topic Topic Topic Topic Topic
  • 37. AGENDA 37 Source: Insert source data here Insert source data here Insert source data here Topic Topic Topic Topic Topic Topic Topic Topic Topic Topic Topic Topic What we’ll be discussing today
  • 38. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 38 Source: Insert source data here Insert source data here Insert source data here QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit.
  • 39. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 39 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia. Body headline Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia. Body headline Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia. Body headline Lorem ipsum dolor sit amet, consectet adipiscing elit sed dia. QUICK TIP Try right clicking on the icon and using “Replace Image” to insert your own icons.
  • 40. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 40 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo.
  • 41. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 41 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. QUICK TIP Try right clicking on the icon and using “Replace Image” to insert your own icons.
  • 42. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 42 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. QUICK TIP Try right clicking on the icon and using “Replace Image” to insert your own icons.
  • 43. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 43 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna. QUICK TIP Try right clicking on the icon and using “Replace Image” to insert your own icons.
  • 44. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 44 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectetuer adipiscin elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscin elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscin elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscin elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nost. QUICK TIP Try right clicking on the icon and using “Replace Image” to insert your own icons.
  • 45. OPTIONAL SECTION MARKER OR TITLE 45 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis id auctor dui. Ut neque sem, convallis sit amet ultrices et, facilisis vestibulum ligula. Donec euismod elementum erat vitae fermentum. Mauris hendrerit maximus bibendum. “” John Doe CTO, Acme Unlimited QUICK TIP Using a photo with the large quote is optional. Try right clicking on the photo and using “Replace Image” to insert your own photo.
  • 46. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 46 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipis elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullam. “” John Doe CTO, Acme Unlimited Lorem ipsum dolor sit amet, consectetuer adipis elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullam. “” Jane Doe CTO, Acme Unlimited
  • 47. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 47 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation. John Doe CTO, Acme Unlimited “” Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation. John Doe CTO, Acme Unlimited “” Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation. John Doe CTO, Acme Unlimited “”
  • 48. CORPORATE SLIDE TEMPLATES 48 This section includes:Data slide templates Table slide templates Timeline slide templates
  • 49. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 49 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat. 65% Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat. 82%
  • 50. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 50 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullam. Label 00% Lorem ipsum dolor sit amet 00% Lorem ipsum dolor sit amet 00% Lorem ipsum dolor sit amet 00% Lorem ipsum dolor sit amet 00% Lorem ipsum dolor sit amet 00% Lorem ipsum dolor sit amet
  • 51. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 51 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullam. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore. 00% 00%
  • 52. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 52 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. 00% 00% 00% Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore.
  • 53. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 53 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Wisi enim ad minim. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh mod tincidunt ut laoreet dolore. 000 000
  • 54. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 54 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore. 000Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore. 000Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore. 000Body headline
  • 55. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 55 Source: Insert source data here Insert source data here Insert source data here 01 Title of chart 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet QUICK TIP Use the “Width Scale” in the “Size & Position” pane of the format options panel to adjust the percentage of the bar.
  • 56. OPTIONAL SECTION MARKER OR TITLE 56 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum 00% Lorem ipsum Lorem ipsum dolor sit amet Lorem ipsum dolor sit amet 01 Title of chart QUICK TIP Use the “Width Scale” in the “Size & Position” pane of the format options panel to adjust the percentage of the bar.
  • 57. OPTIONAL SECTION MARKER OR TITLE 57 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna COLUMN HEADER TWO LINES MAXIMUM COLUMN HEADER TWO LINES MAXIMUM COLUMN HEADER TWO LINES MAXIMUM ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines 01 Title of table
  • 58. OPTIONAL SECTION MARKER OR TITLE 58 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet 01 Title of table COLUMN HEADER TWO LINES MAXIMUM COLUMN HEADER TWO LINES MAXIMUM COLUMN HEADER TWO LINES MAXIMUM COLUMN HEADER TWO LINES MAXIMUM COLUMN HEADER TWO LINES MAXIMUM ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines ROW HEADER TWO LINES MAXIMUM Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines Body cell should be limited to two lines
  • 59. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet OPTIONAL SECTION MARKER OR TITLE 59 Source: Insert source data here Insert source data here Insert source data here Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, diam nonummy nibh euismod. 20XX Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, diam nonummy nibh euismod. 20XX Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, diam nonummy nibh euismod. 20XX Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, diam nonummy nibh euismod. 20XX Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, diam nonummy nibh euismod. 20XX Body headline Lorem ipsum dolor sit amet, consectetuer adipiscing elit, diam nonummy nibh euismod. 20XX
  • 60. OPTIONAL SECTION MARKER OR TITLE 60 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sedie diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea Heading QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo.
  • 61. OPTIONAL SECTION MARKER OR TITLE 61 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectet adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolor aliquam. Heading Lorem ipsum dolor sit amet, consectet adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolor aliquam. Heading Lorem ipsum dolor sit amet, consectet adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolor aliquam. Heading 20XX 20XX QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo.
  • 62. OPTIONAL SECTION MARKER OR TITLE 62 Source: Insert source data here Insert source data here Insert source data here Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sedie diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea Heading QUICK TIP Try right clicking on the photo and using “Replace Image” to insert your own photo. You are also welcome to use this photo.
  • 64. Many people experience our brand by seeing one of the thousands of presentations Red Hatters deliver each year. From Summit keynotes to conference-room sales meetings, we want our public face to be coherent and recognizable. Our content must be meaningful and relevant to our audiences. Our stories should be told in a clear, compelling way. CORPORATE SLIDE TEMPLATES 64 HOW TO BUILD AN EFFECTIVE PRESENTATION https://pnt.redhat.com/pnt/p-611879/ GETTING STARTED WITH GOOGLE SLIDES https://gsuite.google.com/learning-center/products/slides/get-started/#!/
  • 65. Please use the Overpass font for your presentation. The Red Hat Display and Text fonts will be available in Google Slides soon. We will update the template when it is available. CORPORATE SLIDE TEMPLATES 65
  • 66. CORPORATE SLIDE TEMPLATES 66 This section includes:Title slide templates Closing slide templates Divider slide templates
  • 67. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 67
  • 68. Optional subheading Presentation title should not exceed two lines Presenter’s Name Title Presenter’s Name Title 68 QUICK TIP Right click on the logo and using “Replace Image” insert the product logo of your choice. Simply delete if no product logo is needed.