| # ============LICENSE_START======================================================= |
| # Copyright (C) 2021-2024 Nordix Foundation |
| # Modifications Copyright (C) 2021 Pantheon.tech |
| # Modifications Copyright (C) 2022 Bell Canada |
| # ================================================================================ |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| # ============LICENSE_END========================================================= |
| |
| components: |
| schemas: |
| # Common Schemas |
| ErrorMessage: |
| type: object |
| title: Error |
| properties: |
| status: |
| type: string |
| message: |
| type: string |
| details: |
| type: string |
| # DMI Server Exception Schema |
| DmiErrorMessage: |
| title: DMI Error Message |
| type: object |
| properties: |
| message: |
| type: string |
| example: 'Bad Gateway Error Message NCMP' |
| dmi-response: |
| type: object |
| properties: |
| http-code: |
| type: integer |
| example: 400 |
| body: |
| type: string |
| example: Bad Request |
| # Request Schemas |
| RestDmiPluginRegistration: |
| type: object |
| properties: |
| dmiPlugin: |
| type: string |
| example: my-dmi-plugin |
| default: "" |
| dmiDataPlugin: |
| type: string |
| example: my-dmi-data-plugin |
| default: "" |
| dmiModelPlugin: |
| type: string |
| example: my-dmi-model-plugin |
| default: "" |
| createdCmHandles: |
| type: array |
| items: |
| $ref: '#/components/schemas/RestInputCmHandle' |
| updatedCmHandles: |
| type: array |
| items: |
| $ref: '#/components/schemas/RestInputCmHandle' |
| example: |
| cmHandle: my-cm-handle |
| cmHandleProperties: |
| add-my-property: add-property |
| update-my-property: updated-property |
| delete-my-property: '~' |
| publicCmHandleProperties: |
| add-my-property: add-property |
| update-my-property: updated-property |
| delete-my-property: '~' |
| removedCmHandles: |
| type: array |
| items: |
| type: string |
| example: [ my-cm-handle1, my-cm-handle2, my-cm-handle3 ] |
| upgradedCmHandles: |
| $ref: '#/components/schemas/UpgradedCmHandles' |
| DmiPluginRegistrationErrorResponse: |
| type: object |
| properties: |
| failedCreatedCmHandles: |
| type: array |
| items: |
| $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse' |
| failedUpdatedCmHandles: |
| type: array |
| items: |
| $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse' |
| failedRemovedCmHandles: |
| type: array |
| items: |
| $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse' |
| failedUpgradeCmHandles: |
| type: array |
| items: |
| $ref: '#/components/schemas/CmHandlerRegistrationErrorResponse' |
| CmHandlerRegistrationErrorResponse: |
| type: object |
| properties: |
| cmHandle: |
| type: string |
| example: my-cm-handle |
| errorCode: |
| type: string |
| example: '00' |
| errorText: |
| type: string |
| example: 'Unknown error. <error-details>' |
| |
| RestInputCmHandle: |
| required: |
| - cmHandle |
| type: object |
| properties: |
| cmHandle: |
| type: string |
| example: my-cm-handle |
| cmHandleProperties: |
| $ref: '#/components/schemas/RestCmHandleProperties' |
| publicCmHandleProperties: |
| $ref: '#/components/schemas/RestCmHandleProperties' |
| moduleSetTag: |
| type: string |
| example: "my-module-set-tag" |
| trustLevel: |
| type: string |
| enum: [COMPLETE, NONE] |
| example: "COMPLETE" |
| alternateId: |
| type: string |
| example: "my-alternate-id" |
| RestCmHandleProperties: |
| type: object |
| additionalProperties: |
| type: string |
| example: my-property |
| #Module upgrade schema |
| UpgradedCmHandles: |
| required: |
| - cmHandles |
| type: object |
| properties: |
| cmHandles: |
| type: array |
| items: |
| type: string |
| example: [ my-cm-handle1, my-cm-handle2, my-cm-handle3 ] |
| moduleSetTag: |
| type: string |
| default: "" |
| example: 'my-module-set-tag' |
| |
| #Response Schemas |
| RestModuleReference: |
| type: object |
| title: Module reference details |
| properties: |
| moduleName: |
| type: string |
| example: my-module-name |
| revision: |
| type: string |
| example: my-module-revision |
| |
| RestModuleDefinition: |
| type: object |
| title: Module definitions |
| properties: |
| moduleName: |
| type: string |
| example: my-module-name |
| revision: |
| type: string |
| example: 2020-09-15 |
| content: |
| type: string |
| example: | |
| module stores { |
| yang-version 1.1; |
| namespace 'org:onap:ccsdk:sample'; |
| prefix book-store; |
| revision '2020-09-15' { |
| description |
| 'Sample Model'; |
| } |
| } |
| |
| CmHandleQueryParameters: |
| type: object |
| title: Cm Handle query parameters for executing cm handle search |
| properties: |
| cmHandleQueryParameters: |
| type: array |
| items: |
| $ref: '#/components/schemas/ConditionProperties' |
| conditions: |
| deprecated: true |
| type: array |
| items: |
| $ref: '#/components/schemas/OldConditionProperties' |
| description: not necessary, it is just for backward compatibility |
| |
| ConditionProperties: |
| properties: |
| conditionName: |
| type: string |
| conditionParameters: |
| type: array |
| items: |
| type: object |
| additionalProperties: |
| type: string |
| OldConditionProperties: |
| deprecated: true |
| properties: |
| name: |
| type: string |
| conditionParameters: |
| type: array |
| items: |
| $ref: '#/components/schemas/ModuleNameAsJsonObject' |
| ModuleNameAsJsonObject: |
| properties: |
| moduleName: |
| type: string |
| example: my-module |
| |
| RestOutputCmHandle: |
| type: object |
| title: CM handle Details |
| properties: |
| cmHandle: |
| type: string |
| example: my-cm-handle1 |
| publicCmHandleProperties: |
| $ref: '#/components/schemas/CmHandlePublicProperties' |
| state: |
| $ref: '#/components/schemas/CmHandleCompositeState' |
| trustLevel: |
| $ref: '#/components/schemas/CmHandleTrustLevel' |
| CmHandlePublicProperties: |
| type: object |
| items: |
| type: object |
| additionalProperties: |
| type: string |
| example: 'Book Type' |
| CmHandleCompositeState: |
| type: object |
| properties: |
| cmHandleState: |
| type: string |
| example: ADVISED |
| lockReason: |
| $ref: '#/components/schemas/lock-reason' |
| lastUpdateTime: |
| type: string |
| example: 2022-12-31T20:30:40.000+0000 |
| dataSyncEnabled: |
| type: boolean |
| example: false |
| dataSyncState: |
| $ref: '#/components/schemas/dataStores' |
| CmHandleTrustLevel: |
| type: string |
| description: Current trust level of the relevant CM handle ID. |
| example: COMPLETE |
| |
| lock-reason: |
| type: object |
| properties: |
| reason: |
| type: string |
| example: LOCKED_MISBEHAVING |
| details: |
| type: string |
| example: locked due to failure in module sync |
| |
| dataStores: |
| type: object |
| properties: |
| operational: |
| $ref: '#/components/schemas/sync-state' |
| running: |
| $ref: '#/components/schemas/sync-state' |
| |
| sync-state: |
| type: object |
| properties: |
| syncState: |
| type: string |
| example: NONE_REQUESTED |
| lastSyncTime: |
| type: string |
| example: 2022-12-31T20:30:40.000+0000 |
| |
| RestOutputCmHandlePublicProperties: |
| type: object |
| properties: |
| publicCmHandleProperties: |
| $ref: '#/components/schemas/CmHandlePublicProperties' |
| |
| RestOutputCmHandleCompositeState: |
| type: object |
| properties: |
| state: |
| $ref: '#/components/schemas/CmHandleCompositeState' |
| # Data Operation Request Schemas |
| DataOperationRequest: |
| type: object |
| title: execute data operation for given array of operations |
| properties: |
| operations: |
| type: array |
| items: |
| $ref: '#/components/schemas/DataOperationDefinition' |
| description: contains group of data operation requests |
| DataOperationDefinition: |
| required: |
| - operation |
| - datastore |
| - operationId |
| properties: |
| operation: |
| type: string |
| example: 'read' |
| operationId: |
| type: string |
| example: '12' |
| datastore: |
| type: string |
| example: 'ncmp-datastore:passthrough-operational' |
| options: |
| type: string |
| example: '(fields=schemas/schema)' |
| resourceIdentifier: |
| type: string |
| example: 'parent/child' |
| targetIds: |
| type: array |
| items: |
| type: string |
| example: [ "da310eecdb8d44c2acc0ddaae01174b1","c748c58f8e0b438f9fd1f28370b17d47" ] |
| |
| examples: |
| dataSampleRequest: |
| summary: Sample request |
| description: Sample request body |
| value: |
| test:bookstore: |
| bookstore-name: Chapters |
| categories: |
| - code: '01' |
| name: SciFi |
| books: |
| - authors: |
| - Iain M. Banks |
| - Ursula K. Le Guin |
| - code: '02' |
| name: kids |
| books: |
| - authors: |
| - Philip Pullman |
| |
| dataSamplePatchRequest: |
| summary: Sample patch request |
| description: Sample patch request body |
| value: |
| ietf-restconf:yang-patch: |
| patch-id: patch-1 |
| edit: |
| - edit-id: edit1 |
| operation: merge |
| target: / |
| value: |
| test:bookstore: |
| bookstore-name: Chapters |
| categories: |
| - code: '01' |
| name: Science |
| books: |
| - authors: |
| - Author1 |
| - Author2 |
| - code: '02' |
| name: Arts |
| books: |
| - authors: |
| - Author3 |
| - edit-id: edit2 |
| operation: merge |
| target: / |
| value: |
| test:bookstore: |
| bookstore-name: Novels |
| categories: |
| - code: '03' |
| name: History |
| books: |
| - authors: |
| - Iain M. Banks |
| - Ursula K. Le Guin |
| - code: '04' |
| name: Fiction |
| books: |
| - authors: |
| - Philip Pullman |
| |
| dataSampleResponse: |
| summary: Sample response |
| description: Sample response for selecting 'sample 1'. |
| value: |
| bookstore: |
| categories: |
| - code: '01' |
| books: |
| - authors: |
| - Iain M. Banks |
| - Ursula K. Le Guin |
| name: SciFi |
| - code: '02' |
| books: |
| - authors: |
| - Philip Pullman |
| name: kids |
| |
| allCmHandleQueryParameters: |
| value: |
| cmHandleQueryParameters: |
| - conditionName: hasAllModules |
| conditionParameters: |
| - { "moduleName": "my-module-1" } |
| - { "moduleName": "my-module-2" } |
| - { "moduleName": "my-module-3" } |
| - conditionName: hasAllProperties |
| conditionParameters: |
| - { "Color": "yellow" } |
| - { "Shape": "circle" } |
| - { "Size": "small" } |
| - conditionName: cmHandleWithCpsPath |
| conditionParameters: |
| - { "cpsPath": "//state[@cm-handle-state='ADVISED']" } |
| pubPropCmHandleQueryParameters: |
| value: |
| cmHandleQueryParameters: |
| - conditionName: hasAllProperties |
| conditionParameters: |
| - { "Color": "yellow" } |
| - { "Shape": "circle" } |
| - { "Size": "small" } |
| modulesCmHandleQueryParameters: |
| value: |
| cmHandleQueryParameters: |
| - conditionName: hasAllModules |
| conditionParameters: |
| - { "moduleName": "my-module-1" } |
| - { "moduleName": "my-module-2" } |
| - { "moduleName": "my-module-3" } |
| cpsPathCmHandleStateQueryParameters: |
| value: |
| cmHandleQueryParameters: |
| - conditionName: cmHandleWithCpsPath |
| conditionParameters: |
| - { "cpsPath": "//state[@cm-handle-state='LOCKED']" } |
| cpsPathCmHandleDataSyncQueryParameters: |
| value: |
| cmHandleQueryParameters: |
| - conditionName: cmHandleWithCpsPath |
| conditionParameters: |
| - { "cpsPath": "//state[@data-sync-enabled='true']" } |
| |
| parameters: |
| cmHandleInPath: |
| name: cm-handle |
| in: path |
| description: The identifier for a network function, network element, subnetwork or any other cm object by managed Network CM Proxy |
| required: true |
| schema: |
| type: string |
| example: my-cm-handle |
| moduleNameInQuery: |
| name: module-name |
| in: query |
| description: Filter for a module name.This is an optional parameter |
| required: false |
| schema: |
| type: string |
| example: my-module |
| revisionInQuery: |
| name: revision |
| in: query |
| description: Filter for a module revision.This is an optional parameter and ignored when no module name is supplied |
| required: false |
| schema: |
| type: string |
| example: 2024-01-22 |
| dataSyncEnabled: |
| name: dataSyncEnabled |
| in: query |
| description: Is used to enable or disable the data synchronization flag |
| required: true |
| schema: |
| type: boolean |
| example: true |
| xpathInQuery: |
| name: xpath |
| in: query |
| description: xpath |
| required: false |
| schema: |
| type: string |
| default: / |
| requiredXpathInQuery: |
| name: xpath |
| in: query |
| description: xpath |
| required: true |
| schema: |
| type: string |
| includeDescendantsOptionInQuery: |
| name: include-descendants |
| in: query |
| description: Determines if descendants are included in response |
| required: false |
| schema: |
| type: boolean |
| default: false |
| cpsPathInQuery: |
| name: cps-path |
| in: query |
| description: For more details on cps path, please refer https://docs.onap.org/projects/onap-cps/en/latest/cps-path.html |
| required: false |
| schema: |
| type: string |
| default: / |
| examples: |
| container cps path: |
| value: //bookstore |
| list attributes cps path: |
| value: //categories[@code=1] |
| dmiPluginIdentifierInQuery: |
| name: dmi-plugin-identifier |
| in: query |
| description: dmi-plugin-identifier |
| required: true |
| schema: |
| type: string |
| example: my-dmi-plugin |
| resourceIdentifierInQuery: |
| name: resourceIdentifier |
| in: query |
| description: The format of resource identifier depend on the associated DMI Plugin implementation. For ONAP DMI Plugin it will be RESTConf paths but it can really be anything. |
| required: true |
| allowReserved: true |
| schema: |
| type: string |
| examples: |
| sample 1: |
| value: |
| resourceIdentifier: \shops\bookstore |
| sample 2: |
| value: |
| resourceIdentifier: \shops\bookstore\categories[@code=1] |
| sample 3: |
| value: |
| resourceIdentifier: parent=shops,child=bookstore |
| optionsParamInQuery: |
| name: options |
| in: query |
| description: options parameter in query, it is mandatory to wrap key(s)=value(s) in parenthesis'()'. The format of options parameter depend on the associated DMI Plugin implementation. |
| required: false |
| schema: |
| type: string |
| allowReserved: true |
| examples: |
| sample 1: |
| value: |
| options: (depth=3) |
| sample 2: |
| value: |
| options: (fields=book) |
| sample 3: |
| value: |
| options: (depth=2,fields=book/authors) |
| topicParamInQuery: |
| name: topic |
| in: query |
| description: topic parameter in query. |
| required: false |
| schema: |
| type: string |
| allowReserved: true |
| examples: |
| sample 1: |
| value: |
| topic: my-topic-name |
| requiredTopicParamInQuery: |
| name: topic |
| in: query |
| description: mandatory topic parameter in query. |
| required: true |
| schema: |
| type: string |
| allowReserved: true |
| examples: |
| sample 1: |
| value: |
| topic: my-topic-name |
| contentParamInHeader: |
| name: Content-Type |
| in: header |
| required: false |
| description: Content parameter for request, if content parameter is null, default value is application/json. |
| schema: |
| type: string |
| default: application/json |
| example: application/yang-data+json |
| authorizationParamInHeader: |
| name: Authorization |
| in: header |
| required: false |
| description: Authorization parameter for request. |
| schema: |
| type: string |
| datastoreName: |
| name: datastore-name |
| in: path |
| description: The type of the requested data |
| required: true |
| schema: |
| type: string |
| example: ncmp-datastore:running |
| |
| responses: |
| NotFound: |
| description: The specified resource was not found |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| example: |
| status: 400 |
| message: Not found error message |
| details: Not found error details |
| Unauthorized: |
| description: Unauthorized |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| example: |
| status: 401 |
| message: Unauthorized error message |
| details: Unauthorized error details |
| Forbidden: |
| description: Forbidden |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| example: |
| status: 403 |
| message: Forbidden error message |
| details: Forbidden error details |
| BadRequest: |
| description: Bad Request |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| example: |
| status: 400 BAD_REQUEST |
| message: Bad request error message |
| details: Bad request error details |
| Conflict: |
| description: Conflict |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| example: |
| status: 409 CONFLICT |
| message: Conflict error message |
| details: Conflict error details |
| NotImplemented: |
| description: The given path has not been implemented |
| content: |
| application/json: |
| schema: |
| $ref: '#/components/schemas/ErrorMessage' |
| example: |
| status: 501 |
| message: Not implemented error message |
| details: Not implemented error details |
| Ok: |
| description: OK |
| content: |
| application/json: |
| schema: |
| type: object |
| Created: |
| description: Created |
| content: { } |
| NoContent: |
| description: No Content |
| content: { } |
| InternalServerError: |
| description: Internal Server Error |
| content: |
| application/json: |
| schema: |
| $ref: "#/components/schemas/ErrorMessage" |
| example: |
| status: 500 |
| message: Internal Server Error |
| details: Internal Server Error occurred |
| BadGateway: |
| description: Bad Gateway |
| content: |
| application/json: |
| schema: |
| $ref: "#/components/schemas/DmiErrorMessage" |
| example: |
| message: "Bad Gateway Error Message NCMP" |
| dmi-response: |
| http-code: 400 |
| body: "Bad Request" |