Ciena Blue Planet Open API

Ciena Blue Planet provides open APIs for multi-layer SDN network management and automation. The platform supports TM Forum Open APIs, MEF Lifecycle Service Orchestration (LSO) APIs including Legato and Sonata, and integrates with ONAP policy frameworks. APIs enable network topology management, circuit provisioning, performance monitoring, and network operations automation for telecom carriers.

OpenAPI Specification

ciena-blue-planet-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Ciena Blue Planet Open API
  description: >-
    Ciena Blue Planet provides open APIs for multi-layer SDN network management and automation.
    The platform supports TM Forum Open APIs, MEF Lifecycle Service Orchestration (LSO) APIs
    including Legato and Sonata, and integrates with ONAP policy frameworks. APIs enable network
    topology management, circuit provisioning, performance monitoring, and network operations
    automation for telecom carriers.
  version: 1.0.0
  contact:
    name: Blue Planet Support
    url: https://www.blueplanet.com/support
  license:
    name: Ciena Terms and Conditions
    url: https://www.ciena.com/customers/terms-and-conditions
servers:
  - url: https://api.blueplanet.com/bpocore/market/api/v1
    description: Blue Planet Production API
security:
  - oauth2: []
tags:
  - name: Alarms
    description: Network alarm and fault management
  - name: Performance
    description: Performance monitoring and metrics
  - name: Topology
    description: Network topology resources including nodes and links
