@ideal-postcodes/openapi
Version:
Ideal Postcodes OpenAPI v3 specifications
285 lines (254 loc) • 10.3 kB
HTML
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>API Documentation - Ideal Postcodes</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet">
<script type="module" src="https://unpkg.com/rapidoc/dist/rapidoc-min.js"></script>
<script>
!function (t, e) {var o, n, p, r; e.__SV || (window.posthog = e, e._i = [], e.init = function (i, s, a) {function g(t, e) {var o = e.split("."); 2 == o.length && (t = t[o[0]], e = o[1]), t[e] = function () {t.push([e].concat(Array.prototype.slice.call(arguments, 0)))}} (p = t.createElement("script")).type = "text/javascript", p.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/static/array.js", (r = t.getElementsByTagName("script")[0]).parentNode.insertBefore(p, r); var u = e; for (void 0 !== a ? u = e[a] = [] : a = "posthog", u.people = u.people || [], u.toString = function (t) {var e = "posthog"; return "posthog" !== a && (e += "." + a), t || (e += " (stub)"), e}, u.people.toString = function () {return u.toString(1) + ".people (stub)"}, o = "init Te Ds js Re Os As capture Ke calculateEventProperties zs register register_once register_for_session unregister unregister_for_session Hs getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSurveysLoaded onSessionId getSurveys getActiveMatchingSurveys renderSurvey displaySurvey canRenderSurvey canRenderSurveyAsync identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty qs Ns createPersonProfile Bs Cs Ws opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing get_explicit_consent_status is_capturing clear_opt_in_out_capturing Ls debug L Us getPageViewId captureTraceFeedback captureTraceMetric".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a])}, e.__SV = 1)}(document, window.posthog || []);
posthog.init('phc_PYucgzvAdG7lHcHswyDx0fVqvmS2lrhLt6wCK1kGmvu', {
api_host: 'https://ph.ideal-postcodes.co.uk',
defaults: '2025-05-24',
person_profiles: 'identified_only', // or 'always' to create profiles for anonymous users as well
})
</script>
<style>
:root {
--ideal-primary-blue: #375BDC;
--ideal-dark-bg: #2B3544;
--ideal-light-bg: #F8F9FA;
--ideal-white: #FFFFFF;
--ideal-dark-text: #1A202C;
--ideal-medium-text: #4A5568;
--ideal-light-text: #718096;
--ideal-accent-yellow: #FFEB3B;
--ideal-border: #E2E8F0;
--ideal-hover: rgba(55, 91, 220, 0.1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
background-color: var(--ideal-white);
line-height: 1.6;
}
/* Header Styling */
.brand-header {
background: linear-gradient(135deg, var(--ideal-primary-blue) 0%, #4F6EFF 100%);
color: var(--ideal-white);
padding: 2rem 0;
box-shadow: 0 4px 20px rgba(55, 91, 220, 0.15);
}
.header-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 2rem;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 1rem;
}
.logo-section {
display: flex;
align-items: center;
gap: 1rem;
}
.logo {
width: 40px;
height: 40px;
background: var(--ideal-white);
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
color: var(--ideal-primary-blue);
font-size: 1.5rem;
}
.header-content h1 {
font-size: 1.75rem;
font-weight: 600;
margin: 0;
letter-spacing: -0.025em;
}
.header-content p {
font-size: 1rem;
margin: 0.25rem 0 0 0;
opacity: 0.9;
font-weight: 400;
}
.header-links {
display: flex;
gap: 1rem;
align-items: center;
}
.header-link {
color: var(--ideal-white);
text-decoration: none;
padding: 0.5rem 1rem;
border-radius: 6px;
font-weight: 500;
transition: all 0.2s ease;
background: rgba(255, 255, 255, 0.1);
font-size: 0.875rem;
}
.header-link:hover {
background: rgba(255, 255, 255, 0.2);
transform: translateY(-1px);
}
.header-link.primary {
background: var(--ideal-accent-yellow);
color: var(--ideal-dark-text);
}
.header-link.primary:hover {
background: #FFED4E;
color: var(--ideal-dark-text);
}
/* API Documentation Container */
.api-container {
max-width: 1400px;
margin: 0 auto;
background: var(--ideal-white);
min-height: calc(100vh - 140px);
}
/* Footer */
.brand-footer {
background: var(--ideal-dark-bg);
color: var(--ideal-white);
padding: 2rem 0;
margin-top: 3rem;
}
.footer-container {
max-width: 1200px;
margin: 0 auto;
padding: 0 2rem;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 2rem;
}
.footer-section h3 {
font-size: 1rem;
font-weight: 600;
margin-bottom: 1rem;
color: var(--ideal-white);
}
.footer-section a {
color: #CBD5E0;
text-decoration: none;
display: block;
margin-bottom: 0.5rem;
font-size: 0.875rem;
transition: color 0.2s ease;
}
.footer-section a:hover {
color: var(--ideal-white);
}
.footer-bottom {
border-top: 1px solid #4A5568;
margin-top: 2rem;
padding-top: 1rem;
text-align: center;
color: #CBD5E0;
font-size: 0.875rem;
}
/* Responsive Design */
@media (max-width: 768px) {
.header-container {
flex-direction: column;
text-align: center;
}
.header-content h1 {
font-size: 1.5rem;
}
.header-links {
flex-wrap: wrap;
justify-content: center;
}
.footer-container {
grid-template-columns: 1fr;
text-align: center;
}
}
/* Custom RapiDoc Styling */
rapi-doc {
--bg-color: #FFFFFF;
--text-color: #1A202C;
--header-color: #2D3748;
--primary-color: #375BDC;
--nav-bg-color: #F7FAFC;
--nav-text-color: #2D3748;
--nav-hover-bg-color: rgba(55, 91, 220, 0.1);
--nav-hover-text-color: #375BDC;
--nav-accent-color: #375BDC;
--border-color: #E2E8F0;
--code-bg-color: #F7FAFC;
--input-bg-color: #FFFFFF;
--font-regular: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
--font-mono: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;
}
</style>
</head>
<body>
<header class="brand-header">
<div class="header-container">
<div class="logo-section">
<div class="logo">IP</div>
<div class="header-content">
<h1>API Documentation</h1>
<p>Address validation & postcode lookup services</p>
</div>
</div>
<div class="header-links">
<a href="https://docs.ideal-postcodes.co.uk" class="header-link">Documentation</a>
<a href="https://ideal-postcodes.co.uk/support" class="header-link">Support</a>
<a href="https://account.ideal-postcodes.co.uk/users/sign_up" class="header-link primary">Start Free Trial</a>
</div>
</div>
</header>
<div class="api-container">
<rapi-doc spec-url="https://openapi.ideal-postcodes.co.uk/openapi.yaml" theme="light" bg-color="#FFFFFF"
text-color="#1A202C" primary-color="#375BDC" regular-font="Inter" show-header="false" show-info="true"
allow-authentication="true" allow-server-selection="false" allow-api-list-style-selection="false"
nav-item-spacing="relaxed" response-area-height="500px" render-style="focused" schema-style="table"
schema-expand-level="2" default-schema-tab="schema" persist-auth="true" fill-request-fields-with-example="true"
sort-tags="false" match-type="includes" nav-bg-color="#F7FAFC" nav-text-color="#2D3748"
nav-hover-bg-color="rgba(55, 91, 220, 0.1)" nav-hover-text-color="#375BDC" nav-accent-color="#375BDC"> </rapi-doc>
</div>
<footer class="brand-footer">
<div class="footer-container">
<div class="footer-section">
<h3>Ideal Postcodes</h3>
<a href="https://ideal-postcodes.co.uk">Website</a>
<a href="https://account.ideal-postcodes.co.uk/login">Account Login</a>
<a href="https://ideal-postcodes.co.uk/pricing">Pricing</a>
<a href="https://status.ideal-postcodes.co.uk">Status Page</a>
</div>
<div class="footer-section">
<h3>Developers</h3>
<a href="https://docs.ideal-postcodes.co.uk">Documentation</a>
<a href="https://docs.ideal-postcodes.co.uk/docs/api">API Reference</a>
<a href="https://github.com/ideal-postcodes">GitHub</a>
<a href="https://docs.ideal-postcodes.co.uk/docs/integrations">Integrations</a>
</div>
<div class="footer-section">
<h3>Support</h3>
<a href="https://ideal-postcodes.co.uk/support">Contact Support</a>
<a href="https://docs.ideal-postcodes.co.uk/docs/guides">Guides</a>
<a href="https://blog.ideal-postcodes.co.uk/">Blog</a>
<a href="https://terms.ideal-postcodes.co.uk">Terms of Service</a>
</div>
</div>
<div class="footer-bottom">
<p>© 2025 IDDQD Limited. All rights reserved.</p>
</div>
</footer>
</body>
</html>