motion-php / client
用于Motion的PHP编写的API客户端
Requires
- php: ^8.1.0
- php-http/discovery: 1.x-dev
- psr/http-client: 1.0.x-dev
- psr/http-client-implementation: *
- psr/http-factory-implementation: *
- psr/http-message: 2.0.x-dev
Requires (Dev)
- guzzlehttp/guzzle: dev-master
- guzzlehttp/psr7: 2.6.x-dev
- laravel/pint: dev-main
- pestphp/pest: 2.x-dev
- pestphp/pest-plugin-mock: 2.x-dev
- phpstan/phpstan: 1.11.x-dev
- rector/rector: 0.15.x-dev
- symfony/var-dumper: 6.3.x-dev
This package is auto-updated.
Last update: 2024-08-26 04:51:20 UTC
README
Motion PHP 是一个社区维护的PHP API客户端,用于与 Motion API 交互。Motion是一款优秀的日历和项目管理应用,利用人工智能有效地重新安排你的时间。如果你还没有听说过它,可以去 usemotion.com 查看更多信息。
目录
入门
需要 PHP 8.1+
使用Composer包管理器安装Motion PHP客户端
composer require motion-php/client
确保允许php-http/discovery
Composer插件运行,或者如果您的项目还没有,请手动安装PSR-18 HTTP客户端实现。
composer require guzzlehttp/guzzle
然后您就可以与Motion API进行交互了。为了快速开始,您可以使用Motion::client
工厂方法创建客户端实例。
$apiKey = getenv('YOUR_API_KEY'); $client = Motion::client($apiKey); $result = $client->task()->create([ 'name' => 'My Task', 'description' => 'My Task Description', 'status' => 'Completed', ]); echo $result['task']['name']; // My Task echo $result['task']['description']; // My Task Description echo $result['task']['status']; // Completed
如果您需要使用Motion::factory
方法配置和提供单独的HTTP客户端。
$apiKey = getenv('YOUR_API_KEY'); // PSR-18 HTTP Client $httpClient = new GuzzleHttp\Client([]); $client = Motion::factory() ->withApiKey($apiKey) ->withBaseUri('api.usemotion.com') ->withHttpClient($httpClient) ->withHttpHeader('X-My-Header', 'foo') ->withQueryParam('foo', 'bar') ->withStreamHandler(fn (RequestInterface $request): ResponseInterface => $client->send($request, [ 'stream' => true ])) ->make();
用法
任务资源
update
任务
更新具有给定id
和属性的作业。返回一个Task
对象。
PATCH /tasks/{id}
: 📖 文档
$response = $client->tasks()->update('IF0lK9JcsdaxeLkDZ0nMG', [ 'name' => 'My Task', 'description' => 'My Task Description', 'status' => 'Completed', ]); $task = $response->task; // Task object $task->id; // IF0lK9JcsdaxeLkDZ0nMG $task->name; // My Task $task->description; // My Task Description $task->project; // Project object $task->toArray(); // ['id' => 'IF0lK9JcsdaxeLkDZ0nMG', ...]
create
任务
创建具有给定属性的作业。返回一个Task
对象。
POST /tasks
: 📖 文档
$response = $client->tasks()->create([ 'name' => 'My Task', 'description' => 'My Task Description', 'status' => 'Completed', ]); $task = $response->task; // Task object $task->id; // IF0lK9JcsdaxeLkDZ0nMG $task->name; // My Task $task->description; // My Task Description $task->project; // Project object $task->toArray(); // ['id' => 'IF0lK9JcsdaxeLkDZ0nMG', ...]
delete
任务
删除具有给定id
的任务。返回一个Task
对象。
DELETE /tasks/{id}
: 📖 文档
$response = $client->tasks()->delete('IF0lK9JcsdaxeLkDZ0nMG');
retrieve
任务
检索具有给定id
的任务。返回一个Task
对象。
GET /tasks/{id}
: 📖 文档
$response = $client->tasks()->retrieve('IF0lK9JcsdaxeLkDZ0nMG'); $task = $response->task; // Task object $task->id; // IF0lK9JcsdaxeLkDZ0nMG $task->name; // My Task $task->description; // My Task Description $task->project; // Project object $task->toArray(); // ['id' => 'IF0lK9JcsdaxeLkDZ0nMG', ...]
move
任务在工作空间之间移动
将具有给定id
的任务移动到具有给定id
的新工作空间。返回一个Task
对象。
POST /tasks/{id}/move
: 📖 文档
$response = $client->tasks()->move('IF0lK9JcsdaxeLkDZ0nMG', 'IF0lK9JcsdaxeLkDZ0nMG'); $task = $response->task; // Task object $task->id; // IF0lK9JcsdaxeLkDZ0nMG $task->name; // My Task $task->description; // My Task Description $task->project; // Project object $task->toArray(); // ['id' => 'IF0lK9JcsdaxeLkDZ0nMG', ...]
重复任务
资源
create
重复任务
创建具有给定属性的重复任务。返回一个RecurringTask
对象。
POST /recurring-tasks
: 📖 文档
$response = $client->recurringTasks()->create([ 'name' => 'My Task', 'description' => 'My Task Description', 'status' => 'Completed', ]); $task = $response->task; // Task object $task->id; // IF0lK9JcsdaxeLkDZ0nMG $task->name; // My Task
list
重复任务
列出工作空间中的重复任务。返回一个RecurringTask
对象的数组。
GET /recurring-tasks
: 📖 文档
$response = $client->recurringTasks()->list('workspaceId'); $tasks = $response->tasks; // array of Task objects $meta = $response->meta; // Meta object foreach ($tasks as $task) { $task->id; // IF0lK9JcsdaxeLkDZ0nMG $task->name; // My Task $task->project; // Project object } $meta->pageSize; // 20 $meta->nextCursor; // IF0lK9JcsdaxeLkDZ0nMG
删除一个周期性任务
删除给定 id
的周期性任务。返回一个 id
字符串。
DELETE /recurring-tasks/{id}
: 📖 文档
$response = $client->recurringTasks()->delete('IF0lK9JcsdaxeLkDZ0nMG');
工作空间
资源
列表
列出组织的所有工作空间。
GET /workspaces
: 📖 文档
$response = $client->workspaces()->list(); $response->workspaces; // array of Workspace objects foreach ($response->workspaces as $workspace) { $workspace->id; // IF0lK9JcsdaxeLkDZ0nMG $workspace->name; // My Workspace $workspace->teamId; // 2f0lK9JcsdaxeLkDZ0nMG $workspace->statuses; // array of Status objects $workspace->labels; // array of Label objects $workspace->type; // INDIVIDUAL } $response->toArray(); // ['workspaces' => [...]]
状态
列出工作空间的状态
$response = $client->workspaces()->statuses('IF0lK9JcsdaxeLkDZ0nMG'); $response->statuses; // array of Status objects foreach ($response->statuses as $status) { $status->name; // In Progress $status->isDefaultStatus // true $status->isResolvedStatus // false } $response->toArray(); // ['statuses' => [...]]
用户
资源
列表
列出当前可用的用户。可以通过 teamId
或 workspaceId
进行限制。
$response = $client->users()->list([ 'workspaceId' => 'IF0lK9JcsdaxeLkDZ0nMG' ]); $response->users; // array of User objects foreach ($response->users as $user) { $user->id; // LPSIBmTN2eai9uYoKtMkzWVFTUo2 $user->name; // Adam Paterson $user->email; // adam@usemotion.com } $response->toArray(); // ['users' => [...]]
测试
$ composer test
模拟模式
客户端可以配置为以模拟模式运行。这将返回所有请求的模拟响应。这对于测试很有用。这有助于在没有触达API和达到速率限制的情况下进行实施。
$client = Motion::factory() ->withApiKey($apiKey) ->useMockMode(true) ->make(); $response = $client->tasks()->list(); $response->tasks; // array of Task objects