🧩 This API leverages a robust security mechanism involving HMAC-based request signing, timestamping, unique request identification (nonce), and idempotency keys. These mechanisms collectively ensure the integrity, authenticity, and non-replayability of client requests, as well as safe handling of duplicate submissions.📘 This documentation explains each mechanism, their purposes, and how to implement the required client logic (e.g., in Postman or custom API clients).
🔑 An HMAC (Hash-based Message Authentication Code) is a cryptographic signature generated using a shared secret and the request data. It ensures that the request cannot be tampered with, and its sender can be authenticated.
The client constructs a string to sign, concatenating the HTTP method, full request path (including query), current timestamp in epoch milliseconds, and resolved request body 🧾:
Anti-Replay 🔁: Further prevents request replay by uniquely identifying each request. Even if method, URI, and body are the same, the nonce will differ.
🪪 A unique identifier (UUID v4) for each request, enabling the server to recognize and safely ignore duplicate submissions (e.g., from retrying a POST request).
The secret used for HMAC must never be shared or exposed in client code or documentation 🔐.
Always use HTTPS to prevent man-in-the-middle attacks 🌐.
Servers enforce a maximum allowable time skew for the X-Timestamp and reject used/replayed X-Nonce or X-Idempotency-Key values within a certain window ⛔.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"iklim.co API Documentation","colors":{"primary":"#0066FF","light":"#cce0ff","dark":"#0552c8"},"logo":{"light":"https://mintcdn.com/iklimco/LsrMAyjk3mTN665c/logo/logo-primary.svg?fit=max\u0026auto=format\u0026n=LsrMAyjk3mTN665c\u0026q=85\u0026s=91b7252444bc2f59317716cac1669e20","dark":"https://mintcdn.com/iklimco/LsrMAyjk3mTN665c/logo/logo-white.svg?fit=max\u0026auto=format\u0026n=LsrMAyjk3mTN665c\u0026q=85\u0026s=9da1fec16b3ebbccaf5b1eff6175e5e7"},"favicon":"https://mintcdn.com/iklimco/_DMLSo5goc8NgvQb/favicon.ico?fit=max\u0026auto=format\u0026n=_DMLSo5goc8NgvQb\u0026q=85\u0026s=8d9e76919402195bfd85a160afcc075a","api":{"playground":{"display":"simple"}},"navbar":{"links":[{"href":"mailto:info@iklim.co","label":"Support"}],"primary":{"type":"button","label":"Production Status","href":"https://uptime.tarla.io/status/iklim-prod-ops"}},"footer":{"socials":{"x":"https://x.com/iklimco","github":"https://github.com/iklim-co","linkedin":"https://www.linkedin.com/company/iklim.co"}},"styling":{"eyebrows":"breadcrumbs","latex":false},"navigation":{"global":{"anchors":[]},"languages":[{"language":"en","href":"before-start/en/introduction"},{"language":"tr","href":"before-start/tr/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"iklimco","hasAudioNarration":false,"actualSubdomain":"iklimco","customDomains":["api-docs.iklim.co"],"gitSource":{"type":"github","owner":"iklim-co","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac64fb15f9d0a6c52acadc1","collectionId":"3749f3e5-ba3e-439b-9a12-b053149e2302","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac64fb15f9d0a6c52acadc1"},"entitlements":{},"buildId":"6ac64fb15f9d0a6c52acadc1","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"en","tag":"Auth \u0026 User APIs","count":13},{"language":"tr","tag":"Kimlik Doğrulama \u0026 Kullanıcılar","count":13},{"language":"en","tag":"Region Alarm API","count":12},{"language":"en","tag":"Geo Alarm Registrations","count":12},{"language":"tr","tag":"Coğrafi Alan Alarm API","count":12},{"language":"tr","tag":"Coğrafi Alarm Kayıtları","count":12},{"language":"en","tag":"Forecast Alarm API","count":10},{"language":"en","tag":"Forecast Point Alarm Registrations","count":10},{"language":"tr","tag":"Tahnin Alarm API","count":10},{"language":"tr","tag":"Tahmin Nokta Alarm Kayıtları","count":10},{"language":"en","tag":"User Service","count":9},{"language":"tr","tag":"Kullanıcı Servisi","count":9},{"language":"en","tag":"Accounts API","count":8},{"language":"en","tag":"User Accounts Service","count":8},{"language":"tr","tag":"Hesaplar","count":8},{"language":"tr","tag":"Kullanıcı Hesapları Servisi","count":8},{"language":"en","tag":"Precipitation API","count":7},{"language":"en","tag":"Point Alarm API","count":6},{"language":"tr","tag":"Nokta Alarm API","count":6},{"language":"tr","tag":"Nokta Alarmları","count":6}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html.dark[data-current-path^=\"/api-reference/\"] #content-area header .prose pre.shiki{background-color:var(--shiki-dark-bg, #0b0c0e)!important;color:var(--shiki-dark, #d4d4d4)!important}"}],"page":{"pagePath":"before-start/en/introduction","slug":"/before-start/en/introduction","pageMetadata":{"title":"API Security","icon":"shield-halved","description":"This page provides important information about the details you need to know before making API requests.","href":"/before-start/en/introduction"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"This page provides important information about the details you need to know before making API requests.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Card,CodeBlock,Heading,Icon,Table,Warning}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Icon)_missingMdxReference(`Icon`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`secure-api-request-signing-and-idempotency-mechanism`,children:`Secure API Request Signing and Idempotency Mechanism`}),`\n`,_jsx(Heading,{level:`2`,id:`overview`,children:`Overview`}),`\n`,_jsxs(_components.p,{children:[`🧩 This API leverages a robust security mechanism involving `,_jsx(_components.strong,{children:`HMAC-based request signing, timestamping, unique request identification (nonce)`}),`, and `,_jsx(_components.strong,{children:`idempotency keys`}),`. These mechanisms collectively ensure the integrity, authenticity, and non-replayability of client requests, as well as safe handling of duplicate submissions.`]}),`\n`,_jsx(_components.p,{children:`📘 This documentation explains each mechanism, their purposes, and how to implement the required client logic (e.g., in Postman or custom API clients).`}),`\n`,_jsxs(Heading,{level:`2`,id:`1-hmac-signature-x-signature-header`,children:[`1. HMAC Signature (`,_jsx(_components.code,{children:`X-Signature`}),` Header)`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-is-it`,children:`What is it?`}),`\n`,_jsxs(_components.p,{children:[`🔑 An `,_jsx(_components.strong,{children:`HMAC (Hash-based Message Authentication Code)`}),` is a cryptographic signature generated using a shared secret and the request data. It ensures that the request cannot be tampered with, and its sender can be authenticated.`]}),`\n`,_jsx(Heading,{level:`3`,id:`purpose`,children:`Purpose`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Integrity 🛡️:`}),` Detects if any part of the request (method, URI, body, timestamp) has been altered.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Authentication 🔐:`}),` Confirms the request is from a trusted client who knows the secret key.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Anti-Replay ♻️:`}),` Tied to a timestamp and unique values, making replay attacks detectable.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-is-it-used`,children:`How is it used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The client constructs a string to sign, concatenating the HTTP method, full request path (including query), current timestamp `,_jsx(_components.em,{children:_jsx(_components.strong,{children:`in epoch milliseconds`})}),`, and resolved request body 🧾:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`ini`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ini`,children:_jsxs(_components.code,{language:`ini`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`dataToSign`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = HTTP_METHOD + `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"|\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` + PATH_WITH_QUERY + `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"|\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` + TIMESTAMP + `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"|\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` + BODY`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The client generates the HMAC SHA256 signature using the shared secret (kept in a secure vault, `,_jsx(_components.strong,{children:`never exposed`}),`) 🔒:`]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`ini`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ini`,children:_jsxs(_components.code,{language:`ini`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`X-Signature`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` = HMAC_SHA256(secret, dataToSign)`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`This signature is sent in the request header `,_jsx(_components.code,{children:`X-Signature`}),` 🚀.`]}),`\n`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`⚠️ Please ask us `,_jsx(_components.strong,{children:`HMAC Secret`}),` before making your first API call.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-not-used`,children:`What if not used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`400 - Bad Request`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:58:10.414972912\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bad Request\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Missing signature, timestamp, or nonce headers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/auth/login\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-signature-is-not-valid`,children:`What if signature is not valid?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`401 - Unauthorized`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:57:50.083970026\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`401`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Unauthorized\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Invalid request signature\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/auth/login\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Heading,{level:`2`,id:`2-timestamp-x-timestamp-header`,children:[`2. Timestamp (`,_jsx(_components.code,{children:`X-Timestamp`}),` Header)`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-is-it-2`,children:`What is it?`}),`\n`,_jsx(_components.p,{children:`⏱️ The Unix timestamp (in milliseconds) at the moment the request is generated.`}),`\n`,_jsx(Heading,{level:`3`,id:`purpose-2`,children:`Purpose`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Anti-Replay 🛑:`}),` Prevents an attacker from reusing a previously valid request, since the server can enforce strict time windows for valid requests.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-is-it-used-2`,children:`How is it used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The client generates the timestamp just before sending the request and includes it as the `,_jsx(_components.code,{children:`X-Timestamp`}),` header ⌚.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-not-used-2`,children:`What if not used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`400 - Bad Request`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:58:10.414972912\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bad Request\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Missing signature, timestamp, or nonce headers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/auth/login\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Heading,{level:`2`,id:`3-nonce-x-nonce-header`,children:[`3. Nonce (`,_jsx(_components.code,{children:`X-Nonce`}),` Header)`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-is-it-3`,children:`What is it?`}),`\n`,_jsxs(_components.p,{children:[`🎲 A `,_jsx(_components.strong,{children:`nonce`}),` is a randomly generated unique identifier (UUID v4) included in each request.`]}),`\n`,_jsx(Heading,{level:`3`,id:`purpose-3`,children:`Purpose`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Anti-Replay 🔁:`}),` Further prevents request replay by uniquely identifying each request. Even if method, URI, and body are the same, the nonce will differ.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-is-it-used-3`,children:`How is it used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The client generates a new UUID v4 for every request and includes it as the `,_jsx(_components.code,{children:`X-Nonce`}),` header 🎯.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-not-used-3`,children:`What if not used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`400 - Bad Request`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:58:10.414972912\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bad Request\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Missing signature, timestamp, or nonce headers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/auth/login\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-re-used`,children:`What if re-used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`409 - Conflict`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:57:21.168927321\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`409`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Conflict\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Replay attack detected (nonce reused)\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/endpoint/uri/here\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(Heading,{level:`2`,id:`4-idempotency-key-x-idempotency-key-header`,children:[`4. Idempotency Key (`,_jsx(_components.code,{children:`X-Idempotency-Key`}),` Header)`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-is-it-4`,children:`What is it?`}),`\n`,_jsxs(_components.p,{children:[`🪪 A `,_jsx(_components.strong,{children:`unique identifier`}),` (UUID v4) for each request, enabling the server to recognize and safely ignore duplicate submissions (e.g., from retrying a POST request).`]}),`\n`,_jsx(Heading,{level:`3`,id:`purpose-4`,children:`Purpose`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Idempotency 🔂:`}),` Guarantees that retrying a request due to network errors will not result in duplicate resource creation or side effects.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`how-is-it-used-4`,children:`How is it used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The client generates a new UUID v4 for each operation and sends it as the `,_jsx(_components.code,{children:`X-Idempotency-Key`}),` header 📮.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-not-used-4`,children:`What if not used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`400 - Bad Request`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:26:54.203118461\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`400`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Bad Request\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Missing X-Idempotency-Key header\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/endpoint/uri/here\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`what-if-re-used-2`,children:`What if re-used?`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Client will receive an error message with http status `,_jsx(_components.code,{children:`409 - Conflict`})]}),`\n`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"timestamp\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2025-04-14T16:56:28.671809875\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`409`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"error\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Conflict\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Duplicate request detected (X-Idempotency-Key)\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"/endpoint/uri/here\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Card,{title:`Security Considerations`,icon:`shield-halved`,children:_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`secret`}),` used for HMAC `,_jsx(_components.strong,{children:`must never be shared or exposed in client code or documentation`}),` 🔐.`]}),`\n`,_jsx(_components.li,{children:`Always use HTTPS to prevent man-in-the-middle attacks 🌐.`}),`\n`,_jsxs(_components.li,{children:[`Servers enforce a maximum allowable time skew for the `,_jsx(_components.code,{children:`X-Timestamp`}),` and reject used/replayed `,_jsx(_components.code,{children:`X-Nonce`}),` or `,_jsx(_components.code,{children:`X-Idempotency-Key`}),` values within a certain window ⛔.`]}),`\n`]})}),`\n`,_jsx(Card,{title:`Example Headers`,icon:`table-list`,children:_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`ini`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`ini`,children:_jsxs(_components.code,{language:`ini`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`X-Signature: 75c759570bbb5dfd40136cffd3dbaa51b28d4620e51359161686790adcc53bea`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`X-Timestamp: 1752751106704`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`X-Nonce: 684a0dca-bd6a-4056-a449-2567f9847f9c`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`X-Idempotency-Key: 777edc03-ad49-4c17-be6b-9baf05a1b9e0`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`summary-table-`,children:`Summary Table 📊`}),`\n`,_jsx(Icon,{icon:`table-cells`,size:32}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header`}),_jsx(_components.th,{children:`Value/Format`}),_jsx(_components.th,{children:`Purpose`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`X-Signature`}),_jsx(_components.td,{children:`Hexadecimal string`}),_jsx(_components.td,{children:`Request authenticity/integrity`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`X-Timestamp`}),_jsx(_components.td,{children:`Milliseconds since epoch`}),_jsx(_components.td,{children:`Prevent replay`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`X-Nonce`}),_jsx(_components.td,{children:`UUID v4`}),_jsx(_components.td,{children:`Uniqueness/anti-replay`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`X-Idempotency-Key`}),_jsx(_components.td,{children:`UUID v4`}),_jsx(_components.td,{children:`Idempotency for retries`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"API Security","icon":"shield-halved","description":"This page provides important information about the details you need to know before making API requests.","href":"/before-start/en/introduction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Secure API Request Signing and Idempotency Mechanism","slug":"secure-api-request-signing-and-idempotency-mechanism","depth":1,"children":[]},{"title":"Overview","slug":"overview","depth":2,"children":[]},{"title":"1. HMAC Signature (X-Signature Header)","slug":"1-hmac-signature-x-signature-header","depth":2,"children":[{"title":"What is it?","slug":"what-is-it","depth":3,"children":[]},{"title":"Purpose","slug":"purpose","depth":3,"children":[]},{"title":"How is it used?","slug":"how-is-it-used","depth":3,"children":[]},{"title":"What if not used?","slug":"what-if-not-used","depth":3,"children":[]},{"title":"What if signature is not valid?","slug":"what-if-signature-is-not-valid","depth":3,"children":[]}]},{"title":"2. Timestamp (X-Timestamp Header)","slug":"2-timestamp-x-timestamp-header","depth":2,"children":[{"title":"What is it?","slug":"what-is-it-2","depth":3,"children":[]},{"title":"Purpose","slug":"purpose-2","depth":3,"children":[]},{"title":"How is it used?","slug":"how-is-it-used-2","depth":3,"children":[]},{"title":"What if not used?","slug":"what-if-not-used-2","depth":3,"children":[]}]},{"title":"3. Nonce (X-Nonce Header)","slug":"3-nonce-x-nonce-header","depth":2,"children":[{"title":"What is it?","slug":"what-is-it-3","depth":3,"children":[]},{"title":"Purpose","slug":"purpose-3","depth":3,"children":[]},{"title":"How is it used?","slug":"how-is-it-used-3","depth":3,"children":[]},{"title":"What if not used?","slug":"what-if-not-used-3","depth":3,"children":[]},{"title":"What if re-used?","slug":"what-if-re-used","depth":3,"children":[]}]},{"title":"4. Idempotency Key (X-Idempotency-Key Header)","slug":"4-idempotency-key-x-idempotency-key-header","depth":2,"children":[{"title":"What is it?","slug":"what-is-it-4","depth":3,"children":[]},{"title":"Purpose","slug":"purpose-4","depth":3,"children":[]},{"title":"How is it used?","slug":"how-is-it-used-4","depth":3,"children":[]},{"title":"What if not used?","slug":"what-if-not-used-4","depth":3,"children":[]},{"title":"What if re-used?","slug":"what-if-re-used-2","depth":3,"children":[]},{"title":"Summary Table 📊","slug":"summary-table-","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"iklimco","siteName":"iklim.co API Documentation","title":"API Security - iklim.co API Documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/before-start/en/introduction","matchLevel":0},"tr":{"href":"/before-start/tr/introduction","matchLevel":1}}},"lastModified":"2026-09-20T16:17:50.974Z","originalFileLocation":"before-start/en/introduction.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"This page provides important information about the details you need to know before making API requests.\">\u003cmeta data-mint-head name=\"application-name\" content=\"iklim.co API Documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"API Security - iklim.co API Documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"This page provides important information about the details you need to know before making API requests.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"iklim.co API Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://api-docs.iklim.co/before-start/en/introduction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://iklimco.mintlify.app/_mintlify/api/og/v2?division=Before+You+Start\u0026amp;title=API+Security\u0026amp;description=This+page+provides+important+information+about+the+details+you+need+to+know+before+making+API+requests.\u0026amp;theme=393d0c1a864ee38939794074\u0026amp;signature=bd66aca4a4c5c63dabf05f3b7433e4ba7582ce47d6a507cf72b99cfbae40d28d\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"API Security - iklim.co API Documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"This page provides important information about the details you need to know before making API requests.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://iklimco.mintlify.app/_mintlify/api/og/v2?division=Before+You+Start\u0026amp;title=API+Security\u0026amp;description=This+page+provides+important+information+about+the+details+you+need+to+know+before+making+API+requests.\u0026amp;theme=393d0c1a864ee38939794074\u0026amp;signature=bd66aca4a4c5c63dabf05f3b7433e4ba7582ce47d6a507cf72b99cfbae40d28d\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/iklimco/s7XYvTG33QJSx4wx/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"iklim.co API Documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0066FF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://api-docs.iklim.co/before-start/en/introduction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/before-start/en/introduction.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://api-docs.iklim.co/before-start/en/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"tr\" href=\"https://api-docs.iklim.co/before-start/tr/introduction\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://api-docs.iklim.co/before-start/en/introduction\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://api-docs.iklim.co/#organization\",\"name\":\"iklim.co API Documentation\",\"url\":\"https://api-docs.iklim.co\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/iklimco/LsrMAyjk3mTN665c/logo/logo-primary.svg?fit=max\u0026auto=format\u0026n=LsrMAyjk3mTN665c\u0026q=85\u0026s=91b7252444bc2f59317716cac1669e20\"}},{\"@type\":\"WebSite\",\"@id\":\"https://api-docs.iklim.co#website\",\"name\":\"iklim.co API Documentation\",\"url\":\"https://api-docs.iklim.co\",\"publisher\":{\"@id\":\"https://api-docs.iklim.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://api-docs.iklim.co/before-start/en/introduction#webpage\",\"url\":\"https://api-docs.iklim.co/before-start/en/introduction\",\"name\":\"API Security\",\"description\":\"This page provides important information about the details you need to know before making API requests.\",\"dateModified\":\"2026-09-20T16:17:50.974Z\",\"isPartOf\":{\"@id\":\"https://api-docs.iklim.co#website\"},\"breadcrumb\":{\"@id\":\"https://api-docs.iklim.co/before-start/en/introduction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api-docs.iklim.co/before-start/en/introduction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"iklim.co API Documentation\",\"item\":\"https://api-docs.iklim.co\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API Security\",\"item\":\"https://api-docs.iklim.co/before-start/en/introduction\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://api-docs.iklim.co/before-start/en/introduction#article\",\"headline\":\"API Security\",\"name\":\"API Security\",\"description\":\"This page provides important information about the details you need to know before making API requests.\",\"url\":\"https://api-docs.iklim.co/before-start/en/introduction\",\"mainEntityOfPage\":{\"@id\":\"https://api-docs.iklim.co/before-start/en/introduction#webpage\"},\"dateModified\":\"2026-09-20T16:17:50.974Z\",\"publisher\":{\"@id\":\"https://api-docs.iklim.co/#organization\"},\"isPartOf\":{\"@id\":\"https://api-docs.iklim.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"iklim.co API Documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"iklim.co API Documentation","nav":{"global":{"anchors":[]},"languages":[{"language":"en","groups":[{"group":"Before You Start","icon":"book","pages":[{"title":"API Security","icon":"shield-halved","href":"/before-start/en/introduction"},{"title":"Authentication","icon":"fingerprint","description":"Authentication guarantees privacy of API Services by authenticating users. Authentication requires users to log in before accessing iklim.co API Services. This guide covers setup for each available handshake method.","href":"/before-start/en/authentication"},{"title":"User Settings","icon":"circle-user","href":"/before-start/en/final-briefing"}]},{"group":"Webhook Alarms","icon":"comment-dots","pages":[{"title":"Webhook Endpoint Guide","icon":"server","href":"/webhook-messages/en/webhook-endpoint-guide"},{"title":"Lightning Notification","icon":"cloud-bolt","href":"/webhook-messages/en/lightning"},{"title":"Thunderstorm Notification","icon":"hurricane","href":"/webhook-messages/en/thunderstorm"},{"title":"Precipitation Notification","icon":"cloud-rain","href":"/webhook-messages/en/precipitation"},{"title":"Forecast Notification","icon":"cloud-sun","href":"/webhook-messages/en/forecast"}]},{"group":"MCP Server","icon":"robot","tag":"NEW","pages":[{"title":"MCP Server","icon":"robot","href":"/pages/en/mcp-server"}]},{"group":"Auth \u0026 User APIs","icon":"user-lock","pages":[{"group":"User Service","pages":[{"title":"Password Reset Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/users/password-reset","href":"/api-reference/user-service/password-reset-operation"},{"title":"Password Reset Request Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/users/password-reset-request","href":"/api-reference/user-service/password-reset-request-operation"},{"title":"Pageable User Listing Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/users/page","href":"/api-reference/user-service/pageable-user-listing-operation"},{"title":"New User Creation Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/users/create","href":"/api-reference/user-service/new-user-creation-operation"},{"title":"Change Password Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/users/change-password","href":"/api-reference/user-service/change-password-operation"},{"title":"User Update Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json patch /v1/users/update","href":"/api-reference/user-service/user-update-operation"},{"title":"Get User Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json get /v1/users/{userId}","href":"/api-reference/user-service/get-user-operation"},{"title":"User Unblocking Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json get /v1/users/unblock/{userId}","href":"/api-reference/user-service/user-unblocking-operation"},{"title":"Get Own User Information Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json get /v1/users/me","href":"/api-reference/user-service/get-own-user-information-operation"}]},{"group":"Authentication Service","pages":[{"title":"New User Registration","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/auth/register","href":"/api-reference/authentication-service/new-user-registration"},{"title":"Authentication Token Refresh Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/auth/refresh","href":"/api-reference/authentication-service/authentication-token-refresh-operation"},{"title":"Logout Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/auth/logout","href":"/api-reference/authentication-service/logout-operation"},{"title":"Login Operation","deprecated":null,"version":null,"openapi":"/open-api/en/auth-version-1.json post /v1/auth/login","href":"/api-reference/authentication-service/login-operation"}]}]},{"group":"Accounts API","icon":"id-card","pages":[{"group":"User Accounts Service","pages":[{"title":"Update Subscription Plan","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json post /v1/accounts/update-subscription","href":"/api-reference/user-accounts-service/update-subscription-plan"},{"title":"Request Phone Number Activation","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json post /v1/accounts/phone-number-activation-request","href":"/api-reference/user-accounts-service/request-phone-number-activation"},{"title":"Create Account","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json post /v1/accounts/create","href":"/api-reference/user-accounts-service/create-account"},{"title":"Request Account Activation","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json post /v1/accounts/account-activation-request","href":"/api-reference/user-accounts-service/request-account-activation"},{"title":"Update Account","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json patch /v1/accounts/update","href":"/api-reference/user-accounts-service/update-account"},{"title":"Get Account Details","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json get /v1/accounts/{userId}","href":"/api-reference/user-accounts-service/get-account-details"},{"title":"Activate Phone Number","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json get /v1/accounts/activate-phone-number","href":"/api-reference/user-accounts-service/activate-phone-number"},{"title":"Activate Account","deprecated":null,"version":null,"openapi":"/open-api/en/accounts-version-1.json get /v1/accounts/activate-account","href":"/api-reference/user-accounts-service/activate-account"}]}]},{"group":"Lightning API","icon":"cloud-bolt","pages":[{"group":"Lightning Service","pages":[{"title":"Within Operation","deprecated":null,"version":null,"openapi":"/open-api/en/lightnings_version-1.json post /v1/lightnings/within","href":"/api-reference/lightning-service/within-operation"},{"title":"Page Operation","deprecated":null,"version":null,"openapi":"/open-api/en/lightnings_version-1.json post /v1/lightnings/page","href":"/api-reference/lightning-service/page-operation"}]}]},{"group":"Thunderstorm API","icon":"hurricane","pages":[{"group":"Thunderstorm Service","pages":[{"title":"Thunderstorm List (Within Radius)","deprecated":null,"version":null,"openapi":"/open-api/en/thunderstorms_version-1.json post /v1/thunderstorms/within","href":"/api-reference/thunderstorm-service/thunderstorm-list-within-radius"},{"title":"Thunderstorm List (Paged)","deprecated":null,"version":null,"openapi":"/open-api/en/thunderstorms_version-1.json post /v1/thunderstorms/page","href":"/api-reference/thunderstorm-service/thunderstorm-list-paged"},{"title":"Get Thunderstorm Details","deprecated":null,"version":null,"openapi":"/open-api/en/thunderstorms_version-1.json post /v1/thunderstorms/get","href":"/api-reference/thunderstorm-service/get-thunderstorm-details"}]}]},{"group":"Precipitation API","icon":"cloud-rain","tag":"UPDATED","pages":[{"title":"Precipitation Geometry","icon":"draw-polygon","tag":"NEW","href":"/pages/en/precipitation-geometry"},{"group":"Precipitation API","pages":[{"title":"Within Operation","deprecated":null,"version":null,"openapi":"/open-api/en/precipitations_version-1.json post /v1/precipitations/within","href":"/api-reference/precipitation-api/within-operation"},{"title":"Page Operation","deprecated":null,"version":null,"openapi":"/open-api/en/precipitations_version-1.json post /v1/precipitations/page","href":"/api-reference/precipitation-api/page-operation"},{"title":"Geometry Operation","deprecated":null,"version":null,"openapi":"/open-api/en/precipitations_version-1.json post /v1/precipitations/geometry","href":"/api-reference/precipitation-api/geometry-operation"}]}]},{"group":"Forecast API","icon":"cloud-sun","tag":"","pages":[{"group":"Forecast Service","pages":[{"title":"Hourly Forecast Operation","deprecated":null,"version":null,"openapi":"/open-api/en/forecasts_version-1.json post /v1/forecasts/hourly","href":"/api-reference/forecast-service/hourly-forecast-operation"},{"title":"Daily Forecast Operation","deprecated":null,"version":null,"openapi":"/open-api/en/forecasts_version-1.json post /v1/forecasts/daily","href":"/api-reference/forecast-service/daily-forecast-operation"},{"title":"Current Forecast Operation","deprecated":null,"version":null,"openapi":"/open-api/en/forecasts_version-1.json post /v1/forecasts/current","href":"/api-reference/forecast-service/current-forecast-operation"}]},{"group":"Weather Icons","pages":[{"title":"Get Weather Icon","deprecated":null,"version":null,"openapi":"/open-api/en/forecasts_version-1.json get /v1/weather-icons/{dayOrNight}/{iconName}","href":"/api-reference/weather-icons/get-weather-icon"}]}]},{"group":"Point Alarm API","icon":"map-pin","tag":"","pages":[{"group":"Point Alarms","pages":[{"title":"Create a point alarm registration","deprecated":null,"version":null,"openapi":"/open-api/en/point-alarm_version-1.json post /v1/alarms/points/register","href":"/api-reference/point-alarms/create-a-point-alarm-registration"},{"title":"List point alarm registrations (paged)","deprecated":null,"version":null,"openapi":"/open-api/en/point-alarm_version-1.json post /v1/alarms/points/page","href":"/api-reference/point-alarms/list-point-alarm-registrations-paged"},{"title":"Update a point alarm registration","deprecated":null,"version":null,"openapi":"/open-api/en/point-alarm_version-1.json patch /v1/alarms/points/update","href":"/api-reference/point-alarms/update-a-point-alarm-registration"},{"title":"List registrations by recipientId","deprecated":null,"version":null,"openapi":"/open-api/en/point-alarm_version-1.json get /v1/alarms/points/get-by-recipient-id/{recipientId}","href":"/api-reference/point-alarms/list-registrations-by-recipientid"},{"title":"Get registration by ID","deprecated":null,"version":null,"openapi":"/open-api/en/point-alarm_version-1.json get /v1/alarms/points/get-by-id/{registrationId}","href":"/api-reference/point-alarms/get-registration-by-id"},{"title":"Delete (unregister) a point alarm registration","deprecated":null,"version":null,"openapi":"/open-api/en/point-alarm_version-1.json delete /v1/alarms/points/unregister/{registrationId}","href":"/api-reference/point-alarms/delete-unregister-a-point-alarm-registration"}]}]},{"group":"Region Alarm API","icon":"vector-square","tag":"","pages":[{"group":"Geo Alarm Registrations","pages":[{"title":"Create registration","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json post /v1/alarms/geometries/register","href":"/api-reference/geo-alarm-registrations/create-registration"},{"title":"List registrations (paged)","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json post /v1/alarms/geometries/page","href":"/api-reference/geo-alarm-registrations/list-registrations-paged"},{"title":"Update registration","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json patch /v1/alarms/geometries/update","href":"/api-reference/geo-alarm-registrations/update-registration"},{"title":"List cities","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/{countryCode}/cities","href":"/api-reference/geo-alarm-registrations/list-cities"},{"title":"List neighbourhoods","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/neighborhoods/{districtId}","href":"/api-reference/geo-alarm-registrations/list-neighbourhoods"},{"title":"Get neighbourhood","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/neighborhood/{neighborhoodId}","href":"/api-reference/geo-alarm-registrations/get-neighbourhood"},{"title":"Get by recipient ID","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/get-by-recipient-id/{recipientId}","href":"/api-reference/geo-alarm-registrations/get-by-recipient-id"},{"title":"Get by registration ID","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/get-by-id/{registrationId}","href":"/api-reference/geo-alarm-registrations/get-by-registration-id"},{"title":"List districts","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/districts/{cityId}","href":"/api-reference/geo-alarm-registrations/list-districts"},{"title":"Get district","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/district/{districtId}","href":"/api-reference/geo-alarm-registrations/get-district"},{"title":"Get city","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json get /v1/alarms/geometries/city/{cityId}","href":"/api-reference/geo-alarm-registrations/get-city"},{"title":"Delete registration","deprecated":null,"version":null,"openapi":"/open-api/en/geo-alarm_version-1.json delete /v1/alarms/geometries/unregister/{registrationId}","href":"/api-reference/geo-alarm-registrations/delete-registration"}]}]},{"group":"Forecast Alarm API","icon":"location-dot","pages":[{"group":"Forecast Point Alarm Registrations","pages":[{"title":"Create registration","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json post /v1/alarms/forecasts/register","href":"/api-reference/forecast-point-alarm-registrations/create-registration"},{"title":"List registrations (paged)","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json post /v1/alarms/forecasts/page","href":"/api-reference/forecast-point-alarm-registrations/list-registrations-paged"},{"title":"Update registration","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json patch /v1/alarms/forecasts/update","href":"/api-reference/forecast-point-alarm-registrations/update-registration"},{"title":"List cities","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json get /v1/alarms/forecasts/{countryCode}/cities","href":"/api-reference/forecast-point-alarm-registrations/list-cities"},{"title":"Get by recipient ID","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json get /v1/alarms/forecasts/get-by-recipient-id/{recipientId}","href":"/api-reference/forecast-point-alarm-registrations/get-by-recipient-id"},{"title":"Get by registration ID","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json get /v1/alarms/forecasts/get-by-id/{registrationId}","href":"/api-reference/forecast-point-alarm-registrations/get-by-registration-id"},{"title":"List districts","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json get /v1/alarms/forecasts/districts/{cityId}","href":"/api-reference/forecast-point-alarm-registrations/list-districts"},{"title":"Get district","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json get /v1/alarms/forecasts/district/{districtId}","href":"/api-reference/forecast-point-alarm-registrations/get-district"},{"title":"Get city","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json get /v1/alarms/forecasts/city/{cityId}","href":"/api-reference/forecast-point-alarm-registrations/get-city"},{"title":"Delete registration","deprecated":null,"version":null,"openapi":"/open-api/en/forecast-alarm_version-1.json delete /v1/alarms/forecasts/unregister/{registrationId}","href":"/api-reference/forecast-point-alarm-registrations/delete-registration"}]}]},{"group":"Enroute API","icon":"route","tag":"NEW","pages":[{"title":"Service Details","icon":"route","tag":"NEW","href":"/pages/en/enroute"},{"group":"Enroute","pages":[{"title":"Get route weather","deprecated":null,"version":null,"openapi":"/open-api/en/enroute_version-1.json post /v1/enroute/weather","href":"/api-reference/enroute/get-route-weather"},{"title":"Register a route","deprecated":null,"version":null,"openapi":"/open-api/en/enroute_version-1.json post /v1/enroute/register","href":"/api-reference/enroute/register-a-route"}]}]}]},{"language":"tr","pages":[{"title":"tr","href":"/before-start/tr/introduction"}]}]},"basePath":"","title":"API Security - iklim.co API Documentation","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}