blob: cd77effc89327f6b21a977f520e2f7a7a5d62710 [file] [log] [blame]
# ============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"