$schema: http://support.riverbed.com/apis/service_def/2.2
description: NPM APIs for application classification
id: http://support.riverbed.com/apis/npm.classification/3.2
name: npm.classification
provider: riverbed
resources:
  application:
    additionalProperties: false
    description: This resource deals with general application
    links:
      delete:
        description: Deletes the general application that matches the ID provided
        method: DELETE
      get:
        description: Reads and returns a general application for the ID provided
        method: GET
        response:
          $ref: '#/resources/application'
      self:
        path: $/applications/items/{id}
      set:
        description: Updates the general application that matches the ID provided
        method: PUT
        request:
          $ref: '#/resources/application'
        response:
          $ref: '#/resources/application'
    properties:
      created:
        description: Time (seconds from epoch) at which the rule was first created
        type: string
      definitions:
        properties:
          items:
            items:
              $ref: '#/types/app_definition_3_0'
            type: array
        type: object
      desc:
        description: Describes the General Application Definition
        type: string
      enabled:
        description: Status of this General Application Definition - enabled/disabled
        type: boolean
      id:
        description: Unique ID generated by the backend for this General Application
          Definition
        tags:
          cpptype: uint32
        type: number
      include_dpi_tags:
        description: Indicates whether to track auto-recognized applications
        type: boolean
      last_modified:
        description: Time (seconds from epoch) at which the rule was last modified
        type: string
      last_modified_username:
        description: The last user to modify this rule
        type: string
      name:
        description: Unique case sensitive name of General Application Definition
        type: string
      priority:
        description: Application priority used in case the traffic can be associated
          only with a single application, lower the value the higher the priority
        tags:
          cpptype: uint32
        type: integer
      traffic_match_mode:
        description: mode to configure traffic match
        enum:
        - HIGH
        - MEDIUM
        - LOW
        type: string
    required:
    - name
    type: object
  applications:
    additionalProperties: false
    description: This resource deals with collection of general applications
    links:
      bulk_create:
        description: Creates a collection of general applications, assigns an unique
          ID to each and adds these to the general applications. A collection of general
          applications with their IDs is returned
        method: POST
        path: $/applications/bulk_create
        request:
          $ref: '#/resources/applications'
        response:
          $ref: '#/resources/applications'
      bulk_delete:
        description: Deletes all general applications or the general applications
          that match the IDs provided
        method: POST
        path: $/applications/bulk_delete
        request:
          $ref: '#/types/bulk_deleter'
        response:
          $ref: '#/types/bulk_deleter'
      create:
        description: Creates a new general application and adds it to the collection
          of general applications
        method: POST
        request:
          $ref: '#/resources/application'
        response:
          $ref: '#/resources/application'
      get:
        description: Reads and returns all general applications
        method: GET
        response:
          $ref: '#/resources/applications'
      merge:
        description: Merges the existing general applications with the provided general
          applications using the name as key
        method: POST
        path: $/applications/merge
        request:
          $ref: '#/resources/applications'
        response:
          $ref: '#/resources/applications'
      self:
        path: $/applications
    properties:
      items:
        items:
          $ref: '#/resources/application'
        type: array
    type: object
  hostgroup:
    description: This resource deals with Host Group
    links:
      delete:
        description: Deletes the Host Group matching the ID from the configuration
        method: DELETE
      get:
        description: Returns the Host Group from the configuration that matches the
          ID
        method: GET
        response:
          $ref: '#/resources/hostgroup'
      self:
        path: $/hostgroups/items/{id}
      set:
        description: Sets the Host Group matching the ID
        method: PUT
        request:
          $ref: '#/resources/hostgroup'
        response:
          $ref: '#/resources/hostgroup'
    properties:
      created:
        description: Time (seconds from epoch) at which the Host Group was first created
        type: string
      desc:
        description: Description of Host Group
        type: string
      enabled:
        description: Status of the Host Group - enabled/disabled
        type: boolean
      hosts:
        $ref: '#/types/host_list'
      id:
        description: Unique ID assigned by the backend
        readOnly: true
        tags:
          cpptype: uint32
        type: number
      in_speed:
        description: Inbound Utilization
        tags:
          cpptype: uint32
        type: number
      in_speed_unit:
        $ref: '#/types/speed_unit'
      last_modified:
        description: Time (seconds from epoch) at which the Host Group was last modified
        type: string
      last_modified_username:
        description: The last user to modify this rule
        type: string
      member_hostgroups:
        $ref: '#/types/id_list'
      member_hostgroups_names:
        description: List of Host Group names
        items:
          type: string
        type: array
      name:
        description: Unique name of Host Group
        type: string
      out_speed:
        description: Outbound Utilization
        tags:
          cpptype: uint32
        type: number
      out_speed_unit:
        $ref: '#/types/speed_unit'
    tags:
      inherits: '3.1'
    type: object
  hostgroups:
    additionalProperties: true
    description: This resource deals with Host Groups
    links:
      bulk_create:
        description: Creates multiple Host Groups, assigns an unique ID to each and
          adds these to the Host Group configuration. If any individual Host Group
          creation fails, the complete request is failed. A collection Host Group
          with all newly created Host Groups is returned
        method: POST
        path: $/hostgroups/bulk_create
        request:
          $ref: '#/resources/hostgroups'
        response:
          $ref: '#/resources/hostgroups'
      bulk_delete:
        description: Deletes all Host Groups or Host Groups with IDs provided
        method: POST
        path: $/hostgroups/bulk_delete
        request:
          $ref: '#/types/bulk_deleter'
        response:
          $ref: '#/types/bulk_deleter'
      bulk_hierarchy:
        description: Creates parent-child hierarchy between Host Groups in bulk mode
        method: POST
        path: $/hostgroups/bulk_hierarchy
        request:
          $ref: '#/resources/hostgroups'
        response:
          $ref: '#/resources/hostgroups'
      create:
        description: Creates a new Host Group, assigns it an ID, adds it to the hostgroup
          configuration and returns the new Host Group with it's ID set
        method: POST
        request:
          $ref: '#/resources/hostgroup'
        response:
          $ref: '#/resources/hostgroup'
      get:
        description: Reads the Host Group configuration and returns it as a Host Groups
          collection
        method: GET
        response:
          $ref: '#/resources/hostgroups'
      merge:
        description: Merges the existing Host Groups with the provided Host Groups
          using the name as key
        method: POST
        path: $/hostgroups/merge
        request:
          $ref: '#/resources/hostgroups'
        response:
          $ref: '#/resources/hostgroups'
      self:
        path: $/hostgroups
    properties:
      items:
        items:
          $ref: '#/resources/hostgroup'
        type: array
    tags:
      inherits: '3.1'
    type: object
  url:
    additionalProperties: false
    description: This resource deals with url application
    links:
      delete:
        description: Deletes the url application that matches the ID provided
        method: DELETE
      get:
        description: Reads and return the url application that matches the ID provided
        method: GET
        response:
          $ref: '#/resources/url'
      self:
        path: $/urls/items/{id}
      set:
        description: Updates the url application that matches the ID provided
        method: PUT
        request:
          $ref: '#/resources/url'
        response:
          $ref: '#/resources/url'
    properties:
      created:
        description: Time (seconds from epoch) at which the rule was first created
        type: string
      desc:
        type: string
      enabled:
        type: boolean
      id:
        tags:
          cpptype: uint32
        type: number
      last_modified:
        description: Time (seconds from epoch) at which the rule was last modified
        type: string
      last_modified_username:
        description: The last user to modify this rule
        type: string
      name:
        type: string
      preferred:
        type: boolean
      urls:
        items:
          type: string
        type: array
    required:
    - name
    - urls
    tags:
      inherits: '3.1'
    type: object
  urls:
    additionalProperties: false
    description: This resource deals with collection of url applications
    links:
      bulk_create:
        description: Creates a collection of url applications assigning an ID to each
          url application. Appends the new collection to the url applications. Returns
          the new collection of url applications with their corresponding ID
        method: POST
        path: $/urls/bulk_create
        request:
          $ref: '#/resources/urls'
        response:
          $ref: '#/resources/urls'
      bulk_delete:
        description: Deletes all url applications or url applications matching the
          IDs provided
        method: POST
        path: $/urls/bulk_delete
        request:
          $ref: '#/types/bulk_deleter'
        response:
          $ref: '#/types/bulk_deleter'
      create:
        description: Creates a new url application and adds it to the url application.
          Returns the url application with its new ID populated
        method: POST
        request:
          $ref: '#/resources/url'
        response:
          $ref: '#/resources/url'
      get:
        description: Reads and returns the complete collection of url applications
        method: GET
        response:
          $ref: '#/resources/urls'
      merge:
        description: Merges the existing url applications with the provided url applications
          using the name as key. Key is case insensitive
        method: POST
        path: $/urls/merge
        request:
          $ref: '#/resources/urls'
        response:
          $ref: '#/resources/urls'
      self:
        path: $/urls
    properties:
      items:
        items:
          $ref: '#/resources/url'
        type: array
    tags:
      inherits: '3.1'
    type: object
