From d9a46158a925460c9469e42a64153c60158f81f1 Mon Sep 17 00:00:00 2001 From: egernug Date: Tue, 14 May 2024 14:02:07 +0100 Subject: Separate REST endpoints to individual read and write calls Issue-ID: CPS-2141 Change-Id: I5fe1a8e087084c35e51f24d8e8d1241194335725 Signed-off-by: egernug --- docs/api/swagger/openapi-datajob.yaml | 167 ++++++++++++++--------- openapi/openapi-datajob.yml | 240 ++++++++++++++++++++-------------- 2 files changed, 251 insertions(+), 156 deletions(-) diff --git a/docs/api/swagger/openapi-datajob.yaml b/docs/api/swagger/openapi-datajob.yaml index 04a5bf1d..b3baa168 100644 --- a/docs/api/swagger/openapi-datajob.yaml +++ b/docs/api/swagger/openapi-datajob.yaml @@ -5,40 +5,69 @@ info: title: NCMP Data Subjob API version: 1.0.0 servers: - - url: /dmi +- url: /dmi tags: - - description: DMI plugin rest apis - name: dmi-datajob +- description: DMI plugin rest apis + name: dmi-datajob paths: - /v1/dataJob/{requestId}: + /dmi/v1/readJob/{requestId}: post: description: Create a read request - operationId: createReadRequest + operationId: readDataJob parameters: - - description: Identifier for the overall Datajob - explode: false - in: path - name: requestId - required: true - schema: - example: some-identifier - type: string - style: simple + - description: Identifier for the overall Datajob + explode: false + in: path + name: requestId + required: true + schema: + example: some-identifier + type: string + style: simple requestBody: content: application/3gpp-json-patch+json: schema: - $ref: '#/components/schemas/SubjobRequest' + $ref: '#/components/schemas/SubjobReadRequest' description: Operation body responses: "200": content: application/json: schema: - $ref: '#/components/schemas/createReadRequest_200_response' + $ref: '#/components/schemas/readDataJob_200_response' description: Response for subjob tags: - - dmi-datajob + - dmi-datajob + /dmi/v1/writeJob/{requestId}: + post: + description: Create a write request + operationId: writeDataJob + parameters: + - description: Identifier for the overall Datajob + explode: false + in: path + name: requestId + required: true + schema: + example: some-identifier + type: string + style: simple + requestBody: + content: + application/3gpp-json-patch+json: + schema: + $ref: '#/components/schemas/SubjobWriteRequest' + description: Operation body + responses: + "200": + content: + application/json: + schema: + $ref: '#/components/schemas/readDataJob_200_response' + description: Response for subjob + tags: + - dmi-datajob components: parameters: requestIdInPath: @@ -52,7 +81,7 @@ components: type: string style: simple schemas: - SubjobRequest: + SubjobReadRequest: properties: dataAcceptType: description: Defines the data response accept type @@ -68,33 +97,50 @@ components: example: my-data-producer-identifier type: string data: - $ref: '#/components/schemas/SubjobRequest_data' + example: + op: read + operationId: 1 + path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=2 + attributes: userLabel + scope: + scopeTyp: BASE_ONLY + items: + $ref: '#/components/schemas/SubjobReadRequest_data_inner' + type: array required: - - data - - dataProducerId + - data + - dataProducerId + type: object + SubjobWriteRequest: + properties: + dataAcceptType: + description: Defines the data response accept type + example: application/vnd.3gpp.object-tree-hierarchical+json + type: string + dataContentType: + description: Defines the data request content type + example: application/3gpp-json-patch+json + type: string + dataProducerId: + description: ID of the producer registered by DMI for the paths in the operations + in this request + example: my-data-producer-identifier + type: string + data: + example: + op: add + path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=1/EUtraNetwork=1/EUtranFrequency=12 + value: + id: 12 + attributes: + userLabel: label12 + items: + $ref: '#/components/schemas/SubjobWriteRequest_data_inner' + type: array + required: + - data + - dataProducerId type: object - ReadOperation: - example: - op: read - operationId: 1 - path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=2 - attributes: userLabel - scope: - scopeTyp: BASE_ONLY - items: - $ref: '#/components/schemas/ReadOperation_inner' - type: array - WriteOperation: - example: - op: add - path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=1/EUtraNetwork=1/EUtranFrequency=12 - value: - id: 12 - attributes: - userLabel: label12 - items: - $ref: '#/components/schemas/WriteOperation_inner' - type: array CmHandleProperties: description: Private properties of the cm handle for the given path type: object @@ -119,7 +165,7 @@ components: type: object Object: type: object - createReadRequest_200_response: + readDataJob_200_response: example: dataProducerJobId: dataProducerJobId properties: @@ -127,11 +173,7 @@ components: description: The data job ID. type: string type: object - SubjobRequest_data: - oneOf: - - $ref: '#/components/schemas/ReadOperation' - - $ref: '#/components/schemas/WriteOperation' - ReadOperation_inner: + SubjobReadRequest_data_inner: properties: path: description: Defines the resource on which operation is executed @@ -181,18 +223,18 @@ components: description: Private properties of the cm handle for the given path type: object required: - - op - - path + - op + - path type: object - WriteOperation_inner_value: + SubjobWriteRequest_data_inner_value: description: Value dependent on the op specified. Resource for an add. Object for a replace. ActionParameters for an action. oneOf: - - $ref: '#/components/schemas/Resource' - - $ref: '#/components/schemas/ActionParameters' - - $ref: '#/components/schemas/Object' + - $ref: '#/components/schemas/Resource' + - $ref: '#/components/schemas/ActionParameters' + - $ref: '#/components/schemas/Object' type: object - WriteOperation_inner: + SubjobWriteRequest_data_inner: properties: path: description: Defines the resource on which operation is executed @@ -206,9 +248,16 @@ components: description: Unique identifier for the operation within the request example: "1" type: string + moduleSetTag: + description: Module set identifier + example: my-module-set-tag + type: string + cmHandleProperties: + description: Private properties of the cm handle for the given path + type: object value: - $ref: '#/components/schemas/WriteOperation_inner_value' + $ref: '#/components/schemas/SubjobWriteRequest_data_inner_value' required: - - op - - path + - op + - path type: object diff --git a/openapi/openapi-datajob.yml b/openapi/openapi-datajob.yml index b572ff3e..8a0f315b 100644 --- a/openapi/openapi-datajob.yml +++ b/openapi/openapi-datajob.yml @@ -27,10 +27,10 @@ tags: - description: DMI plugin rest apis name: dmi-datajob paths: - /v1/dataJob/{requestId}: + /dmi/v1/readJob/{requestId}: post: description: Create a read request - operationId: createReadRequest + operationId: readDataJob parameters: - $ref: '#/components/parameters/requestIdInPath' requestBody: @@ -38,7 +38,32 @@ paths: content: application/3gpp-json-patch+json: schema: - $ref: '#/components/schemas/SubjobRequest' + $ref: '#/components/schemas/SubjobReadRequest' + tags: + - dmi-datajob + responses: + "200": + description: Response for subjob + content: + application/json: + schema: + type: object + properties: + dataProducerJobId: + type: string + description: The data job ID. + /dmi/v1/writeJob/{requestId}: + post: + description: Create a write request + operationId: writeDataJob + parameters: + - $ref: '#/components/parameters/requestIdInPath' + requestBody: + description: Operation body + content: + application/3gpp-json-patch+json: + schema: + $ref: '#/components/schemas/SubjobWriteRequest' tags: - dmi-datajob responses: @@ -63,7 +88,7 @@ components: example: some-identifier type: string schemas: - SubjobRequest: + SubjobReadRequest: type: object required: - dataProducerId @@ -82,100 +107,121 @@ components: example: my-data-producer-identifier type: string data: - oneOf: - - $ref: '#/components/schemas/ReadOperation' - - $ref: '#/components/schemas/WriteOperation' - ReadOperation: - example: - op: read - operationId: 1 - path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=2 - attributes: userLabel - scope: - scopeTyp: BASE_ONLY - type: array - items: - type: object - required: - - path - - op - properties: - path: - description: Defines the resource on which operation is executed - example: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003 - type: string - op: - description: Describes the operation to execute - example: read - type: string - operationId: - description: Unique identifier for the operation within the request - example: 1 - type: string - attributes: - description: This parameter specifies the attributes of the scoped resources that are returned - type: array - items: - example: cellId - type: string - fields: - description: This parameter specifies the attribute fields of the scoped resources that are returned - type: array - items: - type: string - filter: - description: This parameter is used to filter the scoped Managed Objects. Only Managed Objects passing the filter criteria will be fetched - example: NRCellDU/attributes/administrativeState==LOCKED - type: string - scopeType: - description: ScopeType selects MOs depending on relationships with Base Managed Object - example: BASE_ONLY - type: string - scopeLevel: - description: Only used when the scope type is BASE_NTH_LEVEL to specify amount of levels to search - example: 0 - type: integer - moduleSetTag: - description: Module set identifier - example: my-module-set-tag - type: string - cmHandleProperties: - description: Private properties of the cm handle for the given path - $ref: '#/components/schemas/CmHandleProperties' - WriteOperation: - example: - op: add - path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=1/EUtraNetwork=1/EUtranFrequency=12 - value: - id: 12 - attributes: - userLabel: label12 - type: array - items: - type: object - required: - - path - - op - properties: - path: - description: Defines the resource on which operation is executed - example: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003 - type: string - op: - description: Describes the operation to execute - example: add - type: string - operationId: - description: Unique identifier for the operation within the request - example: 1 - type: string - value: - description: Value dependent on the op specified. Resource for an add. Object for a replace. ActionParameters for an action. + example: + op: read + operationId: 1 + path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=2 + attributes: userLabel + scope: + scopeTyp: BASE_ONLY + type: array + items: type: object - oneOf: - - $ref: '#/components/schemas/Resource' - - $ref: '#/components/schemas/ActionParameters' - - $ref: '#/components/schemas/Object' + required: + - path + - op + properties: + path: + description: Defines the resource on which operation is executed + example: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003 + type: string + op: + description: Describes the operation to execute + example: read + type: string + operationId: + description: Unique identifier for the operation within the request + example: 1 + type: string + attributes: + description: This parameter specifies the attributes of the scoped resources that are returned + type: array + items: + example: cellId + type: string + fields: + description: This parameter specifies the attribute fields of the scoped resources that are returned + type: array + items: + type: string + filter: + description: This parameter is used to filter the scoped Managed Objects. Only Managed Objects passing the filter criteria will be fetched + example: NRCellDU/attributes/administrativeState==LOCKED + type: string + scopeType: + description: ScopeType selects MOs depending on relationships with Base Managed Object + example: BASE_ONLY + type: string + scopeLevel: + description: Only used when the scope type is BASE_NTH_LEVEL to specify amount of levels to search + example: 0 + type: integer + moduleSetTag: + description: Module set identifier + example: my-module-set-tag + type: string + cmHandleProperties: + description: Private properties of the cm handle for the given path + $ref: '#/components/schemas/CmHandleProperties' + SubjobWriteRequest: + type: object + required: + - dataProducerId + - data + properties: + dataAcceptType: + description: Defines the data response accept type + example: application/vnd.3gpp.object-tree-hierarchical+json + type: string + dataContentType: + description: Defines the data request content type + example: application/3gpp-json-patch+json + type: string + dataProducerId: + description: ID of the producer registered by DMI for the paths in the operations in this request + example: my-data-producer-identifier + type: string + data: + example: + op: add + path: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003/GNBCUCPFunction=1/EUtraNetwork=1/EUtranFrequency=12 + value: + id: 12 + attributes: + userLabel: label12 + type: array + items: + type: object + required: + - path + - op + properties: + path: + description: Defines the resource on which operation is executed + example: SubNetwork=Europe/SubNetwork=Ireland/MeContext=NR03gNodeBRadio00003/ManagedElement=NR03gNodeBRadio00003 + type: string + op: + description: Describes the operation to execute + example: add + type: string + operationId: + description: Unique identifier for the operation within the request + example: 1 + type: string + moduleSetTag: + description: Module set identifier + example: my-module-set-tag + type: string + cmHandleProperties: + description: Private properties of the cm handle for the given path + $ref: '#/components/schemas/CmHandleProperties' + value: + description: Value dependent on the op specified. Resource for an add. Object for a replace. ActionParameters for an action. + type: object + oneOf: + - $ref: '#/components/schemas/Resource' + - $ref: '#/components/schemas/ActionParameters' + - $ref: '#/components/schemas/Object' CmHandleProperties: description: Private properties of the cm handle for the given path type: object -- cgit 1.2.3-korg