Synnex · API Governance Rules

Synnex API Rules

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

11 Rules error 4 warn 6 info 1
Authorship not recorded No authorship marker is recorded for this file. It is not presented as the provider's; it was most likely written by an API Evangelist pass before outputs were stamped.
View Rules File View on GitHub

Rule Categories

account list oauth operation path paths response

Rules

error
operation-operationId
All operations must have an operationId.
$.paths[*][get,post,put,patch,delete]
error
operation-summary
All operations must have a summary.
$.paths[*][get,post,put,patch,delete]
warn
operation-summary-title-case
Operation summaries must use Title Case.
$.paths[*][get,post,put,patch,delete].summary
warn
operation-tags
All operations must have at least one tag.
$.paths[*][get,post,put,patch,delete]
warn
operation-description
All operations should have a description.
$.paths[*][get,post,put,patch,delete]
error
path-param-documented
All path parameters must have a description.
$.paths[*][*].parameters[?(@.in == 'path')]
info
account-id-required
Resource endpoints should include accountId path parameter.
$.paths['/accounts/{accountId}/*']
warn
list-pagination
List operations (GET returning arrays) should support pagination parameters.
$.paths[*].get.parameters
error
oauth-security
All operations must use OAuth 2.0 bearer token authentication.
$.components.securitySchemes
warn
response-body-schema
Successful responses must include a response body schema.
$.paths[*][*].responses['200','201'].content['application/json']
warn
paths-kebab-case
Path segments must use kebab-case.
$.paths

Spectral Ruleset

Raw ↑
extends: spectral:oas
rules:
  # Require operationId on all operations
  operation-operationId:
    description: All operations must have an operationId.
    severity: error
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: operationId
      function: truthy

  # Require summary on all operations
  operation-summary:
    description: All operations must have a summary.
    severity: error
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: summary
      function: truthy

  # Enforce Title Case on operation summaries
  operation-summary-title-case:
    description: Operation summaries must use Title Case.
    severity: warn
    given: "$.paths[*][get,post,put,patch,delete].summary"
    then:
      function: pattern
      functionOptions:
        match: "^[A-Z][a-zA-Z0-9 ]*$"

  # Require tags on all operations
  operation-tags:
    description: All operations must have at least one tag.
    severity: warn
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: tags
      function: truthy

  # Require description
  operation-description:
    description: All operations should have a description.
    severity: warn
    given: "$.paths[*][get,post,put,patch,delete]"
    then:
      field: description
      function: truthy

  # Path parameters must be documented
  path-param-documented:
    description: All path parameters must have a description.
    severity: error
    given: "$.paths[*][*].parameters[?(@.in == 'path')]"
    then:
      field: description
      function: truthy

  # Account ID path parameter must exist for resource endpoints
  account-id-required:
    description: Resource endpoints should include accountId path parameter.
    severity: info
    given: "$.paths['/accounts/{accountId}/*']"
    then:
      function: truthy

  # Require pagination on list operations
  list-pagination:
    description: List operations (GET returning arrays) should support pagination parameters.
    severity: warn
    given: "$.paths[*].get.parameters"
    then:
      function: truthy

  # OAuth2 bearer auth required
  oauth-security:
    description: All operations must use OAuth 2.0 bearer token authentication.
    severity: error
    given: "$.components.securitySchemes"
    then:
      field: bearerAuth
      function: truthy

  # Response body for 2xx must have schema
  response-body-schema:
    description: Successful responses must include a response body schema.
    severity: warn
    given: "$.paths[*][*].responses['200','201'].content['application/json']"
    then:
      field: schema
      function: truthy

  # Paths must use kebab-case
  paths-kebab-case:
    description: Path segments must use kebab-case.
    severity: warn
    given: "$.paths"
    then:
      function: pattern
      functionOptions:
        match: "^(/[a-z0-9{}-]+)+$"

Work with this as data

Every ruleset here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for spectral rules

4 MCP tools reach this
  • find_rulesBrowse and filter every ruleset in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This ruleset
curl "https://apis.io/api/v1/rules/synnex-rules"
All spectral rules
curl "https://apis.io/api/v1/rules?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.