{"id":20575971,"url":"https://github.com/limeskey/hackclub-verifier-api","last_synced_at":"2026-04-17T22:32:14.609Z","repository":{"id":254747745,"uuid":"847407469","full_name":"LimesKey/hackclub-verifier-api","owner":"LimesKey","description":null,"archived":false,"fork":false,"pushed_at":"2024-11-20T22:44:25.000Z","size":269,"stargazers_count":1,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-09T19:46:08.367Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://api.onboard.limeskey.com","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LimesKey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-08-25T18:27:25.000Z","updated_at":"2024-11-20T22:44:29.000Z","dependencies_parsed_at":"2024-11-04T01:19:56.552Z","dependency_job_id":"28fcf62d-ab2d-46f5-bbe7-72308b757886","html_url":"https://github.com/LimesKey/hackclub-verifier-api","commit_stats":null,"previous_names":["limeskey/onboard-verifier","limeskey/hackclub-ysws-verifier","limeskey/hackclub-verifier-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LimesKey/hackclub-verifier-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimesKey%2Fhackclub-verifier-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimesKey%2Fhackclub-verifier-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimesKey%2Fhackclub-verifier-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimesKey%2Fhackclub-verifier-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LimesKey","download_url":"https://codeload.github.com/LimesKey/hackclub-verifier-api/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LimesKey%2Fhackclub-verifier-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31948440,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T17:29:20.459Z","status":"ssl_error","status_checked_at":"2026-04-17T17:28:47.801Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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-16T05:44:13.493Z","updated_at":"2026-04-17T22:32:14.593Z","avatar_url":"https://github.com/LimesKey.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OnBoard Submission Verifier\n\nThis program runs as a Cloudflare Wrangler worker at [api.onboard.limeskey.com](https://api.onboard.limeskey.com). It's intended to be used by the Svelte, Rust \u0026 WebAssembly frontend at [verify.onboard.hackclub.com](https://verify.onboard.hackclub.com), also hosted by Cloudflare in a Page. \n\nThis API is used to verify users using Slack and GitHub oAuth codes. The API accepts POST requests with optional Slack and GitHub authorization codes and returns a json struct that includes information about the Slack User and GitHub user, and also checks against the unified YSWS Verification API to see if they're eligible and have verified their ID.\n\n### Endpoint\n\n```\nPOST https://api.onboard.limeskey.com/api\n```\n\n### Request Payload\n\nThe request payload should be in JSON format and can include either or both Slack and GitHub authorization codes.\n\n#### Example Payload\n```json\n{\n  \"slack_code\": \"your_slack_code_here\",\n  \"github_code\": \"your_github_code_here\"\n}\n```\n\n- `slack_code` *(optional)*: The Slack OAuth code.\n- `github_code` *(optional)*: The GitHub OAuth code.\n\n### Response\n\nIf the request is successful, the API will return a 200 response with a URL containing verification information, which includes:\n\n- `secret`: The hashed secret.\n- `slack_id`: The Slack user ID.\n- `eligibility`: The user's eligibility status from Slack.\n- `slack_user`: The Slack username.\n- `github_id`: The GitHub user ID.\n\n#### Example Response\n\n```\nhttps://forms.hackclub.com/t/9yNy4WYtrZus?secret=5ec501bbb97b6b\u0026slack_id=U04JGJN2B40\u0026eligibility=EligibleL1\u0026slack_user=Ryan+Di+Lorenzo\u0026github_id=LimesKey\n```\n\n### Error Handling\n\nIf the request fails, the API will return an error message with the response status.\n\n#### Example Error\n\n```\n{\n  \"error\": \"Request failed with status: 400\"\n}\n```\n\n### Example Usage\n\n```rust\n// Example using Fetch API in Rust using wasm_bindgen\n\n#[derive(Serialize, Deserialize)]\nstruct ApiPayload {\n    slack_code: Option\u003cString\u003e,\n    github_code: Option\u003cString\u003e,\n}\n\npub async fn verify_api(slack_code: Option\u003cString\u003e, github_code: Option\u003cString\u003e) -\u003e Result\u003cJsValue, JsValue\u003e {\n    let payload = ApiPayload { slack_code, github_code };\n    let payload_json = serde_json::to_string(\u0026payload).unwrap();\n\n    let mut opts = RequestInit::new();\n    opts.method(\"POST\")\n        .body(Some(\u0026JsValue::from_str(\u0026payload_json)))\n        .mode(RequestMode::Cors);\n\n    let request = Request::new_with_str_and_init(\"https://api.onboard.limeskey.com/api\", \u0026opts).unwrap();\n    let response_value = JsFuture::from(web_sys::window().unwrap().fetch_with_request(\u0026request)).await?;\n    let response_text = JsFuture::from(response_value.dyn_into::\u003cweb_sys::Response\u003e()?.text()?).await?;\n    \n    Ok(response_text)\n}\n```\n\n### Development\nBuild the program using `pnpm install` and run `pnpm wrangler dev` with the required enviornment variables.\n\n\u003ca href=https://cloud-g0vlsedi0-hack-club-bot.vercel.app/0image.png\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimeskey%2Fhackclub-verifier-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimeskey%2Fhackclub-verifier-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimeskey%2Fhackclub-verifier-api/lists"}