Juniper Networks Blueprints API

Data center blueprint management

OpenAPI Specification

juniper-blueprints-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Juniper Networks Juniper Apstra Allowlists and Blocklists Blueprints API
  description: Juniper Apstra is an intent-based networking platform for data center automation. The Apstra API provides RESTful access to manage blueprints, design elements, devices, connectivity templates, virtual networks, and intent-based analytics. It supports multivendor environments and enables closed-loop automation from design through deployment and operations.
  version: 4.2.0
  contact:
    name: Juniper Support
    url: https://www.juniper.net/us/en/products/network-automation/apstra.html
    email: support@juniper.net
  license:
    name: Proprietary
    url: https://www.juniper.net/us/en/legal-notices.html
  termsOfService: https://www.juniper.net/us/en/legal-notices.html
servers:
- url: https://{apstra_server}/api
  description: Apstra Server
  variables:
    apstra_server:
      default: apstra.example.com
      description: Hostname or IP of the Apstra server
security:
- authToken: []
tags:
- name: Blueprints
  description: Data center blueprint management
paths:
  /blueprints:
    get:
      operationId: listBlueprints
      summary: Juniper Networks List all blueprints
      description: Returns a list of all data center blueprints.
      tags:
      - Blueprints
      responses:
        '200':
          description: List of blueprints
          content:
            application/json:
              schema:
                type: object
                properties:
                  items:
                    type: array
                    items:
                      $ref: '#/components/schemas/Blueprint'
    post:
      operationId: createBlueprint
      summary: Juniper Networks Create a blueprint
      description: Creates a new data center blueprint from a template.
      tags:
      - Blueprints
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - label
              - design
              properties:
                label:
                  type: string
                design:
                  type: string
                  enum:
                  - two_stage_l3clos
                  - freeform
                  description: Blueprint design type
                init_type:
                  type: string
                  enum:
                  - template_reference
                  description: Initialization method
                template_id:
                  type: string
                  format: uuid
                  description: Reference to a design template
      responses:
        '201':
          description: Blueprint created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
        '400':
          $ref: '#/components/responses/BadRequest'
  /blueprints/{blueprint_id}:
    get:
      operationId: getBlueprint
      summary: Juniper Networks Get blueprint details
      description: Returns details for a specific blueprint including its status.
      tags:
      - Blueprints
      parameters:
      - $ref: '#/components/parameters/BlueprintId'
      responses:
        '200':
          description: Blueprint details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Blueprint'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateBlueprint
      summary: Juniper Networks Update a blueprint
      description: Updates an existing blueprint.
      tags:
      - Blueprints
      parameters:
      - $ref: '#/components/parameters/BlueprintId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                label:
                  type: string
      responses:
        '200':
          description: Blueprint updated
    delete:
      operationId: deleteBlueprint
      summary: Juniper Networks Delete a blueprint
      description: Deletes a data center blueprint.
      tags:
      - Blueprints
      parameters:
      - $ref: '#/components/parameters/BlueprintId'
      responses:
        '204':
          description: Blueprint deleted
  /blueprints/{blueprint_id}/deploy:
    put:
      operationId: deployBlueprint
      summary: Juniper Networks Deploy blueprint
      description: Commits and deploys the current blueprint configuration to the managed devices. This pushes the rendered configuration to the network.
      tags:
      - Blueprints
      parameters:
      - $ref: '#/components/parameters/BlueprintId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                version:
                  type: integer
                  description: Blueprint version to deploy
                description:
                  type: string
                  description: Deployment description
      responses:
        '200':
          description: Deployment initiated
        '422':
          description: Blueprint has anomalies and cannot be deployed
  /blueprints/{blueprint_id}/nodes:
    get:
      operationId: listBlueprintNodes
      summary: Juniper Networks List blueprint nodes
      description: Returns nodes in the blueprint graph, including systems, interfaces, and logical elements.
      tags:
      - Blueprints
      parameters:
      - $ref: '#/components/parameters/BlueprintId'
      - name: node_type
        in: query
        description: Filter by node type
        schema:
          type: string
          enum:
          - system
          - interface
          - virtual_network
          - security_zone
          - redundancy_group
      responses:
        '200':
          description: Blueprint nodes
          content:
            application/json:
              schema:
                type: object
                properties:
                  nodes:
                    type: object
                    additionalProperties:
                      $ref: '#/components/schemas/BlueprintNode'
components:
  parameters:
    BlueprintId:
      name: blueprint_id
      in: path
      required: true
      description: Blueprint unique identifier
      schema:
        type: string
        format: uuid
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    Blueprint:
      type: object
      properties:
        id:
          type: string
          format: uuid
        label:
          type: string
        design:
          type: string
          enum:
          - two_stage_l3clos
          - freeform
        status:
          type: string
          description: Current status of the blueprint
        build_errors_count:
          type: integer
        build_warnings_count:
          type: integer
        anomaly_count:
          type: integer
        version:
          type: integer
        created_at:
          type: string
          format: date-time
        last_modified_at:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        errors:
          type: object
          description: Error details
    BlueprintNode:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        label:
          type: string
        role:
          type: string
        system_id:
          type: string
        system_type:
          type: string
        deploy_mode:
          type: string
  securitySchemes:
    authToken:
      type: apiKey
      in: header
      name: AuthToken
      description: Authentication token obtained from the /aaa/login endpoint. Include as AuthToken header in all requests.
externalDocs:
  description: Apstra API Documentation
  url: https://www.juniper.net/documentation/us/en/software/apstra/