Skip to content

Commit 27e8e78

Browse files
Update the Slack Specification and rewrite all the patches (#45)
* Reset the whole specification to vanilla Slack API * First patch: replace all "number" timestamps by "strings" * Second patch: the Attachment object is messed up, see #17 and #10 * Third patch: some more timestamps moved to string, other to number * Second patch reset * Second patch is better now * Update the CHANGELOG * Rename the patches to follow numerotation * Fix the ObjUser multi object issue * Merge Conversation objects into one only Refer to #43
1 parent df228e1 commit 27e8e78

File tree

847 files changed

+34388
-33592
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

847 files changed

+34388
-33592
lines changed

CHANGELOG.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
## Not yet released
44

5-
* **Specification override** Fix Thread TS parameter and body type from float to string because the Slack API is very strange about it, a PHP Float does not seams to work but a string does, and the API always answer "ok" even if not thread reply is created.
65
* Upgrade Jane to 4.4 https://github.com/janephp/janephp/releases/tag/v4.4.0, the new generated classes have better PHPDoc
6+
* **Massive specification update** from Slack, all the patches have been rewritten and the API wins a lots of changes, new objects, new API. See #45 for more details. We had big issues with polymorphic responses.
77

88
## 1.2.0 (2019-04-23)
99

Makefile

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ spec_diff: ## detect diff between spec and SDK
1010
test: ## Run test suite
1111
./vendor/bin/simple-phpunit
1212

13+
jane: ## Generate the SDK
14+
rm -rf generated/* && vendor/bin/jane-openapi generate --config-file=.jane-openapi.php
15+
1316
.PHONY: help
1417

1518
help: ## Display this help

generated/Client.php

+219-275
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* This file has been auto generated by Jane,
7+
*
8+
* Do no edit it directly.
9+
*/
10+
11+
namespace JoliCode\Slack\Api\Endpoint;
12+
13+
class AdminUsersSessionReset extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
14+
{
15+
use \Jane\OpenApiRuntime\Client\Psr7HttplugEndpointTrait;
16+
17+
public function getMethod(): string
18+
{
19+
return 'POST';
20+
}
21+
22+
public function getUri(): string
23+
{
24+
return '/admin.users.session.reset';
25+
}
26+
27+
public function getBody(\Symfony\Component\Serializer\SerializerInterface $serializer, \Http\Message\StreamFactory $streamFactory = null): array
28+
{
29+
return [[], null];
30+
}
31+
32+
public function getExtraHeaders(): array
33+
{
34+
return ['Accept' => ['application/json']];
35+
}
36+
37+
/**
38+
* {@inheritdoc}
39+
*
40+
*
41+
* @return \JoliCode\Slack\Api\Model\AdminUsersSessionResetPostResponse200|\JoliCode\Slack\Api\Model\AdminUsersSessionResetPostResponsedefault|null
42+
*/
43+
protected function transformResponseBody(string $body, int $status, \Symfony\Component\Serializer\SerializerInterface $serializer)
44+
{
45+
if (200 === $status) {
46+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AdminUsersSessionResetPostResponse200', 'json');
47+
}
48+
49+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AdminUsersSessionResetPostResponsedefault', 'json');
50+
}
51+
}

generated/Endpoint/SearchFiles.php renamed to generated/Endpoint/AppsPermissionsUsersList.php

+12-20
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,16 @@
1010

1111
namespace JoliCode\Slack\Api\Endpoint;
1212

13-
class SearchFiles extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
13+
class AppsPermissionsUsersList extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
1414
{
1515
/**
16-
* Searches for files matching a query.
16+
* Returns list of user grants and corresponding scopes this app has on a team.
1717
*
1818
* @param array $queryParameters {
1919
*
20-
* @var string $sort_dir change sort direction to ascending (`asc`) or descending (`desc`)
21-
* @var string $query search query
22-
* @var string $sort return matches sorted by either `score` or `timestamp`
23-
* @var bool $highlight pass a value of `true` to enable query highlight markers (see below)
24-
* @var string $count
25-
* @var string $token Authentication token. Requires scope: `search:read`
26-
* @var string $page
20+
* @var string $cursor Paginate through collections of data by setting the `cursor` parameter to a `next_cursor` attribute returned by a previous request's `response_metadata`. Default value fetches the first "page" of the collection. See [pagination](/docs/pagination) for more detail.
21+
* @var string $token Authentication token. Requires scope: `none`
22+
* @var int $limit The maximum number of items to return.
2723
* }
2824
*/
2925
public function __construct(array $queryParameters = [])
@@ -40,7 +36,7 @@ public function getMethod(): string
4036

4137
public function getUri(): string
4238
{
43-
return '/search.files';
39+
return '/apps.permissions.users.list';
4440
}
4541

4642
public function getBody(\Symfony\Component\Serializer\SerializerInterface $serializer, \Http\Message\StreamFactory $streamFactory = null): array
@@ -56,16 +52,12 @@ public function getExtraHeaders(): array
5652
protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver\OptionsResolver
5753
{
5854
$optionsResolver = parent::getQueryOptionsResolver();
59-
$optionsResolver->setDefined(['sort_dir', 'query', 'sort', 'highlight', 'count', 'token', 'page']);
55+
$optionsResolver->setDefined(['cursor', 'token', 'limit']);
6056
$optionsResolver->setRequired([]);
6157
$optionsResolver->setDefaults([]);
62-
$optionsResolver->setAllowedTypes('sort_dir', ['string']);
63-
$optionsResolver->setAllowedTypes('query', ['string']);
64-
$optionsResolver->setAllowedTypes('sort', ['string']);
65-
$optionsResolver->setAllowedTypes('highlight', ['bool']);
66-
$optionsResolver->setAllowedTypes('count', ['string']);
58+
$optionsResolver->setAllowedTypes('cursor', ['string']);
6759
$optionsResolver->setAllowedTypes('token', ['string']);
68-
$optionsResolver->setAllowedTypes('page', ['string']);
60+
$optionsResolver->setAllowedTypes('limit', ['int']);
6961

7062
return $optionsResolver;
7163
}
@@ -74,14 +66,14 @@ protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver
7466
* {@inheritdoc}
7567
*
7668
*
77-
* @return \JoliCode\Slack\Api\Model\SearchFilesGetResponse200|\JoliCode\Slack\Api\Model\SearchFilesGetResponsedefault|null
69+
* @return \JoliCode\Slack\Api\Model\AppsPermissionsUsersListGetResponse200|\JoliCode\Slack\Api\Model\AppsPermissionsUsersListGetResponsedefault|null
7870
*/
7971
protected function transformResponseBody(string $body, int $status, \Symfony\Component\Serializer\SerializerInterface $serializer)
8072
{
8173
if (200 === $status) {
82-
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\SearchFilesGetResponse200', 'json');
74+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AppsPermissionsUsersListGetResponse200', 'json');
8375
}
8476

85-
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\SearchFilesGetResponsedefault', 'json');
77+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AppsPermissionsUsersListGetResponsedefault', 'json');
8678
}
8779
}

generated/Endpoint/SearchAll.php renamed to generated/Endpoint/AppsPermissionsUsersRequest.php

+14-20
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,17 @@
1010

1111
namespace JoliCode\Slack\Api\Endpoint;
1212

13-
class SearchAll extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
13+
class AppsPermissionsUsersRequest extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
1414
{
1515
/**
16-
* Searches for messages and files matching a query.
16+
* Enables an app to trigger a permissions modal to grant an app access to a user access scope.
1717
*
1818
* @param array $queryParameters {
1919
*
20-
* @var string $sort_dir change sort direction to ascending (`asc`) or descending (`desc`)
21-
* @var string $query Search query. May contains booleans, etc.
22-
* @var string $sort return matches sorted by either `score` or `timestamp`
23-
* @var string $count
24-
* @var string $token Authentication token. Requires scope: `search:read`
25-
* @var bool $highlight pass a value of `true` to enable query highlight markers (see below)
26-
* @var string $page
20+
* @var string $scopes A comma separated list of user scopes to request for
21+
* @var string $token Authentication token. Requires scope: `none`
22+
* @var string $user The user this scope is being requested for
23+
* @var string $trigger_id Token used to trigger the request
2724
* }
2825
*/
2926
public function __construct(array $queryParameters = [])
@@ -40,7 +37,7 @@ public function getMethod(): string
4037

4138
public function getUri(): string
4239
{
43-
return '/search.all';
40+
return '/apps.permissions.users.request';
4441
}
4542

4643
public function getBody(\Symfony\Component\Serializer\SerializerInterface $serializer, \Http\Message\StreamFactory $streamFactory = null): array
@@ -56,16 +53,13 @@ public function getExtraHeaders(): array
5653
protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver\OptionsResolver
5754
{
5855
$optionsResolver = parent::getQueryOptionsResolver();
59-
$optionsResolver->setDefined(['sort_dir', 'query', 'sort', 'count', 'token', 'highlight', 'page']);
56+
$optionsResolver->setDefined(['scopes', 'token', 'user', 'trigger_id']);
6057
$optionsResolver->setRequired([]);
6158
$optionsResolver->setDefaults([]);
62-
$optionsResolver->setAllowedTypes('sort_dir', ['string']);
63-
$optionsResolver->setAllowedTypes('query', ['string']);
64-
$optionsResolver->setAllowedTypes('sort', ['string']);
65-
$optionsResolver->setAllowedTypes('count', ['string']);
59+
$optionsResolver->setAllowedTypes('scopes', ['string']);
6660
$optionsResolver->setAllowedTypes('token', ['string']);
67-
$optionsResolver->setAllowedTypes('highlight', ['bool']);
68-
$optionsResolver->setAllowedTypes('page', ['string']);
61+
$optionsResolver->setAllowedTypes('user', ['string']);
62+
$optionsResolver->setAllowedTypes('trigger_id', ['string']);
6963

7064
return $optionsResolver;
7165
}
@@ -74,14 +68,14 @@ protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver
7468
* {@inheritdoc}
7569
*
7670
*
77-
* @return \JoliCode\Slack\Api\Model\SearchAllGetResponse200|\JoliCode\Slack\Api\Model\SearchAllGetResponsedefault|null
71+
* @return \JoliCode\Slack\Api\Model\AppsPermissionsUsersRequestGetResponse200|\JoliCode\Slack\Api\Model\AppsPermissionsUsersRequestGetResponsedefault|null
7872
*/
7973
protected function transformResponseBody(string $body, int $status, \Symfony\Component\Serializer\SerializerInterface $serializer)
8074
{
8175
if (200 === $status) {
82-
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\SearchAllGetResponse200', 'json');
76+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AppsPermissionsUsersRequestGetResponse200', 'json');
8377
}
8478

85-
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\SearchAllGetResponsedefault', 'json');
79+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AppsPermissionsUsersRequestGetResponsedefault', 'json');
8680
}
8781
}

generated/Endpoint/AppsUninstall.php

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/*
6+
* This file has been auto generated by Jane,
7+
*
8+
* Do no edit it directly.
9+
*/
10+
11+
namespace JoliCode\Slack\Api\Endpoint;
12+
13+
class AppsUninstall extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
14+
{
15+
/**
16+
* Uninstalls your app from a workspace.
17+
*
18+
* @param array $queryParameters {
19+
*
20+
* @var string $client_secret issued when you created your application
21+
* @var string $token Authentication token. Requires scope: `none`
22+
* @var string $client_id Issued when you created your application.
23+
* }
24+
*/
25+
public function __construct(array $queryParameters = [])
26+
{
27+
$this->queryParameters = $queryParameters;
28+
}
29+
30+
use \Jane\OpenApiRuntime\Client\Psr7HttplugEndpointTrait;
31+
32+
public function getMethod(): string
33+
{
34+
return 'GET';
35+
}
36+
37+
public function getUri(): string
38+
{
39+
return '/apps.uninstall';
40+
}
41+
42+
public function getBody(\Symfony\Component\Serializer\SerializerInterface $serializer, \Http\Message\StreamFactory $streamFactory = null): array
43+
{
44+
return [[], null];
45+
}
46+
47+
public function getExtraHeaders(): array
48+
{
49+
return ['Accept' => ['application/json']];
50+
}
51+
52+
protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver\OptionsResolver
53+
{
54+
$optionsResolver = parent::getQueryOptionsResolver();
55+
$optionsResolver->setDefined(['client_secret', 'token', 'client_id']);
56+
$optionsResolver->setRequired([]);
57+
$optionsResolver->setDefaults([]);
58+
$optionsResolver->setAllowedTypes('client_secret', ['string']);
59+
$optionsResolver->setAllowedTypes('token', ['string']);
60+
$optionsResolver->setAllowedTypes('client_id', ['string']);
61+
62+
return $optionsResolver;
63+
}
64+
65+
/**
66+
* {@inheritdoc}
67+
*
68+
*
69+
* @return \JoliCode\Slack\Api\Model\AppsUninstallGetResponse200|\JoliCode\Slack\Api\Model\AppsUninstallGetResponsedefault|null
70+
*/
71+
protected function transformResponseBody(string $body, int $status, \Symfony\Component\Serializer\SerializerInterface $serializer)
72+
{
73+
if (200 === $status) {
74+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AppsUninstallGetResponse200', 'json');
75+
}
76+
77+
return $serializer->deserialize($body, 'JoliCode\\Slack\\Api\\Model\\AppsUninstallGetResponsedefault', 'json');
78+
}
79+
}

generated/Endpoint/AuthTest.php

-24
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,6 @@
1212

1313
class AuthTest extends \Jane\OpenApiRuntime\Client\BaseEndpoint implements \Jane\OpenApiRuntime\Client\Psr7HttplugEndpoint
1414
{
15-
/**
16-
* Checks authentication & identity.
17-
*
18-
* @param array $headerParameters {
19-
*
20-
* @var string $token Authentication token. Requires scope: `none`
21-
* }
22-
*/
23-
public function __construct(array $headerParameters = [])
24-
{
25-
$this->headerParameters = $headerParameters;
26-
}
27-
2815
use \Jane\OpenApiRuntime\Client\Psr7HttplugEndpointTrait;
2916

3017
public function getMethod(): string
@@ -47,17 +34,6 @@ public function getExtraHeaders(): array
4734
return ['Accept' => ['application/json']];
4835
}
4936

50-
protected function getHeadersOptionsResolver(): \Symfony\Component\OptionsResolver\OptionsResolver
51-
{
52-
$optionsResolver = parent::getHeadersOptionsResolver();
53-
$optionsResolver->setDefined(['token']);
54-
$optionsResolver->setRequired([]);
55-
$optionsResolver->setDefaults([]);
56-
$optionsResolver->setAllowedTypes('token', ['string']);
57-
58-
return $optionsResolver;
59-
}
60-
6137
/**
6238
* {@inheritdoc}
6339
*

generated/Endpoint/ChannelsHistory.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ class ChannelsHistory extends \Jane\OpenApiRuntime\Client\BaseEndpoint implement
2121
* @var bool $unreads Include `unread_count_display` in the output?
2222
* @var bool $inclusive include messages with latest or oldest timestamp in results
2323
* @var string $token Authentication token. Requires scope: `channels:history`
24-
* @var string $oldest start of time range of messages to include in results
24+
* @var float $oldest start of time range of messages to include in results
2525
* @var string $channel channel to fetch history for
26-
* @var string $latest End of time range of messages to include in results.
26+
* @var float $latest End of time range of messages to include in results.
2727
* }
2828
*/
2929
public function __construct(array $queryParameters = [])
@@ -63,9 +63,9 @@ protected function getQueryOptionsResolver(): \Symfony\Component\OptionsResolver
6363
$optionsResolver->setAllowedTypes('unreads', ['bool']);
6464
$optionsResolver->setAllowedTypes('inclusive', ['bool']);
6565
$optionsResolver->setAllowedTypes('token', ['string']);
66-
$optionsResolver->setAllowedTypes('oldest', ['string']);
66+
$optionsResolver->setAllowedTypes('oldest', ['float']);
6767
$optionsResolver->setAllowedTypes('channel', ['string']);
68-
$optionsResolver->setAllowedTypes('latest', ['string']);
68+
$optionsResolver->setAllowedTypes('latest', ['float']);
6969

7070
return $optionsResolver;
7171
}

0 commit comments

Comments
 (0)