API داده Nordic Crypto
فید عمومی JSON از سایت، برای اپها و ابزارهای دیگر. بدون حساب کاربری و بدون کلید API. هر بار که سایت ساخته میشود، دوباره تولید میشود.
گره Bitcoin Lightning#
Nordic Crypto یک گره Bitcoin Lightning اجرا میکند. نام مستعار Nordic Crypto است. پیادهسازی LND است، در حالت کلاینت سبک Neutrino. بدون حساب کاربری و بدون کلید API.
| گره | وضعیت | پیادهسازی |
|---|---|---|
| Bitcoin Nordic Crypto | در حال همگامسازی / هنوز برای کانال باز نیست | LND (حالت سبک Neutrino) |
نشانی گره (URI). یک خط را کپی کنید. خط اول IPv4 است. خط دوم همان گره روی IPv6 است، [2a01:4f8:c01e:36d9::1]:9735.
0225974bb701101a5d4352dcae0f76aa9c1388e482a666e892f462e0e0e4217dd9@91.99.122.75:9735 0225974bb701101a5d4352dcae0f76aa9c1388e482a666e892f462e0e0e4217dd9@[2a01:4f8:c01e:36d9::1]:9735
کلید عمومی.
0225974bb701101a5d4352dcae0f76aa9c1388e482a666e892f462e0e0e4217dd9
نشانی واریز روی زنجیره.
bc1p7zgqhev2zzn45mefzq59gq983379lr0rsymhl558rza9k05y7vsq9mglx7
سرورهای Electrum (BCH و Nexa)#
Nordic Crypto سرورهای Electrum از نوع Rostrum را برای Bitcoin Cash و Nexa اجرا میکند. کیفپولها و اپها میتوانند موجودیها، تراکنشها، UTXOها، توکنها و آخرین بلاک را از آنها بخوانند و تراکنش ارسال کنند. بدون حساب کاربری و بدون کلید API.
| سرور | وضعیت | ارتفاع بلاک | زمان پاسخ | نسخه |
|---|---|---|---|---|
Bitcoin Cashwss://electrum-bch.nordiccrypto.no:50004 | – | – | – | – |
Nexawss://electrum-nexa.nordiccrypto.no:20004 | – | – | – | – |
این سرورها پروتکل Electrum (JSON-RPC) را روی پورتهای استاندارد ارائه میکنند: WebSocket با TLS (wss) روی 20004 برای Nexa و 50004 برای Bitcoin Cash، و TLS روی TCP روی 20002 برای Nexa و 50002 برای Bitcoin Cash. پورت رمزنگارینشده ارائه نمیشود. در کتابخانه کلاینت، میزبان، پورت و طرح (wss یا tcp_tls) را وارد کنید. متدها در مستندات پروتکل Rostrum فهرست شدهاند.
websocat wss://electrum-bch.nordiccrypto.no:50004
{"id":1,"method":"blockchain.headers.subscribe","params":[]}
این سرورها نودهای کامل خودشان را اجرا میکنند (Bitcoin Cash Node و Nexa)، پس پاسخهایشان به شخص ثالث وابسته نیست. کلاینتی که بررسی SPV انجام نمیدهد، همچنان درباره محتوای زنجیره به ما اعتماد میکند. هیچ تضمینی برای در دسترس بودن وجود ندارد. یک سرور دوم در فهرست خود نگه دارید و اگر یکی ظرف چند ثانیه پاسخ نداد، به سراغ دیگری بروید.
از اینجا شروع کنید#
- فهرست — همه endpointها و نمونه URLها.
- OpenAPI (همچنین به صورت YAML).
- llms.txt — راهنما به زبان ساده.
- کاتالوگ API (linkset مطابق RFC 9727؛ نسخه .json).
دریافت اخبار و یک خبرنامه#
curl -fsS https://nordiccrypto.no/api/v1/news.json curl -fsS https://nordiccrypto.no/api/v1/newsletters.json curl -fsS https://nordiccrypto.no/api/v1/newsletters/002.json
URLهای مطلق از سایت عمومی، در ریشه دامنه، استفاده میکنند: https://nordiccrypto.no/api/v1/news.json.
پرسوجوی مطالب تازه#
/api/v1/news/latest.json شامل 25 مطلب تازهمنتشرشده است، فقط با id, published, country, source, source_name, language_code, own_story، تیترها (title, title_en, title_i18n) و پیوندها (url, html_url, api_url). مقدارها همانهای news.json هستند، با همان ترتیب (تازهترین اول). این فایل هرقدر بایگانی بزرگ شود کوچک میماند، تا یک اپ یا سرور پوش بتواند هر چند دقیقه یکبار آن را بپرسد. If-None-Match را با آخرین ETag بفرستید؛ تا وقتی فایل عوض نشده، GitHub Pages با 304 Not Modified پاسخ میدهد. شناسهها را با آنهایی که دیدهاید مقایسه کنید؛ generated_at در هر ساخت عوض میشود.
curl -fsS https://nordiccrypto.no/api/v1/news/latest.json
قیمتهای بازار#
قیمتهای صرافیهای شمال اروپا داده بازار هستند، نه توصیه سرمایهگذاری. /api/v1/markets.json هر جفت را با نماد، ارز پایه، ارز مظنه، آخرین قیمت، قیمت خرید و فروش (اگر صرافی منتشر کند)، شناسه، نام و کشور صرافی، fetched_at، URL منبع و حجم (اگر صرافی منتشر کرده باشد) فهرست میکند. volume_base حجم دارایی پایه بدون بازه زمانی مشخص است (Firi). volume_base_24h و volume_quote_24h مربوط به ۲۴ ساعت گذشتهاند (NBX). حجم ناموجود null است، نه صفر. ارزهای مظنه NOK، SEK، DKK و EUR هستند. یک صرافی: /api/v1/markets/{exchange}.json (firi، nbx، coinmotion). یک دارایی: /api/v1/markets/by-asset/{symbol}.json. بازارهایی که تیکر عمومی ندارند زیر skipped فهرست میشوند و قیمتی ساختگی برایشان درج نمیشود.
/api/v1/markets/aggregated.json برای هر جفت یک ردیف دارد. BTC-NOK با BTC-EUR میانگین گرفته نمیشود. last میانگین حسابی آخرین قیمتهای منتشرشده است. mid میانگین (bid+ask)/2 است و با last مخلوط نمیشود. اگر آخرین قیمتی وجود داشته باشد، price برابر last است، وگرنه mid. min و max از همان سری استفاده میکنند. VWAP وجود ندارد. حجم فقط درون همان فیلد و همان جفت جمع میشود. logo_url یک SVG از cryptocurrency-icons (CC0 1.0) است، اگر این مجموعه آن دارایی را داشته باشد، و در /api/v1/markets/logos/{symbol}.svg ارائه میشود؛ در غیر این صورت null است. فایل هر دارایی، aggregated و لوگو را تکرار میکند.
فرایند ساخت، دادهها را از صرافیها دریافت میکند. .github/workflows/markets-refresh.yml تقریباً هر ساعت یک بار JSON را روی gh-pages بازنویسی میکند، از جمله فایل تجمیعی و آیکونها. صفحه بازارها این فایل را دوباره بارگیری میکند و Firi و Coinmotion را در مرورگر بهروز میکند، چون APIهای آنها Access-Control-Allow-Origin: * میفرستند. NBX این کار را نمیکند، پس ردیفهای آن از فایل پیروی میکنند. همین سند در شاخه gh-pages: raw.githubusercontent.com/jQrgen/nordic-crypto/gh-pages/api/v1/markets.json.
curl -fsS https://nordiccrypto.no/api/v1/markets.json curl -fsS https://nordiccrypto.no/api/v1/markets/aggregated.json
آمار بازدید#
مجموع بازدیدها و بازدیدهای صفحه از Cloudflare Web Analytics (بدون کوکی). /api/v1/stats.json ردیفهای daily، weekly (ISO) و monthly را فقط با visits و pageviews فهرست میکند. روزها بر اساس UTC هستند. تا وقتی سایت Web Analytics و توکن بهروزرسانی پیکربندی نشوند، فایل خالی است. .github/workflows/stats-refresh.yml تقریباً روزی یک بار آن را روی gh-pages بازنویسی میکند.
curl -fsS https://nordiccrypto.no/api/v1/stats.json
سخنرانیها#
سخنرانیهای عمومی درباره بیتکوین، رمزارزها و بلاکچین که در نروژ، سوئد، دانمارک، فنلاند، ایسلند، جزایر فارو، گرینلند و اولاند برگزار شدهاند، در /api/v1/talks.json هستند، جدیدترینها اول. یک سخنرانی: /api/v1/talks/{id}.json. یک کشور: /api/v1/talks/by-country/{country}.json (NO، SE، DK، FI، IS، FO، GL، AX). description نوشته ماست. title، تاریخها، مدت، کانال و سخنرانان از پلتفرم موجود در source_url میآیند. فیلدی که پلتفرم ذکر نکرده null است. embed فقط وقتی true است که پاسخ oEmbed پلتفرم یک پخشکننده داشته باشد. صفحه HTML پخشکننده را پس از کلیک بارگیری میکند: YouTube از طریق youtube-nocookie.com و Vimeo از طریق player.vimeo.com. وقتی سخنرانی به رویدادی پیوند خورده باشد، event_id و calendar_event_id همان شناسه رویداد هستند. آن رویداد در /api/v1/events/{id}.json است (و اگر گذشته باشد در /api/v1/events/previous.json) و صفحهاش /calendar/{id}/ است. talk_ids روی رویداد، آن سخنرانیها را فهرست میکند. وقتی صفحه ویدیو روز یا مکانی ذکر نکرده باشد، unlink_reason تنظیم میشود و event_id در این حالت null است. speaker_ids شناسههای بخش «چه کسی کیست» به همان ترتیب speakers هستند. صفحه شخص، در /api/v1/orgchart/{id}.json، آن سخنرانیها و هر وابستگی سازمانیای را که صفحه سخنرانی ذکر کرده فهرست میکند.
چند رسانه، یک خبر#
هر خبر یک رسانه اصلی دارد. رسانههای دیگری که همان رویداد را پوشش دادهاند در also_covered_by هستند. sources ابتدا رسانه اصلی و سپس بقیه را فهرست میکند. هر رسانه outlet، outlet_name، url، title (تیتر همان رسانه)، published، lang، country، source_type و logo دارد. source_type یکی از national، regional (منطقهای و محلی)، official (قضایی و رسمی: پلیس، دادستانی، دادگاهها، نهادهای نظارتی) یا international است. coverage.count تعداد رسانههاست. coverage.by_country و coverage.by_source_type تعدادها و سهمها برای نمودار میلهای هستند. همه انواع منبع حاضرند، حتی با تعداد صفر. html_url صفحه ما برای آن خبر است. url رسانه اصلی است. Kaupr همچنان فقط یک منبع خبری است.
رویدادها#
رویدادهای آینده و گذشته در /api/v1/events.json هستند. تقویمهای Luma از URL عمومی اشتراک iCal هر منبع رویداد (ics) گرفته میشوند. صفحههای شهر، صفحههای دستهبندی و API کاوش Luma استفاده نمیشوند. صفحه یک رویداد منفرد در Luma به صورت JSON-LD از schema.org خوانده میشود. برگزارکنندگان و مکانهای Eventbrite با API نسخه ۳ خوانده میشوند، اگر سرور EVENTBRITE_TOKEN داشته باشد. این توکن در این فید نیست و در مخزن هم ثبت نشده است. بدون آن، JSON-LD صفحه رویداد استفاده میشود. عنوان، تاریخ و مکان یکسان یعنی یک رویداد. رویدادهای پایانیافته در فید میمانند. description.text متن خود برگزارکننده است، description.lang زبان آن متن و description.source_url صفحهای است که متن از آن آمده. description.i18n در صورت وجود، ترجمه را دارد. اگر منبع توضیحی نداشته باشد، این فیلد null است. آگهیهای کنفرانسهای جعلی و سودجو منبع به شمار نمیآیند. Kaupr هرگز حامی مالی نیست.
زبانها#
انگلیسی فیلد پیشفرض است (summary، title، text). ترجمههایی که منتشر کردهایم در summary_i18n، title_i18n، subtitle_i18n، note_i18n، text_i18n و about_i18n با کلیدهای nn، nb، sv، da، fi و is قرار دارند. سایر زبانهای سایت تا انتشار ترجمه از فیلد انگلیسی استفاده میکنند. در یک خبر، title همان تیتر منبع است، title_en تیتر انگلیسی ما و title_i18n تیتر ما به زبانهای شمال اروپایی سایت. اگر این دو متفاوت باشند، صفحهها ابتدا تیتر به زبان صفحه و زیر آن تیتر منبع را نشان میدهند. تیتر خود هر رسانه، درون sources، به زبان همان رسانه میماند. تاریخها مطابق ISO 8601 هستند.
/api/v1/languages.json همه زبانهای سایت را با code، native_name، english_name، rtl، html_lang و home فهرست میکند. /api/v1/geo-language.json حدس زبان بر اساس کشور است که در اولین بازدید استفاده میشود. کشور IP از tipworker با GET /api/geo (Cloudflare request.cf.country) میآید. چیزی ذخیره نمیشود. کوکی nc_lang که انتخابگر زبان تنظیم میکند، همیشه اولویت دارد.
لوگوی منابع#
هر رسانه در /api/v1/sources.json دارای logo_url (URL مطلق PNG یا WebP، هرگز SVG، یا null) و logo (kind، file_url (فایل اصلی، SVG یا WebP)، raster_url (همان logo_url)، source_url، author، license، license_url، credit، یا null) است. هر خبر source_logo_url دارد تا اپ بتواند لوگوی رسانه را کنار تیتر نشان دهد. لوگوها از Wikimedia Commons (همراه با مجوز) یا سایت خود ناشر میآیند. آنها علامت تجاری ناشراناند و فقط برای مشخص کردن منبع تیتر نمایش داده میشوند. لوگو تا زمانی که ویراستار آن را بررسی نکرده، null میماند.
CORS#
GitHub Pages برای این فایلها Access-Control-Allow-Origin: * میفرستد، پس صفحهای در سایت دیگر میتواند آنها را با fetch() دریافت کند. GitHub Pages فایل هدر سفارشی را اعمال نمیکند. از نام فایل با .json استفاده کنید؛ باز کردن یک پوشه JSON برنمیگرداند.
سیاست تحریریه#
امضا The Nordic Crypto team است. Kaupr (kaupr.io) فقط یک منبع خبری است و هرگز حامی مالی نیست. هیچچیز در اینجا توصیه سرمایهگذاری نیست.
حسابهای برند#
ios در /api/v1/meta.json دعوتنامه عمومی TestFlight برای اپ iOS از Nordic Crypto است. این اپ در App Store نیست. apple_tv میگوید نسخه TestFlight بهویژه از Apple TV پشتیبانی میکند. apple_tv_i18n این جمله کوتاه را به همه زبانهای سایت دارد. نام برند همیشه Nordic Crypto است.
/api/v1/meta.json شامل social برای اپ iOS است. social.telegram گفتوگوی Nordic Crypto در https://t.me/nordiccryptochat است. social.x حساب برند در https://x.com/nordiccryptobot (@nordiccryptobot) است که در urls.x هم آمده. urls.telegram نشانی گفتوگو را تکرار میکند. urls.rss فید خبری انگلیسی در /rss.xml است. صفحه اصلی هر زبان rss.xml خودش را دارد. urls.newsletter صفحه عضویت در همین سایت است. label نام کوتاه است (Telegram، X). name متن پیوند به انگلیسی است. name_i18n شامل nn، nb، sv، da، fi و is است. سایر زبانهای سایت از name استفاده میکنند.
اعلانهای مرورگر#
وقتی workers/push/public.json یک URL برای Worker دارد، دکمه پایین هر صفحه Web Push است. تا آن زمان، صفحه میگوید سرویس فعال نیست و هیچ Workerی را فراخوانی نمیکند. اشتراکها روی یک Cloudflare Worker نگهداری میشوند، نه در این فید ایستا. پس از هر انتشار، GET /api/push/feed.json روی آن Worker همان دستهها را فهرست میکند (عنوان، خلاصه کوتاه، URL، کشور و ترجمهها در صورت وجود). هر انتشار یک دسته است. سند میگوید "apns": "not implemented": سرویس Apple Push Notification خارج از محدوده است. یک اپ iOS میتواند فید را بهطور دورهای بررسی کند. URL Worker هنگام استقرار workers/push/ تنظیم میشود؛ مسیری در این سایت نیست. اشتراکها در فید نیستند. /api/v1/news.json در این API همچنان فهرست کامل اخبار منتشرشده است.
Endpointها#
هر endpoint یک درخواست ساده GET برای یک فایل ایستای JSON است.
| مسیر | خروجی |
|---|---|
/api/v1/index.json | Discovery document: every endpoint, with example URLs. |
/api/v1/news.json | Published news and our own stories, newest first. |
/api/v1/news/latest.json | The 25 newest published stories with id, published, country, source and headlines only. For apps and notifiers that poll often; news.json is the full list. |
/api/v1/news/by-country/{country}.json | Published news for one country code: NO, SE, DK, FI, IS, NORDIC or EU. |
/api/v1/news/topics.json | Topic ids present in the published news, with counts. |
/api/v1/newsletters.json | Published newsletter issues, newest first. The list omits the HTML body; the issue URL includes text and html. |
/api/v1/events.json | Public events, soonest start first, including past events. |
/api/v1/events/upcoming.json | Events that have not ended, soonest first. Judged in the event's own offset. |
/api/v1/events/past.json | Finished public events, newest first. Finished events stay in the archive. |
/api/v1/events/previous.json | Previous events, newest finish first. Finished calendar events plus backfilled public events (source backfill). Backfill is not on the calendar or in upcoming or past. |
/api/v1/events/by-country/{country}.json | Public events for one country code. |
/api/v1/talks.json | Public talks on bitcoin, cryptocurrencies and blockchain in the Nordic countries, newest first. A player is embedded on the site only when embed is true (YouTube via youtube-nocookie.com, or the Vimeo player). Unknown fields are null. description is ours; title and the other details come from the platform. |
/api/v1/talks/by-country/{country}.json | Public talks for one country code: NO, SE, DK, FI, IS, FO (Faroe Islands), GL (Greenland) or AX (Åland). |
/api/v1/sources.json | News outlets, justice-system press pages, the public search terms, and event sources. coverage is national, regional, local or justice. region is the place. feed is null when no working RSS, sitemap or index page was verified. method is rss, html, sitemap, search or manual. Event sources name the intake method. Luma calendars use a public iCal subscribe URL. Eventbrite organizers and venues use the v3 API when the server has EVENTBRITE_TOKEN; the token is not in this feed. Without it, event pages are schema.org JSON-LD. icon_url is a public icon from the outlet when one was easy to find. logo_source is the URL the stored logo was fetched from. logo is the checked outlet image for that source id when one is on file, used only to identify the source. Kaupr is marked as a news source only and is never an event sponsor. |
/api/v1/academia.json | Editor-approved courses, student groups, publications and research. |
/api/v1/academia/courses.json | Academia section: courses. |
/api/v1/academia/groups.json | Academia section: groups. |
/api/v1/academia/publications.json | Academia section: publications. |
/api/v1/academia/research.json | Academia section: research. |
/api/v1/academia/{id}.json | One academia row. The id is in academia.json. |
/api/v1/books.json | Published books on bitcoin, crypto and blockchain by Nordic authors or about the Nordic countries. title is the original title. authors are as printed; author_role is "editors" for an edited volume. language is a code (nn, nb, sv, da, fi, en). source is the library catalogue or publisher page where the row was checked. about is our one-line description in English. No cover images. |
/api/v1/developers.json | Open-source developers: technical people in Nordic crypto with public crypto-related code (an own non-fork crypto repo, or merged commits or pull requests in a public crypto project). name is as shown on the code profile. profiles are the GitHub/GitLab/Codeberg/sourcehut profile links. notable has up to three items: kind "repo" (own repo: name, url, stars, language, description, last_push) or kind "contrib" (project, host, url, commits, merged_prs). Stars and counts are from the date in checked. nordic_source is where the Nordic link is shown. whoswho_id links the who's who entry. Only rows the editor approved; a preview build also has pending rows (status "pending"). |
/api/v1/orgchart.json | Published who's who: organisations, people, relations, regulation notes and caveats. A person named on a talk has talk_ids, event_ids and talks. affiliations lists the organisation the talk page stated for that talk, with the talk date when the page gave one, the source URL and the retrieval time. An affiliation the page did not state is omitted. |
/api/v1/orgchart/relations.json | Relations between published who's who entries. |
/api/v1/orgchart/regulation.json | Short regulation status for each Nordic country, as on the who's who page. |
/api/v1/orgchart/relations/{id}.json | One relation from the who's who. |
/api/v1/profiles.json | Public profile links (Wikipedia, X, Wikidata and similar) for people and organisations. |
/api/v1/images.json | Logos and photos used on the public who's who, with licence and credit. These are not newspaper photographs. |
/api/v1/illustrations.json | Pictures used on story cards and story pages. Each record has source, author, license and url. No photograph from another newspaper is included. Outlet logos are in images.json and on each news item as source_logo. |
/api/v1/changelog.json | Site changelog (product changes, not the news), newest first. |
/api/v1/rules.json | How EU crypto rules become law in the five countries. Simplified, not legal advice. Omitted while the page is still a placeholder. |
/api/v1/archive/articles.json | Append-only archive of stories that have been on the public site. removed is true when a story later left the site; the row stays. |
/api/v1/stats.json | Aggregate visitor counts from Cloudflare Web Analytics (no cookies): visits and page views per UTC day, ISO week and calendar month. updated_at is null and the lists are empty until the Web Analytics site and the refresh token are configured. |
/api/v1/markets.json | Nordic exchange prices. Market data, not investment advice. Each ticker names the exchange, fetched_at, the source URL and volume when the exchange published it. NOK, SEK, DKK and EUR only. aggregated is one row per pair. |
/api/v1/markets/aggregated.json | One price per base-quote pair. BTC-NOK is separate from BTC-EUR. last is the mean of published last prices. mid is the mean of bid/ask midpoints and is not blended into last. Volume is summed only within the same field and the same pair. logo_url is a CC0 icon when cryptocurrency-icons includes the asset, otherwise null. |
/api/v1/markets/{exchange}.json | Prices from one included exchange: firi (Norway), nbx (Norway) or coinmotion (Finland). |
/api/v1/markets/by-asset/{symbol}.json | Prices for one asset (the base symbol, such as BTC) on every included Nordic exchange, plus aggregated pairs for each quote currency and logo_url when an icon is available. |
/api/v1/languages.json | Site UI languages: code, native name, English name, rtl, html lang and home URL. |
/api/v1/geo-language.json | Country to default site language. An IP guess only; the nc_lang cookie from the language switcher wins. |
/api/v1/meta.json | Site name, languages, countries, page list, CORS, editorial notes and brand social accounts (social.telegram, social.x). |
موارد ناموجود#
پیشنویسها، صف تحریریه، خبرهای ردشده، خبرهای ارسالی خوانندگان، نشانی مشترکان خبرنامه، توکن تحلیل و دادههای شخصی خصوصی در این فید نیستند. شناسه ناشناخته یک صفحه 404 عادی سایت برمیگرداند، نه خطای JSON.