openapi: 3.0.3
info:
  title: SmartDataContext API
  version: 0.1.0
  description: API to manage SmartDataContext entities.
paths:
  /api/v1_1/context.php#create:
    post:
      summary: Creates a new SmartDataContext
      requestBody:
        description: Create a new SmartDataContext with the given parameters.
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                command:
                  type: string
                  example: "/create"
                  description: The command to be executed.
                request:
                  type: object
                  properties:
                    smartDataUnits:
                      type: array
                      items:
                        type: integer
                      description: The values of the SmartDataUnits to associate with this SmartDataContext.
                      example: [98812]
                    smartDataSources:
                      type: array
                      items:
                        oneOf:
                          - type: string
                          - type: array
                            items:
                              type: integer
                      description: The signatures (mobile) or space sphere (stationary) of the SmartDataSources associated with this context.
                      example: ["signature", [1, 1, 1, 1]]
                    t0:
                      type: integer
                      description: If not informed, assumed -1 as the value.
                      example: 1
                    t1:
                      type: integer
                      description: If not informed, assumed -1 as the value.
                      example: 1
                    features:
                      type: object
                      description: At least a single feature "tags" with at least one tag should be provided.
                      properties:
                        tags:
                          type: array
                          items:
                            type: string
                          example: ["sim"]
                    content:
                      type: object
                      description: The JSON of the SmartDataContext to be stored.
                      example: {"meta": true}
              required:
                - command
                - request
      responses:
        '200':
          description: The id for the created SmartDataContext.
          content:
            application/json:
              schema:
                type: object
                properties:
                  smartdatacontextid:
                    type: string
                    example: "zzz-eee-ddd"
                    description: The ID of the created SmartDataContext.
                  errors:
                    type: array
                    example: ["Invalid id"]
                    description: "Present if errors ocurred during the request."
  /api/v1_1/context.php#associate:
    post:
      summary: Associates SmartDataUnits or SmartDataSources to a SmartDataContext
      operationId: associateSmartDataContext
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                command:
                  type: string
                  example: /associate
                request:
                  type: object
                  properties:
                    smartDataUnits:
                      type: array
                      items:
                        type: integer
                      description: The values of the SmartDataUnits to associate with this SmartDataContext
                    smartDataSources:
                      type: array
                      items:
                        oneOf:
                          - type: string
                          - type: array
                            items:
                              type: integer
                      description: The signatures (mobile) or space sphere (stationary) of the SmartDataSources to associate with this context
                    smartDataContextIds:
                      type: array
                      items:
                        type: string
                      description: A list of SmartDataContext IDs to associate
                  required:
                    - smartDataContextIds
                  oneOf:
                    - required:
                        - smartDataUnits
                    - required:
                        - smartDataSources
                  example:
                    smartDataUnits: [98812]
                    smartDataSources: ["signature", [1,1,1,1]]
                    smartDataContextIds: ['u3iu48-34323-d343-rffe', 'u3iu48-34323-d343-rffe']
      responses:
        '200':
          description: Update SmartDataContext entities or list of errors
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      result:
                        type: array
                        items:
                          type: object
                          properties:
                            success:
                              type: boolean
                            result:
                              type: object
                              properties:
                                _id:
                                  type: object
                                  properties:
                                    $oid:
                                      type: string
                                      example: "66c351f6fb8347b8c406db52"
                                id:
                                  type: string
                                  example: "88690087-a4f4-4e1d-8c8d-8c67d19ddaed"
                                t0:
                                  type: integer
                                  example: -1
                                t1:
                                  type: integer
                                  example: -1
                                content:
                                  type: object
                                  properties:
                                    meta:
                                      type: boolean
                                      example: true
                                features:
                                  type: object
                                  properties:
                                    tags:
                                      type: array
                                      items:
                                        type: string
                                        example: "sim"
                                    identifier:
                                      type: string
                                      example: "0d8c9a721e46a26f31acce9a714620510c1722d1"
                                smartDataSources:
                                  type: array
                                  items:
                                    oneOf:
                                      - type: string
                                      - type: array
                                        items:
                                          type: integer
                                smartDataUnits:
                                  type: array
                                  items:
                                    type: integer
                                    example: 111
                  - type: object
                    properties:
                      result:
                        type: array
                        items:
                          type: object
                          properties:
                            errors:
                              type: array
                              items:
                                type: string
                                example: "Invalid id"


  /api/v1_1/context.php#unassociate:
    post:
      summary: Unassociate SmartDataUnits or SmartDataSources from SmartDataContext
      operationId: unassociateSmartDataContext
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                command:
                  type: string
                  example: /unassociate
                request:
                  type: object
                  properties:
                    smartDataUnits:
                      type: array
                      items:
                        type: integer
                      description: The values of the SmartDataUnits to unassociate with this SmartDataContext
                    smartDataSources:
                      type: array
                      items:
                        oneOf:
                          - type: string
                          - type: array
                            items:
                              type: integer
                      description: The signatures (mobile) or space sphere (stationary) of the SmartDataSources to unassociate with this context
                    smartdataids:
                      type: array
                      items:
                        type: string
                      description: A list of SmartData IDs to unassociate
                  required:
                    - smartdataids
                  oneOf:
                    - required:
                        - smartDataUnits
                    - required:
                        - smartDataSources
                  example:
                    smartDataUnits: [98812]
                    smartDataSources: ["signature", [1,1,1,1]]
                    smartdataids: ['u3iu48-34323-d343-rffe', 'u3iu48-34323-d343-rffe']
      responses:
        '200':
          description: Update SmartDataContext entities or list of errors
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      result:
                        type: array
                        items:
                          type: object
                          properties:
                            success:
                              type: boolean
                            result:
                              type: object
                              properties:
                                _id:
                                  type: object
                                  properties:
                                    $oid:
                                      type: string
                                      example: "66c351f6fb8347b8c406db52"
                                id:
                                  type: string
                                  example: "88690087-a4f4-4e1d-8c8d-8c67d19ddaed"
                                t0:
                                  type: integer
                                  example: -1
                                t1:
                                  type: integer
                                  example: -1
                                content:
                                  type: object
                                  properties:
                                    meta:
                                      type: boolean
                                      example: true
                                features:
                                  type: object
                                  properties:
                                    tags:
                                      type: array
                                      items:
                                        type: string
                                        example: "sim"
                                    identifier:
                                      type: string
                                      example: "0d8c9a721e46a26f31acce9a714620510c1722d1"
                                smartDataSources:
                                  type: array
                                  items:
                                    oneOf:
                                      - type: string
                                      - type: array
                                        items:
                                          type: integer
                                smartDataUnits:
                                  type: array
                                  items:
                                    type: integer
                                    example: 111
                  - type: object
                    properties:
                      result:
                        type: array
                        items:
                          type: object
                          properties:
                            errors:
                              type: array
                              items:
                                type: string
                                example: "Invalid id"

  /api/v1_1/context.php#context:
    post:
      summary: Retrieve context data for a given SmartData Unit or SmartDataSource
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                command:
                  type: string
                  example: /contexts
                  description: The command to execute.
                request:
                  type: object
                  properties:
                    smartDataSources:
                      type: array
                      items:
                        type: array
                        items:
                          type: integer
                      description: An array of smart data source arrays.
                      example: [[4,5,6,7]]
                    smartDataUnits:
                      type: array
                      items:
                        type: integer
                      description: A list of smart data unit IDs.
                      example: [111]
                    t0:
                      type: integer
                      description: Start time for the query.
                      example: 10
                    t1:
                      type: integer
                      description: End time for the query.
                      example: 300
              required:
                - command
                - request
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    properties:
                      _id:
                        type: object
                        properties:
                          $oid:
                            type: string
                            example: "66c351f6fb8347b8c406db52"
                      id:
                        type: string
                        example: "88690087-a4f4-4e1d-8c8d-8c67d19ddaed"
                      t0:
                        type: integer
                        example: -1
                      t1:
                        type: integer
                        example: -1
                      content:
                        type: object
                        properties:
                          meta:
                            type: boolean
                            example: true
                      features:
                        type: object
                        properties:
                          tags:
                            type: array
                            items:
                              type: string
                            example: ["sim"]
                          identifier:
                            type: string
                            example: "0d8c9a721e46a26f31acce9a714620510c1722d1"
                      smartDataSources:
                        type: array
                        items:
                          oneOf:
                            - type: string
                            - type: array
                              items:
                                type: integer
                        example:
                          - "ffdaf2342"
                          - [1, 2, 3, 5]
                          - "ae7666"
                          - [4, 5, 6, 7]
                      smartDataUnits:
                        type: array
                        items:
                          type: integer
                        example: [111, 222]

        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
                    example: ["Invalid id"]
  /api/v1_1/context.php#query:
    post:
      summary: Execute a MongoDB query over the SmartDataContext entities
      description: Endpoint to execute a MongoDB query and retrieve results.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - command
                - request
              properties:
                command:
                  type: string
                  description: Specifies the type of command to execute.
                  example: "/query"
                request:
                  type: object
                  description: A MongoDB query should be passed here.
      responses:
        '200':
          description: The MongoDB query result
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    description: Response object containing the result
        '400':
          description: A list of errors
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
                    example: ["Invalid id"]
  /api/v1_1/context.php#update:
    post:
      summary: Updates an existing SmartDataContext
      description: Updates the properties of an existing SmartDataContext using the provided ID and request body.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                command:
                  type: string
                  description: The command to update a SmartDataContext, including the ID.
                  example: "/update/88690087-a4f4-4e1d-8c8d-8c67d19ddaed"
                request:
                  type: object
                  description: The object containing the properties to be updated in the SmartDataContext.
                  properties:
                    domain:
                      type: string
                      description: The domain of the SmartDataContext.
                      example: "test"
                    t0:
                      type: integer
                      description: Start time for the SmartDataContext.
                      example: 1000
                    t1:
                      type: integer
                      description: End time for the SmartDataContext.
                      example: 2000
                    content:
                      type: object
                      description: The content to be updated in the SmartDataContext.
                      example: {"meta": "updated"}
                    features:
                      type: object
                      description: Updated features of the SmartDataContext.
                      properties:
                        tags:
                          type: array
                          items:
                            type: string
                          example: ["newtag"]
                    smartDataSources:
                      type: array
                      items:
                        oneOf:
                          - type: string
                          - type: array
                            items:
                              type: integer
                      description: The updated SmartDataSources.
                      example: ["signature", [2, 2, 2, 2]]
                    smartDataUnits:
                      type: array
                      items:
                        type: integer
                      description: The updated SmartDataUnits.
                      example: [20, 22]
              required:
                - command
                - request
      responses:
        '200':
          description: Successfully updated SmartDataContext.
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: object
                    properties:
                      id:
                        type: string
                        example: "88690087-a4f4-4e1d-8c8d-8c67d19ddaed"
                      t0:
                        type: integer
                        example: 1000
                      t1:
                        type: integer
                        example: 2000
                      content:
                        type: object
                        properties:
                          meta:
                            type: string
                            example: "updated"
                      features:
                        type: object
                        properties:
                          tags:
                            type: array
                            items:
                              type: string
                            example: ["newtag"]
                      smartDataSources:
                        type: array
                        items:
                          oneOf:
                            - type: string
                            - type: array
                              items:
                                type: integer
                        example: ["signature", [2, 2, 2, 2]]
                      smartDataUnits:
                        type: array
                        items:
                          type: integer
                        example: [20, 22]
        '400':
          description: Invalid request due to validation errors.
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: string
                    example: ["Invalid command format", "Both t0 and t1 must be set together"]