paths:
  /topology/nodes:
    get:
      operationId: listTopologyNodes
      summary: List network topology nodes
      description: >-
        Returns all network topology nodes (network elements) visible to the authenticated user.
        Supports filtering by node type, administrative state, and operational state.
      tags:
        - Topology
      parameters:
        - name: type
          in: query
          description: Filter by node type
          schema:
            type: string
            enum: [optical, packet, hybrid]
        - name: adminState
          in: query
          description: Filter by administrative state
          schema:
            type: string
            enum: [UNLOCKED, LOCKED, SHUTTING_DOWN]
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
            maximum: 1000
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
      responses:
        '200':
          description: List of topology nodes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeList'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /topology/nodes/{nodeId}:
    get:
      operationId: getTopologyNode
      summary: Get a specific network topology node
      description: Returns detailed information for a single network topology node including its ports and interfaces.
      tags:
        - Topology
      parameters:
        - name: nodeId
          in: path
          required: true
          schema:
            type: string
          description: Unique node identifier
      responses:
        '200':
          description: Network topology node details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Node'
        '404':
          $ref: '#/components/responses/NotFound'
  /topology/links:
    get:
      operationId: listTopologyLinks
      summary: List network topology links
      description: Returns all network topology links (connections between nodes) visible to the authenticated user.
      tags:
        - Topology
      parameters:
        - name: nodeId
          in: query
          description: Filter links connected to a specific node
          schema:
            type: string
        - name: type
          in: query
          description: Filter by link type
          schema:
            type: string
            enum: [physical, logical, virtual]
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
      responses:
        '200':
          description: List of topology links
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkList'
  /services:
    get:
      operationId: listServices
      summary: List provisioned network services
      description: Returns all network services provisioned on the Blue Planet platform.
      tags: []
      parameters:
        - name: state
          in: query
          description: Filter by service state
          schema:
            type: string
            enum: [ACTIVE, DEGRADED, FAILED, PROVISIONING, DELETING]
        - name: serviceType
          in: query
          description: Filter by service type
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
            default: 50
      responses:
        '200':
          description: List of network services
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceList'
    post:
      operationId: createService
      summary: Create a new network service
      description: >-
        Provisions a new network service. Supports optical circuits, Ethernet services,
        and virtual network services. Service creation is asynchronous; monitor the returned
        service ID for completion status.
      tags: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceRequest'
      responses:
        '201':
          description: Service creation accepted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '400':
          $ref: '#/components/responses/BadRequest'
        '409':
          description: Service with same name already exists
  /services/{serviceId}:
    get:
      operationId: getService
      summary: Get network service details
      description: Returns the full specification and current status of a provisioned network service.
      tags: []
      parameters:
        - name: serviceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Network service details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Service'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteService
      summary: Delete a network service
      description: Deprovisions and removes a network service. This operation is asynchronous.
      tags: []
      parameters:
        - name: serviceId
          in: path
          required: true
          schema:
            type: string
      responses:
        '202':
          description: Service deletion accepted
        '404':
          $ref: '#/components/responses/NotFound'
  /performance/metrics:
    get:
      operationId: getPerformanceMetrics
      summary: Retrieve network performance metrics
      description: >-
        Returns performance monitoring data for network elements or services including
        OTN PM counters, Ethernet PM data, and optical performance parameters.
      tags:
        - Performance
      parameters:
        - name: resourceId
          in: query
          required: true
          description: ID of the network resource to query metrics for
          schema:
            type: string
        - name: metricType
          in: query
          description: Type of performance metric
          schema:
            type: string
            enum: [interface, optical, otn, ethernet]
        - name: granularity
          in: query
          description: Data granularity period
          schema:
            type: string
            enum: [15min, 24hour]
            default: 15min
        - name: startTime
          in: query
          description: Start of query window (ISO 8601)
          schema:
            type: string
            format: date-time
        - name: endTime
          in: query
          description: End of query window (ISO 8601)
          schema:
            type: string
            format: date-time
      responses:
        '200':
          description: Performance metric data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PerformanceMetrics'
  /alarms:
    get:
      operationId: listAlarms
      summary: List network alarms
      description: Returns active network alarms, faults, and conditions across all managed network elements.
      tags:
        - Alarms
      parameters:
        - name: severity
          in: query
          description: Filter by alarm severity
          schema:
            type: string
            enum: [CRITICAL, MAJOR, MINOR, WARNING, NOT_ALARMED]
        - name: resourceId
          in: query
          description: Filter alarms for a specific resource
          schema:
            type: string
        - name: limit
          in: query
          schema:
            type: integer
            default: 100
      responses:
        '200':
          description: List of network alarms
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AlarmList'
components:
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authentication for Blue Planet API
      flows:
        clientCredentials:
          tokenUrl: https://api.blueplanet.com/oauth/token
          scopes:
            topology:read: Read network topology
            services:read: Read network services
            services:write: Create and modify network services
            performance:read: Read performance metrics
            alarms:read: Read network alarms
  schemas:
    NodeList:
      type: object
      properties:
        total:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/NodeSummary'
    NodeSummary:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        adminState:
          type: string
        operState:
          type: string
        vendorName:
          type: string
        ipAddress:
          type: string
    Node:
      allOf:
        - $ref: '#/components/schemas/NodeSummary'
        - type: object
          properties:
            softwareVersion:
              type: string
            location:
              $ref: '#/components/schemas/Location'
            ports:
              type: array
              items:
                $ref: '#/components/schemas/Port'
            managedBy:
              type: string
    Location:
      type: object
      properties:
        siteName:
          type: string
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        address:
          type: string
    Port:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        adminState:
          type: string
        operState:
          type: string
        speed:
          type: string
    LinkList:
      type: object
      properties:
        total:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/Link'
    Link:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        type:
          type: string
        aEndNode:
          type: string
        aEndPort:
          type: string
        zEndNode:
          type: string
        zEndPort:
          type: string
        adminState:
          type: string
        operState:
          type: string
        capacity:
          type: string
    ServiceList:
      type: object
      properties:
        total:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/ServiceSummary'
    ServiceSummary:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        serviceType:
          type: string
        state:
          type: string
        createdAt:
          type: string
          format: date-time
    Service:
      allOf:
        - $ref: '#/components/schemas/ServiceSummary'
        - type: object
          properties:
            description:
              type: string
            endpoints:
              type: array
              items:
                $ref: '#/components/schemas/ServiceEndpoint'
            bandwidth:
              type: string
            protectionType:
              type: string
              enum: [UNPROTECTED, PROTECTED_1PLUS1, REROUTABLE]
            provisionedAt:
              type: string
              format: date-time
            updatedAt:
              type: string
              format: date-time
    ServiceEndpoint:
      type: object
      properties:
        nodeId:
          type: string
        portId:
          type: string
        vlanId:
          type: integer
        direction:
          type: string
          enum: [A_END, Z_END]
    ServiceRequest:
      type: object
      required: [name, serviceType, endpoints]
      properties:
        name:
          type: string
        serviceType:
          type: string
          enum: [EPL, EVPL, OTN_ODU, WDM_OCH]
        description:
          type: string
        bandwidth:
          type: string
          description: Requested bandwidth (e.g., 10G, 100G)
        endpoints:
          type: array
          minItems: 2
          maxItems: 2
          items:
            $ref: '#/components/schemas/ServiceEndpoint'
        protectionType:
          type: string
          enum: [UNPROTECTED, PROTECTED_1PLUS1, REROUTABLE]
    PerformanceMetrics:
      type: object
      properties:
        resourceId:
          type: string
        metricType:
          type: string
        granularity:
          type: string
        dataPoints:
          type: array
          items:
            type: object
            properties:
              timestamp:
                type: string
                format: date-time
              values:
                type: object
                additionalProperties:
                  type: number
    AlarmList:
      type: object
      properties:
        total:
          type: integer
        items:
          type: array
          items:
            $ref: '#/components/schemas/Alarm'
    Alarm:
      type: object
      properties:
        id:
          type: string
        resourceId:
          type: string
        resourceType:
          type: string
        severity:
          type: string
          enum: [CRITICAL, MAJOR, MINOR, WARNING, NOT_ALARMED]
        alarmType:
          type: string
        description:
          type: string
        raisedAt:
          type: string
          format: date-time
        clearedAt:
          type: string
          format: date-time
        acknowledged:
          type: boolean
    Error:
      type: object
      properties:
        code:
          type: string
        message:
          type: string
        details:
          type: string
  responses:
    Unauthorized:
      description: Authentication required
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'