{"id":15525350,"url":"https://github.com/ghostwriter/atprotocol","last_synced_at":"2025-04-23T08:53:51.870Z","repository":{"id":206071023,"uuid":"713605452","full_name":"ghostwriter/atprotocol","owner":"ghostwriter","description":"[WIP]Bluesky API Client for AT Protocol","archived":false,"fork":false,"pushed_at":"2024-10-21T11:41:25.000Z","size":1309,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"0.1.x","last_synced_at":"2024-10-21T16:55:02.143Z","etag":null,"topics":["atp","atproto","atprotocol","bluesky","bluesky-api","bluesky-app","bluesky-bot","bluesky-client","bluesky-feed","bluesky-generator","bluesky-social","bluesky-webclient","ghostwriter","lexicon"],"latest_commit_sha":null,"homepage":"https://github.com/ghostwriter/atprotocol","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ghostwriter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["ghostwriter"]}},"created_at":"2023-11-02T21:36:21.000Z","updated_at":"2024-10-21T11:41:30.000Z","dependencies_parsed_at":"2023-11-07T22:09:57.700Z","dependency_job_id":"3f41c3fc-2302-414e-8e7c-60c4d4b88b74","html_url":"https://github.com/ghostwriter/atprotocol","commit_stats":null,"previous_names":["ghostwriter/atprotocol"],"tags_count":0,"template":false,"template_full_name":"ghostwriter/wip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghostwriter%2Fatprotocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghostwriter%2Fatprotocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghostwriter%2Fatprotocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ghostwriter%2Fatprotocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ghostwriter","download_url":"https://codeload.github.com/ghostwriter/atprotocol/tar.gz/refs/heads/0.1.x","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242018605,"owners_count":20058647,"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":["atp","atproto","atprotocol","bluesky","bluesky-api","bluesky-app","bluesky-bot","bluesky-client","bluesky-feed","bluesky-generator","bluesky-social","bluesky-webclient","ghostwriter","lexicon"],"created_at":"2024-10-02T10:56:59.884Z","updated_at":"2025-04-23T08:53:51.859Z","avatar_url":"https://github.com/ghostwriter.png","language":"PHP","funding_links":["https://github.com/sponsors/ghostwriter"],"categories":[],"sub_categories":[],"readme":"# Atprotocol\n\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/ghostwriter?label=Sponsor+@ghostwriter/atprotocol\u0026logo=GitHub+Sponsors)](https://github.com/sponsors/ghostwriter)\n[![Automation](https://github.com/ghostwriter/atprotocol/actions/workflows/automation.yml/badge.svg)](https://github.com/ghostwriter/atprotocol/actions/workflows/automation.yml)\n[![Supported PHP Version](https://badgen.net/packagist/php/ghostwriter/atprotocol?color=8892bf)](https://www.php.net/supported-versions)\n[![Downloads](https://badgen.net/packagist/dt/ghostwriter/atprotocol?color=blue)](https://packagist.org/packages/ghostwriter/atprotocol)\n\n\u003e [!WARNING]\n\u003e\n\u003e This project is not finished yet, work in progress.\n\n## Installation\n\nYou can install the package via composer:\n\n``` bash\ncomposer require ghostwriter/atprotocol\n```\n\n## Usage\n\n### Auth\n\u003e **Info**\n\u003e\n\u003e Use app passwords to securely login to Bluesky without giving full access to your account or password.\n\u003e https://bsky.app/settings/app-passwords\n\n```php\n$bsky = new Bluesky(personalDataServer: 'https://bsky.social');\n\n// create a new account on the server\n$sessionData = $bsky-\u003ecreateAccount(\n  email: 'nathanael.esayeas@protonmail.com',\n  handle: 'codepoet.bsky.social',\n  password: '************'\n  inviteCode: 'black-lives-matter',\n);\n\n// if an existing session (accessed with 'bsky.session') was securely stored previously, then reuse that\n$bsky-\u003eresumeSession(session: $sessionData);\n\n// if no old session was available, create a new one by logging in with password (App Password)\n$sessionData = $bsky-\u003elogin(\n    identifier: 'codepoet.bsky.social',\n    password: '************'\n);\n\n$bsky-\u003epost(text: 'My first post using ghostwriter/atprotocol for PHP.');\n\n// Feeds and content\n$bsky-\u003egetTimeline($params,$opts)\n$bsky-\u003egetAuthorFeed($params,$opts)\n$bsky-\u003egetPostThread($params,$opts)\n$bsky-\u003egetPost($params)\n$bsky-\u003egetPosts($params,$opts)\n$bsky-\u003egetLikes($params,$opts)\n$bsky-\u003egetRepostedBy($params,$opts)\n$bsky-\u003epost($record)\n$bsky-\u003edeletePost($postUri)\n$bsky-\u003elike($uri, cid)\n$bsky-\u003edeleteLike($likeUri)\n$bsky-\u003erepost($uri, cid)\n$bsky-\u003edeleteRepost($repostUri)\n$bsky-\u003euploadBlob($data,$opts)\n\n// Social graph\n$bsky-\u003egetFollows($params,$opts)\n$bsky-\u003egetFollowers($params,$opts)\n$bsky-\u003efollow($did)\n$bsky-\u003edeleteFollow($followUri)\n\n// Actors\n$bsky-\u003egetProfile($params,$opts)\n$bsky-\u003eupsertProfile($updateFn)\n$bsky-\u003egetProfiles($params,$opts)\n$bsky-\u003egetSuggestions($params,$opts)\n$bsky-\u003esearchActors($params,$opts)\n$bsky-\u003emute($did)\n$bsky-\u003eunmute($did)\n$bsky-\u003emuteModList($listUri)\n$bsky-\u003eunmuteModList($listUri)\n$bsky-\u003eblockModList($listUri)\n$bsky-\u003eunblockModList($listUri)\n\n// Notifications\n$bsky-\u003elistNotifications($params,$opts)\n$bsky-\u003ecountUnreadNotifications($params,$opts)\n$bsky-\u003eupdateSeenNotifications()\n\n// Identity\n$bsky-\u003eresolveHandle($params,$opts)\n$bsky-\u003eupdateHandle($params,$opts)\n\n// Session management\n$bsky-\u003ecreateAccount($params)\n$bsky-\u003elogin($params)\n$bsky-\u003eresumeSession($session)\n\n\n\n// Excepions\n        // { \"name\": \"InvalidHandle\" },\n        // { \"name\": \"InvalidPassword\" },\n        // { \"name\": \"InvalidInviteCode\" },\n        // { \"name\": \"HandleNotAvailable\" },\n        // { \"name\": \"UnsupportedDomain\" },\n        // { \"name\": \"UnresolvableDid\" },\n        // { \"name\": \"IncompatibleDidDoc\" }\n\n\n// TODO: extract the headers from the lexicon objects\n```\n\n### Changelog\n\nPlease see [CHANGELOG.md](./CHANGELOG.md) for more information on what has changed recently.\n\n### Security\n\nIf you discover any security-related issues, please use [`Security Advisories`](https://github.com/ghostwriter/atprotocol/security/advisories/new) instead of using the issue tracker.\n\n### Credits\n\n- [Nathanael Esayeas](https://github.com/ghostwriter)\n- [All Contributors](https://github.com/ghostwriter/atprotocol/contributors)\n\n### License\n\nThe BSD-4-Clause. Please see [License File](./LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghostwriter%2Fatprotocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fghostwriter%2Fatprotocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fghostwriter%2Fatprotocol/lists"}