title: NPM Classification APIs
types:
  app_definition_3_0:
    properties:
      dpi_ids:
        items:
          tags:
            cpptype: uint16
          type: integer
        type: array
      hostgroup_ids:
        $ref: '#/types/id_list'
      hosts:
        $ref: '#/types/host_list'
      transport_rules:
        description: List of port ranges
        items:
          additionalProperties: false
          description: IP Protocol and transport ports
          properties:
            ip_protocol:
              description: IP protocol identifier. Full list can be retrieved with
                /ip_protocols resource
              type: string
            ports:
              description: comma seperated list of port ranges. e.g. x, p-q, y-z
              type: string
          required:
          - ip_protocol
          tags:
            hide_from_external_docs: true
          type: object
        type: array
    type: object
  application_type_enum:
    description: Different types of applications
    enum:
    - SYSTEM
    - URL
    - APPLICATION
    type: string
  bulk_deleter:
    description: Object to trigger bulk deletion of given resource
    properties:
      delete_all:
        description: Delete all objects of the given resource
        type: boolean
      delete_ids:
        $ref: '#/types/id_list'
    type: object
  host_list:
    description: List of hosts(e.g. x.x.x.x, x.x.x.x/prefix), host-ranges(e.g. x.x.x.x-y.y.y.y,
      x.x.x.x/prefix-y.y.y.y/prefix)
    items:
      type: string
    type: array
  id_list:
    description: List of IDs
    items:
      tags:
        cpptype: uint32
      type: number
    type: array
  speed_unit:
    description: Unit of Network Traffic Speed
    enum:
    - kbps
    - Mbps
    - Gbps
    type: string
version: '3.2'
