Cloudmersive · API Governance Rules

Cloudmersive API Rules

Spectral linting rules defining API design standards and conventions for Cloudmersive.

8 Rules error 5 warn 3
View Rules File View on GitHub

Rule Categories

cloudmersive

Rules

error
cloudmersive-info-title
Each Cloudmersive product spec must declare a title.
$.info
warn
cloudmersive-info-description
Each Cloudmersive product spec must declare a description.
$.info
error
cloudmersive-host-or-server
A host (Swagger 2) or server (OpenAPI 3) must be declared.
$
error
cloudmersive-https-only
Cloudmersive APIs must be served over HTTPS.
$
error
cloudmersive-apikey-security
An Apikey security definition/scheme must be declared.
$
error
cloudmersive-operation-id
Every operation must declare a unique operationId.
$.paths[*][get,post,put,patch,delete]
warn
cloudmersive-operation-tags
Every operation must declare at least one tag.
$.paths[*][get,post,put,patch,delete]
warn
cloudmersive-operation-summary
Every operation must include a short summary.
$.paths[*][get,post,put,patch,delete]

Spectral Ruleset

Raw ↑
extends:
  - spectral:oas

# Spectral linting rules applicable to all Cloudmersive product OpenAPI/Swagger
# specs (Virus Scan, Convert, OCR, Image, NLP, Validate, Security, Spam,
# Phishing, CDR, Fraud, DLP, Speech, Video, Currency, Barcode, Config,
# Data Integration).
rules:
  cloudmersive-info-title:
    description: Each Cloudmersive product spec must declare a title.
    severity: error
    given: "$.info"
    then:
      field: title
      function: truthy

  cloudmersive-info-description:
    description: Each Cloudmersive product spec must declare a description.
    severity: warn
    given: "$.info"
    then:
      field: description
      function: truthy

  cloudmersive-host-or-server:
    description: A host (Swagger 2) or server (OpenAPI 3) must be declared.
    severity: error
    given: "$"
    then:
      function: schema
      functionOptions:
        schema:
          anyOf:
            - required: ["host"]
            - required: ["servers"]

  cloudmersive-https-only:
    description: Cloudmersive APIs must be served over HTTPS.
    severity: error
    given: "$"
    then:
      function: schema
      functionOptions:
        schema:
          anyOf:
            - properties:
                schemes:
                  type: array
                  contains:
                    const: "https"
              required: ["schemes"]
            - properties:
                servers:
                  type: array
                  items:
                    properties:
                      url:
                        type: string
                        pattern: "^https://"
              required: ["servers"]

  cloudmersive-apikey-security:
    description: An Apikey security definition/scheme must be declared.
    severity: error
    given: "$"
    then:
      function: schema
      functionOptions:
        schema:
          anyOf:
            - required: ["securityDefinitions"]
            - properties:
                components:
                  required: ["securitySchemes"]
              required: ["components"]

  cloudmersive-operation-id:
    description: Every operation must declare a unique operationId.
    severity: error
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: operationId
      function: truthy

  cloudmersive-operation-tags:
    description: Every operation must declare at least one tag.
    severity: warn
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: tags
      function: schema
      functionOptions:
        schema:
          type: array
          minItems: 1

  cloudmersive-operation-summary:
    description: Every operation must include a short summary.
    severity: warn
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: summary
      function: truthy