{"id":32119711,"url":"https://github.com/open-zhy/podio-ts","last_synced_at":"2026-02-21T19:34:04.969Z","repository":{"id":62421749,"uuid":"264736211","full_name":"open-zhy/podio-ts","owner":"open-zhy","description":"Podio client module for Deno and Typescript programming","archived":false,"fork":false,"pushed_at":"2020-10-22T01:09:17.000Z","size":20,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-10-20T18:26:33.867Z","etag":null,"topics":["deno","hacktoberfest","podio","podio-api","typescript"],"latest_commit_sha":null,"homepage":"","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/open-zhy.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}},"created_at":"2020-05-17T18:58:59.000Z","updated_at":"2020-10-22T01:08:59.000Z","dependencies_parsed_at":"2022-11-01T17:32:16.867Z","dependency_job_id":null,"html_url":"https://github.com/open-zhy/podio-ts","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/open-zhy/podio-ts","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-zhy%2Fpodio-ts","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-zhy%2Fpodio-ts/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-zhy%2Fpodio-ts/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-zhy%2Fpodio-ts/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/open-zhy","download_url":"https://codeload.github.com/open-zhy/podio-ts/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/open-zhy%2Fpodio-ts/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29691045,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T18:18:25.093Z","status":"ssl_error","status_checked_at":"2026-02-21T18:18:22.435Z","response_time":107,"last_error":"SSL_read: 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":["deno","hacktoberfest","podio","podio-api","typescript"],"created_at":"2025-10-20T18:14:35.478Z","updated_at":"2026-02-21T19:34:04.954Z","avatar_url":"https://github.com/open-zhy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Podio client written in Typescript\n\nThis module aims to provide a Podio client implementation for [Deno](https://deno.land/) and/or general Typescript programming\n\n![test](https://github.com/open-zhy/podio-ts/workflows/CI/badge.svg)\n\n# Version Note\n\n```\ndeno \u003e= 1.2\n```\n\n# Basic Usage\n\n### Import\n\nMost of public modules has been exported in `mod.ts`.\nSome modules that are arbitrary have to be exported explicitly from its placement\n\n```typescript\nimport {\n  Client,\n  PodioResponse,\n  PodioError,\n} from \"https://deno.land/x/podio/mod.ts\";\nimport { RuntimeStore } from \"https://deno.land/x/podio/store/store_runtime.ts\";\n```\n\n### Podio client setup and authentication\n\n```typescript\nconst podio = new Client(\"the-api-client\", \"the-client-secret-here\", {\n  // store can be left empty.\n  // in that case, each authentication\n  // process will attempt to retrieve token\n  // directly from Podio, which can potentialy\n  // lead into some rate limit issue\n  // RuntimeStore is a built-in storage, using Map data type\n  // see https://github.com/open-zhy/podio-ts/blob/master/store/store_runtime.ts\n  store: new RuntimeStore(),\n});\n\n// authenticate client\nconst response = await podio.authenticate(\"app\", {\n  app_id: 1234567,\n  app_token: \"a92239400b574cfca761cdf213a27975\",\n});\n\nconst oAuthToken = response.asOAuthObject();\nconsole.log({ oAuthToken });\n```\n\nAfter this process, an `OAuthObject` will be bound on the client instance, it will be used for any following requests which uses the same client instance\n\n### Make request\n\n```typescript\n// simple GET request\nconst response = await podio.request(\"GET\", `/app/1234567`);\nif (response instanceof PodioResponse) {\n  console.log(response.asObject()); // PodioObject data\n}\n```\n\nWe use native `fetch` and `Request` object to perform these client request. The 3rd options is passed through parameters for the native request object\n\n```typescript\nconst response = await podio.request(\"PUT\", `/item/123456789`, {\n  body: {\n    fields: {\n      title: \"Hello Deno\",\n      \"category-1\": [1],\n    },\n  },\n});\n// response is either PodioError or PodioResponse\n```\n\n# Data objects\n\n_(coming soon)_\n\n# Events listeners\n\nFor now we can subscribe to 3 types of events emitted during each API call\n\n- **podio.request** - Executed when a request has been created and ready to fire, args: the `Request` object\n- **podio.response** - Fired once we get an healthy response from Podio, args: the `PodioResponse` object\n- **podio.error** - When a Podio error caught, args: `PodioError` object\n\n#### Example\n\n```typescript\n// just right after client creation\n// here we will just print information about Rate Limit contained in response headers\npodio.event?.on(\"podio.response\", (response: PodioResponse) =\u003e {\n  response.headers?.forEach((value, key) =\u003e {\n    if (\n      [\n        \"x-rate-limit-remaining\",\n        \"x-rate-limit-limit\",\n        \"x-podio-auth-ref\",\n      ].includes(key)\n    ) {\n      console.log(`--\u003e ${key}=${value}`);\n    }\n  });\n});\n```\n\n# Contribute? Welcome!!\n\nEveryone is welcome to contribute to this project.\nTherefore, here is some list of what I planned to implement in the future\n\n- **Tests** - Implement more test suite cases., just add \\*\\_test.ts file OR add more statement on existing ones\n- **Data Objects** - It would be good to have an abstraction of each type of data Podio can handle, here is the [complete references](https://developers.podio.com/doc)\n- **Session Manager** - Add common used session manager: filesystem, redis, in-memory db like [this](https://docs.rs/memdb/1.0.0/memdb/)\n- **Sandbox / Explorer** - Leverage simplicity of Deno to implement a sandox / explorer that can be used to test some API features\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-zhy%2Fpodio-ts","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopen-zhy%2Fpodio-ts","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopen-zhy%2Fpodio-ts/lists"}