Understanding how to create an Open API definition for a REST API is a fundamental aspect of preparing for the PL-400 Microsoft Power Platform Developer exam. An Open API definition, also known as a Swagger definition, is immensely handy for understanding a REST API’s functionalities – the operations it can support, the input and output parameters, and so on. Microsoft Power Platform uses OpenAPI to create connectors for REST APIs.
Understanding Open API
Open API is a specification for machine-readable interface files for describing, producing, consuming, and visualizing web services. The goal of the OpenAPI Specification is to define a standard interface to RESTful APIs, which allows both human and computer systems to comprehend the functionalities of a service without access to source code, documentation, or through network traffic inspection.
Creating an Open API Definition for a REST API
Creating an Open API definition for a REST API involves defining the various elements that make up the API. This includes the paths, operations, parameters, and responses. Here is a high-level procedure:
- Start an Open API definition: This initiates a new Open API definition in JSON or YAML format. The definition should include the API’s basic information such as version, title, and description.
Example:{
“swagger”: “2.0”,
“info”: {
“version”: “1.0.0”,
“title”: “Sample API”
},
…
} - Define the Base Path and Schemes: Defining the base path and schemes of the API includes providing the API’s URL under the ‘host’ and ‘basePath’ properties, and the protocols that the API supports under the ‘schemes’ property.
Example:{
…
“host”: “api.example.com”,
“basePath”: “/v1.0.0”,
“schemes”: [“https”],
…..
} - Define the paths: Paths are defined under the ‘paths’ object, each representing a unique endpoint. For instance, ‘GET /users’ and ‘POST /users’ might represent two different endpoints.
Example:{
…
“paths”: {
“/users”: {
“get”: {
…
},
“post”: {
…
}
}
},
…
} - Define the operations: Defining operations involves specifying the HTTP method for every operation the API allows. For example, if the API supports retrieving details of a single user (‘GET /users/{id}’), the operation would be defined as follows:
Example:{
…
“paths”: {
…
“/users/{id}”: {
“get”: {
…
}
}
},
…
} - Define parameters for each operation: These are defined as part of the operation objects and describe the input parameters that the API accepts.
Example:
{
…
“get”: {
“parameters”: [
{
“name”: “id”,
“in”: “path”,
“required”: true,
“type”: “string”
}
],
…
}
} - Define the response for each operation: These are part of the operation objects and describe the response that the API sends after processing the request.
Example:{
…
“get”: {
…
“responses”: {
“200”: {
“description”: “Successful Operation”,
“schema”: {
“$ref”: “#/definitions/User”
}
},
“404”: {
“description”: “User not found”
}
}
}
}
Creating OpenAPI Definitions is critical in becoming efficient in working with REST APIs on Microsoft Power Platform. For the PL-400 exam, proficiency in this area provides a significant advantage, augmenting competencies in using Power Apps, Power Automate, and other components of the Microsoft Power Platform.
Practice Test
True/False: Open API Definition is created to provide a contract for a SOAP API.
• True
• False
Answer: False
Explanation: The Open API Definition is essentially a contract for REST APIs, not SOAP APIs. It provides accurate documentation and makes the API predictable and understandable.
In OpenAPI specification, the basePath field is used to specify the API’s server.
• True
• False
Answer: False
Explanation: In OpenAPI 0 and above, the basePath property is replaced by the servers property to offer more flexibility in defining the base path and the server.
What does the term ‘OpenAPI’ refer to?
• a) A type of API that anyone can use.
• b) A specification and complete framework implementation for providing APIs.
• c) A specification for machine-readable interface files for RESTful Web Services.
• d) An API that is not secured.
Answer: c) A specification for machine-readable interface files for RESTful Web Services.
Explanation: OpenAPI is a specification for machine-readable interface files for describing, producing, consuming, and visualizing RESTful Web Services.
An OpenAPI definition contains information about what?
• a) The API’s service providers.
• b) The API’s security measures.
• c) The API’s available endpoints and operations.
• d) The structure of the API’s payloads.
• e) All of the above.
Answer: e) All of the above.
Explanation: An OpenAPI definition encompasses all these elements, providing a comprehensive description of an API.
True/False: You don’t need to place the definitions section in the Open API spec document since it’s optional.
• True
• False
Answer: False.
Explanation: The definitions section is critical as it describes the DTOs or Data Transfer Objects which are being exchanged by the API.
True/False: Kinds of responses an API can return are specified in the OpenAPI ‘components’ section.
• True
• False
Answer: True
Explanation: The ‘components’ section of the OpenAPI document defines reusable components, including schemas, responses, parameters, etc.
What should the paths section of an OpenAPI definition contain?
• a) Information about possible interactions with the API.
• b) Detailed description of the API.
• c) Information about the API’s server.
• d) Security details of the API.
Answer: a) Information about possible interactions with the API.
Explanation: The paths section defines the available paths and operations for the API.
Which format does an OpenAPI definition document follow?
• a) XML
• b) JSON
• c) YAML
• d) Both b and c
Answer: d) Both b and c
Explanation: An OpenAPI definition document can be in either JSON or YAML format.
True/False: OpenAPI specification is language-specific.
• True
• False
Answer: False
Explanation: OpenAPI specification is language-agnostic, meaning it can be used with any programming language.
What does the ‘swagger’ key in an OpenAPI definition represent?
• a) The version of the OpenAPI specification.
• b) The base path of the API.
• c) The title of the API.
• d) The contact information of the API provider.
Answer: a) The version of the OpenAPI specification.
Explanation: The ‘swagger’ key indicates the version of the Swagger/OpenAPI specification which the document follows.
Interview Questions
Q: What is an Open API definition in the context of a REST API?
A: An Open API definition, formerly known as Swagger, is a specification for building APIs. It provides ways to describe the structure of REST APIs, including the types of operations, input/output parameters, and error responses. It helps in documenting, designing, building and consuming these REST APIs.
Q: What is the purpose of using an Open API definition for a REST API in a Power Platform application?
A: It helps developers to understand API capabilities without digging into the code. They can utilize it for generating interactive API documentation, client SDK generation, and API testing and exploration. It enables both machines and humans to understand and anticipate what a service can do, its requirements, and responses.
Q: How can you create an Open API definition in Power Platform?
A: You can create by using Power Apps’ built-in API definitions pane: select a function, specify the HTTP method, status codes, responses, and other details. Power Apps will produce an Open API definition file suitable for import into other tools.
Q: What is Swagger UI in the context of Open API?
A: Swagger UI is a built-in solution to visualize and test APIs defined by Open API (Swagger) specification. It reads an Open API definition document and presents a usable UI for exploring APIs, including making test API calls directly from the browser.
Q: What formats does Open API specification support?
A: Open API specifications support two types of formats: JSON and YAML. Both are easy for humans to read and write and for machines to process and generate.
Q: How can one utilize the OpenAPI definition in Microsoft Power Platform?
A: Developers can import the OpenAPI specification of a REST API into Power Platform to create a custom connector, which can then be used within PowerApps, Power Automate, and Power BI.
Q: What role does an Open API play in Custom Connectors’ creation in Power Platform?
A: For creating Custom Connectors in Power Platform, having an Open API makes the process easier. The definition file can be imported while setting up the connector, which populates the definition of the API including the URL, request and response parameters.
Q: Where is the OpenAPI definition stored for a Power Platform API?
A: The OpenAPI definition of an API is stored within the API management section of the Power Platform environment. It can also be exported as a file and kept in source control or elsewhere as needed.
Q: Which version of OpenAPI does the Power Platform support?
A: Microsoft Power Platform supports both OpenAPI specification versions 2.0 and 3.0.
Q: Can you use an OpenAPI definition for an API secured with Azure Active Directory?
A: Yes, you can. The OpenAPI specification allows for documenting various types of security schemes, including OAuth2, which is used by Azure Active Directory.
Q: What happens if an OpenAPI definition is incorrect or incomplete?
A: Errors or gaps in an OpenAPI definition can lead to issues when attempting to create connectors, call APIs, or generate documentation. These issues might include incorrect data types, missing endpoints, or flawed security configurations.
Q: Can you update the OpenAPI definition after a custom connector is created in the Power Platform?
A: Yes, you can update the OpenAPI definition. You would go to the custom connector in Power Platform, update the definition, and then update the connector. Be aware that this might require updates to apps, flows, or reports that use this connector.
Q: Can you create an OpenAPI definition for a SOAP-based web service?
A: No, the OpenAPI specification is designed only for RESTful APIs. However, Power Platform does support SOAP-based web services via separate tools and connectors.
Q: Can an API have more than one OpenAPI definition?
A: In general, an API should have one OpenAPI definition that captures all the routes, operations, parameters, and responses. Multiple definitions can lead to confusion and inconsistencies. However, large APIs might have separate definitions for different segments, which should be properly maintained and version-controlled.
Q: Can you test an API within Power Platform given the OpenAPI definition?
A: Yes, once you create a custom connector from an OpenAPI definition, you can use Power Platform’s ‘Test’ tab to test the API calls.