{"id":13828512,"url":"https://github.com/buddy-works/buddy-works-php-api","last_synced_at":"2026-01-18T02:21:14.095Z","repository":{"id":37546479,"uuid":"46412700","full_name":"buddy-works/buddy-works-php-api","owner":"buddy-works","description":"PHP SDK for Buddy API","archived":false,"fork":false,"pushed_at":"2023-04-19T20:49:40.000Z","size":204,"stargazers_count":14,"open_issues_count":3,"forks_count":9,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-28T01:42:46.841Z","etag":null,"topics":["buddy","buddy-pipeline","continuous-delivery","continuous-deployment","continuous-integration","php-api","php-sdk"],"latest_commit_sha":null,"homepage":"https://buddy.works/docs/api/getting-started/overview","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buddy-works.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2015-11-18T10:50:41.000Z","updated_at":"2023-09-05T19:06:32.000Z","dependencies_parsed_at":"2024-08-04T09:08:40.892Z","dependency_job_id":"99334cfa-364d-4d3d-a883-2cde438dfd99","html_url":"https://github.com/buddy-works/buddy-works-php-api","commit_stats":{"total_commits":41,"total_committers":3,"mean_commits":"13.666666666666666","dds":0.2682926829268293,"last_synced_commit":"aea751bdbac587c404d5b17cc041ca76fa418fb3"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/buddy-works/buddy-works-php-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buddy-works%2Fbuddy-works-php-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buddy-works%2Fbuddy-works-php-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buddy-works%2Fbuddy-works-php-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buddy-works%2Fbuddy-works-php-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buddy-works","download_url":"https://codeload.github.com/buddy-works/buddy-works-php-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buddy-works%2Fbuddy-works-php-api/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28526569,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["buddy","buddy-pipeline","continuous-delivery","continuous-deployment","continuous-integration","php-api","php-sdk"],"created_at":"2024-08-04T09:02:50.032Z","updated_at":"2026-01-18T02:21:14.077Z","avatar_url":"https://github.com/buddy-works.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"# Buddy Works APIs PHP SDK\n\n[![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%208.0-8892BF.svg)](https://php.net/)\n[![buddy branch](https://app.buddy.works/buddy-works/buddy-works-php-api/repository/branch/master/badge.svg?token=be04e77cb21d0e7e611853e903e521ba233e01d46699a1e6dc00f85a853cbdd6 \"buddy branch\")](https://app.buddy.works/buddy-works/buddy-works-php-api/repository/branch/master)\n[![Latest Stable Version](https://poser.pugx.org/buddy-works/buddy-works-php-api/v/stable?format=flat)](https://packagist.org/packages/buddy-works/buddy-works-php-api)\n![GitHub](https://img.shields.io/github/license/buddy-works/buddy-works-php-api)\n\nOfficial PHP client library for [Buddy Build Server with CI](https://buddy.works).\n\n## Installation\n\nThis library is distributed on `packagist` and is working with `composer`. In order to add it as a dependency, run the following command:\n\n``` sh\ncomposer require buddy-works/buddy-works-php-api\n```\n\n### Compatibility\n\n| PHP version | SDK version |\n| --------------- | ---------------------- |\n| ^8.0 | 1.4 |\n| ^7.3 | 1.3 |\n| ^7.2 | 1.2 |\n| 5.5  | 1.1 |\n \n## Usage of OAUTH\n\nFirst you need to add application in your [Buddy ID](https://app.buddy.works/my-apps).\n\nYou will then obtain clientId \u0026 clientSecret to execute this code:\n\n```php\n$buddy = new Buddy\\Buddy([\n  'clientId' =\u003e 'your-client-id',\n  'clientSecret' =\u003e 'your-client-secret'\n]);\ntry {\n  $url = $buddy-\u003egetOAuth()-\u003egetAuthorizeUrl([\n    Buddy\\BuddyOAuth::SCOPE_MANAGE_EMAILS\n  ], 'state', 'redirectUrl');  \n} catch(Buddy\\Exceptions\\BuddySDKException $e) {\n  echo 'Buddy SDK return an error: ' . $e-\u003egetMessage();\n  exit;\n}\n```\n\n`scopes` are arrays of strings - [help](https://buddy.works/api/reference/getting-started/oauth#supported-scopes)\n\n`state` should be an unguessable random string. It is used to protect against cross-site request forgery attacks.\n\n`redirectUrl` is optional [more](https://buddy.works/api/reference/getting-started/oauth#web-application-flow)\n\nYou should redirect the user to the created URL. Upon authorization, the user should get back to your page (configured in application or passed to the method)\n\n`query params` will get you the code \u0026 state. State should be the same as you passed before. Code is used in next step to exchange for access token:\n\n```php\n$buddy = new Buddy\\Buddy([\n  'clientId' =\u003e 'your-client-id',\n  'clientSecret' =\u003e 'your-client-secret'\n]);\ntry {\n  $auth = $buddy-\u003egetOAuth()-\u003egetAccessToken('state');\n} catch(Buddy\\Exceptions\\BuddyResponseException $e) {\n  echo 'Buddy API return an error: ' . $e-\u003egetMessage();\n  exit;\n} catch(Buddy\\Exceptions\\BuddySDKException $e) {\n  echo 'Buddy SDK return an error: ' . $e-\u003egetMessage();\n  exit;\n}\nvar_dump($auth);\n```\n\nState should be the same as in getAuthorizeUrl method. \n\n## Usage of direct tokens\n\nYou can also use [API Tokens](https://app.buddy.works/api-tokens).\n\nThat functionality is provided for testing purposes and will only work for individual tokens generated per user.\n\nAll requests will be called on behalf of the user who provided token.\n\n## API's\n\nFor detailed info what send for which method, error codes, rates \u0026 limits - check [Buddy documentation](https://buddy.works/api/reference/getting-started/overview)\n\nTo start using api you should pass to Buddy constructor acquired access token.\n\n```php\n$buddy = new Buddy\\Buddy([\n  'accessToken' =\u003e 'your access token'\n]);\n```\n \n### Workspaces\n\nGet workspaces\n```php\ntry {\n    $resp = $buddy-\u003egetApiWorkspaces()-\u003egetWorkspaces([$accessToken]);\n    var_dump($resp);\n    exit;\n} catch (Buddy\\Exceptions\\BuddyResponseException $e) {\n    echo $e-\u003egetMessage();\n    exit;\n} catch (Buddy\\Exceptions\\BuddySDKException $e) {\n    echo $e-\u003egetMessage();\n    exit;\n}\n```\n\nGet workspace\n```php\n    $buddy-\u003egetApiWorkspaces()-\u003egetWorkspace($domain, [$accessToken]);\n```\n\n### Webhooks\n\nGet webhooks\n```php\n    $buddy-\u003egetApiWebhooks()-\u003egetWebhooks($domain, [$accessToken]);\n```\n\nAdd webhook\n```php\n    $buddy-\u003egetApiWebhooks()-\u003eaddWebhook($data, $domain, [$accessToken]);\n```\n\nGet webhook\n```php\n    $buddy-\u003egetApiWebhooks()-\u003egetWebhook($domain, $webhookId, [$accessToken]);\n```\n\nEdit webhook\n```php\n    $buddy-\u003egetApiWebhooks()-\u003eeditWebhook($data, $domain, $webhookId, [$accessToken]);\n```\n\nDelete webhook\n```php\n    $buddy-\u003egetApiWebhooks()-\u003edeleteWebhook($domain, $webhookId, [$accessToken]);\n```\n\n### Tags\n\nGet tags\n```php\n    $buddy-\u003egetApiTags()-\u003egetTags($domain, $projectName, [$accessToken]);\n```\n\nGet tag\n```php\n    $buddy-\u003egetApiTags()-\u003egetTag($domain, $projectName, $name, [$accessToken]);\n```\n\n### Ssh Keys\n\nGet keys\n```php\n    $buddy-\u003egetApiSshKeys()-\u003egetKeys([$accessToken]);\n```\n\nAdd key\n```php\n    $buddy-\u003egetApiSshKeys()-\u003eaddKey($data, [$accessToken]);\n```\n\nDelete key\n```php\n    $buddy-\u003egetApiSshKeys()-\u003edeleteKey($keyId, [$accessToken]);\n```\n\nGet key\n```php\n    $buddy-\u003egetApiSshKeys()-\u003egetKey($keyId, [$accessToken]);\n```\n\n### Source\n\nGet contents\n```php\n    $buddy-\u003egetApiSource()-\u003egetContents($domain, $projectName, [$path], [$filters], [$accessToken]);\n```\n\nAdd file\n```php\n    $buddy-\u003egetApiSource()-\u003eaddFile($data, $domain, $projectName, [$accessToken]);\n```\n\nEdit file\n```php\n    $buddy-\u003egetApiSource()-\u003eeditFile($data, $domain, $projectName, $path, [$accessToken]);\n```\n\nDelete file\n```php\n    $buddy-\u003egetApiSource()-\u003edeleteFile($data, $domain, $projectName, $path, [$accessToken]);\n```\n\n### Projects\n\nGet projects\n```php\n    $buddy-\u003egetApiProjects()-\u003egetProjects($domain, [$filters], [$accessToken]);\n```\n\nAdd project\n```php\n    $buddy-\u003egetApiProjects()-\u003eaddProject($data, $domain, [$accessToken]);\n```\n\nGet projects\n```php\n    $buddy-\u003egetApiProjects()-\u003egetProject($domain, $projectName, [$accessToken]);\n```\n\nEdit project\n```php\n    $buddy-\u003egetApiProjects()-\u003eeditProject($data, $domain, $projectName, [$accessToken]);\n```\n\nDelete project\n```php\n    $buddy-\u003egetApiProjects()-\u003edeleteProject($domain, $projectName, [$accessToken]);\n```\n\nGet project members\n```php\n    $buddy-\u003egetApiProjects()-\u003egetProjectMembers($domain, $projectName, [$filters], [$accessToken]);\n```\n\nAdd project member\n```php\n    $buddy-\u003egetApiProjects()-\u003eaddProjectMember($domain, $projectName, $userId, $permissionId, [$accessToken]);\n```\n\nGet project member\n```php\n    $buddy-\u003egetApiProjects()-\u003egetProjectMember($domain, $projectName, $userId, [$accessToken]);\n```\n\nEdit project member\n```php\n    $buddy-\u003egetApiProjects()-\u003eeditProjectMember($domain, $projectName, $userId, $permissionId, [$accessToken]);\n```\n\nDelete project member\n```php\n    $buddy-\u003egetApiProjects()-\u003edeleteProjectMember($domain, $projectName, $userId, [$accessToken]);\n```\n\n### Profile\n\nGet user\n```php\n    $buddy-\u003egetApiProfile()-\u003egetAuthenticatedUser([$accessToken]);\n```\n\nEdit user\n```php\n    $buddy-\u003egetApiProfile()-\u003eeditAuthenticatedUser($data, [$accessToken]);\n```\n\n### Pipelines\n\nGet pipelines\n```php\n    $buddy-\u003egetApiPipelines()-\u003egetPipelines($domain, $projectName, [$filters], [$accessToken]);\n```\n\nAdd pipeline\n```php\n    $buddy-\u003egetApiPipelines()-\u003eaddPipeline($data, $domain, $projectName, [$accessToken]);\n```\n\nGet pipeline\n```php\n    $buddy-\u003egetApiPipelines()-\u003egetPipeline($domain, $projectName, $pipelineId, [$accessToken]);\n```\n\nEdit pipeline\n```php\n    $buddy-\u003egetApiPipelines()-\u003eeditPipeline($data, $domain, $projectName, $pipelineId, [$accessToken]);\n```\n\nDelete pipeline\n```php\n    $buddy-\u003egetApiPipelines()-\u003edeletePipeline($domain, $projectName, $pipelineId, [$accessToken]);\n```\n\nGet pipeline actions\n```php\n    $buddy-\u003egetApiPipelines()-\u003egetPipelineActions($domain, $projectName, $pipelineId, [$accessToken]);\n```\n\nAdd pipeline action\n```php\n    $buddy-\u003egetApiPipelines()-\u003eaddPipelineAction($data, $domain, $projectName, $pipelineId, [$accessToken]);\n```\n\nGet pipeline action\n```php\n    $buddy-\u003egetApiPipelines()-\u003egetPipelineAction($domain, $projectName, $pipelineId, $actionId, [$accessToken]);\n```\n\nEdit pipeline action\n```php\n    $buddy-\u003egetApiPipelines()-\u003eeditPipelineAction($data, $domain, $projectName, $pipelineId, $actionId, [$accessToken]);\n```\n\nDelete pipeline action\n```php\n    $buddy-\u003egetApiPipelines()-\u003edeletePipelineAction($domain, $projectName, $pipelineId, $actionId, [$accessToken]);\n```\n\n### Permissions\n\nGet permissions\n```php\n    $buddy-\u003egetApiPermissions()-\u003egetWorkspacePermissions($domain, [$accessToken]);\n```\n\nAdd permission\n```php\n    $buddy-\u003egetApiPermissions()-\u003eaddWorkspacePermission($data, $domain, [$accessToken]);\n```\n\nGet permission\n```php\n    $buddy-\u003egetApiPermissions()-\u003egetWorkspacePermission($domain, $permissionId, [$accessToken]);\n```\n\nEdit permission\n```php\n    $buddy-\u003egetApiPermissions()-\u003eeditWorkspacePermission($data, $domain, $permissionId, [$accessToken]);\n```\n\nDelete permission\n```php\n    $buddy-\u003egetApiPermissions()-\u003edeleteWorkspacePermission($domain, $permissionId, [$accessToken]);\n```\n\n### Members\n\nGet members\n```php\n    $buddy-\u003egetApiMembers()-\u003egetWorkspaceMembers($domain, [$filters], [$accessToken]);\n```\n\nAdd member\n```php\n    $buddy-\u003egetApiMembers()-\u003eaddWorkspaceMember($domain, $email, [$accessToken]);\n```\n\nGet member\n```php\n    $buddy-\u003egetApiMembers()-\u003egetWorkspaceMember($domain, $userId, [$accessToken]);\n```\n\nEdit member\n```php\n    $buddy-\u003egetApiMembers()-\u003eeditWorkspaceMember($domain, $userId, $isAdmin, [$accessToken]);\n```\n\nDelete member\n```php\n    $buddy-\u003egetApiMembers()-\u003edeleteWorkspaceMember($domain, $userId, [$accessToken]);\n```\n\nGet member projects\n```php\n    $buddy-\u003egetApiMembers()-\u003egetWorkspaceMemberProjects($domain, $userId, [$filters], [$accessToken]);\n```\n\n### Integrations\n\nGet integrations\n```php\n    $buddy-\u003egetApiIntegrations()-\u003egetIntegrations([$accessToken]);\n```\n\nGet integration\n```php\n    $buddy-\u003egetApiIntegrations()-\u003egetIntegration($integrationId, [$accessToken]);\n```\n\n### Groups\n\nGet groups\n```php\n    $buddy-\u003egetApiGroups()-\u003egetGroups($domain, [$accessToken]);\n```\n\nAdd group\n```php\n    $buddy-\u003egetApiGroups()-\u003eaddGroup($data, $domain, [$accessToken]);\n```\n\nGet group\n```php\n    $buddy-\u003egetApiGroups()-\u003egetGroup($domain, $groupId, [$accessToken]);\n```\n\nEdit group\n```php\n    $buddy-\u003egetApiGroups()-\u003eeditGroup($data, $domain, $groupId, [$accessToken]);\n```\n\nDelete group\n```php\n    $buddy-\u003egetApiGroups()-\u003edeleteGroup($domain, $groupId, [$accessToken]);\n```\n\nGet group members\n```php\n    $buddy-\u003egetApiGroups()-\u003egetGroupMembers($domain, $groupId, [$accessToken]);\n```\n\nAdd group member\n```php\n    $buddy-\u003egetApiGroups()-\u003eaddGroupMember($domain, $groupId, $userId, [$accessToken]);\n```\n\nGet group member\n```php\n    $buddy-\u003egetApiGroups()-\u003egetGroupMember($domain, $groupId, $userId, [$accessToken]);\n```\n\nDelete group member\n```php\n    $buddy-\u003egetApiGroups()-\u003edeleteGroupMember($domain, $groupId, $userId, [$accessToken]);\n```\n\n### Executions\n\nGet executions\n```php\n    $buddy-\u003egetApiExecutions()-\u003egetExecutions($domain, $projectName, $pipelineId, [$filters], [$accessToken]);\n```\n\nRun execution\n```php\n    $buddy-\u003egetApiExecutions()-\u003erunExecution($data, $domain, $projectName, $pipelineId, [$accessToken]);\n```\n\nGet execution\n```php\n    $buddy-\u003egetApiExecutions()-\u003egetExecution($domain, $projectName, $pipelineId, $executionId, [$accessToken]);\n```\n\nCancel execution\n```php\n    $buddy-\u003egetApiExecutions()-\u003ecancelExecution($domain, $projectName, $pipelineId, $executionId, [$accessToken]);\n```\n\nRetry execution\n```php\n    $buddy-\u003egetApiExecutions()-\u003eretryRelease($domain, $projectName, $pipelineId, $executionId, [$accessToken]);\n```\n\n### Emails\n\nGet emails\n```php\n    $buddy-\u003egetApiEmails()-\u003egetAuthenticatedUserEmails([$accessToken]);\n```\n\nAdd email\n```php\n    $buddy-\u003egetApiEmails()-\u003eaddAuthenticatedUserEmail($email, [$accessToken]);\n```\n\nDelete email\n```php\n    $buddy-\u003egetApiEmails()-\u003edeleteAuthenticatedUserEmail($email, [$accessToken]);  \n```\n\n### Commits\n\nGet commits\n```php\n    $buddy-\u003egetApiCommits()-\u003egetCommits($domain, $projectName, [$filters], [$accessToken]);\n```\n\nGet commit\n```php\n    $buddy-\u003egetApiCommits()-\u003egetCommit($domain, $projectName, $revision, [$accessToken]);\n```\n\nCompare commits\n```php\n    $buddy-\u003egetApiCommits()-\u003egetCompare($domain, $projectName, $base, $head, [$filters], [$accessToken]);\n```\n\n### Branches\n\nGet branches\n```php\n    $buddy-\u003egetApiBranches()-\u003egetBranches($domain, $projectName, [$accessToken]);\n```\n\nGet branch\n```php\n    $buddy-\u003egetApiBranches()-\u003egetBranch($domain, $projectName, $name, [$accessToken]);\n```\n\nAdd branch\n```php\n    $buddy-\u003egetApiBranches()-\u003eaddBranch($data, $domain, $projectName, [$accessToken]);\n```\n\nDelete branch\n```php\n    $buddy-\u003egetApiBranches()-\u003edeleteBranch($domain, $projectName, $name, [$force], [$accessToken]);\n```\n\n## License\n\nPlease see the [license file](https://github.com/buddy-works/buddy-works-php-api/blob/master/LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuddy-works%2Fbuddy-works-php-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuddy-works%2Fbuddy-works-php-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuddy-works%2Fbuddy-works-php-api/lists"}