واجهة بيانات 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 فيظل يثق بنا فيما تحتويه السلسلة. لا يوجد ضمان لمدة التشغيل. احتفظ بخادم ثانٍ في قائمتك وانتقل إليه إذا لم يرد أحدهما خلال ثوانٍ قليلة.
ابدأ من هنا#
- الفهرس — كل نقاط النهاية وعناوين URL للأمثلة.
- OpenAPI (وأيضًا بصيغة YAML).
- llms.txt — تعليمات بلغة بسيطة.
- فهرس واجهات API (مجموعة روابط 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 لآخر 24 ساعة (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 في المتصفح لأن واجهتيهما ترسلان 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 من عنوان iCal العام للاشتراك في كل مصدر فعاليات (ics). لا تُستخدم صفحات المدن وصفحات الفئات وواجهة discover في Luma. تُقرأ صفحة فعالية Luma المفردة بصيغة JSON-LD من schema.org. يُقرأ منظمو Eventbrite وأماكنه عبر واجهة v3 عندما يمتلك الخادم 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 العامة لتطبيق Nordic Crypto على iOS. التطبيق غير مدرج في 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 على عنوان Worker، يصبح الزر أسفل كل صفحة زر Web Push. وحتى ذلك الحين تذكر الصفحة أن الخدمة غير مفعّلة ولا تستدعي أي Worker. تُحفظ الاشتراكات على Cloudflare Worker، لا في هذا الموجز الثابت. بعد كل نشر، يسرد GET /api/push/feed.json على ذلك الـ Worker الدفعات نفسها (العنوان، وملخص قصير، وURL، والبلد، والترجمات متى توفرت). كل نشر دفعة واحدة. ينص المستند على "apns": "not implemented": خدمة Apple Push Notification خارج النطاق. يمكن لتطبيق iOS استطلاع الموجز دوريًا. يُضبط عنوان الـ Worker عند نشر workers/push/؛ وهو ليس مسارًا على هذا الموقع. الاشتراكات ليست في الموجز. يبقى /api/v1/news.json في هذه الواجهة القائمة الكاملة للأخبار المنشورة.
نقاط النهاية#
كل نقطة نهاية هي طلب 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.