X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=cps-ncmp-rest%2Fdocs%2Fopenapi%2Fcomponents.yaml;h=8b02dd10a3384129784b871c9ddf1753c2c98c62;hb=697caa85dd35d5996d604935987e43b61b5811c2;hp=704721742fb844c5ce1400b4bd24fe07d18fc87e;hpb=5aba6667d330835fa3661ffba0d88f88029da446;p=cps.git diff --git a/cps-ncmp-rest/docs/openapi/components.yaml b/cps-ncmp-rest/docs/openapi/components.yaml index 704721742..8b02dd10a 100644 --- a/cps-ncmp-rest/docs/openapi/components.yaml +++ b/cps-ncmp-rest/docs/openapi/components.yaml @@ -1,5 +1,5 @@ # ============LICENSE_START======================================================= -# Copyright (C) 2021 Nordix Foundation +# Copyright (C) 2021-2022 Nordix Foundation # Modifications Copyright (C) 2021 Pantheon.tech # ================================================================================ # Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,6 +19,7 @@ components: schemas: + # Common Schemas ErrorMessage: type: object title: Error @@ -30,36 +31,219 @@ components: details: type: string + # Request Schemas RestDmiPluginRegistration: type: object properties: dmiPlugin: type: string - example: onap-dmi-plugin + 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/RestCmHandle' + $ref: '#/components/schemas/RestInputCmHandle' updatedCmHandles: type: array items: - $ref: '#/components/schemas/RestCmHandle' + $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] - RestCmHandle: + RestInputCmHandle: required: - cmHandle type: object properties: cmHandle: type: string - example: cmHandle123 + example: my-cm-handle cmHandleProperties: - $ref: '#/components/schemas/RestCmHandleAdditionalProperties' - RestCmHandleAdditionalProperties: + $ref: '#/components/schemas/RestCmHandleProperties' + publicCmHandleProperties: + $ref: '#/components/schemas/RestCmHandleProperties' + RestCmHandleProperties: type: object additionalProperties: type: string - example: system-001 + example: my-property + + Conditions: + type: object + properties: + conditions: + $ref: '#/components/schemas/ConditionsData' + ConditionsData: + type: array + items: + type: object + $ref: '#/components/schemas/ConditionProperties' + ConditionProperties: + properties: + name: + type: string + example: hasAllModules + conditionParameters: + $ref: '#/components/schemas/ModuleNamesAsJsonArray' + ModuleNamesAsJsonArray: + type: array + items: + type: object + $ref: '#/components/schemas/ModuleNameAsJsonObject' + example: [my-module-1, my-module-2, my-module-3] + ModuleNameAsJsonObject: + properties: + moduleName: + type: string + example: my-module + + #Response Schemas + CmHandles: + type: object + properties: + cmHandles: + $ref: '#/components/schemas/CmHandleProperties' + CmHandleProperties: + type: array + items: + type: object + $ref: '#/components/schemas/CmHandleProperty' + CmHandleProperty: + properties: + cmHandleId: + type: string + example: my-cm-handle-id + + ModuleReference: + type: object + title: Module reference details + properties: + moduleName: + type: string + example: my-module-name + revision: + type: string + example: my-module-revision + + RestOutputCmHandle: + type: object + title: CM handle Details + properties: + cmHandle: + type: string + example: my-cm-handle1 + publicCmHandleProperties: + $ref: '#/components/schemas/CmHandlePublicProperties' + CmHandlePublicProperties: + type: array + items: + type: object + additionalProperties: + type: string + example: Book Type + + 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 parameters: cmHandleInPath: @@ -69,6 +253,7 @@ components: required: true schema: type: string + example: my-cm-handle xpathInQuery: name: xpath in: query @@ -100,37 +285,71 @@ components: schema: type: string default: / - resourceIdentifierInPath: + resourceIdentifierInQuery: name: resourceIdentifier - in: path - description: Resource identifier to get/set the resource data + 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 acceptParamInHeader: - name: accept + name: Accept in: header required: false description: Accept parameter for response, if accept parameter is null, that means client can accept any format. schema: type: string enum: [ application/json, application/yang-data+json ] - fieldsParamInQuery: - name: fields + optionsParamInQuery: + name: options in: query - description: Fields parameter to filter resource + 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 - depthParamInQuery: - name: depth + 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: Depth parameter for response + description: topic parameter in query. required: false schema: - type: integer - minimum: 1 - + 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 responses: NotFound: @@ -139,36 +358,60 @@ components: 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: @@ -181,3 +424,13 @@ components: 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