Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Jira
serverONAP Jira
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-774

Table of Contents

Issues and Decisions

#Issue
Solution
1API Generation method in DMI-Plugin

See

Jira
serverONAP Jira
serverId425b2b0a-557c-3c0c-b515-579789cceedb
keyCPS-755

2Backward compatibility move from <String> to <object>  REST Interfaces for json objectsNeed to verify backward compatibility for client URLs

These changes will introduce no changes at the client side. All users can continue to use the API as as they are using currently. This could be verified by executing the CSIT test of cps and dmi-plugin. Test by aditya puthuparambil 


What Is OpenAPI?

OpenAPI Specification (formerly Swagger Specification) is an API description format for REST APIs. An OpenAPI file allows you to describe your entire API, including:

...

Request and Response Body Examples

Here is an example of the examples keyword in a request body:

requestBody:
required: true
content:
application/json:
schema:
type: string
examples:
dataSample:
value:
test:bookstore:
bookstore-name: Chapters
categories:
- code: 01
name: SciFi
- code: 02
name: kids

All request and response body examples in CPS will be added at the object level.

...

components:
examples:
dataSample:
value:
test:bookstore:
bookstore-name: Chapters
categories:
- code: 01
name: SciFi
- code: 02
name: kids
summary: A sample data

Sample

...

response

...

using

...

examples

...

defined

...

in

...

components:

responses:
'200':
description: OK
content:
application/json:
schema:
type: object
example:
         $ref: 'components.yml#/components/examples/dataSample'


Sample

...

request

...

using

...

examples

...

defined

...

in

...

components:

requestBody:
required: true
content:
application/json:
schema:
type: string
examples:
       dataSample:
$ref: 'components.yml#/components/examples/dataSample'

Examples for composite components:

DataAccessRequest:
type: object
properties:
operation:
type: string
enum: [ read, create, update, delete ]
example: create
dataType:
type: string
example: dataTypeValue
data:
type: string
example: data
cmHandleProperties:
$ref: '#/components/schemas/cmHandleProperties'

cmHandleProperties:
type: object
additionalProperties:
type: string
example:
- prop1: value
prop2: value


Schema Type for Request and Response

At present most of the requests are defined as schema type String for Request body json. These could be updated to object type. This will introduce below changes:

S. NoSummaryCurrent codeExpected code
1Changing the schema type in openapi.
content:
application/json:
schema:
type: string
content:
application/json:
schema:
type: object
2

Changes in Controller

Changing the datatype to Object

public ResponseEntity<String> createNode
(_, _, final String jsonData, _, _) {
public ResponseEntity<String> createNode
(_, _, final Object jsonData, _, _) {

Converting jsonData to String while passing the data to service layer
cpsDataService.saveData(dataspaceName, anchorName, jsonData,
toOffsetDateTime(observedTimestamp));
cpsDataService.saveData(dataspaceName, anchorName, jsonData.toString(),
toOffsetDateTime(observedTimestamp));


Note: These changes will introduce no changes at the client side. All users can continue to use the API as as they are using currently. This could be verified by executing the CSIT test of cps and dmi-plugin.