{"id":19404605,"url":"https://github.com/seven-io/loopback","last_synced_at":"2026-05-16T06:03:54.510Z","repository":{"id":106113874,"uuid":"549641139","full_name":"seven-io/loopback","owner":"seven-io","description":"Official LoopBack component for seven","archived":false,"fork":false,"pushed_at":"2025-02-05T16:21:55.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-05T17:31:06.659Z","etag":null,"topics":["loopback","loopback-component"],"latest_commit_sha":null,"homepage":"https://www.seven.io","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/seven-io.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":"2022-10-11T14:00:44.000Z","updated_at":"2025-02-05T16:21:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"58044170-c649-4c72-b129-0aeb6d0832fc","html_url":"https://github.com/seven-io/loopback","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Floopback","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Floopback/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Floopback/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/seven-io%2Floopback/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/seven-io","download_url":"https://codeload.github.com/seven-io/loopback/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240581597,"owners_count":19824139,"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":["loopback","loopback-component"],"created_at":"2024-11-10T11:35:37.078Z","updated_at":"2026-05-16T06:03:54.503Z","avatar_url":"https://github.com/seven-io.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://www.seven.io/wp-content/uploads/Logo.svg\" width=\"250\" alt=\"seven logo\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eseven Connector for LoopBack 4\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  Official \u003ca href=\"https://loopback.io\"\u003eLoopBack 4\u003c/a\u003e connector for sending SMS, placing text-to-speech calls and dispatching RCS messages via the seven gateway.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-teal.svg\" alt=\"MIT License\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@seven.io/loopback\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@seven.io/loopback\" alt=\"npm\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/LoopBack-4-blue\" alt=\"LoopBack 4\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Node.js-14%2B-brightgreen\" alt=\"Node.js 14+\" /\u003e\n\u003c/p\u003e\n\n---\n\n## Features\n\nSupports the following [seven REST API](https://docs.seven.io/en/rest-api/first-steps) endpoints:\n\n- [Send SMS](https://docs.seven.io/en/rest-api/endpoints/sms#send-sms)\n- [Place Text-to-Speech calls](https://docs.seven.io/en/rest-api/endpoints/voice#send-voice-call)\n- [Send RCS messages](https://docs.seven.io/en/rest-api/endpoints/rcs#send-rcs)\n\n## Prerequisites\n\n- LoopBack 4 project\n- A [seven account](https://www.seven.io/) with API key ([How to get your API key](https://help.seven.io/en/developer/where-do-i-find-my-api-key))\n\n## Installation\n\n```bash\nnpm i @seven.io/loopback\n# or\nyarn add @seven.io/loopback\n```\n\n## Setup\n\n### 1. Create a data source\n\n```ts\nimport { inject, lifeCycleObserver, LifeCycleObserver } from '@loopback/core'\nimport { juggler } from '@loopback/repository'\nimport { SevenConnector } from '@seven.io/loopback'\n\nconst config = {\n    apiKey:    process.env.SEVEN_API_KEY,\n    connector: SevenConnector,\n    name:      'seven',\n}\n\n@lifeCycleObserver('datasource')\nexport class SevenDataSource extends juggler.DataSource implements LifeCycleObserver {\n    static dataSourceName = 'seven'\n    static readonly defaultConfig = config\n\n    constructor(\n        @inject('datasources.config.seven', { optional: true })\n        dsConfig: object = config,\n    ) {\n        super('seven', dsConfig)\n    }\n}\n```\n\n### 2. Create a model\n\n```ts\nimport { Model, model, property } from '@loopback/repository'\n\n@model()\nexport class SevenMessage extends Model {\n    @property({ id: true, required: true, type: 'string' })\n    operation: 'voice' | 'sms' | 'rcs'\n\n    @property({ required: true,  type: 'string' }) to:   string\n    @property({ required: false, type: 'string' }) from: string\n    @property({ required: true,  type: 'string' }) text: string\n\n    constructor(data?: Partial\u003cSevenMessage\u003e) { super(data) }\n}\n```\n\n### 3. Create a service provider\n\n```ts\nimport { injectable, BindingScope, Provider, inject } from '@loopback/core'\nimport { GenericService, getService } from '@loopback/service-proxy'\nimport { SevenDataSource } from '../datasources'\nimport { SevenMessage } from '../models'\n\nexport interface Seven extends GenericService {\n    send(data: SevenMessage): Promise\u003cunknown\u003e\n}\n\n@injectable({ scope: BindingScope.TRANSIENT })\nexport class SevenProvider implements Provider\u003cSeven\u003e {\n    constructor(\n        @inject('datasources.seven')\n        protected dataSource: SevenDataSource = new SevenDataSource(),\n    ) {}\n\n    value(): Promise\u003cSeven\u003e { return getService(this.dataSource) }\n}\n```\n\n## Usage\n\n```ts\nconst msg = new SevenMessage({\n    from:      'Acme',\n    operation: 'sms',\n    text:      'Hello from LoopBack',\n    to:        '+491234567890',\n})\nawait sevenProvider.send(msg)\n```\n\nSwitch `operation` to `voice` for text-to-speech, or `rcs` for RCS messages.\n\n### Payload schemas\n\n| Operation | Fields |\n|-----------|--------|\n| `sms`   | `from?`, `text`, `to` |\n| `voice` | `from?`, `text` (or XML), `to` |\n| `rcs`   | `from?` (agent ID), `text`, `to` |\n\n## Support\n\nNeed help? Feel free to [contact us](https://www.seven.io/en/company/contact/) or [open an issue](https://github.com/seven-io/loopback/issues).\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseven-io%2Floopback","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseven-io%2Floopback","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseven-io%2Floopback/lists"}