Nortech Asset API

This API includes endpoints that allow you to interact with `Assets` metadata.

OpenAPI Specification

nortech-asset-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: Nortech Asset API
  version: 1.0.0
  contact:
    name: Nortech AI
    url: https://nortech.ai
    email: support@nortech.ai
  summary: HTTP API for Nortech AI. Contact Nortech AI support for access.
  description: "This API is structured between three main API groups:\n* **Metadata API** - To navigate and get information about your assets.\n* **Signal Data API** - To query all signal data produced from your assets.\n* **Deriver API** - To create and manage derivers that produce computed signals.\n\n# Pagination\nAll `List` Endpoints support cursor pagination. In this pagination model, the client receives a `next.token` field in the response, \nwhich can be used as a `nextToken` query parameter to fetch the next page of results. \nThe `size` parameter defines the maximum number of results to return, the `sortBy` and `sortOrder` parameters define the field to sort by and its order."
  x-logo:
    url: https://branding-api.apps.nor.tech/logo-light
    backgroundColor: '#fafafa'
    altText: Nortech AI
    href: https://nortech.ai
servers:
- url: https://api.apps.nor.tech
  description: HTTP API for Nortech AI
security:
- Bearer Token: []
tags:
- name: Asset
  description: This API includes endpoints that allow you to interact with `Assets` metadata.
