{"id":15046331,"url":"https://github.com/fuadop/sendchamp-sdk","last_synced_at":"2025-10-26T19:31:20.744Z","repository":{"id":37075111,"uuid":"385869658","full_name":"fuadop/sendchamp-sdk","owner":"fuadop","description":"API wrapper for sendchamp.com","archived":false,"fork":false,"pushed_at":"2024-03-02T20:38:26.000Z","size":263,"stargazers_count":6,"open_issues_count":1,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-31T22:51:13.325Z","etag":null,"topics":["email","otp","phone","phone-number","sdk","sendchamp","sms","ussd","verification","voice","whatsapp"],"latest_commit_sha":null,"homepage":"https://npmjs.com/package/sendchamp-sdk","language":"TypeScript","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/fuadop.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}},"created_at":"2021-07-14T08:34:31.000Z","updated_at":"2024-06-03T22:11:19.000Z","dependencies_parsed_at":"2024-10-11T07:01:15.882Z","dependency_job_id":"e6f2fab0-4964-4054-a1f3-a34127ac469a","html_url":"https://github.com/fuadop/sendchamp-sdk","commit_stats":{"total_commits":71,"total_committers":4,"mean_commits":17.75,"dds":0.4225352112676056,"last_synced_commit":"aabe56368309ca55fa58a5c8758b19e422af0e60"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuadop%2Fsendchamp-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuadop%2Fsendchamp-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuadop%2Fsendchamp-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fuadop%2Fsendchamp-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fuadop","download_url":"https://codeload.github.com/fuadop/sendchamp-sdk/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238394323,"owners_count":19464583,"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","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":["email","otp","phone","phone-number","sdk","sendchamp","sms","ussd","verification","voice","whatsapp"],"created_at":"2024-09-24T20:52:59.839Z","updated_at":"2025-10-26T19:31:20.326Z","avatar_url":"https://github.com/fuadop.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sendchamp Node.js SDK\n\n\u003c!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --\u003e\n[![All Contributors](https://img.shields.io/badge/all_contributors-3-orange.svg?style=flat-square)](#contributors-)\n\u003c!-- ALL-CONTRIBUTORS-BADGE:END --\u003e\n\nThe wrapper provides convinient access to the Sendchamp api from applications written in Node.js.\n\u003cbr/\u003e\n\u003cbr/\u003e\n[![NPM](https://nodei.co/npm/sendchamp-sdk.png?compact=true)](https://npmjs.com/package/sendchamp-sdk/)\n\n## Documentation\n\nTake a look at the [API docs here](https://developers.sendchamp.com).\n\n## Install\n\nYou can install the pacakge from [npm](https://npmjs.org) by running:\n\n```shell\n$ npm install --save https://github.com/fuadop/sendchamp-sdk.git\n\n# using npm\n$ npm install --save sendchamp-sdk\n\n# using yarn\n$ yarn add sendchamp-sdk\n```\n\n## Usage\n\nThe package needs to be configured with your business public key (test/live) and your development mode (test/live).\n\u003cbr/\u003e\u003cbr/\u003e\nNB: Using this package with typescript you need to set `esModuleInterop` to `true` in your tsconfig.json file. [See related issue](https://github.com/fuadop/sendchamp-sdk/issues/6): https://github.com/fuadop/sendchamp-sdk/issues/6\n\n```javascript\nimport Sendchamp from \"sendchamp-sdk\";\n\nconst sendchamp = new Sendchamp({\n  mode: \"test\", // this is set to live by default\n  publicKey:\n    \"sendchamp_test_$2y$10$U2SHG5T2F/cr0jfzNCKgguHv.23plvJP/75EzZjF5MtLXz65SDrQi\",\n});\n\n// Initialize a service\nconst sms = sendchamp.SMS;\n\n// Use the service\nconst options = {\n  to: [\"234812345678\"],\n  message: \"Hello from postman\",\n  sender_name: \"sendchamp\",\n  // optional option to set route\n  route: \"international\", // can be set to non_dnd, dnd or international, default it non_dnd\n};\n\nsms\n  .send(options)\n  .then((response) =\u003e {\n    console.log(response);\n  })\n  .catch((error) =\u003e {\n    console.log(error);\n  });\n```\n\n## Initialization\n\nInitialize the SDK by doing :\n\n```javascript\nimport Sendchamp from \"sendchamp-sdk\"; // es6 import\nconst Sendchamp = require(\"sendchamp-sdk\").default; // commonjs require\n\nconst sendchamp = new Sendchamp(options);\n// options is an object of publicKey and mode\n// See usage\n```\n\nAfter initialization, you can get instances of offered services as follows:\n\n- SMS Service : `sendchamp.SMS`\n- CALL Service: `sendchamp.CALL`\n- EMAIL Service: `sendchamp.EMAIL`\n- WHATSAPP Service : `sendchamp.WHATSAPP`\n- VOICE Service : `sendchamp.VOICE`\n- VERIFICATION Service: `sendchamp.VERIFICATION`\n\n## Services\n\nAll methods are asynchronous.\u003cbr/\u003e\nAll phone numbers are international format (without the plus symbol). e.g \u003cmark\u003e2348123456789\u003c/mark\u003e.\n\n### SMS Service\n\n```javascript\nconst sms = sendchamp.SMS;\n```\n\n- `sms.send({to, message, sender_name, route})`: API for sending SMS. Refer to sms test file([**tests**/sms.spec.ts](__tests__/sms.spec.ts)) to see usage.\n\n  - `to` : This represents the destination phone number. The phone number(s) must be in the international format (Example: 23490126727). You can also send to multiple numbers. To do that put numbers in an array (Example: [ '234somenumber', '234anothenumber' ]). \u003cbr/\u003e\u003cmark\u003eREQUIRED\u003c/mark\u003e\n  - `message` : Text message being sent. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n  - `sender_name` : Represents the sender of the message. This Sender ID must have been requested via the dashboard or use \"Sendchamp\" as default.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `route` : Here you can specify a route you want your SMS to go through. Read [this guide](https://support.sendchamp.com/article/14-sms-delivery-routing-guide) for routing options. You should pass either of the following: \u003cb\u003enon_dnd\u003c/b\u003e, \u003cb\u003ednd\u003c/b\u003e, or \u003cb\u003einternational\u003c/b\u003e. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eOPTIONAL\u003c/mark\u003e\n\n- `sms.getStatus(sms_message_id)`: API to retrieve the status of an already sent SMS.\n\n  - `sms_message_id` : ID of the SMS that was sent. \u003cbr/\u003e\u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `sms.registerSender({name, use_case, sample})`: API to register Sender ID for sending SMS.\n\n  - `name`: Represents the sender of the message. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `use_case`: You should pass either of the following: \u003cb\u003eTransactional\u003c/b\u003e, \u003cb\u003eMarketing\u003c/b\u003e, or \u003cb\u003eTransactional \u0026 Marketing\u003c/b\u003e. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `sample`: This should contain your sample message. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n### VOICE Service\n\n```javascript\nconst voice = sendchamp.VOICE;\n```\n\n- `voice.send({message, customer_mobile_number, type, repeat})`: This method allows you to send a text-to-speech voice call. Refer to the voice test file ([**tests**/voice.spec.ts](__tests__/voice.spec.ts)) to see usage.\n\n  - `message`: The text message you to send with voice.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `customer_mobile_number`: The number represents the destination phone number. The number must be in international format (E.g. \u003cb\u003e2348012345678\u003c/b\u003e) \u003cbr/\u003e \u003cmark\u003estring[]\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `type`: The voice type, Only one type exists currently which is \"outgoing\".\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `repeat`: The amount of times the message should be repeated.\u003cbr/\u003e \u003cmark\u003eINTEGER\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n### VERIFICATION Service\n\n```javascript\nconst verification = sendchamp.VERIFICATION;\n```\n\n- `verification.sendOTP({channel, sender, token_type, token_length, expiration_time, customer_email_address, customer_mobile_number, meta_data})`: This method is used to send Verification OTP (One Time Password) to your customer contact address.\n\n  - `channel`: \u003cb\u003eVOICE\u003c/b\u003e, \u003cb\u003eSMS\u003c/b\u003e, \u003cb\u003eWHATSAPP\u003c/b\u003e or \u003cb\u003eEMAIL\u003c/b\u003e.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `sender`: Specify the sender you want to use. This is important when using SMS OR Whatsapp Channel or we will select a default sender from your account. Eg: KUDA OR +234810000000.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `token_type`: \u003cb\u003eNUMERIC\u003c/b\u003e or \u003cb\u003eALPHANUMERIC.\u003c/b\u003e\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `token_length`: The length of the token you want to send to your customer. Minimum is 4.\u003cbr/\u003e \u003cmark\u003eINTEGER\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `expiration_time`: How long you want to the to be active for in minutes. (E.g 10 means 10 minutes ).\u003cbr/\u003e \u003cmark\u003eINTEGER\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `customer_email_address`: The email address of your customer. It's required if you're using Email Channel.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `customer_mobile_number`: The phone number of your customer. It must be in international format (E.g 2348012345678). It is required if you're using the SMS or Voice Channel.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `meta_data`: To pass additional information as an object.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `verification.verifyOTP({verification_reference, verification_code})`: This method is used to confirm the OTP that was sent to your customer.\n\n  - `verification_reference`: The unique reference that was returned as response when the OTP was created.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `verification_code`: The OTP that was sent to the customer.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n### WHATSAPP Service\n\n```javascript\nconst whatsapp = sendchamp.WHATSAPP;\n```\n\nRefer to the whatsapp test file ([**tests**/whatsapp.spec.ts](__tests__/whatsapp.spec.ts)) for usage.\n\n- `whatsapp.sendTemplate({sender, recipient, template_code, meta_data})`: Send highly structured messages to your customers based on approved template.\n\n  - `sender`: Your approved Whatsapp number on Sendchamp. You can use our phone number if you have not registered a number \u003cb\u003e2347067959173\u003c/b\u003e.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `recipient`: Whatsapp number of the customer you are sending the message to.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `template_code`: You can find this on the template page under Whatsapp Channel of your Sendchamp dashboard.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `meta_data`: This is the template custom data.\u003cbr/\u003e \u003cmark\u003eOBJECT\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `whatsapp.sendText({sender, recipient, message})`: Utilize this method to send text messages via WhatsApp.\n\n  - `sender`: This will be the activated Whatsapp phone number E.g 234810000000.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `recipient`: This will be the phone number of the customer E.g 234811111111.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `message`: message to customer.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `whatsapp.sendVideo({sender, recipient, link })`: Utilize this method to send videos via WhatsApp.\n\n  - `sender`: This will be the activated Whatsapp phone number E.g 234810000000.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `recipient`: This will be the phone number of the customer E.g 234811111111.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `link`: This is the URL to the video resource.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `whatsapp.sendAudio({sender, recipient, link, message})`: Utilize this method to send audio via WhatsApp.\n\n  - `sender`: This will be the activated Whatsapp phone number E.g 234810000000.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `recipient`: This will be the phone number of the customer E.g 234811111111.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `link`: This is the URL to the audio resource.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `message`: This is the caption to be displayed under the audio in the chat.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `whatsapp.sendLocation({sender, recipient, name, address, latitude, longitude})`: Utilize this method to send locations via WhatsApp.\n\n  - `sender`: This will be the activated Whatsapp phone number E.g 234810000000.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `recipient`: This will be the phone number of the customer E.g 234811111111.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `longitude`: The longitude of the location E.g \u003cb\u003e-46.662787\u003c/b\u003e.\u003cbr/\u003e \u003cmark\u003eNUMBER\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `latitude`: The latitude of the location E.g \u003cb\u003e-23.55361\u003c/b\u003e.\u003cbr/\u003e \u003cmark\u003eNUMBER\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `name`: The name of the location E.g \u003cb\u003eRobbu Brazil\u003c/b\u003e. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `address`: The address of the location E.g \u003cb\u003eAv. Angélica, 2530 - Bela Vista, São Paulo - SP, 01228-200\u003c/b\u003e. \u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n- `whatsapp.sendSticker({sender, recipient, link })`: Utilize this method to send stickers via WhatsApp.\n\n  - `sender`: This will be the activated Whatsapp phone number E.g 234810000000.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `recipient`: This will be the phone number of the customer E.g 234811111111.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n  - `link`: This is the URL to the video resource.\u003cbr/\u003e \u003cmark\u003eSTRING\u003c/mark\u003e \u003cmark\u003eREQUIRED\u003c/mark\u003e\n\n## Contributing\n\nPRs are greatly appreciated, help us build this hugely needed tool so anyone else can easily integrate sendchamp into their JavaScript based projects and applications.\n\n1. Create a fork\n2. Create your feature branch: git checkout -b my-feature\n3. Commit your changes: git commit -am 'Add some feature'\n4. Push to the branch: git push origin my-new-feature\n5. Submit a pull request 🚀\n\n## Issues\n\nIf you find a bug, please file an issue on [the issue tracker](https://github.com/fuadop/sendchamp-sdk/issues).\n\n## Contributors ✨\n\nThanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://github.com/sadiqful\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/39303081?v=4?s=100\" width=\"100px;\" alt=\"Aliyu Abubakar\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eAliyu Abubakar\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"#blog-sadiqful\" title=\"Blogposts\"\u003e📝\u003c/a\u003e \u003ca href=\"#business-sadiqful\" title=\"Business development\"\u003e💼\u003c/a\u003e \u003ca href=\"#content-sadiqful\" title=\"Content\"\u003e🖋\u003c/a\u003e \u003ca href=\"#financial-sadiqful\" title=\"Financial\"\u003e💵\u003c/a\u003e \u003ca href=\"#ideas-sadiqful\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e \u003ca href=\"#mentoring-sadiqful\" title=\"Mentoring\"\u003e🧑‍🏫\u003c/a\u003e \u003ca href=\"#platform-sadiqful\" title=\"Packaging/porting to new platform\"\u003e📦\u003c/a\u003e \u003ca href=\"#question-sadiqful\" title=\"Answering Questions\"\u003e💬\u003c/a\u003e \u003ca href=\"#tutorial-sadiqful\" title=\"Tutorials\"\u003e✅\u003c/a\u003e \u003ca href=\"#talk-sadiqful\" title=\"Talks\"\u003e📢\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"http://fuadolatunji.me\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/65264054?v=4?s=100\" width=\"100px;\" alt=\"Fuad Olatunji\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eFuad Olatunji\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fuadop/sendchamp-sdk/issues?q=author%3Afuadop\" title=\"Bug reports\"\u003e🐛\u003c/a\u003e \u003ca href=\"https://github.com/fuadop/sendchamp-sdk/commits?author=fuadop\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#infra-fuadop\" title=\"Infrastructure (Hosting, Build-Tools, etc)\"\u003e🚇\u003c/a\u003e \u003ca href=\"#maintenance-fuadop\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e \u003ca href=\"#design-fuadop\" title=\"Design\"\u003e🎨\u003c/a\u003e \u003ca href=\"#example-fuadop\" title=\"Examples\"\u003e💡\u003c/a\u003e \u003ca href=\"#security-fuadop\" title=\"Security\"\u003e🛡️\u003c/a\u003e \u003ca href=\"#tool-fuadop\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"#userTesting-fuadop\" title=\"User Testing\"\u003e📓\u003c/a\u003e\u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"top\" width=\"14.28%\"\u003e\u003ca href=\"https://igbiriki.com\"\u003e\u003cimg src=\"https://avatars.githubusercontent.com/u/49701046?v=4?s=100\" width=\"100px;\" alt=\"The L D O\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eThe L D O\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/fuadop/sendchamp-sdk/commits?author=igmrrf\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#tool-igmrrf\" title=\"Tools\"\u003e🔧\u003c/a\u003e \u003ca href=\"https://github.com/fuadop/sendchamp-sdk/commits?author=igmrrf\" title=\"Documentation\"\u003e📖\u003c/a\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-restore --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuadop%2Fsendchamp-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffuadop%2Fsendchamp-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffuadop%2Fsendchamp-sdk/lists"}