Synopsys Cloud OpenLink API

The Synopsys Cloud OpenLink API enables semiconductor vendors to interoperate with Synopsys Cloud for managing product entitlements and license distribution. The API supports API key and OAuth2 authentication with JSON payloads over HTTPS. It exposes vendor entitlement endpoints and license request endpoints for both synchronous and asynchronous license delivery.

OpenAPI Specification

synopsys-cloud-openlink-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Synopsys Cloud OpenLink API
  description: >-
    The Synopsys Cloud OpenLink API enables semiconductor vendors to interoperate
    with Synopsys Cloud for managing product entitlements and license distribution.
    Vendors register endpoints during onboarding and respond to license queries
    from Synopsys Cloud. The API supports both synchronous and asynchronous
    license file delivery.
  version: '1.0'
  contact:
    url: https://www.synopsys.com/cloud/openlink/api.html
servers:
  - url: https://api.synopsys.com/openlink/v1
    description: Synopsys Cloud OpenLink API
security:
  - apiKeyAuth: []
  - oauth2: []
tags:
  - name: Entitlements
    description: Vendor entitlement queries from Synopsys Cloud.
  - name: Licenses
    description: License file generation and delivery.
paths:
  /entitlements:
    post:
      operationId: getEntitlements
      summary: Get Vendor Entitlements
      description: >-
        Called by Synopsys Cloud to retrieve available licenses for a specific
        customer. This endpoint is registered by the vendor during onboarding.
        Returns an array of entitlements with associated license details.
      tags:
        - Entitlements
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EntitlementRequest'
      responses:
        '200':
          description: Entitlements returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntitlementResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
  /licenses:
    post:
      operationId: generateLicense
      summary: Generate License File
      description: >-
        Called by Synopsys Cloud to generate and retrieve a license file for a
        customer. This endpoint is dynamically provided via the entitlement
        response. Supports synchronous delivery (within 20 seconds) and
        asynchronous delivery with polling.
      tags:
        - Licenses
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LicenseRequest'
      responses:
        '200':
          description: License generated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponse'
        '202':
          description: Asynchronous license generation initiated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AsyncLicenseResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /licenses/{licenseId}:
    get:
      operationId: downloadLicense
      summary: Download License File
      description: >-
        Retrieves a previously generated license file by its identifier.
        Used for asynchronous license polling scenarios.
      tags:
        - Licenses
      parameters:
        - name: licenseId
          in: path
          required: true
          schema:
            type: string
          description: License file identifier.
      responses:
        '200':
          description: License file content returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LicenseResponse'
        '202':
          description: License not yet ready
        '404':
          description: License not found
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key-based authentication
    oauth2:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://api.synopsys.com/oauth/token
          scopes:
            openlink: Access OpenLink API
  schemas:
    EntitlementRequest:
      type: object
      required:
        - customerId
        - productId
      properties:
        customerId:
          type: string
          description: Synopsys Cloud customer identifier.
        productId:
          type: string
          description: Product/tool identifier for which licenses are requested.
        requestId:
          type: string
          description: Unique request identifier for traceability.
    EntitlementResponse:
      type: object
      properties:
        customerId:
          type: string
        entitlements:
          type: array
          items:
            $ref: '#/components/schemas/Entitlement'
    Entitlement:
      type: object
      properties:
        entitlementId:
          type: string
        productId:
          type: string
        productName:
          type: string
        quantity:
          type: integer
          description: Number of available license seats.
        expiresAt:
          type: string
          format: date-time
        licenseRequestApi:
          type: string
          description: Dynamic URL for license generation for this entitlement.
    LicenseRequest:
      type: object
      required:
        - entitlementId
        - customerId
      properties:
        entitlementId:
          type: string
        customerId:
          type: string
        hostId:
          type: string
          description: Machine or host identifier for license binding.
        quantity:
          type: integer
    LicenseResponse:
      type: object
      properties:
        licenseId:
          type: string
        downloadType:
          type: string
          enum: [Sync, Async]
        licenseData:
          type: string
          description: Base64-encoded license file content (synchronous delivery).
        expiresAt:
          type: string
          format: date-time
    AsyncLicenseResponse:
      type: object
      properties:
        licenseId:
          type: string
        downloadType:
          type: string
          enum: [Async]
        pollStartDateTime:
          type: string
          format: date-time
          description: When to begin polling for the license.
        pollIntervalSec:
          type: integer
          description: Suggested polling interval in seconds.
        downloadApi:
          type: object
          properties:
            url:
              type: string
              description: URL to poll for license retrieval.
    ErrorResponse:
      type: object
      properties:
        code:
          type: string
          description: Vendor-specific error code.
        message:
          type: string
          description: Customer-facing error description.
        statusCode:
          type: integer
        tid:
          type: string
          description: Optional trace identifier.