Conceptual API Documentation Structure
This Example is generated directly from the Github Markdown Format file: ONAPcommon.md
Use <ctrl><shift>M in Atom to view markdown when editing
Note the MD file embedded inside the swagger needs to replace the newlines with "\n"
To do this in the Atom Editor:
open "find / replace", select "Use Regex" shown as ".*"
To replace newlines: find: "\r?\n|\r" (without quotes) AND replace: "\\n" (without quotes)
--------------------------------------------------------------------
About the ONAP Snacking API
The API Description may be multiline, and GitHub Flavored Markdown, GFM syntax, can be used for rich text representation.
API Overview
General Description (short)
What the API does; Purpose of the API; Who should use the API; Why use the API
For Example: This ONAP Style Sample Rest API provides the requestor with access to snack related information from the ONAP Food component and was originally introduced into ONAP in the Frankfurt Release.
Relationship and Dependencies
Requirements and use cases, other Interface Specs, Standards, etc.
For Example: This API is build from related standards, including the PopCorn Forum and SNAK.
API Structure and Approach
Short overview of various API components, e.g. envelope and payload design
Getting Started with the API (Hello World)
How to obtain Credentials and access token; Creating accounts; Making REST API Calls (e.g., sandbox vs live) (where); Very simple Try it for yourself (e.g., CURL / Postman sample)
Basic instructions to users on how to use the API, such as host port, authentication, common error codes, test environment, etc., as well as links to additional resources (such as ONAP Use Cases), plus other details that would help other developers start using the API. might want to provide some basic instructions to users on how to use Swagger UI.
SDK quick intro
Quick description of Swagger environment, tools, etc.
How to start the client side implementation
Code generation, patterns etc.
Module/Library dependencies
Hello word client calls
How to start the server side implementation
Code generation, patterns etc.
Module/Library dependencies
Hello word server responses
API Description
Includes summary of information drawn from API definitions in OpenAPI / Swagger files
Resource Endpoint / Resource Quick Reference
Includes one-line summaries of each endpoint/resource
Data Schema
Main API Entities
Describe the major entities used in the API
Payload data structures
If any, describe the appropriate data structures that are included within payload of the API.
Security on the API
Authentication; Authorization; Credentials/access token; etc.
Response Codes
The meaning of Status Codes & Errors
Rate Limits and Thresholds
Requests per unit time allowed; Pagination
Validation constraints
Describe any behavioral and structural validation constraints
Assumptions
For example, any Pre/Post conditions
API Interactions and Flows
Interaction Examples
Illustrate sequence of client calls to this API, possibly based on Use Cases, presented with diagrams, tables, etc such as: High-level Concepts and inter dependencies API Interaction and Flows using BPMN, UML Sequence diagrams Description of alternative paths in scenario / Error handling scenarios Try it for yourself Sample-Code (CURL or Postman): Simple and Cut and paste ready
Sample CURL Call
curl -X GET \"https://serverRoot:54321/modeling/sampleApi/v1/snacks/314\" -H \"accept: application/json;charset=utf-8\"
Example Response Values
[ { \"id\": 314, \"name\": \"Crunchy Chips\", \"tag\": \"salty\" } ]
Tutorials
Reference any tutorials or use cases. May use links.
API Mapping Details
Includes:
Mapping between use cases/requirements and API calls
Mapping between IPS/UML model and API data schema (if needed)
Glossary
API Version
The version number has major, minor and revision numbers. E.g. v1.0.0 Only the major version number (without the minor number and revision number) is held in the URL. APIs are described with a major version with “v” following the API Name, e.g.: nbi/api/v4/productOrder. The schema associated with a REST API must have its version number aligned with that of the REST API.
The major version number is incremented for an incompatible change. The minor version number is incremented for a compatible change. For minor modifications of the API, version numbering must not be updated, provided the following backward compatibility rules are respected: New elements in a data type must be optional (minOccurs=0) Changes in the cardinality of an attribute in a data type must be from mandatory to optional or from lower to greater New attributes defined in an element must be optional (absence of use=”required”) If new enumerated values are included, the former ones and its meaning must be kept If new operations are added, the existing operations must be kept New parameters added to existing operations must be optional and existing parameters must be kept
For major modifications of the API, not backward compatible and forcing client implementations to be changed, the major version number must be updated.