{
  "apiVersion": "5gpn.io/marketplace/v1",
  "kind": "ExtensionMarketplace",
  "metadata": {
    "id": "io.5gpn.official",
    "name": "5gpn Official Extensions",
    "description": "First-party reviewed native extensions for 5gpn.",
    "homepage": "https://github.com/moooyo/5gpn-extensions",
    "source": {
      "repository": "https://github.com/moooyo/5gpn-extensions",
      "revision": "787a62720f47b067bf7bce3d4906282e02731a0e"
    }
  },
  "entries": [
    {
      "id": "io.5gpn.ad-platform-blocker",
      "name": "Ad Platform Blocker",
      "version": "2.1.0",
      "description": "Blocks selected advertising-platform endpoints and narrow Pinduoduo marketing paths.",
      "tags": [
        "ads",
        "blocking",
        "privacy"
      ],
      "license": {
        "spdx": "CC-BY-NC-SA-4.0",
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/LICENSES/CC-BY-NC-SA-4.0.txt"
      },
      "documentationUrl": "https://github.com/moooyo/5gpn-extensions/blob/main/ad-platform-blocker/README.md",
      "manifest": {
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/ad-platform-blocker/extension.yaml",
        "sha256": "0c3efd3d46a5621336e53b9e99658f15a1e26e124ed9c3527458c4315ae20616",
        "size": 19198
      },
      "resources": [
        {
          "path": "block.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/ad-platform-blocker/block.js",
          "sha256": "c3b96e908b6df719fe385d6e38317b11bbd7f1abf4c27711b8dbdac20aea66da",
          "size": 57
        }
      ],
      "capabilities": {
        "captureHostCount": 277,
        "actionCount": 3,
        "settingCount": 0,
        "networkOrigins": [],
        "persistentStorage": false,
        "upstreamMappingCount": 0,
        "routingRuleCount": 201,
        "egressGroupRequired": false
      }
    },
    {
      "id": "io.5gpn.apple-wloc",
      "name": "Apple WLOC Location Override",
      "version": "1.1.1",
      "description": "Rewrites Apple Wi-Fi and cellular location responses to an operator-selected point.",
      "tags": [
        "apple",
        "location",
        "testing"
      ],
      "license": {
        "spdx": "MIT",
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/LICENSES/MIT.txt"
      },
      "documentationUrl": "https://github.com/moooyo/5gpn-extensions/blob/main/apple-wloc/README.md",
      "manifest": {
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/apple-wloc/extension.yaml",
        "sha256": "ed223d3ad6b476be6ae62508f452f93198266d2ab6b9044318a210a25e1251d1",
        "size": 1145
      },
      "resources": [
        {
          "path": "wloc.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/apple-wloc/wloc.js",
          "sha256": "ebc545511ccb8e66c05bd40198d357ea38d9f62f0aece7a37fc9639a905e94a8",
          "size": 8440
        }
      ],
      "capabilities": {
        "captureHostCount": 2,
        "actionCount": 1,
        "settingCount": 2,
        "networkOrigins": [],
        "persistentStorage": false,
        "upstreamMappingCount": 0,
        "routingRuleCount": 0,
        "egressGroupRequired": false
      }
    },
    {
      "id": "io.5gpn.bilibili-cleaner",
      "name": "Bilibili Cleaner",
      "version": "2.0.0",
      "description": "Removes bounded advertising and promotional response shapes from the Bilibili app.",
      "tags": [
        "ads",
        "bilibili",
        "media"
      ],
      "license": {
        "spdx": "GPL-3.0-only",
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/LICENSES/GPL-3.0-only.txt"
      },
      "documentationUrl": "https://github.com/moooyo/5gpn-extensions/blob/main/bilibili-cleaner/README.md",
      "manifest": {
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/bilibili-cleaner/extension.yaml",
        "sha256": "264c34af9085734f7fb1d03d1af37898e8b71d14af2075d5659321cc2d71e221",
        "size": 6483
      },
      "resources": [
        {
          "path": "clean-json.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/bilibili-cleaner/clean-json.js",
          "sha256": "4d1683b42312822865130f4dc88029b6f77f5d64138cfa92d61d8369d342d2ee",
          "size": 15094
        },
        {
          "path": "inject-live-page.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/bilibili-cleaner/inject-live-page.js",
          "sha256": "b179511abfc7cafcb5bdf321282ffc2dc9b38bb9f4036aa87cdeb81cb112dc81",
          "size": 4586
        },
        {
          "path": "mock-grpc.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/bilibili-cleaner/mock-grpc.js",
          "sha256": "5b16dc79c87dd25c05db71cae592096266525f545a02ce511b49e56e9c57b265",
          "size": 1507
        },
        {
          "path": "mock-json.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/bilibili-cleaner/mock-json.js",
          "sha256": "56d09582212b5e16963d97ebfa19ef664f8127b8a689f4f69f01cabf72c17948",
          "size": 1613
        },
        {
          "path": "protobuf.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/bilibili-cleaner/protobuf.js",
          "sha256": "895f6a11f23ddafea3797a9458d6450950571fe6ee3971ccf33b3c0f3ff9216a",
          "size": 108550
        }
      ],
      "capabilities": {
        "captureHostCount": 6,
        "actionCount": 11,
        "settingCount": 5,
        "networkOrigins": [
          "https://app.bilibili.com",
          "https://bsbsb.top",
          "https://grpc.biliapi.net"
        ],
        "persistentStorage": false,
        "upstreamMappingCount": 0,
        "routingRuleCount": 5,
        "egressGroupRequired": true
      }
    },
    {
      "id": "io.5gpn.httpdns-interceptor",
      "name": "HTTPDNS Interceptor",
      "version": "2.1.0",
      "description": "DNS-steers 58 HTTPDNS domains and rejects 59 gateway-visible IP/CIDR routes plus seven hostname-based request paths.",
      "tags": [
        "blocking",
        "dns",
        "privacy"
      ],
      "license": {
        "spdx": "CC-BY-NC-SA-4.0",
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/LICENSES/CC-BY-NC-SA-4.0.txt"
      },
      "documentationUrl": "https://github.com/moooyo/5gpn-extensions/blob/main/httpdns-interceptor/README.md",
      "manifest": {
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/httpdns-interceptor/extension.yaml",
        "sha256": "95d37140f776475fa7f213b2912b0df687a998c62c8bb997c677b38e7f28ae15",
        "size": 10683
      },
      "resources": [
        {
          "path": "block.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/httpdns-interceptor/block.js",
          "sha256": "c3b96e908b6df719fe385d6e38317b11bbd7f1abf4c27711b8dbdac20aea66da",
          "size": 57
        }
      ],
      "capabilities": {
        "captureHostCount": 64,
        "actionCount": 7,
        "settingCount": 0,
        "networkOrigins": [],
        "persistentStorage": false,
        "upstreamMappingCount": 0,
        "routingRuleCount": 117,
        "egressGroupRequired": false
      }
    },
    {
      "id": "io.5gpn.testflight-region-unlock",
      "name": "TestFlight Region Unlock",
      "version": "1.1.0",
      "description": "Rewrites the TestFlight install storefront and requires an operator-selected regional egress group.",
      "tags": [
        "apple",
        "region",
        "testflight"
      ],
      "license": {
        "spdx": "CC-BY-NC-SA-4.0",
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/LICENSES/CC-BY-NC-SA-4.0.txt"
      },
      "documentationUrl": "https://github.com/moooyo/5gpn-extensions/blob/main/testflight-region-unlock/README.md",
      "manifest": {
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/testflight-region-unlock/extension.yaml",
        "sha256": "55050748eae31a8ec51897a5cb4313af0d0a050e20dbf97e7d106a3e5d58dd1f",
        "size": 1062
      },
      "resources": [
        {
          "path": "rewrite-storefront.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/testflight-region-unlock/rewrite-storefront.js",
          "sha256": "77a4c392500782431f080e6a11b3d6703bb15a0a74350cf494b4574c2abdf13e",
          "size": 1544
        }
      ],
      "capabilities": {
        "captureHostCount": 1,
        "actionCount": 1,
        "settingCount": 1,
        "networkOrigins": [],
        "persistentStorage": false,
        "upstreamMappingCount": 0,
        "routingRuleCount": 0,
        "egressGroupRequired": true
      }
    },
    {
      "id": "io.5gpn.youtube-cleaner",
      "name": "YouTube Application Cleaner",
      "version": "3.0.0",
      "description": "Cleans YouTube responses and prepares the reviewed external Onesie playback path.",
      "tags": [
        "ads",
        "media",
        "youtube"
      ],
      "license": {
        "spdx": "Apache-2.0",
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/LICENSES/Apache-2.0.txt"
      },
      "documentationUrl": "https://github.com/moooyo/5gpn-extensions/blob/main/youtube-cleaner/README.md",
      "manifest": {
        "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/youtube-cleaner/extension.yaml",
        "sha256": "c17c2a8978f7e705f57840bc6d8975a178946db3be49925ab1016bb8a36769c3",
        "size": 2462
      },
      "resources": [
        {
          "path": "clean-player.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/youtube-cleaner/clean-player.js",
          "sha256": "81f3d69819de23295db1b5aa37f64639e114eb3e5dd526061493771ac3052bb0",
          "size": 50640
        },
        {
          "path": "request-handler.js",
          "url": "https://raw.githubusercontent.com/moooyo/5gpn-extensions/main/youtube-cleaner/request-handler.js",
          "sha256": "2dcec08caa8633404cd14d52c0f58b2e6d5804ed3187d498dad42a862ae01a4c",
          "size": 10300
        }
      ],
      "capabilities": {
        "captureHostCount": 2,
        "actionCount": 3,
        "settingCount": 5,
        "networkOrigins": [
          "https://init-stream.maasea.workers.dev"
        ],
        "persistentStorage": true,
        "upstreamMappingCount": 0,
        "routingRuleCount": 0,
        "egressGroupRequired": false
      }
    }
  ]
}