paths:
  /api/v1/workspaces/{workspace}/assets:
    get:
      operationId: v1.metadata.asset.listWorkspaceAssets
      summary: List Workspace Assets
      description: List all `Assets` in a `Workspace` by its `ID` or `Name`.
      tags:
      - Asset
      parameters:
      - name: workspace
        in: path
        required: true
        schema:
          anyOf:
          - type: integer
            minimum: 1
            maximum: 9007199254740991
            description: '`ID` of the `Workspace`'
            examples:
            - 10000
          - type: string
            description: '`Name` of the `Workspace`'
            examples:
            - Workspace 1
      - name: size
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 100
        allowEmptyValue: true
        allowReserved: true
      - name: nextToken
        in: query
        schema:
          type: string
        allowEmptyValue: true
        allowReserved: true
      - name: sortBy
        in: query
        schema:
          enum:
          - id
          - name
          - type
          - description
          type: string
        allowEmptyValue: true
        allowReserved: true
      - name: sortOrder
        in: query
        schema:
          anyOf:
          - const: asc
          - const: desc
          default: asc
        allowEmptyValue: true
        allowReserved: true
      responses:
        '200':
          description: '`Asset` list'
          content:
            application/json:
              schema:
                type: object
                properties:
                  size:
                    type: integer
                    minimum: 0
                    maximum: 9007199254740991
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          minimum: 1
                          maximum: 9007199254740991
                          description: '`ID` of the `Asset`'
                          examples:
                          - 10000
                        name:
                          type: string
                          description: '`Name` of the `Asset`'
                          examples:
                          - Asset 1
                        type:
                          type: string
                          description: '`Type` of the `Asset`'
                          examples:
                          - Vessel
                        description:
                          anyOf:
                          - type: string
                          - type: 'null'
                          description: '`Description` of the `Asset`'
                          examples:
                          - Asset description
                      required:
                      - id
                      - name
                      - type
                      - description
                      additionalProperties: false
                  next:
                    type: object
                    properties:
                      token:
                        type: string
                      href:
                        type: string
                        format: uri
                        examples:
                        - https://api.apps.nor.tech/api/v1/workspaces/{workspace}/assets?nextToken=abc
                    required:
                    - token
                    - href
                required:
                - size
                - data
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Validation Error
                  details:
                    $schema: https://json-schema.org/draft/2020-12/schema
                    type: string
                required:
                - status
                - details
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Unauthorized
                required:
                - status
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                description: Workspace not found
                properties:
                  status:
                    const: Workspace not found
                required:
                - status
  /api/v1/workspaces/{workspace}/assets/{asset}:
    get:
      operationId: v1.metadata.asset.getWorkspaceAsset
      summary: Get Workspace Asset
      description: Get an `Asset` in a `Workspace` by their `Names`.
      tags:
      - Asset
      parameters:
      - name: workspace
        in: path
        required: true
        schema:
          type: string
          description: '`Name` of the `Workspace`'
          examples:
          - Workspace 1
      - name: asset
        in: path
        required: true
        schema:
          type: string
          description: '`Name` of the `Asset`'
          examples:
          - Asset 1
      responses:
        '200':
          description: '`Asset` details'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    minimum: 1
                    maximum: 9007199254740991
                    description: '`ID` of the `Asset`'
                    examples:
                    - 10000
                  name:
                    type: string
                    description: '`Name` of the `Asset`'
                    examples:
                    - Asset 1
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Creation Date` of the `Asset`'
                  updatedAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Update Date` of the `Asset`'
                  type:
                    type: string
                    description: '`Type` of the `Asset`'
                    examples:
                    - Vessel
                  description:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: '`Description` of the `Asset`'
                    examples:
                    - Asset description
                  workspace:
                    type: object
                    properties:
                      id:
                        type: integer
                        minimum: 1
                        maximum: 9007199254740991
                        description: '`ID` of the `Workspace`'
                        examples:
                        - 10000
                      name:
                        type: string
                        description: '`Name` of the `Workspace`'
                        examples:
                        - Workspace 1
                    required:
                    - id
                    - name
                required:
                - id
                - name
                - createdAt
                - updatedAt
                - type
                - description
                - workspace
                additionalProperties: false
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Validation Error
                  details:
                    $schema: https://json-schema.org/draft/2020-12/schema
                    type: string
                required:
                - status
                - details
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Unauthorized
                required:
                - status
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  description: Workspace not found
                  properties:
                    status:
                      const: Workspace not found
                  required:
                  - status
                - type: object
                  description: Asset not found
                  properties:
                    status:
                      const: Asset not found
                  required:
                  - status
  /api/v1/assets/{asset}:
    get:
      operationId: v1.metadata.asset.getAsset
      summary: Get Asset
      description: Get an `Asset` by its `ID`.
      tags:
      - Asset
      parameters:
      - name: asset
        in: path
        required: true
        schema:
          type: integer
          minimum: 1
          maximum: 9007199254740991
          description: '`ID` of the `Asset`'
          examples:
          - 10000
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    minimum: 1
                    maximum: 9007199254740991
                    description: '`ID` of the `Asset`'
                    examples:
                    - 10000
                  name:
                    type: string
                    description: '`Name` of the `Asset`'
                    examples:
                    - Asset 1
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Creation Date` of the `Asset`'
                  updatedAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Update Date` of the `Asset`'
                  type:
                    type: string
                    description: '`Type` of the `Asset`'
                    examples:
                    - Vessel
                  description:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: '`Description` of the `Asset`'
                    examples:
                    - Asset description
                  workspace:
                    type: object
                    properties:
                      id:
                        type: integer
                        minimum: 1
                        maximum: 9007199254740991
                        description: '`ID` of the `Workspace`'
                        examples:
                        - 10000
                      name:
                        type: string
                        description: '`Name` of the `Workspace`'
                        examples:
                        - Workspace 1
                    required:
                    - id
                    - name
                required:
                - id
                - name
                - createdAt
                - updatedAt
                - type
                - description
                - workspace
                additionalProperties: false
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Validation Error
                  details:
                    $schema: https://json-schema.org/draft/2020-12/schema
                    type: string
                required:
                - status
                - details
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Unauthorized
                required:
                - status
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                description: Asset not found
                properties:
                  status:
                    const: Asset not found
                required:
                - status
    put:
      operationId: v1.metadata.asset.updateAsset
      summary: Update Asset
      description: Update an `Asset` by its `ID` or `Name` **(Requires editor permissions)**
      tags:
      - Asset
      parameters:
      - name: asset
        in: path
        required: true
        schema:
          anyOf:
          - type: integer
            minimum: 1
            maximum: 9007199254740991
            description: '`ID` of the `Asset`'
            examples:
            - 10000
          - type: string
            description: '`Name` of the `Asset`'
            examples:
            - Asset 1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                asset:
                  type: string
                  description: '`Name` of the `Asset`'
                  examples:
                  - Asset 1
                type:
                  type: string
                  examples:
                  - Vessel
                  default: Default
                description:
                  anyOf:
                  - type: string
                  - type: 'null'
                  description: '`Description` of the `Asset`'
                  examples:
                  - Asset description
              required:
              - asset
      responses:
        '200':
          description: '`Asset` updated'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    minimum: 1
                    maximum: 9007199254740991
                    description: '`ID` of the `Asset`'
                    examples:
                    - 10000
                  name:
                    type: string
                    description: '`Name` of the `Asset`'
                    examples:
                    - Asset 1
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Creation Date` of the `Asset`'
                  updatedAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Update Date` of the `Asset`'
                  type:
                    type: string
                    description: '`Type` of the `Asset`'
                    examples:
                    - Vessel
                  description:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: '`Description` of the `Asset`'
                    examples:
                    - Asset description
                  workspace:
                    type: object
                    properties:
                      id:
                        type: integer
                        minimum: 1
                        maximum: 9007199254740991
                        description: '`ID` of the `Workspace`'
                        examples:
                        - 10000
                      name:
                        type: string
                        description: '`Name` of the `Workspace`'
                        examples:
                        - Workspace 1
                    required:
                    - id
                    - name
                required:
                - id
                - name
                - createdAt
                - updatedAt
                - type
                - description
                - workspace
                additionalProperties: false
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Validation Error
                  details:
                    $schema: https://json-schema.org/draft/2020-12/schema
                    type: string
                required:
                - status
                - details
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Unauthorized
                required:
                - status
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                description: Forbidden
                properties:
                  status:
                    const: Forbidden
                required:
                - status
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                description: Asset not found
                properties:
                  status:
                    const: Asset not found
                required:
                - status
  /api/v1/assets:
    post:
      operationId: v1.metadata.asset.createAsset
      summary: Create Asset
      description: Create a new `Asset` **(Requires editor permissions)**
      tags:
      - Asset
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                workspace:
                  type: string
                  description: '`Name` of the `Workspace`'
                  examples:
                  - Workspace 1
                asset:
                  type: string
                  description: '`Name` of the `Asset`'
                  examples:
                  - Asset 1
                type:
                  type: string
                  examples:
                  - Vessel
                  default: Default
                description:
                  anyOf:
                  - type: string
                  - type: 'null'
                  description: '`Description` of the `Asset`'
                  examples:
                  - Asset description
              required:
              - workspace
              - asset
      responses:
        '201':
          description: '`Asset` created'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    minimum: 1
                    maximum: 9007199254740991
                    description: '`ID` of the `Asset`'
                    examples:
                    - 10000
                  name:
                    type: string
                    description: '`Name` of the `Asset`'
                    examples:
                    - Asset 1
                  createdAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Creation Date` of the `Asset`'
                  updatedAt:
                    type: string
                    format: date-time
                    x-native-type: date
                    description: '`Update Date` of the `Asset`'
                  type:
                    type: string
                    description: '`Type` of the `Asset`'
                    examples:
                    - Vessel
                  description:
                    anyOf:
                    - type: string
                    - type: 'null'
                    description: '`Description` of the `Asset`'
                    examples:
                    - Asset description
                  workspace:
                    type: object
                    properties:
                      id:
                        type: integer
                        minimum: 1
                        maximum: 9007199254740991
                        description: '`ID` of the `Workspace`'
                        examples:
                        - 10000
                      name:
                        type: string
                        description: '`Name` of the `Workspace`'
                        examples:
                        - Workspace 1
                    required:
                    - id
                    - name
                required:
                - id
                - name
                - createdAt
                - updatedAt
                - type
                - description
                - workspace
                additionalProperties: false
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Validation Error
                  details:
                    $schema: https://json-schema.org/draft/2020-12/schema
                    type: string
                required:
                - status
                - details
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    const: Unauthorized
                required:
                - status
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                description: Forbidden
                properties:
                  status:
                    const: Forbidden
                required:
                - status
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                oneOf:
                - type: object
                  description: Workspace not found
                  properties:
                    status:
                      const: Workspace not found
                  required:
                  - status
                - type: object
                  description: Asset not found
                  properties:
                    status:
                      const: Asset not found
                  required:
                  - status
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                type: object
                description: Asset already exists
                properties:
                  status:
                    const: Asset already exists
                required:
                - status
components:
  securitySchemes:
    Bearer Token:
      type: http
      scheme: bearer
      bearerFormat: JWT
x-tagGroups:
- name: Metadata API v1
  tags:
  - Workspace
  - Asset
  - Division
  - Unit
  - Signal
- name: Signal Data API v1
  tags:
  - Historical Data
  - Live Data
  - MQTT Live Data
  - Import Data
- name: Deriver API v1
  tags:
  - Deriver