From 780b16cf5f146e775a43314e8029a40e3822ab6d Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 17 Nov 2022 21:56:07 +0100 Subject: [PATCH] initial: api v1 draft --- LICENSE | 21 +++++++++++++ README.md | 88 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..85fef20 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2022 qcode.ch + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..b2c3c28 --- /dev/null +++ b/README.md @@ -0,0 +1,88 @@ +# noxy is a nostr proxy + +noxy receives a [nostr](https://nostr.info/) event id, fetches images and +link previews, and returns the result in a JSON object. the idea is to run +such proxies to reduce IP address leaks and client fingerprinting. + +## API v1 + +there's a single endpoint accepting a nostr event id and relay to fetch the event from: + + GET /api/v1/e/?relay= + +some examples follow. + +### fetch a pubkey profile picture, event kind 0 + + +request example: + + GET /api/v1/e/e01ac1cfc5cb68b54183f878261b21ef30a65f5e06a24356cfe3ecdacce14bae?relay=wss%3A%2F%2Frelay.nostr.info + +response: + +```json +{ + "images": { + "https://git.qcode.ch/avatars/5a8071777eba7ebf178143fa650c8012?size=870": "https://noxy.example.org/abcdef/abcdef0123456789.png" + } +} +``` + +[event raw data →](https://nostr.com/e/e01ac1cfc5cb68b54183f878261b21ef30a65f5e06a24356cfe3ecdacce14bae) + +if a noxy instance is unable to fetch the original, it responds with an empty object: + +```json +{ + "images": {} +} +``` + +### fetch images from a text note, event kind 1 + +request example: + + GET /api/v1/e/d822fdd220d8a74d2f025f331840eec8a640a663f1d3ca3de9f6a74ff0cc61fa?relay=wss%3A%2F%2Frelay.damus.io + +response: + +```json +{ + "images": { + "https://res.cloudinary.com/eskema/image/upload/v1668636521/osso_vt7qh7.png": "https://noxy.example.org/fedcba/fedcba9876543210.png" + } +} +``` + +[event raw data →](https://nostr.com/e/d822fdd220d8a74d2f025f331840eec8a640a663f1d3ca3de9f6a74ff0cc61fa) + +### fetch link preview from a text note, event kind 1 + +request example: + + GET /api/v1/e/af30dac1d800acc25b87d0d6d0dd33bddf49e7f356556540a6c7722e3cb363fe?relay=wss%3A%2F%2Fnostr.x1ddos.ch%2F + +response: + +```json +{ + "links": { + "https://github.com/fiatjaf/noscl/pull/24": { + "og:image": "https://opengraph.githubassets.com/dc27...92c8/fiatjaf/noscl/pull/24", + "og:image:alt": "if the arg to publish or message command is '-', it is read from stdin.\ncloses #19", + "og:image:width": "1200", + "og:image:height": "600", + "og:site_name": "GitHub", + "og:type": "object", + "og:title": "publish,message: accept content from stdin by x1ddos · Pull Request #24 · fiatjaf/noscl", + "og:description": "if the arg to publish or message command is '-', it is read from stdin.\ncloses #19" + } + }, + "images": { + "https://opengraph.githubassets.com/dc27...92c8/fiatjaf/noscl/pull/24": "https://noxy.example.org/beef01/beef0123456789.png" + } +} +``` + +[event raw data →](https://nostr.com/e/af30dac1d800acc25b87d0d6d0dd33bddf49e7f356556540a6c7722e3cb363fe)