openapi: 3.0.3
info:
  description: Support datajobs through one or more subjob for each DMI and Data Producer
    Identifier combination
  title: NCMP Data Subjob API
  version: 1.7.0
servers:
- url: /dmi
tags:
- description: DMI plugin rest apis
  name: dmi-datajob
paths:
  /v1/cmreadJob:
    post:
      description: Create a read request
      operationId: readDataJob
      parameters:
      - description: The destination of the results (Kafka topic name or s3 bucket
          name)
        explode: true
        in: query
        name: destination
        required: true
        schema:
          example: some-destination
          type: string
        style: form
      requestBody:
        content:
          application/3gpp-json-patch+json:
            schema:
              $ref: '#/components/schemas/SubjobReadRequest'
        description: Operation body
      responses:
        "501":
          content:
            application/json:
              example:
                status: 501
                message: Not Implemented
                details: Method Not Implemented
              schema:
                $ref: '#/components/schemas/ErrorMessage'
          description: Not Implemented
      tags:
      - dmi-datajob
  /v1/cmwriteJob:
    post:
      description: Create a write request
      operationId: writeDataJob
      parameters:
      - description: The destination of the results (Kafka topic name or s3 bucket
          name)
        explode: true
        in: query
        name: destination
        required: true
        schema:
          example: some-destination
          type: string
        style: form
      requestBody:
        content:
          application/3gpp-json-patch+json:
            schema:
              $ref: '#/components/schemas/SubjobWriteRequest'
        description: Operation body
      responses:
        "501":
          content:
            application/json:
              example:
                status: 501
                message: Not Implemented
                details: Method Not Implemented
              schema:
                $ref: '#/components/schemas/ErrorMessage'
          description: Not Implemented
      tags:
      - dmi-datajob
  /v1/cmwriteJob/dataProducer/{dataProducerId}/dataProducerJob/{dataProducerJobId}/status:
    get:
      description: Retrieve the status of a specific data job.
      operationId: getDataJobStatus
      parameters:
      - description: Identifier for the data producer
        explode: false
        in: path
        name: dataProducerId
        required: true
        schema:
          example: some-data-producer-identifier
          type: string
        style: simple
      - description: Identifier for the data producer job
        explode: false
        in: path
        name: dataProducerJobId
        required: true
        schema:
          example: some-producer-job-identifier
          type: string
        style: simple
      responses:
        "501":
          content:
            application/json:
              example:
                status: 501
                message: Not Implemented
                details: Method Not Implemented
              schema:
                $ref: '#/components/schemas/ErrorMessage'
          description: Not Implemented
      tags:
      - dmi-datajob
  /v1/cmwriteJob/dataProducer/{dataProducerId}/dataProducerJob/{dataProducerJobId}/result:
    get:
      description: Retrieve the result of a data job.
      operationId: getDataJobResult
      parameters:
      - description: Identifier for the data producer
        explode: false
        in: path
        name: dataProducerId
        required: true
        schema:
          example: some-data-producer-identifier
          type: string
        style: simple
      - description: Identifier for the data producer job
        explode: false
        in: path
        name: dataProducerJobId
        required: true
        schema:
          example: some-producer-job-identifier
          type: string
        style: simple
      - description: The destination of the results (Kafka topic name or s3 bucket
          name)
        explode: true
        in: query
        name: destination
        required: true
        schema:
          example: some-destination
          type: string
        style: form
      responses:
        "501":
          content:
            application/json:
              example:
                status: 501
                message: Not Implemented
                details: Method Not Implemented
              schema:
                $ref: '#/components/schemas/ErrorMessage'
          description: Not Implemented
      tags:
      - dmi-datajob
components:
  parameters:
    requestIdInPath:
      description: Identifier for the overall Datajob
      explode: false
      in: path
      name: requestId
      required: true
      schema:
        example: some-identifier
        type: string
      style: simple
    dataProducerJobIdInPath:
      description: Identifier for the data producer job
      explode: false
      in: path
      name: dataProducerJobId
      required: true
      schema:
        example: some-producer-job-identifier
        type: string
      style: simple
    dataProducerIdInPath:
      description: Identifier for the data producer
      explode: false
      in: path
      name: dataProducerId
      required: true
      schema:
        example: some-data-producer-identifier
        type: string
      style: simple
    dataProducerIdInQuery:
      description: Identifier for the data producer
      explode: true
      in: query
      name: dataProducerId
      required: true
      schema:
        example: some-data-producer-identifier
        type: string
      style: form
    destinationInQuery:
      description: The destination of the results (Kafka topic name or s3 bucket name)
      explode: true
      in: query
      name: destination
      required: true
      schema:
        example: some-destination
        type: string
      style: form
  responses:
    NotImplemented:
      content:
        application/json:
          example:
            status: 501
            message: Not Implemented
            details: Method Not Implemented
          schema:
            $ref: '#/components/schemas/ErrorMessage'
      description: Not Implemented
  schemas:
    ErrorMessage:
      properties:
        status:
          type: string
        message:
          type: string
        details:
          type: string
      title: Error
      type: object
    SubjobReadRequest:
      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: 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
      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
        dataJobId:
          description: Identifier for the overall Data Job
          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
    CmHandleProperties:
      description: Private properties of the cm handle for the given path
      type: object
    SubjobWriteResponse:
      properties:
        subJobId:
          description: Unique identifier for the sub-job
          example: my-sub-job-id
          type: string
        dmiServiceName:
          description: Name of the relevant DMI Service
          example: my-dmi-service
          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
      required:
      - dataProducerId
      - dmiServiceName
      - subJobId
      type: object
    SubjobReadRequest_data_inner:
      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
          items:
            example: cellId
            type: string
          type: array
        fields:
          description: This parameter specifies the attribute fields of the scoped
            resources that are returned
          items:
            type: string
          type: array
        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
          type: object
      required:
      - op
      - path
      type: object
    SubjobWriteRequest_data_inner:
      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
          type: object
        value:
          additionalProperties: true
          description: Value dependent on the op specified. Resource for an add. Object
            for a replace. ActionParameters for an action.
          type: object
      required:
      - op
      - path
      type: object
