{"openapi":"3.1.0","info":{"title":"Certificate Decoder API","version":"1.0.0","description":"Decode an X.509 certificate (PEM) into readable details — without a live connection. Paste a certificate and get back its subject and issuer (parsed into fields), the validity window with days-until-expiry and an expired flag, the serial number, SHA-1 and SHA-256 fingerprints, the Subject Alternative Names, the public-key type and size, and the CA / self-signed flags. Pure local parsing with no third-party service. Live, nothing stored. 2 endpoints. Built for certificate inspection, CI/CD expiry checks, PKI debugging and audit tooling. Distinct from a live SSL/TLS endpoint checker — this decodes a certificate you already hold.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/certdecode-api","description":"oanor gateway"}],"tags":[{"name":"Certificate"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/decode":{"get":{"operationId":"get_v1_decode","tags":["Certificate"],"summary":"Decode a PEM X.509 certificate","description":"","parameters":[{"name":"pem","in":"query","required":true,"description":"PEM certificate","schema":{"type":"string"},"example":"-----BEGIN CERTIFICATE-----\nMIIDijCCAnKgAwIBAgIUe/Yigo9jewUQ/NAyoU+Cl0LFwSkwDQYJKoZIhvcNAQEL\nBQAwOTELMAkGA1UEBhMCREUxDjAMBgNVBAoMBW9hbm9yMRowGAYDVQQDDBFleGFt\ncGxlLm9hbm9yLmNvbTAeFw0yNjA2MDIxMzIwNDVaFw0yNzA2MDIxMzIwNDVaMDkx\nCzAJBgNVBAYTAkRFMQ4wDAYDVQQKDAVvYW5vcjEaMBgGA1UEAwwRZXhhbXBsZS5v\nYW5vci5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCeujyMN5fo\ngP4M9wgpBzYzjjUE5/uqyR8qrkhk+D0iNebFUp0NZd7dPVh8omwOOUjRJIYEy20t\nsSDBpsqW+SYoKYAPC4/IvdnkWsbrH7xSurT4POK+M39+fyirIrvoT3JO6CHk8BEy\nFqYpQ3KA5KQLDBJbPwtrEUhFaABR4c/WyOTafQkeHRTlpCNpkfpDafdeyCbf8Xeq\nzIFGHHBRoUKgd7H2xC5CvV1d05ZTNU+2eNp3Y2AlYyaKhv/16JRdCtkpgHtJ/IHe\nLe/0ckRSUcmqcVH5NyEh46NJPQ3zBAhwGWRm5LGrORkWiFbdA9/A92TNL1WNsDzZ\nQb5Yx4iM2kKbAgMBAAGjgYkwgYYwHQYDVR0OBBYEFAM8LpsfG5Bm7F5WfjZOMv5L\nvYDyMB8GA1UdIwQYMBaAFAM8LpsfG5Bm7F5WfjZOMv5LvYDyMA8GA1UdEwEB/wQF\nMAMBAf8wMwYDVR0RBCwwKoIRZXhhbXBsZS5vYW5vci5jb22CFXd3dy5leGFtcGxl\nLm9hbm9yLmNvbTANBgkqhkiG9w0BAQsFAAOCAQEAmvEKg+Cl1W0FxEyByhT7t1ey\n6gX7E0kHvX0PwpXEHC+x6qzAt0D7B2XyXP7dqm2Ajgb78Fd7yldZWYb6U5AX762k\nxPk4gzG0YquXAOdhcaTiQrcua/E8zO3vRXZs7sGf4zcFtwktBX83Fa84b5SS/ON5\nqKVATU4He5nnszLXvTlGBOnSPPAuGuNQidSP7B9Z0QFHI8Yndm8aUit7UDHetUry\nZqLQrGgaCnOtO0lv4X3qxDhWx6POFDdi0KhQZDpDPF6XMonUlcD5gXs363ZYY8hu\nepQMrrb2MZtqQjxWInBg+/QiEl8bblaM4Rh334ay7vR1Vry7ZsvD28VcO4JxtA==\n-----END CERTIFICATE-----"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"key":{"size":2048,"type":"rsa"},"is_ca":true,"issuer":{"C":"DE","O":"oanor","CN":"example.oanor.com"},"expired":false,"subject":{"C":"DE","O":"oanor","CN":"example.oanor.com"},"valid_to":"2027-06-02T13:20:45.000Z","issuer_raw":"C=DE, O=oanor, CN=example.oanor.com","valid_from":"2026-06-02T13:20:45.000Z","self_signed":true,"subject_raw":"C=DE, O=oanor, CN=example.oanor.com","serial_number":"7BF622828F637B0510FCD032A14F829742C5C129","fingerprint_sha1":"9A:25:5F:E1:07:D1:1E:7E:81:F5:35:C0:A5:71:4A:93:85:CC:CA:02","subject_alt_name":"DNS:example.oanor.com, DNS:www.example.oanor.com","days_until_expiry":365,"fingerprint_sha256":"83:5B:D3:A4:17:81:DF:BD:86:7B:26:84:B2:E0:03:A0:FA:AC:AA:F5:89:EA:2A:53:E9:2A:39:4C:B3:B2:E9:6F"},"meta":{"timestamp":"2026-06-02T16:51:52.020Z","request_id":"ad1196b6-61ce-4378-8dba-8ac6be85cf12"},"status":"ok","message":"Decode a PEM X.509 certificate","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Spec","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"auth":"none upstream; this gateway requires x-api-key","name":"Certificate Decoder API","note":"Decode a PEM X.509 certificate. Pass ?pem= the certificate (-----BEGIN CERTIFICATE-----…) and get back the subject and issuer (parsed), validity window with days-until-expiry and an expired flag, serial number, SHA-1/SHA-256 fingerprints, Subject Alternative Names, key type/size, CA and self-signed flags. Distinct from sslcheck-api (live TLS handshake). Instant, nothing stored.","source":"Local X.509 parsing (Node crypto) — no key, no upstream","endpoints":2},"meta":{"timestamp":"2026-06-02T16:51:52.126Z","request_id":"dc1e94b3-df0b-4d92-8de3-9fbd336f67ad"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1140,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":320,"monthly_call_quota":10500,"rps_limit":8,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":2280,"monthly_call_quota":146000,"rps_limit":20,"hard_limit":true},{"slug":"mega","name":"Mega","price_cents_month":5880,"monthly_call_quota":750000,"rps_limit":50,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/certdecode-api"}