{
  "openapi": "3.1.1",
  "info": {
    "title": "X.509 / ASN.1 Certificate Inspector API",
    "version": "1.0.0",
    "summary": "Decode X.509 certificates, chains and CSRs: SANs, usages, CT SCTs, chain order and an ASN.1 tree.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://x509certificateinspector.usefulweb.site"
    }
  ],
  "paths": {
    "/api/v1/calculate": {
      "post": {
        "operationId": "calculate",
        "summary": "Decode X.509 certificates, chains and CSRs: SANs, usages, CT SCTs, chain order and an ASN.1 tree.",
        "description": "Paste or upload a PEM/DER certificate, a whole chain or a PKCS#10 certificate signing request. Shows subject, issuer, validity and expiry warnings, SANs, key usage and EKU, basic constraints, AIA (OCSP, CA issuers), CRL distribution points, policies, embedded Certificate Transparency SCTs, fingerprints and the signature algorithm, checks the chain order with real signature verification, and includes a generic ASN.1 DER tree viewer with OID names.\n\nMethodology:\n- Input may hold several PEM blocks (CERTIFICATE, CERTIFICATE REQUEST) or one base64/hex/binary DER object. Each certificate is parsed twice: by Node.js crypto.X509Certificate (OpenSSL) for fingerprints, keys and signature checks, and by an in-house DER parser for the exact fields and extensions.\n- Decoded extensions: subjectAltName, keyUsage, extKeyUsage, basicConstraints, authorityInfoAccess (OCSP, caIssuers), cRLDistributionPoints, certificatePolicies (with CPS URIs), the CT SignedCertificateTimestampList (RFC 6962: version, log id, timestamp, algorithms), key identifiers and TLS Feature (OCSP Must-Staple). Others are listed with OID name and criticality.\n- Chain order: each certificate must be issued by the next one (issuer name = next subject, and the signature verifies with X509Certificate.verify). A suggested leaf → root order is derived from the verified issuer links. Trust in a root store is NOT evaluated, and revocation (OCSP/CRL) is not checked.\n- Warnings: expired / not yet valid / expiring within 30 days (relative to the time of the request), SHA-1/MD5 signatures, RSA keys under 2048 bits, TLS server certificates without SAN or valid for more than 398 days (CA/Browser Forum Baseline Requirements), issuers without CA:TRUE.\n- CSR (PKCS#10, RFC 2986): subject, public key, attributes and requested extensions; the self-signature is verified (RSA PKCS#1 v1.5, RSA-PSS, ECDSA, Ed25519/Ed448). Challenge passwords are never shown.\n- The ASN.1 viewer prints tag, header and value lengths and values (integers, OIDs with names from a bundled map, strings, times) and descends into BIT/OCTET STRINGs that contain DER, like openssl asn1parse. At most 400 rows are shown.\n\nStructural inspection only: trust-store membership and revocation are not checked.",
        "tags": [
          "crypto"
        ],
        "x-mcp-tool": "x509_certificate_inspector",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/X509CertificateInspectorInput"
              },
              "examples": {
                "example1": {
                  "summary": "Leaf + intermediate + root chain",
                  "value": {
                    "input": "-----BEGIN CERTIFICATE-----\nMIIDLjCCAtOgAwIBAgICEAIwCgYIKoZIzj0EAwIwPjELMAkGA1UEBhMCREUxEzAR\nBgNVBAoMCkRlbW8gVHJ1c3QxGjAYBgNVBAMMEURlbW8gSXNzdWluZyBDQSAxMB4X\nDTI2MDYwMTAwMDAwMFoXDTI3MDYwMTAwMDAwMFowGzEZMBcGA1UEAwwQd3d3LmV4\nYW1wbGUudGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLwflXvmcWBlNNt6\nEWqg80zBOiPnUnG7MCWhlhismwZ/YOljyr8K/UdAkXf6Llf4v0sLnpdbZT4Wq/N0\nslgndbajggHiMIIB3jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAdBgNV\nHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwLwYDVR0RBCgwJoIQd3d3LmV4YW1w\nbGUudGVzdIIMZXhhbXBsZS50ZXN0hwTAAAIKMB0GA1UdDgQWBBQuMUVbXfDHZsLe\nFlEHnSrL0bMh6TAfBgNVHSMEGDAWgBT7k5kCNLbFwA6mVAlV3zaBislI5zBhBggr\nBgEFBQcBAQRVMFMwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmV4YW1wbGUudGVz\ndDArBggrBgEFBQcwAoYfaHR0cDovL3BraS5leGFtcGxlLnRlc3QvaW50LmNydDAw\nBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY3JsLmV4YW1wbGUudGVzdC9pbnQuY3Js\nMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCSsGAQQBho0fATAqMCgGCCsGAQUFBwIB\nFhxodHRwczovL3BraS5leGFtcGxlLnRlc3QvY3BzMEsGCisGAQQB1nkCBAIEPQQ7\nADkANwBnVrBBAcvljHomKVT/KjJqZk7slVSrrLJc04j+mfiyCAAAAZt22qgAAAAE\nAwAIMAYCAQECAQEwCgYIKoZIzj0EAwIDSQAwRgIhAItLxsx9fdGDv8VcEjutYufp\njl9EzIv0BlAgbWaiomqCAiEAwQYOJuXmHyQW8aDAxDiNkkai45zfZvGmiA50yQXd\nSf0=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIICQDCCAeagAwIBAgICEAEwCgYIKoZIzj0EAwIwOTELMAkGA1UEBhMCREUxEzAR\nBgNVBAoMCkRlbW8gVHJ1c3QxFTATBgNVBAMMDERlbW8gUm9vdCBDQTAeFw0yNTA2\nMDEwMDAwMDBaFw0zMDA2MDEwMDAwMDBaMD4xCzAJBgNVBAYTAkRFMRMwEQYDVQQK\nDApEZW1vIFRydXN0MRowGAYDVQQDDBFEZW1vIElzc3VpbmcgQ0EgMTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABEeQba6KBaWI+q0HmTqVHbgwBicTYshVrCnuRh2I\nt0rWsnpnzmAAmP+d20u1KBqraNtyLkOUAx8dyPGKAZ9F2SWjgdgwgdUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFPuTmQI0tsXA\nDqZUCVXfNoGKyUjnMB8GA1UdIwQYMBaAFB0fhulA+MOuxtHtcfIPvu4E5yXVMDEG\nA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwuZXhhbXBsZS50ZXN0L3Jvb3QuY3Js\nMDwGCCsGAQUFBwEBBDAwLjAsBggrBgEFBQcwAoYgaHR0cDovL3BraS5leGFtcGxl\nLnRlc3Qvcm9vdC5jcnQwCgYIKoZIzj0EAwIDSAAwRQIhAPWRqATEpNCkoptvt2IM\nDLnTCwZtRwLGaoj/eIQ0G6dQAiB9z4wjtixhRaGoTuoCmQBt4Qaq+qxKrOjr9rYh\nriUr2g==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIBpDCCAUqgAwIBAgICEAAwCgYIKoZIzj0EAwIwOTELMAkGA1UEBhMCREUxEzAR\nBgNVBAoMCkRlbW8gVHJ1c3QxFTATBgNVBAMMDERlbW8gUm9vdCBDQTAeFw0yNTAx\nMDEwMDAwMDBaFw0zNTAxMDEwMDAwMDBaMDkxCzAJBgNVBAYTAkRFMRMwEQYDVQQK\nDApEZW1vIFRydXN0MRUwEwYDVQQDDAxEZW1vIFJvb3QgQ0EwWTATBgcqhkjOPQIB\nBggqhkjOPQMBBwNCAATTrpHwl14fB2G9rruBlIhJYzEoxeDEB+dK/BTnA5rmGLpo\ncUF66cgob5+4knEsMCj0DBKDbsXXZdT0LCStDhRQo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUHR+G6UD4w67G0e1x8g++7gTn\nJdUwCgYIKoZIzj0EAwIDSAAwRQIhAKFCNk4jPJLSLSZW/h594Y5s9ASp/10vVZgG\nANqkwaj+AiBmcW2LQn8vPqusJpwbtGMmubShkGp6/gME7qX/EJny7g==\n-----END CERTIFICATE-----"
                  }
                },
                "example2": {
                  "summary": "Chain in the wrong order",
                  "value": {
                    "input": "-----BEGIN CERTIFICATE-----\nMIICQDCCAeagAwIBAgICEAEwCgYIKoZIzj0EAwIwOTELMAkGA1UEBhMCREUxEzAR\nBgNVBAoMCkRlbW8gVHJ1c3QxFTATBgNVBAMMDERlbW8gUm9vdCBDQTAeFw0yNTA2\nMDEwMDAwMDBaFw0zMDA2MDEwMDAwMDBaMD4xCzAJBgNVBAYTAkRFMRMwEQYDVQQK\nDApEZW1vIFRydXN0MRowGAYDVQQDDBFEZW1vIElzc3VpbmcgQ0EgMTBZMBMGByqG\nSM49AgEGCCqGSM49AwEHA0IABEeQba6KBaWI+q0HmTqVHbgwBicTYshVrCnuRh2I\nt0rWsnpnzmAAmP+d20u1KBqraNtyLkOUAx8dyPGKAZ9F2SWjgdgwgdUwEgYDVR0T\nAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFPuTmQI0tsXA\nDqZUCVXfNoGKyUjnMB8GA1UdIwQYMBaAFB0fhulA+MOuxtHtcfIPvu4E5yXVMDEG\nA1UdHwQqMCgwJqAkoCKGIGh0dHA6Ly9jcmwuZXhhbXBsZS50ZXN0L3Jvb3QuY3Js\nMDwGCCsGAQUFBwEBBDAwLjAsBggrBgEFBQcwAoYgaHR0cDovL3BraS5leGFtcGxl\nLnRlc3Qvcm9vdC5jcnQwCgYIKoZIzj0EAwIDSAAwRQIhAPWRqATEpNCkoptvt2IM\nDLnTCwZtRwLGaoj/eIQ0G6dQAiB9z4wjtixhRaGoTuoCmQBt4Qaq+qxKrOjr9rYh\nriUr2g==\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDLjCCAtOgAwIBAgICEAIwCgYIKoZIzj0EAwIwPjELMAkGA1UEBhMCREUxEzAR\nBgNVBAoMCkRlbW8gVHJ1c3QxGjAYBgNVBAMMEURlbW8gSXNzdWluZyBDQSAxMB4X\nDTI2MDYwMTAwMDAwMFoXDTI3MDYwMTAwMDAwMFowGzEZMBcGA1UEAwwQd3d3LmV4\nYW1wbGUudGVzdDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLwflXvmcWBlNNt6\nEWqg80zBOiPnUnG7MCWhlhismwZ/YOljyr8K/UdAkXf6Llf4v0sLnpdbZT4Wq/N0\nslgndbajggHiMIIB3jAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAdBgNV\nHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwLwYDVR0RBCgwJoIQd3d3LmV4YW1w\nbGUudGVzdIIMZXhhbXBsZS50ZXN0hwTAAAIKMB0GA1UdDgQWBBQuMUVbXfDHZsLe\nFlEHnSrL0bMh6TAfBgNVHSMEGDAWgBT7k5kCNLbFwA6mVAlV3zaBislI5zBhBggr\nBgEFBQcBAQRVMFMwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmV4YW1wbGUudGVz\ndDArBggrBgEFBQcwAoYfaHR0cDovL3BraS5leGFtcGxlLnRlc3QvaW50LmNydDAw\nBgNVHR8EKTAnMCWgI6Ahhh9odHRwOi8vY3JsLmV4YW1wbGUudGVzdC9pbnQuY3Js\nMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCSsGAQQBho0fATAqMCgGCCsGAQUFBwIB\nFhxodHRwczovL3BraS5leGFtcGxlLnRlc3QvY3BzMEsGCisGAQQB1nkCBAIEPQQ7\nADkANwBnVrBBAcvljHomKVT/KjJqZk7slVSrrLJc04j+mfiyCAAAAZt22qgAAAAE\nAwAIMAYCAQECAQEwCgYIKoZIzj0EAwIDSQAwRgIhAItLxsx9fdGDv8VcEjutYufp\njl9EzIv0BlAgbWaiomqCAiEAwQYOJuXmHyQW8aDAxDiNkkai45zfZvGmiA50yQXd\nSf0=\n-----END CERTIFICATE-----"
                  }
                },
                "example3": {
                  "summary": "Certificate signing request (CSR)",
                  "value": {
                    "input": "-----BEGIN CERTIFICATE REQUEST-----\nMIIBETCBuQIBADAbMRkwFwYDVQQDDBB3d3cuZXhhbXBsZS50ZXN0MFkwEwYHKoZI\nzj0CAQYIKoZIzj0DAQcDQgAEvB+Ve+ZxYGU023oRaqDzTME6I+dScbswJaGWGKyb\nBn9g6WPKvwr9R0CRd/ouV/i/Swuel1tlPhar83SyWCd1tqA8MDoGCSqGSIb3DQEJ\nDjEtMCswKQYDVR0RBCIwIIIQd3d3LmV4YW1wbGUudGVzdIIMZXhhbXBsZS50ZXN0\nMAoGCCqGSM49BAMCA0cAMEQCIFtTQ9UikF+QEnE0FX4KHx4jk3b74Ew2lN553z5v\n3MFGAiBW7CE8br3gqLDcD1/wPXz8IHyjuWK2QjNKZhQsvNnO3Q==\n-----END CERTIFICATE REQUEST-----",
                    "showAsn1": true
                  }
                },
                "example4": {
                  "summary": "Expired RSA-1024 / SHA-1 self-signed certificate",
                  "value": {
                    "input": "-----BEGIN CERTIFICATE-----\nMIIB9TCCAV6gAwIBAgICEAMwDQYJKoZIhvcNAQEFBQAwHjEcMBoGA1UEAwwTbGVn\nYWN5LmV4YW1wbGUudGVzdDAeFw0xNTAxMDEwMDAwMDBaFw0xNjAxMDEwMDAwMDBa\nMB4xHDAaBgNVBAMME2xlZ2FjeS5leGFtcGxlLnRlc3QwgZ8wDQYJKoZIhvcNAQEB\nBQADgY0AMIGJAoGBAPyMD7pOdLS7ntcFc5YcdDO0zS5FPXfbvww24wPO4b/K7jFC\ngz8cC/zhpQKOUMvkjNFoNW6dLXFHo8y50lc94kEVdt2O82fPabfD1Hk19tIffrpv\nipz/AJ0IrrZ3wryQA+TokA5RncLWc3b455ARW4rqTNVRmi7Jc1E5lz5xOLZnAgMB\nAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQW\nBBS2i8s2jp7EU8BH+Pq3UpA2pOk4yzANBgkqhkiG9w0BAQUFAAOBgQAwV9Okxj1W\nNP8Lv0C7LxFOB6+bvSbTSczP3uJeiOvCz8BcnYhabLtzk1Ul0roX+DLlcO+2klLS\nLmrC5oJwIOxfkNeNtZHizwhfvMq6eT5SpNn4+XSFo+9uhlfPZE8MDbESWPfxj8u7\nOkW0Y8FMiV/RfTHKKJO1429e59BVufKvoA==\n-----END CERTIFICATE-----"
                  }
                },
                "example5": {
                  "summary": "Generic ASN.1 tree of a certificate",
                  "value": {
                    "input": "-----BEGIN CERTIFICATE-----\nMIIBpDCCAUqgAwIBAgICEAAwCgYIKoZIzj0EAwIwOTELMAkGA1UEBhMCREUxEzAR\nBgNVBAoMCkRlbW8gVHJ1c3QxFTATBgNVBAMMDERlbW8gUm9vdCBDQTAeFw0yNTAx\nMDEwMDAwMDBaFw0zNTAxMDEwMDAwMDBaMDkxCzAJBgNVBAYTAkRFMRMwEQYDVQQK\nDApEZW1vIFRydXN0MRUwEwYDVQQDDAxEZW1vIFJvb3QgQ0EwWTATBgcqhkjOPQIB\nBggqhkjOPQMBBwNCAATTrpHwl14fB2G9rruBlIhJYzEoxeDEB+dK/BTnA5rmGLpo\ncUF66cgob5+4knEsMCj0DBKDbsXXZdT0LCStDhRQo0IwQDAPBgNVHRMBAf8EBTAD\nAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUHR+G6UD4w67G0e1x8g++7gTn\nJdUwCgYIKoZIzj0EAwIDSAAwRQIhAKFCNk4jPJLSLSZW/h594Y5s9ASp/10vVZgG\nANqkwaj+AiBmcW2LQn8vPqusJpwbtGMmubShkGp6/gME7qX/EJny7g==\n-----END CERTIFICATE-----",
                    "mode": "asn1"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/X509CertificateInspectorResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tool": {
      "get": {
        "operationId": "getToolDefinition",
        "summary": "Inputs, output schema and examples for this tool",
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "X509CertificateInspectorInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "input": {
            "title": "Certificate, chain or CSR (PEM, base64 or hex DER)",
            "type": "string",
            "maxLength": 1000000
          },
          "file": {
            "title": "Or upload a file",
            "description": "PEM or binary DER, up to 1 MB. Upload as {filename, contentType?, contentBase64}. Max 977 KiB. Accepts .pem,.crt,.cer,.der,.csr,.p7b,.txt,application/x-x509-ca-cert,application/pkix-cert.",
            "type": "object",
            "additionalProperties": false,
            "required": [
              "filename",
              "contentBase64"
            ],
            "properties": {
              "filename": {
                "type": "string"
              },
              "contentType": {
                "type": "string"
              },
              "contentBase64": {
                "type": "string"
              }
            }
          },
          "mode": {
            "title": "Mode",
            "type": "string",
            "enum": [
              "auto",
              "asn1"
            ],
            "default": "auto"
          },
          "showAsn1": {
            "title": "Include the ASN.1 tree of the first object",
            "type": "boolean",
            "default": false
          }
        },
        "required": []
      },
      "X509CertificateInspectorResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "kind",
              "objectCount",
              "certificates",
              "chain",
              "csr",
              "asn1"
            ],
            "properties": {
              "kind": {
                "type": "string",
                "enum": [
                  "certificate",
                  "chain",
                  "csr",
                  "asn1"
                ]
              },
              "objectCount": {
                "type": "integer"
              },
              "certificates": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "index",
                    "subject",
                    "issuer",
                    "serialNumber",
                    "version",
                    "notBefore",
                    "notAfter",
                    "validityDays",
                    "daysRemaining",
                    "status",
                    "signatureAlgorithm",
                    "publicKey",
                    "publicKeyBits",
                    "sha256",
                    "sha1",
                    "spkiSha256",
                    "selfSigned",
                    "isCA",
                    "sans",
                    "keyUsage",
                    "extKeyUsage",
                    "basicConstraints",
                    "ocsp",
                    "caIssuers",
                    "crlDistributionPoints",
                    "policies",
                    "scts",
                    "subjectKeyId",
                    "authorityKeyId",
                    "mustStaple",
                    "extensions"
                  ],
                  "properties": {
                    "index": {
                      "type": "integer"
                    },
                    "subject": {
                      "type": "string"
                    },
                    "issuer": {
                      "type": "string"
                    },
                    "serialNumber": {
                      "type": "string"
                    },
                    "version": {
                      "type": "integer"
                    },
                    "notBefore": {
                      "type": "string"
                    },
                    "notAfter": {
                      "type": "string"
                    },
                    "validityDays": {
                      "type": "integer"
                    },
                    "daysRemaining": {
                      "type": "integer"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "valid",
                        "expired",
                        "not-yet-valid"
                      ]
                    },
                    "signatureAlgorithm": {
                      "type": "string"
                    },
                    "publicKey": {
                      "type": "string"
                    },
                    "publicKeyBits": {
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "sha256": {
                      "type": "string"
                    },
                    "sha1": {
                      "type": "string"
                    },
                    "spkiSha256": {
                      "type": "string"
                    },
                    "selfSigned": {
                      "type": "boolean"
                    },
                    "isCA": {
                      "type": "boolean"
                    },
                    "sans": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "keyUsage": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "extKeyUsage": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "basicConstraints": {
                      "type": [
                        "object",
                        "null"
                      ],
                      "additionalProperties": false,
                      "required": [
                        "ca",
                        "pathLen"
                      ],
                      "properties": {
                        "ca": {
                          "type": "boolean"
                        },
                        "pathLen": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        }
                      }
                    },
                    "ocsp": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "caIssuers": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "crlDistributionPoints": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      }
                    },
                    "policies": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "oid",
                          "name",
                          "cps"
                        ],
                        "properties": {
                          "oid": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "cps": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    "scts": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "version",
                          "logId",
                          "timestamp",
                          "hashAlgorithm",
                          "signatureAlgorithm"
                        ],
                        "properties": {
                          "version": {
                            "type": "integer"
                          },
                          "logId": {
                            "type": "string"
                          },
                          "timestamp": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "hashAlgorithm": {
                            "type": "string"
                          },
                          "signatureAlgorithm": {
                            "type": "string"
                          }
                        }
                      }
                    },
                    "subjectKeyId": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "authorityKeyId": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "mustStaple": {
                      "type": "boolean"
                    },
                    "extensions": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "additionalProperties": false,
                        "required": [
                          "oid",
                          "name",
                          "critical"
                        ],
                        "properties": {
                          "oid": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "critical": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              },
              "chain": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "inOrder",
                  "complete",
                  "suggestedOrder",
                  "links"
                ],
                "properties": {
                  "inOrder": {
                    "type": "boolean"
                  },
                  "complete": {
                    "type": "boolean",
                    "description": "Ends in a self-signed certificate with every link verified"
                  },
                  "suggestedOrder": {
                    "type": "array",
                    "items": {
                      "type": "integer"
                    }
                  },
                  "links": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "child",
                        "parent",
                        "nameMatch",
                        "signatureValid",
                        "note"
                      ],
                      "properties": {
                        "child": {
                          "type": "integer"
                        },
                        "parent": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "nameMatch": {
                          "type": "boolean"
                        },
                        "signatureValid": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "note": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              },
              "csr": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "subject",
                  "publicKey",
                  "publicKeyBits",
                  "signatureAlgorithm",
                  "signatureValid",
                  "attributes",
                  "sans",
                  "keyUsage",
                  "extKeyUsage",
                  "basicConstraints",
                  "extensions",
                  "spkiSha256"
                ],
                "properties": {
                  "subject": {
                    "type": "string"
                  },
                  "publicKey": {
                    "type": "string"
                  },
                  "publicKeyBits": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "signatureAlgorithm": {
                    "type": "string"
                  },
                  "signatureValid": {
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "attributes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "sans": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "keyUsage": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "extKeyUsage": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "basicConstraints": {
                    "type": [
                      "object",
                      "null"
                    ],
                    "additionalProperties": false,
                    "required": [
                      "ca",
                      "pathLen"
                    ],
                    "properties": {
                      "ca": {
                        "type": "boolean"
                      },
                      "pathLen": {
                        "type": [
                          "integer",
                          "null"
                        ]
                      }
                    }
                  },
                  "extensions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "oid",
                        "name",
                        "critical"
                      ],
                      "properties": {
                        "oid": {
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "critical": {
                          "type": "boolean"
                        }
                      }
                    }
                  },
                  "spkiSha256": {
                    "type": "string"
                  }
                }
              },
              "asn1": {
                "type": [
                  "object",
                  "null"
                ],
                "additionalProperties": false,
                "required": [
                  "totalNodes",
                  "truncated",
                  "rows"
                ],
                "properties": {
                  "totalNodes": {
                    "type": "integer"
                  },
                  "truncated": {
                    "type": "boolean"
                  },
                  "rows": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "additionalProperties": false,
                      "required": [
                        "offset",
                        "depth",
                        "header",
                        "length",
                        "tag",
                        "value"
                      ],
                      "properties": {
                        "offset": {
                          "type": "integer"
                        },
                        "depth": {
                          "type": "integer"
                        },
                        "header": {
                          "type": "integer"
                        },
                        "length": {
                          "type": "integer"
                        },
                        "tag": {
                          "type": "string"
                        },
                        "value": {
                          "type": "string"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}