{"id":45704119,"url":"https://github.com/timeplus-io/timeplus-connector-registry","last_synced_at":"2026-02-24T23:32:17.023Z","repository":{"id":339629568,"uuid":"1136028059","full_name":"timeplus-io/timeplus-connector-registry","owner":"timeplus-io","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-20T18:09:53.000Z","size":169,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-20T21:22:32.500Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","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/timeplus-io.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-17T00:11:00.000Z","updated_at":"2026-02-20T18:09:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/timeplus-io/timeplus-connector-registry","commit_stats":null,"previous_names":["timeplus-io/timeplus-connector-registry"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/timeplus-io/timeplus-connector-registry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeplus-io%2Ftimeplus-connector-registry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeplus-io%2Ftimeplus-connector-registry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeplus-io%2Ftimeplus-connector-registry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeplus-io%2Ftimeplus-connector-registry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/timeplus-io","download_url":"https://codeload.github.com/timeplus-io/timeplus-connector-registry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/timeplus-io%2Ftimeplus-connector-registry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29804600,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T22:43:48.403Z","status":"ssl_error","status_checked_at":"2026-02-24T22:43:18.536Z","response_time":75,"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":"2026-02-24T23:32:13.601Z","updated_at":"2026-02-24T23:32:17.018Z","avatar_url":"https://github.com/timeplus-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Timeplus Connector Registry\n\nCentral registry for Timeplus Custom Table Function (CTF) connectors. Think npm/PyPI for Timeplus data connectors.\n\n## Features\n\n- 📦 **Package Management** - Publish, version, and distribute connectors\n- 🔍 **Discovery** - Search and browse connectors by category, tags, and keywords\n- 📥 **Easy Installation** - Generate ready-to-run SQL for any connector\n- 🏷️ **Categorization** - Source, Sink, and Bidirectional connectors\n- ✅ **Verification** - Verified publisher badges for trusted connectors\n\n## Quick Start\n\n### Option 1: Docker Compose (Recommended)\n\nThe easiest way to run the registry locally:\n\n```bash\n# Start the registry API (UI is integrated)\ndocker-compose up -d\n\n# View logs\ndocker-compose logs -f api\n\n# Stop services\ndocker-compose down\n\n# Stop and remove data\ndocker-compose down -v\n```\n\nOnce running:\n- **UI**: http://localhost:8000\n- **API Docs**: http://localhost:8000/docs\n- **Health Check**: http://localhost:8000/health\n\n### Option 2: Local Development\n\nIf you prefer to run without Docker:\n\n```bash\n# 1. Install Python dependencies\npip install -e .\n\n# 2. Set up environment variables (copy and edit .env.example)\ncp .env.example .env\n# By default, it uses an embedded SQLite database (registry.db)\n\n# 3. Start the server\nuvicorn registry.main:app --reload\n```\n\n\n\n## API Documentation\n\nOnce running, visit:\n- Swagger UI: http://localhost:8000/docs\n- ReDoc: http://localhost:8000/redoc\n- Health Check: http://localhost:8000/health\n\n## Using the API\n\n### Register a Publisher\n\n```bash\ncurl -X POST \"http://localhost:8000/api/v1/register\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"namespace\": \"timeplus\",\n    \"display_name\": \"Timeplus\",\n    \"email\": \"gang@timeplus.com\",\n    \"password\": \"Password!\"\n  }'\n```\n\nResponse:\n```json\n{\n  \"access_token\":\"eyJhbGciOiJIUzI1Ni......\",\n  \"token_type\":\"bearer\"}\n```\n\n### Login\n\n```bash\ncurl -X POST \"http://localhost:8000/api/v1/login\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"namespace\": \"timeplus\",\n    \"password\": \"Password!\"\n  }'\n```\n\n### Publish a Connector\n\n```bash\n# Using the sample connector\ncurl -X POST \"http://localhost:8000/api/v1/connectors\" \\\n  -H \"Authorization: Bearer \u003cyour-token\u003e\" \\\n  -H \"Content-Type: application/x-yaml\" \\\n  --data-binary @samples/kafka-json-reader.yaml\n```\n\n### Search Connectors\n\n```bash\n# Search by keyword\ncurl \"http://localhost:8000/api/v1/connectors?q=kafka\"\n\n# Filter by category\ncurl \"http://localhost:8000/api/v1/connectors?category=source\"\n\n# Filter by tags\ncurl \"http://localhost:8000/api/v1/connectors?tags=kafka,streaming\"\n\n# Combine filters\ncurl \"http://localhost:8000/api/v1/connectors?q=json\u0026category=source\u0026tags=kafka\"\n```\n\n### Get Connector Details\n\n```bash\ncurl \"http://localhost:8000/api/v1/connectors/mycompany/kafka-json-reader\"\n```\n\n### Get Installation SQL\n\n```bash\n# Get SQL for latest version\ncurl \"http://localhost:8000/api/v1/connectors/mycompany/kafka-json-reader/sql\"\n\n# Get SQL for specific version\ncurl \"http://localhost:8000/api/v1/connectors/mycompany/kafka-json-reader/sql?version=1.0.0\"\n\n# Get SQL with custom stream name\ncurl \"http://localhost:8000/api/v1/connectors/mycompany/kafka-json-reader/sql?name=my_kafka_stream\"\n```\n\n### List Tags and Categories\n\n```bash\n# List all tags\ncurl \"http://localhost:8000/api/v1/tags\"\n\n# Get category statistics\ncurl \"http://localhost:8000/api/v1/categories\"\n```\n\n## Project Structure\n\n```\nregistry/\n├── main.py              # FastAPI application entry point\n├── config.py            # Configuration settings\n├── database.py          # Database connection and session\n├── models/              # SQLAlchemy ORM models\n├── schemas/             # Pydantic schemas\n├── routers/             # API route handlers\n├── services/            # Business logic\n└── utils/               # Utility functions\n```\n\n## Environment Variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `DATABASE_URL` | `sqlite+aiosqlite:///./registry.db` | Database connection string |\n| `SECRET_KEY` | (required) | JWT signing key - use a long random string |\n| `DEBUG` | `false` | Enable debug mode |\n| `HOST` | `0.0.0.0` | Server bind host |\n| `PORT` | `8000` | Server bind port |\n\n## License\n\nApache 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimeplus-io%2Ftimeplus-connector-registry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftimeplus-io%2Ftimeplus-connector-registry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftimeplus-io%2Ftimeplus-connector-registry/lists"}