UNPKG

saasify-to-openapi

Version:

Converts Saasify deployments to OpenAPI specs.

1,324 lines 50.3 kB
{
  "enabled": true,
  "published": true,
  "description": "Modern web accessibility audits. 💪",
  "keywords": [],
  "user": "5d5b477eb5fab1199c927a36",
  "team": "5dbef994fb93dc256540b0ce",
  "project": {
    "keywords": [],
    "description": "Modern web accessibility audits. 💪",
    "_text": "ta11y modern web accessibility audits install installs executable globally note rest api programming language nodejs wrapper easiest started usage notes cli defaults running crawling content extraction locally headless puppeteer instance disable run remotely passing remote option recommended ta11y/core detailed descriptions configuration options affect auditing behavior key free tier subject rate limits 60 timeout larger site processing nonpublicly accessible website localhost perform bypass limiting signing apikey flag ta11y_api_key environment variable visit ready sign examples runs audit test suites url specific results suite crawl extract target full force process operate pages local publicly wcag2aa license mit saasify",
    "_id": "dev/ta11y",
    "name": "ta11y",
    "alias": "ta11y",
    "user": "5d5b477eb5fab1199c927a36",
    "team": "5dbef994fb93dc256540b0ce",
    "publishedVersions": [
      {
        "deployment": "dev/ta11y@fcff4942",
        "version": "0.1.0"
      },
      {
        "deployment": "dev/ta11y@1d34abc6",
        "version": "0.1.1"
      },
      {
        "deployment": "dev/ta11y@7f2f9b33",
        "version": "0.1.2"
      },
      {
        "deployment": "dev/ta11y@79e14896",
        "version": "0.1.3"
      },
      {
        "deployment": "dev/ta11y@e31b30fa",
        "version": "0.1.4"
      },
      {
        "deployment": "dev/ta11y@ee2f03b3",
        "version": "0.1.5"
      },
      {
        "deployment": "dev/ta11y@fec48dd3",
        "version": "0.1.6"
      },
      {
        "deployment": "dev/ta11y@1f0ddc3d",
        "version": "0.1.7"
      },
      {
        "deployment": "dev/ta11y@05064871",
        "version": "0.1.8"
      },
      {
        "deployment": "dev/ta11y@4dcc0bbb",
        "version": "0.1.9"
      },
      {
        "deployment": "dev/ta11y@6a06e484",
        "version": "0.1.10"
      },
      {
        "deployment": "dev/ta11y@f6cb503b",
        "version": "0.1.11"
      },
      {
        "deployment": "dev/ta11y@5179e534",
        "version": "0.1.12"
      },
      {
        "deployment": "dev/ta11y@1cf42eba",
        "version": "0.1.13"
      },
      {
        "deployment": "dev/ta11y@4039ef95",
        "version": "0.1.14"
      },
      {
        "deployment": "dev/ta11y@c5c47a32",
        "version": "0.1.15"
      }
    ],
    "createdAt": "2020-01-09T21:02:38.115Z",
    "updatedAt": "2020-01-12T16:03:37.853Z",
    "__v": 16,
    "lastPublishedDeployment": "dev/ta11y@c5c47a32",
    "lastPublishedVersion": "0.1.15",
    "saasUrl": "https://dev_ta11y.saasify.sh",
    "aliasUrl": "https://ta11y.saasify.sh",
    "id": "dev/ta11y"
  },
  "version": "0.1.15",
  "services": [
    {
      "name": "audit",
      "timeout": 0,
      "adaptor": "typescript",
      "httpMethod": "get",
      "immutable": false,
      "examples": [
        {
          "inputContentType": "application/json",
          "outputContentType": "application/json; charset=utf-8",
          "name": "example.com",
          "description": "Single page audit",
          "input": {
            "url": "https://example.com",
            "suites": ["wcag2aa"]
          },
          "output": {
            "summary": {
              "suites": ["wcag2aa"],
              "errors": 0,
              "warnings": 0,
              "infos": 0,
              "numPages": 1,
              "numPagesPass": 1,
              "numPagesFail": 0
            },
            "results": {
              "https://example.com": {
                "url": "https://example.com",
                "depth": 0,
                "rules": [],
                "summary": {
                  "errors": 0,
                  "warnings": 0,
                  "infos": 0,
                  "pass": true
                }
              }
            }
          }
        },
        {
          "inputContentType": "application/json",
          "outputContentType": "application/json; charset=utf-8",
          "name": "example.com",
          "input": {
            "url": "https://example.com"
          },
          "output": {
            "summary": {
              "errors": 4,
              "warnings": 0,
              "infos": 2,
              "numPages": 1,
              "numPagesPass": 0,
              "numPagesFail": 1
            },
            "results": {
              "https://example.com": {
                "url": "https://example.com",
                "depth": 0,
                "rules": [
                  {
                    "id": "html",
                    "description": "A document must not include both a “meta” element with an “http-equiv” attribute whose value is “content-type”, and a “meta” element with a “charset” attribute.",
                    "context": "f-8\">\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n    <",
                    "type": "error",
                    "tags": ["html"],
                    "firstColumn": 5,
                    "lastLine": 5,
                    "lastColumn": 71
                  },
                  {
                    "id": "html",
                    "description": " The “type” attribute for the “style” element is not needed and should be omitted.",
                    "context": "e=1\">\n    <style type=\"text/css\">\n    b",
                    "type": "info",
                    "tags": ["html"],
                    "firstColumn": 5,
                    "lastLine": 7,
                    "lastColumn": 27
                  },
                  {
                    "id": "html",
                    "description": "Consider adding a “lang” attribute to the “html” start tag to declare the language of this document.",
                    "context": "TYPE html><html><head>",
                    "type": "info",
                    "tags": ["html"],
                    "firstColumn": 16,
                    "lastLine": 1,
                    "lastColumn": 21
                  },
                  {
                    "id": "html-has-lang",
                    "type": "error",
                    "description": "Ensures every HTML document has a lang attribute",
                    "impact": "serious",
                    "tags": ["cat.language", "wcag2a", "wcag311"],
                    "help": "<html> element must have a lang attribute",
                    "helpUrl": "https://dequeuniversity.com/rules/ta11y/3.4/html-has-lang?application=Ta11y%20API"
                  },
                  {
                    "id": "landmark-one-main",
                    "type": "error",
                    "description": "Ensures the document has only one main landmark and each iframe in the page has at most one main landmark",
                    "impact": "moderate",
                    "tags": ["cat.semantics", "best-practice"],
                    "help": "Document must have one main landmark",
                    "helpUrl": "https://dequeuniversity.com/rules/ta11y/3.4/landmark-one-main?application=Ta11y%20API"
                  },
                  {
                    "id": "region",
                    "type": "error",
                    "description": "Ensures all page content is contained by landmarks",
                    "impact": "moderate",
                    "tags": ["cat.keyboard", "best-practice"],
                    "help": "All page content must be contained by landmarks",
                    "helpUrl": "https://dequeuniversity.com/rules/ta11y/3.4/region?application=Ta11y%20API"
                  }
                ],
                "summary": {
                  "errors": 4,
                  "warnings": 0,
                  "infos": 2,
                  "pass": false
                }
              }
            }
          }
        }
      ],
      "config": {},
      "headers": {},
      "src": "src/audit.ts",
      "path": "/audit",
      "definition": {
        "config": {
          "defaultExport": false,
          "language": "typescript",
          "namedExport": "audit"
        },
        "params": {
          "http": false,
          "context": false,
          "order": [
            "url",
            "html",
            "suites",
            "rules",
            "crawl",
            "maxDepth",
            "maxVisit",
            "sameOrigin",
            "blacklist",
            "whitelist",
            "gotoOptions",
            "viewport",
            "userAgent",
            "emulateDevice"
          ],
          "schema": {
            "type": "object",
            "properties": {
              "url": {
                "description": "URL to process.",
                "type": "string"
              },
              "html": {
                "description": "Raw HTML to process.",
                "type": "string"
              },
              "suites": {
                "description": "Audit suites to run.",
                "type": "array",
                "items": {
                  "enum": [
                    "best-practice",
                    "html",
                    "section508",
                    "wcag2a",
                    "wcag2aa",
                    "wcag2aaa"
                  ],
                  "type": "string"
                }
              },
              "rules": {
                "$ref": "#/definitions/AuditRulesMap"
              },
              "crawl": {
                "description": "Whether or not to crawl additional pages.",
                "type": "boolean",
                "default": false
              },
              "maxDepth": {
                "description": "Maximum crawl depth while crawling.",
                "type": "number",
                "default": 16
              },
              "maxVisit": {
                "description": "Maximum number of pages to visit while crawling.",
                "type": "number"
              },
              "sameOrigin": {
                "description": "Whether or not to only consider crawling links with the same origin as the root URL.",
                "type": "boolean",
                "default": true
              },
              "blacklist": {
                "description": "Optional blacklist of URL [glob patterns](https://github.com/micromatch/micromatch) to ignore.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "whitelist": {
                "description": "Optional whitelist of URL [glob patterns](https://github.com/micromatch/micromatch) to only include.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "gotoOptions": {
                "$ref": "#/definitions/DirectNavigationOptions",
                "description": "Customize the `Page.goto` navigation options."
              },
              "viewport": {
                "$ref": "#/definitions/Viewport",
                "description": "Set the browser window's viewport dimensions and/or resolution."
              },
              "userAgent": {
                "description": "Set the browser's [user-agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent).",
                "type": "string"
              },
              "emulateDevice": {
                "description": "Emulate a specific device type.\n- Use the `name` property from one of the built-in [devices](https://github.com/GoogleChrome/puppeteer/blob/master/lib/DeviceDescriptors.js).\n- Overrides `viewport` and `userAgent`.",
                "type": "string"
              }
            },
            "additionalProperties": false,
            "definitions": {
              "AuditRulesMap": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/definitions/AuditRuleStatus"
                }
              },
              "AuditRuleStatus": {
                "enum": [0, 1, 2],
                "type": "number"
              },
              "DirectNavigationOptions": {
                "description": "Navigation options for `page.goto`.",
                "type": "object",
                "properties": {
                  "referer": {
                    "description": "Referer header value.\nIf provided it will take preference over the referer header value set by\n[page.setExtraHTTPHeaders()](#pagesetextrahttpheadersheaders).",
                    "type": "string"
                  },
                  "waitUntil": {
                    "description": "When to consider navigation succeeded.",
                    "default": "load Navigation is consider when the `load` event is fired.",
                    "anyOf": [
                      {
                        "type": "array",
                        "items": {
                          "enum": [
                            "domcontentloaded",
                            "load",
                            "networkidle0",
                            "networkidle2"
                          ],
                          "type": "string"
                        }
                      },
                      {
                        "enum": [
                          "domcontentloaded",
                          "load",
                          "networkidle0",
                          "networkidle2"
                        ],
                        "type": "string"
                      }
                    ]
                  },
                  "timeout": {
                    "description": "Maximum navigation time in milliseconds, pass 0 to disable timeout.",
                    "default": 30000,
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "Viewport": {
                "type": "object",
                "properties": {
                  "width": {
                    "description": "The page width in pixels.",
                    "type": "number"
                  },
                  "height": {
                    "description": "The page height in pixels.",
                    "type": "number"
                  },
                  "deviceScaleFactor": {
                    "description": "Specify device scale factor (can be thought of as dpr).",
                    "default": 1,
                    "type": "number"
                  },
                  "isMobile": {
                    "description": "Whether the `meta viewport` tag is taken into account.",
                    "default": false,
                    "type": "boolean"
                  },
                  "hasTouch": {
                    "description": "Specifies if viewport supports touch events.",
                    "default": false,
                    "type": "boolean"
                  },
                  "isLandscape": {
                    "description": "Specifies if viewport is in landscape mode.",
                    "default": false,
                    "type": "boolean"
                  }
                },
                "additionalProperties": false,
                "required": ["height", "width"]
              }
            },
            "$schema": "http://json-schema.org/draft-07/schema#"
          }
        },
        "returns": {
          "async": true,
          "http": false,
          "schema": {
            "type": "object",
            "properties": {
              "result": {
                "$ref": "#/definitions/AuditResults"
              }
            },
            "additionalProperties": false,
            "definitions": {
              "AuditResults": {
                "type": "object",
                "properties": {
                  "summary": {
                    "$ref": "#/definitions/AuditResultsSummary"
                  },
                  "results": {
                    "$ref": "#/definitions/AuditResultsPageMap"
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsSummary": {
                "type": "object",
                "properties": {
                  "suites": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "best-practice",
                        "html",
                        "section508",
                        "wcag2a",
                        "wcag2aa",
                        "wcag2aaa"
                      ],
                      "type": "string"
                    }
                  },
                  "errors": {
                    "type": "number"
                  },
                  "warnings": {
                    "type": "number"
                  },
                  "infos": {
                    "type": "number"
                  },
                  "numPages": {
                    "type": "number"
                  },
                  "numPagesPass": {
                    "type": "number"
                  },
                  "numPagesFail": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsPageMap": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/definitions/AuditResultsPage"
                }
              },
              "AuditResultsPage": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "depth": {
                    "type": "number"
                  },
                  "summary": {
                    "$ref": "#/definitions/AuditResultsPageSummary"
                  },
                  "error": {
                    "type": "string"
                  },
                  "rules": {
                    "type": "array",
                    "items": {
                      "$ref": "#/definitions/AuditResultsPageRule"
                    }
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsPageSummary": {
                "type": "object",
                "properties": {
                  "pass": {
                    "type": "boolean"
                  },
                  "errors": {
                    "type": "number"
                  },
                  "warnings": {
                    "type": "number"
                  },
                  "infos": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsPageRule": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "impact": {
                    "type": "string"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "help": {
                    "type": "string"
                  },
                  "helpUrl": {
                    "type": "string"
                  },
                  "context": {
                    "type": "string"
                  },
                  "firstLine": {
                    "type": "number"
                  },
                  "firstColumn": {
                    "type": "number"
                  },
                  "lastLine": {
                    "type": "number"
                  },
                  "lastColumn": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              }
            },
            "$schema": "http://json-schema.org/draft-07/schema#"
          }
        },
        "version": "1.1.0",
        "title": "audit",
        "description": "Runs an accessibility audit against the given URL or raw HTML, optionally crawling the\nsite to discover additional pages and auditing those too.\n\nMust provide either `url` or `html`.\n\nDefaults to running all audit suites."
      },
      "url": "https://ssfy.sh/dev/ta11y@c5c47a32/audit",
      "route": "/dev/ta11y@c5c47a32/audit"
    },
    {
      "name": "auditExtractResults",
      "timeout": 0,
      "adaptor": "typescript",
      "httpMethod": "post",
      "immutable": false,
      "examples": [
        {
          "inputContentType": "application/json",
          "outputContentType": "application/json; charset=utf-8",
          "name": "example.com",
          "input": {
            "extractResults": {
              "results": {
                "https://example.com": {
                  "url": "https://example.com",
                  "depth": 0,
                  "content": "<!DOCTYPE html><html><head>\n    <title>Example Domain</title>\n\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <style type=\"text/css\">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href=\"https://www.iana.org/domains/example\">More information...</a></p>\n</div>\n\n\n</body></html>"
                }
              },
              "summary": {
                "root": "https://example.com",
                "visited": 1,
                "success": 1,
                "error": 0
              }
            }
          },
          "output": {
            "summary": {
              "errors": 4,
              "warnings": 0,
              "infos": 2,
              "numPages": 1,
              "numPagesPass": 0,
              "numPagesFail": 1
            },
            "results": {
              "https://example.com": {
                "url": "https://example.com",
                "depth": 0,
                "rules": [
                  {
                    "id": "html",
                    "description": "A document must not include both a “meta” element with an “http-equiv” attribute whose value is “content-type”, and a “meta” element with a “charset” attribute.",
                    "context": "f-8\">\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n    <",
                    "type": "error",
                    "tags": ["html"],
                    "firstColumn": 5,
                    "lastLine": 5,
                    "lastColumn": 71
                  },
                  {
                    "id": "html",
                    "description": " The “type” attribute for the “style” element is not needed and should be omitted.",
                    "context": "e=1\">\n    <style type=\"text/css\">\n    b",
                    "type": "info",
                    "tags": ["html"],
                    "firstColumn": 5,
                    "lastLine": 7,
                    "lastColumn": 27
                  },
                  {
                    "id": "html",
                    "description": "Consider adding a “lang” attribute to the “html” start tag to declare the language of this document.",
                    "context": "TYPE html><html><head>",
                    "type": "info",
                    "tags": ["html"],
                    "firstColumn": 16,
                    "lastLine": 1,
                    "lastColumn": 21
                  },
                  {
                    "id": "html-has-lang",
                    "type": "error",
                    "description": "Ensures every HTML document has a lang attribute",
                    "impact": "serious",
                    "tags": ["cat.language", "wcag2a", "wcag311"],
                    "help": "<html> element must have a lang attribute",
                    "helpUrl": "https://dequeuniversity.com/rules/ta11y/3.4/html-has-lang?application=Ta11y%20API"
                  },
                  {
                    "id": "landmark-one-main",
                    "type": "error",
                    "description": "Ensures the document has only one main landmark and each iframe in the page has at most one main landmark",
                    "impact": "moderate",
                    "tags": ["cat.semantics", "best-practice"],
                    "help": "Document must have one main landmark",
                    "helpUrl": "https://dequeuniversity.com/rules/ta11y/3.4/landmark-one-main?application=Ta11y%20API"
                  },
                  {
                    "id": "region",
                    "type": "error",
                    "description": "Ensures all page content is contained by landmarks",
                    "impact": "moderate",
                    "tags": ["cat.keyboard", "best-practice"],
                    "help": "All page content must be contained by landmarks",
                    "helpUrl": "https://dequeuniversity.com/rules/ta11y/3.4/region?application=Ta11y%20API"
                  }
                ],
                "summary": {
                  "errors": 4,
                  "warnings": 0,
                  "infos": 2,
                  "pass": false
                }
              }
            }
          }
        }
      ],
      "config": {},
      "headers": {},
      "src": "src/audit-extract-results.ts",
      "path": "/auditExtractResults",
      "definition": {
        "config": {
          "defaultExport": false,
          "language": "typescript",
          "namedExport": "auditExtractResults"
        },
        "params": {
          "http": false,
          "context": false,
          "order": ["extractResults", "suites", "rules"],
          "schema": {
            "type": "object",
            "properties": {
              "extractResults": {
                "$ref": "#/definitions/ExtractResults",
                "description": "Previously extracted website contents."
              },
              "suites": {
                "description": "Audit suites to run.",
                "type": "array",
                "items": {
                  "enum": [
                    "best-practice",
                    "html",
                    "section508",
                    "wcag2a",
                    "wcag2aa",
                    "wcag2aaa"
                  ],
                  "type": "string"
                }
              },
              "rules": {
                "$ref": "#/definitions/AuditRulesMap"
              }
            },
            "additionalProperties": false,
            "required": ["extractResults"],
            "definitions": {
              "ExtractResults": {
                "type": "object",
                "properties": {
                  "summary": {
                    "$ref": "#/definitions/ExtractResultsSummary"
                  },
                  "results": {
                    "$ref": "#/definitions/ExtractResultsPageMap"
                  }
                },
                "additionalProperties": false,
                "required": ["results", "summary"]
              },
              "ExtractResultsSummary": {
                "type": "object",
                "properties": {
                  "root": {
                    "type": "string"
                  },
                  "visited": {
                    "type": "number"
                  },
                  "success": {
                    "type": "number"
                  },
                  "error": {
                    "type": "number"
                  }
                },
                "additionalProperties": false,
                "required": ["error", "root", "success", "visited"]
              },
              "ExtractResultsPageMap": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/definitions/ExtractResultsPage"
                }
              },
              "ExtractResultsPage": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "depth": {
                    "type": "number"
                  },
                  "content": {
                    "type": "string"
                  },
                  "error": {
                    "type": "string"
                  }
                },
                "additionalProperties": false,
                "required": ["depth", "url"]
              },
              "AuditRulesMap": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/definitions/AuditRuleStatus"
                }
              },
              "AuditRuleStatus": {
                "enum": [0, 1, 2],
                "type": "number"
              }
            },
            "$schema": "http://json-schema.org/draft-07/schema#"
          }
        },
        "returns": {
          "async": true,
          "http": false,
          "schema": {
            "type": "object",
            "properties": {
              "result": {
                "$ref": "#/definitions/AuditResults"
              }
            },
            "additionalProperties": false,
            "definitions": {
              "AuditResults": {
                "type": "object",
                "properties": {
                  "summary": {
                    "$ref": "#/definitions/AuditResultsSummary"
                  },
                  "results": {
                    "$ref": "#/definitions/AuditResultsPageMap"
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsSummary": {
                "type": "object",
                "properties": {
                  "suites": {
                    "type": "array",
                    "items": {
                      "enum": [
                        "best-practice",
                        "html",
                        "section508",
                        "wcag2a",
                        "wcag2aa",
                        "wcag2aaa"
                      ],
                      "type": "string"
                    }
                  },
                  "errors": {
                    "type": "number"
                  },
                  "warnings": {
                    "type": "number"
                  },
                  "infos": {
                    "type": "number"
                  },
                  "numPages": {
                    "type": "number"
                  },
                  "numPagesPass": {
                    "type": "number"
                  },
                  "numPagesFail": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsPageMap": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/definitions/AuditResultsPage"
                }
              },
              "AuditResultsPage": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "depth": {
                    "type": "number"
                  },
                  "summary": {
                    "$ref": "#/definitions/AuditResultsPageSummary"
                  },
                  "error": {
                    "type": "string"
                  },
                  "rules": {
                    "type": "array",
                    "items": {
                      "$ref": "#/definitions/AuditResultsPageRule"
                    }
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsPageSummary": {
                "type": "object",
                "properties": {
                  "pass": {
                    "type": "boolean"
                  },
                  "errors": {
                    "type": "number"
                  },
                  "warnings": {
                    "type": "number"
                  },
                  "infos": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "AuditResultsPageRule": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "type": {
                    "type": "string"
                  },
                  "description": {
                    "type": "string"
                  },
                  "impact": {
                    "type": "string"
                  },
                  "tags": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "help": {
                    "type": "string"
                  },
                  "helpUrl": {
                    "type": "string"
                  },
                  "context": {
                    "type": "string"
                  },
                  "firstLine": {
                    "type": "number"
                  },
                  "firstColumn": {
                    "type": "number"
                  },
                  "lastLine": {
                    "type": "number"
                  },
                  "lastColumn": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              }
            },
            "$schema": "http://json-schema.org/draft-07/schema#"
          }
        },
        "version": "1.1.0",
        "title": "auditExtractResults",
        "description": "Runs an accessibility audit against previously extracted website contents from\n[`@ta11y/extract`](https://github.com/saasify-sh/ta11y/tree/master/packages/ta11y-extract).\n\nDefaults to running all audit suites."
      },
      "url": "https://ssfy.sh/dev/ta11y@c5c47a32/auditExtractResults",
      "route": "/dev/ta11y@c5c47a32/auditExtractResults"
    },
    {
      "name": "extract",
      "timeout": 0,
      "adaptor": "typescript",
      "httpMethod": "get",
      "immutable": false,
      "examples": [
        {
          "inputContentType": "application/json",
          "outputContentType": "application/json; charset=utf-8",
          "name": "example.com",
          "input": {
            "url": "https://example.com"
          },
          "output": {
            "results": {
              "https://example.com": {
                "url": "https://example.com",
                "depth": 0,
                "content": "<!DOCTYPE html><html><head>\n    <title>Example Domain</title>\n\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <style type=\"text/css\">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href=\"https://www.iana.org/domains/example\">More information...</a></p>\n</div>\n\n\n</body></html>"
              }
            },
            "summary": {
              "root": "https://example.com",
              "visited": 1,
              "success": 1,
              "error": 0
            }
          }
        }
      ],
      "config": {},
      "headers": {},
      "src": "src/extract.ts",
      "path": "/extract",
      "definition": {
        "config": {
          "defaultExport": false,
          "language": "typescript",
          "namedExport": "extract"
        },
        "params": {
          "http": false,
          "context": false,
          "order": [
            "url",
            "html",
            "crawl",
            "maxDepth",
            "maxVisit",
            "sameOrigin",
            "blacklist",
            "whitelist",
            "gotoOptions",
            "viewport",
            "userAgent",
            "emulateDevice"
          ],
          "schema": {
            "type": "object",
            "properties": {
              "url": {
                "description": "URL to process.",
                "type": "string"
              },
              "html": {
                "description": "Raw HTML to process.",
                "type": "string"
              },
              "crawl": {
                "description": "Whether or not to crawl additional pages.",
                "type": "boolean",
                "default": false
              },
              "maxDepth": {
                "description": "Maximum crawl depth while crawling.",
                "type": "number",
                "default": 16
              },
              "maxVisit": {
                "description": "Maximum number of pages to visit while crawling.",
                "type": "number"
              },
              "sameOrigin": {
                "description": "Whether or not to only consider crawling links with the same origin as the root URL.",
                "type": "boolean",
                "default": true
              },
              "blacklist": {
                "description": "Optional blacklist of URL [glob patterns](https://github.com/micromatch/micromatch) to ignore.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "whitelist": {
                "description": "Optional whitelist of URL [glob patterns](https://github.com/micromatch/micromatch) to only include.",
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "gotoOptions": {
                "$ref": "#/definitions/DirectNavigationOptions",
                "description": "Customize the `Page.goto` navigation options."
              },
              "viewport": {
                "$ref": "#/definitions/Viewport",
                "description": "Set the browser window's viewport dimensions and/or resolution."
              },
              "userAgent": {
                "description": "Set the browser's [user-agent](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/User-Agent).",
                "type": "string"
              },
              "emulateDevice": {
                "description": "Emulate a specific device type.\n- Use the `name` property from one of the built-in [devices](https://github.com/GoogleChrome/puppeteer/blob/master/lib/DeviceDescriptors.js).\n- Overrides `viewport` and `userAgent`.",
                "type": "string"
              }
            },
            "additionalProperties": false,
            "definitions": {
              "DirectNavigationOptions": {
                "description": "Navigation options for `page.goto`.",
                "type": "object",
                "properties": {
                  "referer": {
                    "description": "Referer header value.\nIf provided it will take preference over the referer header value set by\n[page.setExtraHTTPHeaders()](#pagesetextrahttpheadersheaders).",
                    "type": "string"
                  },
                  "waitUntil": {
                    "description": "When to consider navigation succeeded.",
                    "default": "load Navigation is consider when the `load` event is fired.",
                    "anyOf": [
                      {
                        "type": "array",
                        "items": {
                          "enum": [
                            "domcontentloaded",
                            "load",
                            "networkidle0",
                            "networkidle2"
                          ],
                          "type": "string"
                        }
                      },
                      {
                        "enum": [
                          "domcontentloaded",
                          "load",
                          "networkidle0",
                          "networkidle2"
                        ],
                        "type": "string"
                      }
                    ]
                  },
                  "timeout": {
                    "description": "Maximum navigation time in milliseconds, pass 0 to disable timeout.",
                    "default": 30000,
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "Viewport": {
                "type": "object",
                "properties": {
                  "width": {
                    "description": "The page width in pixels.",
                    "type": "number"
                  },
                  "height": {
                    "description": "The page height in pixels.",
                    "type": "number"
                  },
                  "deviceScaleFactor": {
                    "description": "Specify device scale factor (can be thought of as dpr).",
                    "default": 1,
                    "type": "number"
                  },
                  "isMobile": {
                    "description": "Whether the `meta viewport` tag is taken into account.",
                    "default": false,
                    "type": "boolean"
                  },
                  "hasTouch": {
                    "description": "Specifies if viewport supports touch events.",
                    "default": false,
                    "type": "boolean"
                  },
                  "isLandscape": {
                    "description": "Specifies if viewport is in landscape mode.",
                    "default": false,
                    "type": "boolean"
                  }
                },
                "additionalProperties": false,
                "required": ["height", "width"]
              }
            },
            "$schema": "http://json-schema.org/draft-07/schema#"
          }
        },
        "returns": {
          "async": true,
          "http": false,
          "schema": {
            "type": "object",
            "properties": {
              "result": {
                "$ref": "#/definitions/ExtractResults"
              }
            },
            "additionalProperties": false,
            "definitions": {
              "ExtractResults": {
                "type": "object",
                "properties": {
                  "summary": {
                    "$ref": "#/definitions/ExtractResultsSummary"
                  },
                  "results": {
                    "$ref": "#/definitions/ExtractResultsPageMap"
                  }
                },
                "additionalProperties": false
              },
              "ExtractResultsSummary": {
                "type": "object",
                "properties": {
                  "root": {
                    "type": "string"
                  },
                  "visited": {
                    "type": "number"
                  },
                  "success": {
                    "type": "number"
                  },
                  "error": {
                    "type": "number"
                  }
                },
                "additionalProperties": false
              },
              "ExtractResultsPageMap": {
                "type": "object",
                "additionalProperties": {
                  "$ref": "#/definitions/ExtractResultsPage"
                }
              },
              "ExtractResultsPage": {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string"
                  },
                  "depth": {
                    "type": "number"
                  },
                  "content": {
                    "type": "string"
                  },
                  "error": {
                    "type": "string"
                  }
                },
                "additionalProperties": false
              }
            },
            "$schema": "http://json-schema.org/draft-07/schema#"
          }
        },
        "version": "1.1.0",
        "title": "extract",
        "description": "Extracts the content of a given URL or raw HTML, optionally crawling the site to\ndiscover additional pages and extracting those too.\n\nMust provide either `url` or `html`."
      },
      "url": "https://ssfy.sh/dev/ta11y@c5c47a32/extract",
      "route": "/dev/ta11y@c5c47a32/extract"
    }
  ],
  "build": null,
  "env": null,
  "saas": {
    "features": [
      {
        "name": "Accessibility as a service",
        "desc": "Audit your websites with a range of test suites including WCAG 2.0/2.1 A, AA, AAA, Section 508, HTML validation, as well as our own best practices.",
        "icon": "https://storage.googleapis.com/saasify-uploads-prod/c5d906cb11aa8b68213d833508e1a6073aa5988b.svg"
      },
      {
        "name": "Automated accessibility testing",
        "desc": "Save time by automating the bulk of accessibility and conformance testing. Run manual tests during development and then integrate into any CI pipeline.",
        "icon": "https://storage.googleapis.com/saasify-uploads-prod/d970ed68465297c45f9122b64ebc0345a072fb76.svg"
      },
      {
        "name": "Runs in any environment",
        "desc": "Easy integration that supports localhost, firewalls, custom auth, as well as any public production environment.",
        "icon": "https://storage.googleapis.com/saasify-uploads-prod/421ddfb55177bf86cc0ad545826860924d2cb3df.svg"
      },
      {
        "name": "Modern dynamic websites",
        "desc": "Ta11y treats all websites as dynamic with full script support, so you'll test pages as users actually experience them.",
        "icon": "https://storage.googleapis.com/saasify-uploads-prod/5c1111b2ed35e3d06bbc8b504a5db21914641bb9.svg"
      },
      {
        "name": "Free to try",
        "desc": "Simple to get started for free with our [CLI](https://github.com/saasify-sh/ta11y/tree/master/packages/ta11y), then [sign up](/pricing) once you're ready to remove rate limits.",
        "icon": "https://storage.googleapis.com/saasify-uploads-prod/25737e2aed95d6769b5fed8bf4fe169325ba0e15.svg"
      },
      {
        "name": "Private & secure",
        "desc": "Ta11y is built with state-of-the-art serverless functions and never stores any of your data or audit results.",
        "icon": "https://storage.googleapis.com/saasify-uploads-prod/057478e399d28b221e0d0a6cf9ab7724e7614a07.svg"
      }
    ],
    "name": "ta11y",
    "heading": "Modern Accessibility Audits",
    "subheading": "A complete solution for ensuring your websites conform to the latest standards & best practices.",
    "repo": "https://github.com/saasify-sh/ta11y",
    "logo": "https://storage.googleapis.com/saasify-uploads-prod/57f6805615b942669de172b2633ccba4eb2d0a3f.svg",
    "favicon": "https://storage.googleapis.com/saasify-uploads-prod/e78eb6f14f513fbc51c729f8239acc7118b3fb29.ico",
    "theme": {
      "name": "waves",
      "backgroundImage": "https://storage.googleapis.com/saasify-uploads-prod/c5480c7c4e006629b4a2f7bfc5b783e2fce662ec.jpeg",
      "buttonStyle": "rounded",
      "color": "#0a8cfb",
      "wave": false,
      "gradientDark": false,
      "codeBlockDark": true
    }
  },
  "createdAt": "2020-01-12T16:03:26.647Z",
  "updatedAt": "2020-01-12T16:03:37.789Z",
  "coupons": [],
  "url": "https://ssfy.sh/dev/ta11y@c5c47a32",
  "openApiUrl": "https://api.saasify.sh/1/deployments/openapi/dev/ta11y@c5c47a32",
  "saasUrl": "https://dev_ta11y_c5c47a32.saasify.sh",
  "id": "dev/ta11y@c5c47a32"
}