{"id":16540,"date":"2022-02-26T15:18:56","date_gmt":"2022-02-26T15:18:56","guid":{"rendered":"https:\/\/www.essexham.co.uk\/train\/?page_id=16540"},"modified":"2025-12-20T17:22:11","modified_gmt":"2025-12-20T17:22:11","slug":"check-callsign","status":"publish","type":"page","link":"https:\/\/www.essexham.co.uk\/train\/check-callsign\/","title":{"rendered":"Foundation Callsign Availability Checker"},"content":{"rendered":"<p><strong>Foundation Callsign Availability Tool &#8211; This lets you check to see if an M7, M6 or M3 callsign has already been issued.<\/strong><\/p>\n        <div class=\"callsign-finder\" style=\"max-width:520px;padding:14px;border:1px solid #ddd;border-radius:10px;\">\n            <div style=\"font-weight:600;margin-bottom:8px;\">Callsign Finder<\/div>\n\n            <div style=\"display:flex;gap:8px;flex-wrap:wrap;align-items:center;\">\n                <input id=\"csf_1_pattern\"\n                       value=\"M7xxx\"\n                       placeholder=\"e.g. M7xxx or M6Axx (or 7xxx)\"\n                       style=\"flex:1;min-width:180px;padding:8px;border:1px solid #ccc;border-radius:8px;\">\n\n                <input id=\"csf_1_n\"\n                       type=\"number\"\n                       value=\"10\"\n                       min=\"1\" max=\"100\"\n                       style=\"width:90px;padding:8px;border:1px solid #ccc;border-radius:8px;\">\n\n                <button id=\"csf_1_go\"\n                        style=\"padding:8px 12px;border:0;border-radius:8px;cursor:pointer;\">\n                    Find\n                <\/button>\n            <\/div>\n\n            <div style=\"font-size:12px;color:#555;margin-top:8px;\">\n                Use <b>x<\/b> or <b>?<\/b> as a wildcard. Examples: <code>M7xxx<\/code>, <code>M6SX?<\/code>, <code>M7?A?<\/code>.\n            <\/div>\n\n            <div id=\"csf_1_note\" style=\"display:none;font-size:12px;color:#555;margin-top:6px;\">\n                <em>Note: callsigns with <b>Q<\/b> or <b>Z<\/b> as the first suffix letter are not valid.<\/em>\n            <\/div>\n\n            <div id=\"csf_1_status\"\n                 style=\"margin-top:10px;font-size:12px;color:#555;background:#f7f7f7;border-radius:8px;padding:8px;\">\n                Available callsigns: loading\u2026\n            <\/div>\n\n            <pre id=\"csf_1_out\"\n                 style=\"margin-top:12px;white-space:pre-wrap;background:#f7f7f7;padding:10px;border-radius:8px;min-height:56px;\"><\/pre>\n        <\/div>\n\n        <script>\n        (function(){\n          const endpoint       = \"https:\\\/\\\/www.essexham.co.uk\\\/train\\\/wp-json\\\/callsign\\\/v1\\\/free\";\n          const statusEndpoint = \"https:\\\/\\\/www.essexham.co.uk\\\/train\\\/wp-json\\\/callsign\\\/v1\\\/status\";\n\n          const btn       = document.getElementById(\"csf_1_go\");\n          const out       = document.getElementById(\"csf_1_out\");\n          const patternEl = document.getElementById(\"csf_1_pattern\");\n          const noteEl    = document.getElementById(\"csf_1_note\");\n          const statusEl  = document.getElementById(\"csf_1_status\");\n          const nEl       = document.getElementById(\"csf_1_n\");\n\n          function updateNote() {\n            const raw = (patternEl.value || '').trim().toUpperCase();\n            \/\/ Treat \"7xxx\" as \"M7xxx\"\n            const p = (\/^[367]\/.test(raw)) ? ('M' + raw) : raw;\n\n            const show =\n              p.length >= 3 &&\n              p[0] === 'M' &&\n              (p[1] === '3' || p[1] === '6' || p[1] === '7') &&\n              (p[2] === 'Q' || p[2] === 'Z');\n\n            noteEl.style.display = show ? 'block' : 'none';\n          }\n\n          async function loadStatus() {\n            try {\n              const r = await fetch(statusEndpoint, { credentials: 'same-origin' });\n              const j = await r.json();\n\n              const a = (j && j.available) ? j.available : null;\n              if (!a) {\n                statusEl.textContent = 'Available callsigns: unavailable';\n                return;\n              }\n\n              statusEl.textContent =\n                'Available callsigns for M7 = ' + a.M7 +\n                '   |   available callsigns for M6 = ' + a.M6 +\n                '   |   available callsigns for M3 = ' + a.M3;\n            } catch (e) {\n              statusEl.textContent = 'Available callsigns: unavailable';\n            }\n          }\n\n          async function run(){\n            updateNote();\n\n            const pattern = (patternEl.value || '').trim();\n            const n = parseInt(nEl.value || '10', 10);\n            out.textContent = 'Searching...';\n\n            try {\n              const url = endpoint + '?pattern=' + encodeURIComponent(pattern) + '&n=' + encodeURIComponent(n);\n              const r = await fetch(url, { credentials: 'same-origin' });\n              const j = await r.json();\n\n              if (!r.ok) {\n                out.textContent = (j && j.error) ? j.error : 'Error';\n                return;\n              }\n\n              if (j.found === 0) {\n                out.textContent = 'No free callsigns found for ' + j.pattern + '.';\n                return;\n              }\n\n              out.textContent =\n                'Free callsigns for ' + j.pattern + ' (showing ' + j.found + '):\\n\\n' +\n                j.callsigns.join('\\n');\n            } catch (e) {\n              out.textContent = 'Request failed.';\n            }\n          }\n\n          patternEl.addEventListener('input', updateNote);\n          updateNote();\n\n          btn.addEventListener('click', run);\n\n          loadStatus();\n        })();\n        <\/script>\n        \n<p>&nbsp;<\/p>\n<p><em>This tool checks to see if a Foundation callsign has been taken, or is available &#8211; according to data released by Ofcom. Database date: <b>13-Nov-25<\/b><\/em><\/p>\n<p><em>This checker is still a work-in-progress, so don&#8217;t rely on data on this page. Please\u00a0<a href=\"https:\/\/www.essexham.co.uk\/contact\" target=\"_blank\" rel=\"noopener\">contact us<\/a>\u00a0if the service appears broken, or you discover a problem.<\/em><\/p>\n<p>The data used for this tool comes from\u00a0<a href=\"https:\/\/www.ofcom.org.uk\/\">Ofcom<\/a>, and has been released under the Ofcom Open Data policy in accordance with the\u00a0<a href=\"https:\/\/www.nationalarchives.gov.uk\/doc\/open-government-licence\/version\/3\/\">Open Government Licence 3.0<\/a>.<\/p>\n<p align=\"center\"><a href=\"https:\/\/www.essexham.co.uk\/train\/foundation-online\/\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.essexham.co.uk\/images\/hamtrain-link-1.jpg\" alt=\"HamTrain Promotion\" width=\"260\" height=\"86\" border=\"0\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Foundation Callsign Availability Tool &#8211; This lets you check to see if an M7, M6 or M3 callsign has already been issued. &nbsp; This tool checks to see if a Foundation callsign has been taken, or is available &#8211; according to data released by Ofcom. Database date: 13-Nov-25 This checker is still a work-in-progress, so&#8230;<\/p>\n<p class=\"more-link-wrap\"><a href=\"https:\/\/www.essexham.co.uk\/train\/check-callsign\/\" class=\"more-link\">Read More<span class=\"screen-reader-text\"> &ldquo;Foundation Callsign Availability Checker&rdquo;<\/span> &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":15619,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"page-templates\/sidebar.php","meta":{"footnotes":""},"class_list":["post-16540","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/pages\/16540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/comments?post=16540"}],"version-history":[{"count":7,"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/pages\/16540\/revisions"}],"predecessor-version":[{"id":18166,"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/pages\/16540\/revisions\/18166"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/media\/15619"}],"wp:attachment":[{"href":"https:\/\/www.essexham.co.uk\/train\/wp-json\/wp\/v2\/media?parent=16540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}