{"id":21017138,"url":"https://github.com/mentebinaria/jack","last_synced_at":"2026-03-09T17:36:41.204Z","repository":{"id":78676654,"uuid":"469368813","full_name":"mentebinaria/jack","owner":"mentebinaria","description":"A customizable, simple and easy to use json REST API consumer","archived":false,"fork":false,"pushed_at":"2022-07-29T21:17:30.000Z","size":119,"stargazers_count":9,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T10:59:13.205Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mentebinaria.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-13T12:45:38.000Z","updated_at":"2023-11-03T18:26:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"bbcb470b-62a9-4dc5-b1e4-afddad0a8da6","html_url":"https://github.com/mentebinaria/jack","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/mentebinaria/jack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mentebinaria%2Fjack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mentebinaria%2Fjack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mentebinaria%2Fjack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mentebinaria%2Fjack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mentebinaria","download_url":"https://codeload.github.com/mentebinaria/jack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mentebinaria%2Fjack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30304715,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T17:35:44.120Z","status":"ssl_error","status_checked_at":"2026-03-09T17:35:43.707Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T10:18:00.487Z","updated_at":"2026-03-09T17:36:41.199Z","avatar_url":"https://github.com/mentebinaria.png","language":"Rust","readme":"# JACK (JSON API Client Konsumer)\n\nJACK is a generic JSON API client. It is useful to interact with APIs from multiple services such as Google and Twitter. All service along with their parameters are configured in `config.toml` file. For example, you can configure JACK to collect statistics from vairous social networks and Google Analytics, all from a single company/instituition.\n\n## Installing\n\nJACK is written in Rust, so you need to install it first before compiling. Here's a few examples on how to install the Rust toolset:\n\n### Linux\n\nDifferent Linux flavors provide different package managers. Here are few examples:\n\n    sudo apt install rust\n    sudo yum install rust\n   \n### macOS\n\nFirst, install Homebrew by following the instructions [here](https://brew.sh). Then, open a terminal and use the `brew` command to install the Rust toolset:\n    \n    brew install rust\n    \n### Windows\n\nWindows 11 comes with `winget`, a command-line package manager. You can open a Windows Terminal and type the following command:\n\n    winget install Rustlang.Rust.MSVC\n    \nIf you don't have `winget`, you can either [install it](https://docs.microsoft.com/en-us/windows/package-manager/winget/) or download and install Rust from its the [official website](https://www.rust-lang.org/tools/install).\n    \nAfter Rust is intalled, clone JACK's repository and build it:    \n\n    git clone https://github.com/mentebinaria/jack/\n    cd jack\n    cargo build\n    \n## Configuration\n\nBefore running JACK, you have to configure your `config.toml` file. Here's how it works:\n\n```toml\n[some_api]\nservice_name = \"Some API\" # The name of the application\nurl = \"http://someapi.xyz\" # The url that it'll query\nmethod = \"GET\" # The method to use (only GET for now)\n\n[some_api.filter] # Optional\nfilter_name = \"/field/item\" # The filter is based on https://docs.serde.rs/serde_json/value/enum.Value.html#method.pointer\n# ...\n\n[some_api.params] # Optional\nparams = \"value\" # `?params=value` on GET requests\n# ...\n\n[some_api.oauth] # Optional\nauth_uri = \"https://some_api/oauth/auth\"\ntoken_uri = \"https://some_api/oauth/token\"\nclient_id = \"Client ID\" # Same reason why as the `client_secret`\nclient_secret = \"Client SECRET\" # Due the lack of a intermediate(private) server (maybe in the future...) containing the client_secret\n```\n\n### YouTube API\n\nLet's say you want some information about a certain YouTube channel. Start with creating a service in the `config.toml` file. Give preference to single words, but `snake_case` is allowed. As this service is a YouTube channel, you use the YouTube API in the `url` field:\n\n```toml\n[mychannel]\nservice_name = \"Great YouTube Channel - YouTube Example\"\nurl = \"https://www.googleapis.com/youtube/v3/channels/\"\nmethod = \"GET\"\n```\n\nNow you have to tell JACK what kind of information you want to get from this channel. Available fields depend on the API. For YouTube API, they are documented [here](https://developers.google.com/youtube/v3/docs/channels). Let's say we want `title`, `contentDetails` and `statistics/viewCount`. Here's how to configure them:\n\n```toml\n[mychannel.filter]\ntitle = \"/items/0/snippet/title\"\ncontentDetails = \"/items/0/contentDetails\"\ntotalViews = \"/items/0/statistics/viewCount\"\n```\n\nNow you have to configure the parameters such as the desired YouTube channel ID you want to inspect, your [API key](https://developers.google.com/youtube/v3/getting-started) and a few others. Here's an example with [Papo Binário](https://www.youtube.com/c/papobinario) YouTube channel, whose ID is `UCuQ8zW9VmVyml7KytSqJDzg`:\n\n```toml\n[mychannel.params]\npart = \"snippet,contentDetails,statistics\"\nid = \"UCuQ8zW9VmVyml7KytSqJDzg\"\nkey = \"\u003cKEY\u003e\"\nmaxResults = \"50\"\n```\n\nDone. When you run JACK with the above configuration, you should see the following output:\n\n```\nservice_name = \"Great YouTube Channel - YouTube Example\"\ncontentDetails = {\"relatedPlaylists\":{\"likes\":\"\",\"uploads\":\"UUuQ8zW9VmVyml7KytSqJDzg\"}}\ntitle = \"Papo Binário\"\ntotalViews = \"2083346\"\n```\n\n### YouTube Analytics API\n\nFor advanced metrics on YouTube, they offer separate service called YouTube Analytics. JACK can also interact with its API and perform OAuth authentication. Here's an example of configuration for getting the number of views, likes, subscribers gained, and the channel estimate minutes watched in January, 2021:\n\n```toml\n[mychannel_analytics]\nservice_name = \"My Great Channel - YouTube Analytics Example\"\nurl = \"https://youtubeanalytics.googleapis.com/v2/reports\"\nmethod = \"GET\"\n\n[youtube_analytics.filter]\nviews = \"/rows/0/1\"\nlikes = \"/rows/0/2\"\nsubscribersGained = \"/rows/0/3\"\nestimatedMinutesWatched = \"/rows/0/0\"\n\n[youtube_analytics.oauth]\nauth_uri = \"https://accounts.google.com/o/oauth2/auth\"\ntoken_uri = \"https://oauth2.googleapis.com/token\"\nclient_id = \"\u003cYOUR CLIENT ID\u003e\"\nclient_secret = \"\u003cYOUR CLIENT SECRET\u003e\"\n\n[youtube_analytics.params]\nids = \"channel==MINE\"\nmetrics = \"estimatedMinutesWatched,views,likes,subscribersGained\"\nstartDate = \"2021-01-01\"\nendDate = \"2021-02-01\"\n```\nBefore running JACK with the above configuration, you need to provide a `client_id` and a `client_secret` for the YouTube Analytics API. Refer to [this article](https://developers.google.com/youtube/registering_an_application) if you don't have them yet.\n\nJACK's output would be like the following:\n\n```\nservice_name = \"My Great Channel - YouTube Analytics Example\"\nestimatedMinutesWatched = 162626\nlikes = 2964\nsubscribersGained = 646\nviews = 37745\n```\n\nIf you study the services' API enough, you'll be ready to use JACK to extract every possible bit of information you need. :)\n\n## Running\n\nAfter you are finished with the configuration, you should be ready to run JACK as easy as:\n\n    cargo run\n    \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmentebinaria%2Fjack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmentebinaria%2Fjack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmentebinaria%2Fjack/lists"}