{"id":24744389,"url":"https://github.com/linux-vps/podio-server","last_synced_at":"2025-03-22T22:29:29.451Z","repository":{"id":271848663,"uuid":"914750655","full_name":"linux-vps/podio-server","owner":"linux-vps","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-16T03:30:21.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-28T02:18:12.428Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/linux-vps.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":"2025-01-10T08:29:37.000Z","updated_at":"2025-01-16T03:30:22.000Z","dependencies_parsed_at":"2025-01-10T09:48:53.681Z","dependency_job_id":"f20ff2ec-2646-41a2-a2fd-f3309f237d06","html_url":"https://github.com/linux-vps/podio-server","commit_stats":null,"previous_names":["linux-vps/podio-server"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-vps%2Fpodio-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-vps%2Fpodio-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-vps%2Fpodio-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linux-vps%2Fpodio-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linux-vps","download_url":"https://codeload.github.com/linux-vps/podio-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245028246,"owners_count":20549480,"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":[],"created_at":"2025-01-28T02:18:20.399Z","updated_at":"2025-03-22T22:29:29.431Z","avatar_url":"https://github.com/linux-vps.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Podio API\n\nứng dụng TypeScript để tương tác với Podio API\n\n## Tính năng chính\n\n### Xác thực (Authentication)\n- Xác thực tự động với Podio API\n- Quản lý và làm mới token\n- Lưu trữ token trong file JSON \n- Refresh token\n\n### Quản lý Items\n- **Thêm và Sửa Items**\n  - Tạo item mới với các trường tùy chỉnh\n  - Cập nhật thông tin item\n  - Cập nhật giá trị các trường\n  - Sao chép item\n\n- **Truy vấn Items**\n  - Lấy thông tin chi tiết item\n  - Tìm kiếm items theo bộ lọc\n  - Lấy items theo view\n  - Tìm kiếm items có thể tham chiếu\n  - Xuất items ra file Excel\n\n- **Quản lý phiên bản**\n  - Xem lịch sử các phiên bản của item\n  - Xem sự khác biệt giữa các phiên bản\n  - Khôi phục về phiên bản cũ\n\n### Quản lý Files\n- **Upload và Quản lý Files**\n  - Upload file lên Podio\n  - Attach file vào item\n  - Lấy danh sách files\n  - Cập nhật thông tin file\n  - Xóa file\n\n### Quản lý Organizations\n- **Thao tác với Organizations**\n  - Lấy danh sách organizations\n  - Lấy thông tin chi tiết organization\n  - Tạo organization mới\n  - Lấy danh sách spaces trong organization\n\n### Quản lý Applications\n- **Quản lý Ứng dụng**\n  - Tạo ứng dụng mới\n  - Cập nhật thông tin ứng dụng\n  - Lấy thông tin ứng dụng\n  - Xóa ứng dụng\n  - Kích hoạt/Vô hiệu hóa ứng dụng\n  - Cài đặt ứng dụng vào space\n\n### Webhooks\n- Tạo webhook mới\n- Lấy danh sách webhooks\n- Xóa webhook\n- Xác thực webhook\n\n## Cài đặt\n\n```bash\nnpm install\n```\n\n## Cấu hình\n\n### Tạo file `.env` từ file `.env.example` và điền các thông tin:\n\n```env\nPODIO_CLIENT_ID=your_client_id\nPODIO_CLIENT_SECRET=your_client_secret\nPODIO_USER=your_username\nPODIO_PASSWORD=your_password\n```\n\n## Sử dụng\n\n### 1. Khởi tạo Podio client\n\n```typescript\nimport { Podio } from \"./APIs/podioAPI\";\nimport { config } from 'dotenv';\n\nconfig();\n\nconst pd = new Podio({\n  clientId: \u003cstring\u003eprocess.env.PODIO_CLIENT_ID,\n  clientSecret: \u003cstring\u003eprocess.env.PODIO_CLIENT_SECRET,\n  username: \u003cstring\u003eprocess.env.PODIO_USER,\n  password: \u003cstring\u003eprocess.env.PODIO_PASSWORD\n}, \"./podio_token.json\");\n```\n\n### 2. Làm việc với Items\n\n```typescript\n// Lấy danh sách items\nconst items = await pd.Items.FilterItems(appId);\n\n// Lấy thông tin chi tiết item\nconst item = await pd.Items.GetItem(itemId);\n\n// Tạo item mới\nconst newItem = await pd.Items.addItem(appId, {\n  external_id: \"item-001\",\n  fields: [\n    {\n      external_id: \"title\",\n      values: [{ value: \"New Item\" }]\n    }\n  ]\n});\n```\n\n### 3. Quản lý Files\n\n```typescript\n// Upload file\nconst uploadResult = await pd.Files.uploadFile(\"/path/to/file.txt\", \"file.txt\");\n\n// Attach file vào item\nconst attachResult = await pd.Files.attachFile(uploadResult.file_id, \"item\", itemId);\n\n// Lấy danh sách files của item\nconst files = await pd.Files.getFiles(\"item\", itemId);\n\n// Cập nhật mô tả file\nawait pd.Files.updateFile(fileId, \"Mô tả mới\");\n\n// Xóa file\nawait pd.Files.deleteFile(fileId);\n```\n\n### 4. Quản lý Organizations\n\n```typescript\n// Lấy danh sách organizations\nconst orgs = await pd.Organizations.getOrganizations();\n\n// Lấy thông tin chi tiết organization\nconst org = await pd.Organizations.getOrganization(orgId);\n\n// Tạo organization mới\nconst newOrg = await pd.Organizations.addOrganization({\n  name: \"My Organization\",\n  url: \"https://myorg.com\"\n});\n\n// Lấy danh sách spaces\nconst spaces = await pd.Organizations.getOrganizationSpaces(orgId);\n```\n\n### 5. Quản lý Applications\n\n```typescript\n// Tạo ứng dụng mới\nconst appConfig = {\n  space_id: spaceId,\n  config: {\n    name: \"My App\",\n    item_name: \"Item\",\n    description: \"Description\",\n    fields: [\n      {\n        type: \"text\",\n        external_id: \"title\",\n        config: {\n          label: \"Title\",\n          required: true\n        }\n      }\n    ]\n  }\n};\n\nconst newApp = await pd.Applications.addApp(appConfig);\n\n// Cập nhật ứng dụng\nawait pd.Applications.updateApp(appId, {\n  config: {\n    description: \"New description\"\n  }\n});\n\n// Lấy thông tin ứng dụng\nconst app = await pd.Applications.getApp(appId);\n\n// Lấy danh sách ứng dụng trong space\nconst apps = await pd.Applications.getApps(spaceId);\n```\n\n## Cấu trúc dự án\n\n```\n├── src/\n│   ├── APIs/           # API implementations\n│   │   ├── Methods/    # Các class implementation cho từng API\n│   │   │   ├── Items.ts\n│   │   │   ├── Files.ts\n│   │   │   ├── Organizations.ts\n│   │   │   ├── Applications.ts\n│   │   │   └── Webhooks.ts\n│   │   └── podioAPI.ts # Class Podio chính\n│   ├── interfaces/     # TypeScript interfaces\n│   ├── types/         # TypeScript types\n│   ├── Services/      # Shared services\n│   └── app.ts         # File chương trình chính\n```\n\n## Các bước phát triển\n\n1. **Thêm Interface mới**\n   - Định nghĩa interface trong `interfaces/podio_interfaces.ts`\n   - Thêm interface vào `IPodio`\n\n2. **Thêm Types**\n   - Thêm các type cần thiết vào `types/podio_types.ts`\n\n3. **Implement API**\n   - Tạo file mới trong `APIs/Methods/`\n   - Implement các phương thức từ interface\n   - Sử dụng các type đã định nghĩa\n\n4. **Cập nhật Podio class**\n   - Import class mới trong `podioAPI.ts`\n   - Thêm instance vào constructor\n\n5. **Testing**\n   - Thêm code test vào `app.ts`\n   - Kiểm tra các trường hợp sử dụng\n\n## Tài liệu tham khảo\n- [Podio API Documentation](https://developers.podio.com/doc)\n- [Podio JS SDK](https://github.com/podio/podio-js)\n- [Node PodioSDK](https://github.com/1King-coder/Node-PodioSDK)\n- Claude 3.5 Sonnet","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-vps%2Fpodio-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinux-vps%2Fpodio-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinux-vps%2Fpodio-server/lists"}