{"id":31773971,"url":"https://github.com/nutcas3/smile-id-rust","last_synced_at":"2025-10-17T21:01:45.877Z","repository":{"id":306897719,"uuid":"1027575315","full_name":"nutcas3/smile-id-rust","owner":"nutcas3","description":"Smile ID sdk for Rust","archived":false,"fork":false,"pushed_at":"2025-08-10T20:14:19.000Z","size":39,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-10T22:16:53.397Z","etag":null,"topics":["identity","rust","rust-sdk"],"latest_commit_sha":null,"homepage":"","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/nutcas3.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,"zenodo":null}},"created_at":"2025-07-28T08:08:46.000Z","updated_at":"2025-08-10T20:14:23.000Z","dependencies_parsed_at":"2025-07-28T10:28:57.563Z","dependency_job_id":"576e8e4d-8252-4a68-8504-3dce9ecbd221","html_url":"https://github.com/nutcas3/smile-id-rust","commit_stats":null,"previous_names":["nutcas3/smile_id_rust"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nutcas3/smile-id-rust","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutcas3%2Fsmile-id-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutcas3%2Fsmile-id-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutcas3%2Fsmile-id-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutcas3%2Fsmile-id-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nutcas3","download_url":"https://codeload.github.com/nutcas3/smile-id-rust/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nutcas3%2Fsmile-id-rust/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002667,"owners_count":26083442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["identity","rust","rust-sdk"],"created_at":"2025-10-10T04:46:42.152Z","updated_at":"2025-10-10T04:46:47.128Z","avatar_url":"https://github.com/nutcas3.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Smile ID Rust Client\n\nA Rust client library for Smile ID's identity verification services across Africa. This library provides a simple interface to verify identities, prevent fraud, and comply with KYC regulations.\n\n## Features\n\n- **Basic KYC**: Verify identity information against government databases\n- **Enhanced KYC**: More comprehensive identity verification with additional data points\n- **Biometric KYC**: Identity verification with biometric data (selfie)\n- **Document Verification**: Verify identity documents like passports, ID cards, etc.\n- **SmartSelfie™ Authentication**: Authenticate users with facial biometrics\n- **Business Verification**: Verify business registration information\n- **Job Status Tracking**: Track the progress and outcome of verification jobs\n\n## Installation\n\nAdd this to your `Cargo.toml`:\n\n```toml\n[dependencies]\nsmile_id = \"0.1.0\"\n```\n\n## Usage\n\n### Configuration\n\n```rust\nuse smile_id::Config;\nuse smile_id::ApiClient;\n\n// Create a configuration\nlet config = Config::new(\"your-api-key\", \"your-partner-id\")\n    .with_timeout(60); // Optional: Set a custom timeout in seconds\n\n// Create an API client\nlet client = ApiClient::new(config).expect(\"Failed to create API client\");\n```\n\n### Basic KYC\n\n```rust\nuse smile_id::products::BasicKyc;\n\n// Create a Basic KYC instance\nlet basic_kyc = BasicKyc::new(\u0026client());\n\n// Submit a Basic KYC verification request\nlet job_id = basic_kyc.verify(\n    \"PASSPORT\", // ID type\n    \"AB123456\", // ID number\n    \"NG\",       // Country code (ISO 3166-1 alpha-2)\n    Some(\"John\".to_string()), // First name (optional)\n    Some(\"Doe\".to_string()),  // Last name (optional)\n    Some(\"1990-01-01\".to_string()), // Date of birth (optional)\n).await.expect(\"Failed to submit Basic KYC verification\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n### Enhanced KYC\n\n```rust\nuse smile_id::products::EnhancedKyc;\n\n// Create an Enhanced KYC instance\nlet enhanced_kyc = EnhancedKyc::new(\u0026client());\n\n// Submit an Enhanced KYC verification request\nlet job_id = enhanced_kyc.verify(\n    \"PASSPORT\", // ID type\n    \"AB123456\", // ID number\n    \"NG\",       // Country code\n    \"John\",     // First name\n    \"Doe\",      // Last name\n    \"1990-01-01\", // Date of birth\n).await.expect(\"Failed to submit Enhanced KYC verification\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n### Biometric KYC\n\n```rust\nuse smile_id::products::BiometricKyc;\nuse smile_id::utils;\n\n// Create a Biometric KYC instance\nlet biometric_kyc = BiometricKyc::new(\u0026client());\n\n// Encode a selfie image as base64\nlet selfie_image = utils::encode_image_file(\"path/to/selfie.jpg\")\n    .expect(\"Failed to encode selfie image\");\n\n// Submit a Biometric KYC verification request\nlet job_id = biometric_kyc.verify(\n    \"PASSPORT\", // ID type\n    \"AB123456\", // ID number\n    \"NG\",       // Country code\n    \"John\",     // First name\n    \"Doe\",      // Last name\n    \"1990-01-01\", // Date of birth\n    selfie_image, // Selfie image (base64 encoded)\n).await.expect(\"Failed to submit Biometric KYC verification\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n### Document Verification\n\n```rust\nuse smile_id::products::DocumentVerification;\nuse smile_id::utils;\n\n// Create a Document Verification instance\nlet document_verification = DocumentVerification::new(\u0026client());\n\n// Encode document images as base64\nlet front_image = utils::encode_image_file(\"path/to/front.jpg\")\n    .expect(\"Failed to encode front image\");\nlet back_image = utils::encode_image_file(\"path/to/back.jpg\")\n    .expect(\"Failed to encode back image\");\n\n// Submit a Document Verification request\nlet job_id = document_verification.verify(\n    \"PASSPORT\", // Document type\n    \"NG\",       // Country code\n    vec![front_image, back_image], // Document images (base64 encoded)\n).await.expect(\"Failed to submit Document Verification\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n### SmartSelfie™ Authentication\n\n```rust\nuse smile_id::products::SmartSelfieAuth;\nuse smile_id::utils;\n\n// Create a SmartSelfie™ Authentication instance\nlet smartselfie_auth = SmartSelfieAuth::new(\u0026client());\n\n// Encode a selfie image as base64\nlet selfie_image = utils::encode_image_file(\"path/to/selfie.jpg\")\n    .expect(\"Failed to encode selfie image\");\n\n// Submit a SmartSelfie™ Authentication request\nlet job_id = smartselfie_auth.authenticate(\n    \"user-123\", // User ID\n    \"job-456\",  // Job ID (from a previous verification)\n    selfie_image, // Selfie image (base64 encoded)\n).await.expect(\"Failed to submit SmartSelfie™ Authentication\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n### Business Verification\n\n```rust\nuse smile_id::products::BusinessVerification;\n\n// Create a Business Verification instance\nlet business_verification = BusinessVerification::new(\u0026client());\n\n// Submit a Business Verification request\nlet job_id = business_verification.verify(\n    \"Acme Inc\", // Business name\n    \"RC123456\", // Registration number\n    \"NG\",       // Country code\n).await.expect(\"Failed to submit Business Verification\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n### Job Status\n\n```rust\n// Get the status of a job\nlet job_status = client.get_job_status(\n    \"user-123\", // User ID\n    \"job-456\",  // Job ID\n    Some(true), // Include history (optional)\n    Some(true), // Include image links (optional)\n).await.expect(\"Failed to get job status\");\n\nprintln!(\"Job status: {:?}\", job_status.job_status);\nprintln!(\"Job complete: {}\", job_status.job_complete);\nprintln!(\"Job success: {}\", job_status.job_success);\n```\n\n### Blocking API\n\nThe library also provides a blocking API for use in synchronous contexts:\n\n```rust\nuse smile_id::config::Config;\nuse smile_id::api::blocking::ApiClient;\nuse smile_id::products::basic_kyc::blocking::BasicKyc;\n\n// Create a configuration\nlet config = Config::new(\"your-api-key\", \"your-partner-id\");\n\n// Create a blocking API client\nlet client = ApiClient::new(config).expect(\"Failed to create API client\");\n\n// Create a blocking Basic KYC instance\nlet basic_kyc = BasicKyc::new(\u0026client());\n\n// Submit a Basic KYC verification request\nlet job_id = basic_kyc.verify(\n    \"PASSPORT\", // ID type\n    \"AB123456\", // ID number\n    \"NG\",       // Country code\n    Some(\"John\".to_string()), // First name (optional)\n    Some(\"Doe\".to_string()),  // Last name (optional)\n    Some(\"1990-01-01\".to_string()), // Date of birth (optional)\n).expect(\"Failed to submit Basic KYC verification\");\n\nprintln!(\"Job ID: {}\", job_id);\n```\n\n## License\n\nThis project is licensed under the MIT License - see the LICENSE file for details.\n\n## Acknowledgments\n\n- [Smile ID](https://usesmileid.com) for their identity verification services\n- [Smile Identity Core JS](https://github.com/smileidentity/smile-identity-core-js) for the reference implementation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnutcas3%2Fsmile-id-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnutcas3%2Fsmile-id-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnutcas3%2Fsmile-id-rust/lists"}