---
functions: 
  - havePlans
  - haveDocumentation
  - haveStatus
  - haveTermsOfService
  - havePrivacyPolicy
  - haveRateLimits
  - havePagination
  - haveAuthentication
  - haveGettingStarted
  - haveOpenAPI
  - haveArazzoWorkflow
  - haveAsyncApiKafka
  - haveAsyncApiWebsockets
  - haveAsyncApiMqtt
  - haveMcpServer
  - haveSingerTap
  - haveAirbyte
  - haveTalend
  - haveTalendJSONSchema
  - haveJdbc
  - haveOdbc
  - haveGraphQl
  - haveGrpc
  - haveOpenRpc
  - haveTrpc  
rules:
  apis-json-specification-version-error:
    description: Specification Version ~ docs.html
    message: There MUST BE a specification version.
    tags:
      - Change
    severity: error
    given: $
    then:
      field: specificationVersion
      function: truthy
  apis-json-specification-version-info:
    description: Specification Version ~ docs.html
    message: There is a specification version.
    tags:
      - Change    
    severity: info
    given: $
    then:
      field: specificationVersion
      function: falsy
  apis-json-specification-aid-warn:
    description: Unique AID ~ docs.html
    message: There COULD BE a unique aid.
    tags:
      - Reliability
      - Reuse 
      - Discovery     
    severity: warn
    given: $
    then:
      field: aid
      function: truthy
  apis-json-specification-aid-info:
    description: Unique AID ~ docs.html
    message: There is a unique aid.
    tags:
      - Reliability
      - Reuse 
      - Discovery      
    severity: info
    given: $
    then:
      field: aid
      function: falsy
  apis-json-name-error:
    description: Name ~ docs.html
    message: This resource MUST HAVE a name.
    tags:
      - Discovery
      - Metadata       
    given: $
    severity: info
    then:
      field: name
      function: truthy
  apis-json-name-info:
    description: Name ~ docs.html
    message: This resource has a name.
    tags:
      - Discovery
      - Metadata      
    given: $
    severity: info
    then:
      field: name
      function: falsy
  apis-json-specification-type-error:
    description: Resource Type ~ docs.html
    message: This MUST HAVE a type.
    tags:
      - Metadata      
    severity: error
    given: $
    then:
      - field: type
        function: truthy
  apis-json-specification-type-info:
    description: Resource Type ~ docs.html
    message: This has a type.
    tags:
      - Metadata      
    severity: info
    given: $
    then:
      - field: type
        function: falsy
  apis-json-specification-type-value-error:
    description: Resource Type Value ~ docs.html
    message:  You COULD use the type of resource.
    tags:
      - Metadata      
    severity: error
    given: $
    then:
      function: pattern
      functionOptions:
        match: \b(resource|Resource)\b
  apis-json-specification-type-value-info:
    description: Resource Type Value ~ docs.html
    message: This is of type resource.
    tags:
      - Metadata      
    severity: info
    given: $
    then:
      function: pattern
      functionOptions:
        notMatch: \b(resource|Resource)\b
  apis-json-description-error:
    description: Resource Description ~ docs.html
    message: There MUST BE a description.
    tags:
      - Metadata  
      - Discovery    
    given: $
    severity: error
    then:
      field: description
      function: truthy
  apis-json-description-info:
    description: Resource Description ~ docs.html
    message: There is a description.
    tags:
      - Metadata  
      - Discovery     
    given: $
    severity: info
    then:
      field: description
      function: falsy
  apis-json-image-error:
    description: Image ~ docs.html
    message: There COULD BE an image.
    tags:
      - Metadata  
      - Discovery     
    given: $
    severity: warn
    then:
      field: image
      function: truthy
  apis-json-image-info:
    description: Image ~ docs.html
    message: There is an image.
    tags:
      - Metadata  
      - Discovery     
    given: $
    severity: info
    then:
      field: image
      function: falsy
  apis-json-created-error:
    description: Created Date ~ docs.html
    message: There MUST BE a created date.
    tags:
      - Metadata  
      - Change     
    given: $
    severity: error
    then:
      field: created
      function: truthy
  apis-json-created-info:
    description: Created Date ~ docs.html
    message: There is a created date.
    tags:
      - Metadata  
      - Change      
    given: $
    severity: info
    then:
      field: created
      function: falsy
  apis-json-modified-error:
    description: Modified Date ~ docs.html
    message: There MUST BE a modified date.
    tags:
      - Metadata  
      - Change      
    given: $
    severity: error
    then:
      field: modified
      function: truthy
  apis-json-modified-info:
    description: Modified Date ~ docs.html
    message: There is a modified date.
    tags:
      - Metadata  
      - Change      
    given: $
    severity: info
    then:
      field: modified
      function: falsy
  apis-json-maintainers-error:
    description: Maintainer ~ docs.html
    message: There MUST BE a maintainer.
    tags:
      - Metadata  
      - Support      
    given: $
    severity: error
    then:
      field: maintainers
      function: truthy
  apis-json-maintainers-info:
    description: Maintainer ~ docs.html
    message: There is a maintainer.
    tags:
      - Metadata  
      - Support     
    given: $
    severity: info
    then:
      field: maintainers
      function: falsy
  apis-json-maintainers-fn-error:
    description: Maintainer FN ~ docs.html
    message: There MUST BE a FN property for maintainers.
    tags:
      - Metadata  
      - Support     
    given: $.maintainers.*
    severity: error
    then:
      field: FN
      function: truthy
  apis-json-maintainers-fn-info:
    description: Maintainer FN ~ docs.html
    message: There is a FN property for maintainers.
    tags:
      - Metadata  
      - Support     
    given: $.maintainers.*
    severity: info
    then:
      field: FN
      function: falsy
  apis-json-maintainers-email-error:
    description: Maintainer Email ~ docs.html
    message: There MUST BE a email property for maintainers.
    tags:
      - Metadata  
      - Support     
    given: $.maintainers.*
    severity: error
    then:
      field: email
      function: truthy
  apis-json-maintainers-email-info:
    description: Maintainer Email ~ docs.html
    message: There is a email property for maintainers.
    tags:
      - Metadata  
      - Support     
    given: $.maintainers.*
    severity: info
    then:
      field: email
      function: falsy
  apis-json-tags-error:
    description: Tags ~ docs.html
    message: There MUST BE tags.
    tags:
      - Metadata  
      - Discovery  
    given: $
    severity: error
    then:
      field: tags
      function: truthy
  apis-json-tags-info:
    description: Tags ~ docs.html
    message: There are tags.
    tags:
      - Metadata  
      - Discovery      
    given: $
    severity: info
    then:
      field: tags
      function: falsy
  apis-json-tags-upper-case-error:
    description: Tags Casing ~ docs.html
    message: First letter of each word in tags need to be upper case.
    tags:
      - Metadata  
      - Discovery      
    severity: error
    given: $.tags.*
    then:
      function: pattern
      functionOptions:
        match: "[A-Z]\\w*"
  apis-json-tags-upper-case-info:
    description: Tags CAsing ~ docs.html
    message: First letter of each word in tags are upper case.
    tags:
      - Metadata  
      - Discovery      
    severity: info
    given: $.tags.*
    then:
      function: pattern
      functionOptions:
        notMatch: "[A-Z]\\w*"
  apis-json-url-error:
    description: URL ~ docs.html
    message: There MUST BE a URL.
    tags:
      - Metadata  
      - Discovery      
    given: $
    severity: error
    then:
      field: url
      function: truthy
  apis-json-url-info:
    description: URL ~ docs.html
    message: There is a URL.
    tags:
      - Metadata  
      - Discovery     
    given: $
    severity: info
    then:
      field: url
      function: falsy
  apis-json-apis-aid-error:
    description: API AID ~ docs.html
    message: APIs SHOULD HAVE a unique aid property.
    tags:
      - Reliability
      - Reuse 
      - Discovery    
    given: $.apis.*
    severity: warn
    then:
      field: aid
      function: truthy
  apis-json-apis-aid-info:
    description: API AID ~ docs.html
    message: API have a unique aid property.
    tags:
      - Reliability
      - Reuse 
      - Discovery 
    given: $.apis.*
    severity: info
    then:
      field: aid
      function: falsy

  apis-json-apis-description-error:
    description: API Description ~ docs.html
    message: MUST Haved a Description
    tags:
      - Discovery
      - Metadata 
    given: $.apis.*
    severity: hint
    then:
      field: description
      function: truthy
  apis-json-apis-description-info:
    description: API Description ~ docs.html
    message: Has a Description
    tags:
      - Discovery
      - Metadata 
    given: $.apis.*
    severity: info
    then:
      field: description
      function: falsy
  apis-json-apis-base-url-error:
    description: API Base URL. ~ docs.html
    message: APIs COULD Have a Base URL
    tags:
      - Reliability
      - Metadata     
    given: $.apis.*
    severity: hint
    then:
      field: baseURL
      function: truthy
  apis-json-apis-base-url-info:
    description: Base URL ~ docs.html
    message: APIs Has a Base URL
    tags:
      - Reliability
      - Metadata      
    given: $.apis.*
    severity: info
    then:
      field: baseURL
      function: falsy
  apis-json-apis-human-url-error:
    description: Human URL ~ docs.html
    message: APIs COULD Have a Human URL
    tags:
      - Onboarding
      - Support
      - Metadata     
    given: $.apis.*
    severity: hint
    then:
      field: humanURL
      function: truthy      
  apis-json-apis-human-url-info:
    description: Human URL ~ docs.html
    message: Has a Human URL
    tags:
      - Onboarding
      - Support
      - Metadata       
    given: $.apis.*
    severity: info
    then:
      field: humanURL
      function: falsy
  apis-json-apis-image-hint:
    description: API Image ~ docs.html
    message: Could Have An Image
    tags:
      - Discovery
      - Metadata       
    given: $.apis.*
    severity: hint
    then:
      field: image
      function: falsy
  apis-json-apis-image-info:
    description: API Image ~ docs.html
    message: Has an Image
    tags:
      - Discovery
      - Metadata       
    given: $.apis.*
    severity: info
    then:
      field: image
      function: falsy
  apis-json-apis-error:
    description: APIs ~ docs.html
    message: MUST Have APIs
    tags:
      - Automation    
    given: $
    severity: error
    then:
      field: apis
      function: truthy
  apis-json-apis-info:
    description: APIs ~ docs.html
    message: Has APIs
    tags:
      - Automation    
    given: $
    severity: info
    then:
      field: apis
      function: falsy    
  apis-json-apis-name-error:
    description: API Name ~ docs.html
    message: APIs MUST Have a Name
    tags:
      - Metadata  
      - Discovery    
    given: $.apis.*
    severity: error
    then:
      field: name
      function: truthy        
  apis-json-apis-name-info:
    description: API Name ~ docs.html
    message: Has a Name
    tags:
      - Metadata  
      - Discovery     
    given: $.apis.*
    severity: info
    then:
      field: name
      function: falsy
  apis-json-apis-tags-error:
    description: Tags ~ docs.html
    message: API MUST Have a Tags Object
    tags:
      - Metadata  
      - Discovery     
    given: $.apis.*
    severity: info
    then:
      field: tags
      function: truthy
  apis-json-apis-tags-info:
    description: Tags ~ docs.html
    message: API Have a Tags Object
    tags:
      - Metadata  
      - Discovery     
    given: $.apis.*
    severity: info
    then:
      field: tags
      function: falsy
  apis-json-apis-tags-upper-case-error:
    description: Tags Casing ~ docs.html
    message: API Tags MUST Be Upper Case
    tags:
      - Metadata  
      - Discovery     
    severity: error
    given: $.apis.*.tags.*
    then:
      function: pattern
      functionOptions:
        match: "[A-Z]\\w*"
  apis-json-apis-tags-upper-case-info:
    description: Tags Casing ~ docs.html
    message: API Tags are Upper Case
    tags:
      - Metadata  
      - Discovery     
    severity: info
    given: $.apis.*.tags.*
    then:
      function: pattern
      functionOptions:
        notMatch: "[A-Z]\\w*"
  apis-json-apis-properties-error:
    description: API Properties ~ docs.html
    message: Resources MUST HAVE properties.
    tags:
      - Metadata     
    severity: error
    given: $.apis.*
    then:
      field: properties
      function: truthy
  apis-json-apis-properties-info:
    description: API Properties ~ docs.html
    message: Resource has properties.
    tags:
      - Metadata        
    severity: info
    given: $.apis.*
    then:
      field: properties
      function: falsy
  apis-json-apis-properties-type-error:
    description: API Property Type ~ docs.html
    message: Resources MUST HAVE properties type.
    tags:
      - Metadata        
    severity: error
    given: $.apis.*.properties.*
    then:
      field: type
      function: truthy
  apis-json-apis-properties-type-info:
    description: API Property Type ~ docs.html
    message: Resource has property type.
    tags:
      - Metadata        
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: falsy

  # ADAPTERS
  apis-json-apis-properties-type-openapi-hint:
    description: OpenAPI Type Value ~ docs.html
    message: You can use the type of OpenAPI.
    tags:
      - HTTP 
      - Adapters       
      - APIs
    severity: hint
    given: $.apis.*
    then:
      function: haveOpenAPI        

  apis-json-apis-properties-type-openapi-info:
    description: OpenAPI Type Value ~ docs.html
    message: This is of the type OpenAPI.
    tags:
      - HTTP 
      - Adapters       
      - APIs      
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(OpenAPI)\b

  apis-json-apis-properties-type-arazzo-workflow-hint:
    description: Arazzo Workflow Type Value ~ docs.html
    message:  You COULD use the type of ArazzoWorkflow.
    tags:
      - HTTP 
      - Adapters       
      - Workflows     
    severity: hint
    given: $.apis.*
    then:
      function: haveArazzoWorkflow     

  apis-json-apis-properties-type-arazzo-workflow-info:
    description: Arazzo Workflow Type Value ~ docs.html
    message: This is of the type ArazzoWorkflow.
    tags:
      - HTTP 
      - Adapters       
      - Workflows         
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(ArazzoWorkflow)\b

  apis-json-apis-properties-type-asyncapi-kafka-hint:
    description: AsyncAPI Kafka Type Value ~ docs.html
    message:  You COULD use the type of AsyncApiKafka.
    tags:
      - Adapters       
      - Event-Driven    
    severity: hint
    given: $.apis.*
    then:
      function: haveAsyncApiKafka    

  apis-json-apis-properties-type-asyncapi-kafka-info:
    description: AsyncAPI Kafka Type Value ~ docs.html
    message: This is of the type AsyncApiKafka.
    tags:
      - Adapters       
      - Event-Driven         
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(AsyncApiKafka)\b

  apis-json-apis-properties-type-asyncapi-websockets-hint:
    description: AsyncAPI Websockets Type Value ~ docs.html
    message:  You COULD use the type of AsyncApiWebsockets.
    tags:
      - Adapters   
      - TCP    
      - Event-Driven    
    severity: hint
    given: $.apis.*
    then:
      function: haveAsyncApiWebsockets 

  apis-json-apis-properties-type-asyncapi-websockets-info:
    description: AsyncAPI Websockets Type Value ~ docs.html
    message: This is of the type AsyncApiWebsockets.
    tags:
      - Adapters  
      - TCP     
      - Event-Driven         
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(AsyncApiWebsockets)\b    

  apis-json-apis-properties-type-asyncapi-mqtt-hint:
    description: AsyncAPI MQTT Type Value ~ docs.html
    message:  You COULD use the type of AsyncApiMqtt.
    tags:
      - Adapters   
      - MQTT      
    severity: hint
    given: $.apis.*
    then:
      function: haveAsyncApiMqtt

  apis-json-apis-properties-type-asyncapi-mqtt-info:
    description: AsyncAPI MQTT Type Value ~ docs.html
    message: This is of the type AsyncApiMqtt.
    tags:
      - Adapters   
      - MQTT             
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(AsyncApiMqtt)\b    

  apis-json-apis-properties-type-mcp-server-hint:
    description: MCP Server Type Value ~ docs.html
    message:  You COULD use the type of McpServer.
    tags:
      - Adapters   
      - MCP   
      - AI   
    severity: hint
    given: $.apis.*
    then:
      function: haveMcpServer

  apis-json-apis-properties-type-mcp-server-info:
    description: MCP Server Type Value ~ docs.html
    message: This is of the type McpServer.
    tags:
      - Adapters   
      - MCP
      - AI             
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(McpServer)\b     

  apis-json-apis-properties-type-singer-tap-hint:
    description: Singer Tap Type Value ~ docs.html
    message:  You COULD use the type of SingerTap.
    tags:
      - Adapters   
      - Singer   
    severity: hint
    given: $.apis.*
    then:
      function: haveSingerTap

  apis-json-apis-properties-type-singer-tap-info:
    description:  Singer Tap Type Value ~ docs.html
    message: This is of the type SingerTap.
    tags:
      - Adapters   
      - Singer             
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(SingerTap)\b 

  apis-json-apis-properties-type-airbyte-hint:
    description: Airbyte Type Value ~ docs.html
    message:  You COULD use the type of Airbyte.
    tags:
      - Adapters   
      - Airbyte   
    severity: hint
    given: $.apis.*
    then:
      function: haveAirbyte

  apis-json-apis-properties-type-airbyte-info:
    description:  Airbyte Type Value ~ docs.html
    message: This is of the type Airbyte.
    tags:
      - Adapters   
      - Airbyte             
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(Airbyte)\b                                  

  apis-json-apis-properties-type-talend-hint:
    description: Talend Type Value ~ docs.html
    message:  You COULD use the type of Talend.
    tags:
      - Adapters   
      - Talend   
    severity: hint
    given: $.apis.*
    then:
      function: haveTalend

  apis-json-apis-properties-type-talend-info:
    description:  Talend Type Value ~ docs.html
    message: This is of the type Talend.
    tags:
      - Adapters   
      - Talend             
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(Talend)\b 

  apis-json-apis-properties-type-talend-json-schema-hint:
    description: Talend JSON Schema Type Value ~ docs.html
    message:  You COULD use the type of TalendJSONSchema.
    tags:
      - Adapters   
      - Talend  
      - JSON Schema  
    severity: hint
    given: $.apis.*
    then:
      function: haveTalendJSONSchema

  apis-json-apis-properties-type-talend-json-schema-info:
    description:  Talend JSON Schema Type Value ~ docs.html
    message: This is of the type TalendJSONSchema.
    tags:
      - Adapters   
      - Talend  
      - JSON Schema           
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(TalendJSONSchema)\b  

  apis-json-apis-properties-type-jdbc-hint:
    description: JDBC Type Value ~ docs.html
    message:  You COULD use the type of Jdbc.
    tags:
      - Adapters   
      - Databases
      - JDBC  
    severity: hint
    given: $.apis.*
    then:
      function: haveJdbc

  apis-json-apis-properties-type-jdbc-info:
    description:  JDBC Type Value ~ docs.html
    message: This is of the type Jdbc.
    tags:
      - Adapters   
      - Databases
      - JDBC           
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(Jdbc)\b    

  apis-json-apis-properties-type-odbc-hint:
    description: ODBC Type Value ~ docs.html
    message:  You COULD use the type of Odbc.
    tags:
      - Adapters   
      - Databases
      - ODBC  
    severity: hint
    given: $.apis.*
    then:
      function: haveOdbc

  apis-json-apis-properties-type-odbc-info:
    description:  ODBC Type Value ~ docs.html
    message: This is of the type Odbc.
    tags:
      - Adapters   
      - Databases
      - ODBC           
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(Odbc)\b  

  apis-json-apis-properties-type-graphql-hint:
    description: GraphQL Type Value ~ docs.html
    message:  You COULD use the type of GraphQl.
    tags:
      - Adapters   
      - GraphQL 
    severity: hint
    given: $.apis.*
    then:
      function: haveGraphQl

  apis-json-apis-properties-type-graphql-info:
    description:  GraphQL Type Value ~ docs.html
    message: This is of the type GraphQl.
    tags:
      - Adapters   
      - GraphQL          
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(GraphQl)\b            

  apis-json-apis-properties-type-grpc-hint:
    description: gRPC Type Value ~ docs.html
    message:  You COULD use the type of Grpc.
    tags:
      - Adapters   
      - gRPC 
    severity: hint
    given: $.apis.*
    then:
      function: haveGrpc

  apis-json-apis-properties-type-grpc-info:
    description:  gRPC Type Value ~ docs.html
    message: This is of the type Grpc.
    tags:
      - Adapters   
      - gRPC          
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(Grpc)\b  

  apis-json-apis-properties-type-openrpc-hint:
    description: OpenRPC Type Value ~ docs.html
    message:  You COULD use the type of OpenRpc.
    tags:
      - Adapters   
      - OpenRPC 
    severity: hint
    given: $.apis.*
    then:
      function: haveOpenRpc

  apis-json-apis-properties-type-openrpc-info:
    description:  OpenRPC Type Value ~ docs.html
    message: This is of the type OpenRpc.
    tags:
      - Adapters   
      - OpenRPC          
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(OpenRpc)\b     

  apis-json-apis-properties-type-trpc-hint:
    description: tRPC Type Value ~ docs.html
    message:  You COULD use the type of Trpc.
    tags:
      - Adapters   
      - tRPC 
    severity: hint
    given: $.apis.*
    then:
      function: haveTrpc

  apis-json-apis-properties-type-trpc-info:
    description:  tRPC Type Value ~ docs.html
    message: This is of the type Trpc.
    tags:
      - Adapters   
      - tRPC          
    severity: info
    given: $.apis.*.properties.*
    then:
      field: type
      function: pattern
      functionOptions:
        notMatch: \b(Trpc)\b                                             

  # DATA

  apis-json-apis-properties-data-error:
    description: API Property Data ~ docs.html
    message: Resources MUST HAVE properties data.
    tags:
      - Metadata    
      - Machine-Readable    
    severity: error
    given: $.apis.*.properties.*
    then:
      field: data
      function: truthy
  apis-json-apis-properties-data-info:
    description: API Property Type ~ docs.html
    message: Resource has property type.
    tags:
      - Metadata    
      - Machine-Readable     
    severity: info
    given: $.apis.*.properties.*
    then:
      field: data
      function: falsy  

  ## DOCUMENTATION
  apis-json-common-documentation-info:
    description: Common Documentation ~ docs.html
    message: Has API Documentation
    tags: 
      - Onboarding       
    severity: info
    given: $.common.*
    then:
      - field: type
        function: pattern
        functionOptions:
          notMatch: \b(Documentation)\b                        

  apis-json-common-documentation-error:
    description: Have Documentation ~ docs.html
    message: There COULD be documentation.
    tags: 
      - Onboarding     
    severity: hint
    given: $.common
    then:
      function: haveDocumentation                 

  ## PLANS
  apis-json-common-plans-info:
    description: Common Plans ~ docs.html
    message: Has API Plans
    tags: 
      - Business     
    severity: info
    given: $.common.*
    then:
      - field: type
        function: pattern
        functionOptions:
          notMatch: \b(Plans)\b      

  apis-json-common-plans-error:
    description: Have Plans ~ docs.html
    message: There COULD be plans & pricing.
    tags: 
      - Business         
    severity: hint
    given: $.common
    then:
      function: havePlans
