-
Notifications
You must be signed in to change notification settings - Fork 227
API Docs: Update links, copy edit, apply style guide #1486
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #1486 +/- ##
=========================================
Coverage 73.04% 73.04%
Complexity 4380 4380
=========================================
Files 475 475
Lines 14244 14244
Branches 1447 1447
=========================================
Hits 10404 10404
Misses 2986 2986
Partials 854 854 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
| ### What your Bolt app does | ||
|
|
||
| All your app needs to do to properly handle OAuth Flow are: | ||
| To properly handle the OAuth Flow: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| To properly handle the OAuth Flow: | |
| To properly handle the OAuth flow: |
| To properly handle the OAuth Flow: | ||
|
|
||
| * Provide an endpoint starting OAuth flow by redirecting installers to Slack's Authorize endpoint with sufficient parameters | ||
| * Provide an endpoint starting the OAuth flow by redirecting installers to Slack's `authorize` endpoint with sufficient parameters |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * Provide an endpoint starting the OAuth flow by redirecting installers to Slack's `authorize` endpoint with sufficient parameters | |
| * Provide an endpoint starting the OAuth flow by redirecting installers to the `authorize` endpoint with sufficient parameters |
| The Audit Logs API methods conform to Slack's [rate limits](https://docs.slack.dev/apis/web-api/rate-limits) and all methods are rated Tier 3. This allows for up to 50 calls per minute, with an allowance for sporadic bursts. Refer to [the API documentation](https://docs.slack.dev/admins/audit-logs-api) for more details. | ||
|
|
||
| `AsyncAuditClient`, the async client, has great consideration for Rate Limits. | ||
| The async client, `AsyncAuditClient`, has great consideration for rate limits. The async client internally has its queue systems to avoid burst traffics as much as possible while `AuditClient`, the synchronous client, always blindly sends requests. Both sync and async clients maintain the metrics data in a `MetricsDatastore` together. This allows the async client to accurately know the current traffic they generated toward the Slack platform and estimate the remaining amount to call. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The async client, `AsyncAuditClient`, has great consideration for rate limits. The async client internally has its queue systems to avoid burst traffics as much as possible while `AuditClient`, the synchronous client, always blindly sends requests. Both sync and async clients maintain the metrics data in a `MetricsDatastore` together. This allows the async client to accurately know the current traffic they generated toward the Slack platform and estimate the remaining amount to call. | |
| The async client, `AsyncAuditClient`, takes rate limits into consideration. The async client internally has its queue systems to avoid burst traffics as much as possible while `AuditClient`, the synchronous client, always blindly sends requests. Both sync and async clients maintain the metrics data in a `MetricsDatastore` together. This allows the async client to accurately know the current traffic they generated toward the Slack platform and estimate the remaining amount to call. |
docs/content/guides/bolt-basics.md
Outdated
| ## Use Web APIs / reply using `say` utility | ||
|
|
||
| When you need to call some Slack Web APIs in Bolt apps, use `ctx.client()` for it. The `MethodsClient` created by the method already holds a valid bot token. So, you don't need to give a token to it. Just calling a method with parameters as below works for you. | ||
| Use `ctx.client()` to call Slack Web API methods in Bolt apps. The `MethodsClient` created by the method already holds a valid bot token, so there is no need to provide a token to it. Simply call the method with parameters as below. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Use `ctx.client()` to call Slack Web API methods in Bolt apps. The `MethodsClient` created by the method already holds a valid bot token, so there is no need to provide a token to it. Simply call the method with parameters as below. | |
| Use `ctx.client()` to call Slack Web API methods in Bolt apps. The `MethodsClient` created by the method already holds a valid bot token, so there is no need to provide a token to it. Call the method with parameters as below. |
| ``` | ||
|
|
||
| As you see, using `text` is fairly simple. The only thing to know is to give a string value with a valid format. Consult [Basic formatting with `mrkdwn`](https://docs.slack.dev/messaging/formatting-message-text) for understanding the markup language. | ||
| As you see, using `text` is fairly simple: give a string value with a valid format. Consult [Basic formatting with `mrkdwn`](https://docs.slack.dev/messaging/formatting-message-text) for understanding the markup language. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| As you see, using `text` is fairly simple: give a string value with a valid format. Consult [Basic formatting with `mrkdwn`](https://docs.slack.dev/messaging/formatting-message-text) for understanding the markup language. | |
| Use `text` by providing a string value with a valid format. Consult [Basic formatting with `mrkdwn`](https://docs.slack.dev/messaging/formatting-message-text) for understanding the markup language. |
| ``` | ||
|
|
||
| You can use this way also for building a message for Incoming Webhooks and `response_url` calls. | ||
| You build a message for incoming webhooks and `response_url` calls this way too. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| You build a message for incoming webhooks and `response_url` calls this way too. | |
| You can build a message for incoming webhooks and `response_url` calls this way too. |
docs/content/guides/events-api.md
Outdated
| ## Under the hood | ||
|
|
||
| If you hope to understand what is actually happening with the above code, reading the following (a bit pseudo) code may be helpful. | ||
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. | |
| If you hope to understand what is happening with the above code, reading the following (pseudo) code may be helpful. |
| <TabItem value="socket-mode" label="Socket Mode"> | ||
|
|
||
| Only single source code is required to run your first-ever Bolt app. All you need to do is define the main method that starts `SocketModeApp`. | ||
| Only single source code is required to run your first Bolt app. All you need to do is define the main method that starts `SocketModeApp`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Only single source code is required to run your first Bolt app. All you need to do is define the main method that starts `SocketModeApp`. | |
| Only single source code is required to run your first Bolt app. You'll need to define the main method that starts `SocketModeApp`. |
| ``` | ||
|
|
||
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://developer.oracle.com/java/jdk-10-local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. | ||
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. | |
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), you can write more concise code. To do so, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below, configuring the same on your IDE. |
| <TabItem value="http" label="HTTP"> | ||
|
|
||
| Only single source code is required to run your first-ever Bolt app. All you need to do is define the main method that starts `SlackAppServer`. Your server with the default configuration will listen to the 3000 port but it's configurable. Check other constructors of the class to customize the behavior. | ||
| Only single source code is required to run your first Bolt app. All you need to do is define the main method that starts `SlackAppServer`. Your server with the default configuration will listen to the 3000 port but it's configurable. Check other constructors of the class to customize the behavior. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Only single source code is required to run your first Bolt app. All you need to do is define the main method that starts `SlackAppServer`. Your server with the default configuration will listen to the 3000 port but it's configurable. Check other constructors of the class to customize the behavior. | |
| Only single source code is required to run your first Bolt app. You'll need to define the main method that starts `SlackAppServer`. Your server with the default configuration will listen to the 3000 port but it's configurable. Check other constructors of the class to customize the behavior. |
| ``` | ||
|
|
||
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://developer.oracle.com/java/jdk-10-local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. | ||
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. | |
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), you can write more concise code. To do so, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below, configuring the same on your IDE. |
| As [Spring Boot](https://spring.io/projects/spring-boot) is one of the most popular web frameworks in the Java world, you may be curious about the possibility to let this Bolt app live together with it. | ||
|
|
||
| Rest assured about it! It's quick and easy to _inject_ Bolt into Spring Boot apps. | ||
| Rest assured, we can _inject_ Bolt into Spring Boot apps. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Rest assured, we can _inject_ Bolt into Spring Boot apps. | |
| Don't worry, we can _inject_ Bolt into Spring Boot apps. |
| # Incoming webhooks | ||
|
|
||
| [Incoming Webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks) is a simple way to post messages from apps into Slack. Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message and some options. | ||
| [Incoming webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks) are a simple way to post messages from apps into Slack. Creating an incoming webhook gives you a unique URL to which you send a JSON payload with the message and some options. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| [Incoming webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks) are a simple way to post messages from apps into Slack. Creating an incoming webhook gives you a unique URL to which you send a JSON payload with the message and some options. | |
| [Incoming webhooks](https://docs.slack.dev/messaging/sending-messages-using-incoming-webhooks) are a straightforward way to post messages from apps into Slack. Creating an incoming webhook gives you a unique URL to which you send a JSON payload with the message and some options. |
|
|
||
| * Visit the [Issue Tracker](http://github.com/slackapi/java-slack-sdk/issues) for questions, bug reports, feature requests, and general discussion related to Bolt for JavaScript. Try searching for an existing issue before creating a new one. | ||
| * Visit the [Slack Developer Community](https://slackcommunity.com/) for getting help or for just bonding with your fellow Slack developers. | ||
| * Visit the [Issue Tracker](http://github.com/slackapi/java-slack-sdk/issues) for questions, bug reports, feature requests, and general discussion related to Bolt for Java. Try searching for an existing issue before creating a new one. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i am embarrassed
docs/content/index.md
Outdated
| Within these docs, there are two different modules: | ||
|
|
||
| * [Bolt for Java Guides](/guides/getting-started-with-bolt), which is a framework with a simple API that makes it easy to write modern Slack apps in Java. | ||
| * [Bolt for Java Guides](/guides/getting-started-with-bolt), which is a framework with a simple API that makes it easy to write Slack apps in Java. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| * [Bolt for Java Guides](/guides/getting-started-with-bolt), which is a framework with a simple API that makes it easy to write Slack apps in Java. | |
| * [Bolt for Java Guides](/guides/getting-started-with-bolt), which is a framework with a simplified API that helps write Slack apps in Java. |
| # Web API for Org Admins | ||
|
|
||
| The method names of a portion of [API Methods](https://docs.slack.dev/reference/methods) start with `admin.`. These APIs are not available for all developers. They are supposed to be used by [Enterprise Grid](https://docs.slack.dev/enterprise-grid/) Organization administrators. | ||
| The method names of a portion of [API Methods](https://docs.slack.dev/reference/methods) start with `admin.`. These APIs are not available for all developers. They are intended to be used by [Enterprise Grid](https://docs.slack.dev/enterprise-grid/) organization administrators. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The method names of a portion of [API Methods](https://docs.slack.dev/reference/methods) start with `admin.`. These APIs are not available for all developers. They are intended to be used by [Enterprise Grid](https://docs.slack.dev/enterprise-grid/) organization administrators. | |
| The method names of a portion of [API methods](https://docs.slack.dev/reference/methods) start with `admin.`. These API methods are not available for all developers. They are intended to be used by [Enterprise Grid](https://docs.slack.dev/enterprise-grid/) organization administrators. |
| ## Build from source | ||
|
|
||
| You may want to build the latest revision on your own. In the case of building from source, go with the following steps. | ||
| You may want to build the latest revision on your own. In the case of building from source, exeute the following commands in your terminal. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| You may want to build the latest revision on your own. In the case of building from source, exeute the following commands in your terminal. | |
| You may want to build the latest revision on your own. In the case of building from source, execute the following commands in your terminal. |
| When you add Spring Boot extensions such as Spring Security, the app may not work well with Bolt. | ||
| In that case, consider splitting the app into a few and make the Bolt app as simple as possible. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| When you add Spring Boot extensions such as Spring Security, the app may not work well with Bolt. | |
| In that case, consider splitting the app into a few and make the Bolt app as simple as possible. | |
| When you add Spring Boot extensions such as Spring Security, the app may not work well with Bolt. In that case, consider splitting the app into a few and make the Bolt app as simple as possible. |
docs/content/guides/status-api.md
Outdated
| ## Call current status API in Java | ||
|
|
||
| As with other API clients, you can call **Slack**'s method `status()` to create an API client and then call `current()` to perform an HTTP request. | ||
| As with other API clients, you can call `Slack`'s method `status()` to create an API client and then call `current()` to perform an HTTP request. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| As with other API clients, you can call `Slack`'s method `status()` to create an API client and then call `current()` to perform an HTTP request. | |
| As with other API clients, you can call the Slack `status()` method to create an API client and then call `current()` to perform an HTTP request. |
| ## Under the hood | ||
|
|
||
| If you hope to understand what is actually happening with the above code, reading the following (a bit pseudo) code may be helpful. | ||
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. | |
| If you hope to understand what is happening with the above code, reading the following (pseudo) code may be helpful. |
docs/content/guides/shortcuts.md
Outdated
| ## Under the hood | ||
|
|
||
| If you hope to understand what is actually happening with the above code, reading the following (a bit pseudo) code may be helpful. | ||
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. | |
| If you hope to understand what is happening with the above code, reading the following (pseudo) code may be helpful. |
| ## Under the Hood | ||
|
|
||
| If you hope to understand what is actually happening with the above code, reading the following (a bit pseudo) code may be helpful. | ||
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| If you hope to understand what is happening with the above code, reading the following (a bit pseudo) code may be helpful. | |
| If you hope to understand what is happening with the above code, reading the following (pseudo) code may be helpful. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for giving these docs some much-needed TLC!
| final SlackSignature.Generator generator = new SlackSignature.Generator(secret); | ||
|
|
||
| String realPayload = "{\"type\":\"block_actions\",\"team\":{\"id\":\"T123\",\"domain\":\"test-test\"},\"user\":{\"id\":\"U123\",\"username\":\"test-test\",\"name\":\"test-test\",\"team_id\":\"T123\"},\"api_app_id\":\"A123\",\"token\":\"legacy-fixed-value\",\"container\":{\"type\":\"view\",\"view_id\":\"V123\"},\"trigger_id\":\"987196394372.3485157640.efe5ca926abc9dadb0371534fff4326e\",\"view\":{\"id\":\"V123\",\"team_id\":\"T123\",\"type\":\"home\",\"blocks\":[{\"type\":\"section\",\"block_id\":\"hltsY\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Here's what you can do with Project Tracker:*\",\"verbatim\":false}},{\"type\":\"actions\",\"block_id\":\"home_actions\",\"elements\":[{\"type\":\"button\",\"action_id\":\"home_button_1\",\"text\":{\"type\":\"plain_text\",\"text\":\"Create New Task\",\"emoji\":true},\"style\":\"primary\",\"value\":\"create_task\"},{\"type\":\"button\",\"action_id\":\"home_button_2\",\"text\":{\"type\":\"plain_text\",\"text\":\"Create New Project\",\"emoji\":true},\"value\":\"create_project\"},{\"type\":\"button\",\"action_id\":\"home_button_3\",\"text\":{\"type\":\"plain_text\",\"text\":\"Help\",\"emoji\":true},\"value\":\"help\"}]},{\"type\":\"context\",\"block_id\":\"BNV\",\"elements\":[{\"fallback\":\"20x20px image\",\"image_url\":\"https:\\/\\/api.slack.com\\/img\\/blocks\\/bkb_template_images\\/placeholder.png\",\"image_width\":20,\"image_height\":20,\"image_bytes\":96,\"type\":\"image\",\"alt_text\":\"placeholder\"}]},{\"type\":\"section\",\"block_id\":\"z61\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Your Configurations*\",\"verbatim\":false}},{\"type\":\"divider\",\"block_id\":\"F6ZOo\"},{\"type\":\"section\",\"block_id\":\"NmR\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*#public-relations*\\n<fakelink.toUrl.com|PR Strategy 2019> posts new tasks, comments, and project updates to <fakelink.toChannel.com|#public-relations>\",\"verbatim\":false},\"accessory\":{\"type\":\"button\",\"text\":{\"type\":\"plain_text\",\"text\":\"Edit\",\"emoji\":true},\"value\":\"public-relations\",\"action_id\":\"czws\"}},{\"type\":\"divider\",\"block_id\":\"QAaXg\"},{\"type\":\"section\",\"block_id\":\"LqY\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*#team-updates*\\n<fakelink.toUrl.com|Q4 Team Projects> posts project updates to <fakelink.toChannel.com|#team-updates>\",\"verbatim\":false},\"accessory\":{\"type\":\"button\",\"text\":{\"type\":\"plain_text\",\"text\":\"Edit\",\"emoji\":true},\"value\":\"public-relations\",\"action_id\":\"BOp7O\"}},{\"type\":\"divider\",\"block_id\":\"NGZ\"},{\"type\":\"actions\",\"block_id\":\"QFv\",\"elements\":[{\"type\":\"button\",\"action_id\":\"home_button_4\",\"text\":{\"type\":\"plain_text\",\"text\":\"New Configuration\",\"emoji\":true},\"value\":\"new_configuration\"}]}],\"private_metadata\":\"\",\"callback_id\":\"\",\"state\":{\"values\":{}},\"hash\":\"1583634748.7562ffd9\",\"title\":{\"type\":\"plain_text\",\"text\":\"View Title\",\"emoji\":true},\"clear_on_close\":false,\"notify_on_close\":false,\"close\":null,\"submit\":null,\"previous_view_id\":null,\"root_view_id\":\"V123\",\"app_id\":\"A123\",\"external_id\":\"\",\"app_installed_team_id\":\"T123\",\"bot_id\":\"B123\"},\"actions\":[{\"action_id\":\"home_button_1\",\"block_id\":\"home_actions\",\"text\":{\"type\":\"plain_text\",\"text\":\"Create New Task\",\"emoji\":true},\"value\":\"create_task\",\"style\":\"primary\",\"type\":\"button\",\"action_ts\":\"1583635577.758298\"}]}"; | ||
| String realPayload = "{\"type\":\"block_actions\",\"team\":{\"id\":\"T123\",\"domain\":\"test-test\"},\"user\":{\"id\":\"U123\",\"username\":\"test-test\",\"name\":\"test-test\",\"team_id\":\"T123\"},\"api_app_id\":\"A123\",\"token\":\"legacy-fixed-value\",\"container\":{\"type\":\"view\",\"view_id\":\"V123\"},\"trigger_id\":\"987196394372.3485157640.efe5ca926abc9dadb0371534fff4326e\",\"view\":{\"id\":\"V123\",\"team_id\":\"T123\",\"type\":\"home\",\"blocks\":[{\"type\":\"section\",\"block_id\":\"hltsY\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Here's what you can do with Project Tracker:*\",\"verbatim\":false}},{\"type\":\"actions\",\"block_id\":\"home_actions\",\"elements\":[{\"type\":\"button\",\"action_id\":\"home_button_1\",\"text\":{\"type\":\"plain_text\",\"text\":\"Create New Task\",\"emoji\":true},\"style\":\"primary\",\"value\":\"create_task\"},{\"type\":\"button\",\"action_id\":\"home_button_2\",\"text\":{\"type\":\"plain_text\",\"text\":\"Create New Project\",\"emoji\":true},\"value\":\"create_project\"},{\"type\":\"button\",\"action_id\":\"home_button_3\",\"text\":{\"type\":\"plain_text\",\"text\":\"Help\",\"emoji\":true},\"value\":\"help\"}]},{\"type\":\"context\",\"block_id\":\"BNV\",\"elements\":[{\"fallback\":\"20x20px image\",\"image_url\":\"https:\\/\\/docs.slack.dev\\/img\\/blocks\\/bkb_template_images\\/placeholder.png\",\"image_width\":20,\"image_height\":20,\"image_bytes\":96,\"type\":\"image\",\"alt_text\":\"placeholder\"}]},{\"type\":\"section\",\"block_id\":\"z61\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*Your Configurations*\",\"verbatim\":false}},{\"type\":\"divider\",\"block_id\":\"F6ZOo\"},{\"type\":\"section\",\"block_id\":\"NmR\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*#public-relations*\\n<fakelink.toUrl.com|PR Strategy 2019> posts new tasks, comments, and project updates to <fakelink.toChannel.com|#public-relations>\",\"verbatim\":false},\"accessory\":{\"type\":\"button\",\"text\":{\"type\":\"plain_text\",\"text\":\"Edit\",\"emoji\":true},\"value\":\"public-relations\",\"action_id\":\"czws\"}},{\"type\":\"divider\",\"block_id\":\"QAaXg\"},{\"type\":\"section\",\"block_id\":\"LqY\",\"text\":{\"type\":\"mrkdwn\",\"text\":\"*#team-updates*\\n<fakelink.toUrl.com|Q4 Team Projects> posts project updates to <fakelink.toChannel.com|#team-updates>\",\"verbatim\":false},\"accessory\":{\"type\":\"button\",\"text\":{\"type\":\"plain_text\",\"text\":\"Edit\",\"emoji\":true},\"value\":\"public-relations\",\"action_id\":\"BOp7O\"}},{\"type\":\"divider\",\"block_id\":\"NGZ\"},{\"type\":\"actions\",\"block_id\":\"QFv\",\"elements\":[{\"type\":\"button\",\"action_id\":\"home_button_4\",\"text\":{\"type\":\"plain_text\",\"text\":\"New Configuration\",\"emoji\":true},\"value\":\"new_configuration\"}]}],\"private_metadata\":\"\",\"callback_id\":\"\",\"state\":{\"values\":{}},\"hash\":\"1583634748.7562ffd9\",\"title\":{\"type\":\"plain_text\",\"text\":\"View Title\",\"emoji\":true},\"clear_on_close\":false,\"notify_on_close\":false,\"close\":null,\"submit\":null,\"previous_view_id\":null,\"root_view_id\":\"V123\",\"app_id\":\"A123\",\"external_id\":\"\",\"app_installed_team_id\":\"T123\",\"bot_id\":\"B123\"},\"actions\":[{\"action_id\":\"home_button_1\",\"block_id\":\"home_actions\",\"text\":{\"type\":\"plain_text\",\"text\":\"Create New Task\",\"emoji\":true},\"value\":\"create_task\",\"style\":\"primary\",\"type\":\"button\",\"action_ts\":\"1583635577.758298\"}]}"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice catch 💯 good catch!
| ### What your Bolt app does | ||
|
|
||
| All your app needs to do to properly handle OAuth Flow are: | ||
| To properly handle the OAuth flow: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚀
| |`AuditClient#getActions()`|`GET /actions`| | ||
|
|
||
| ### getLogs() | ||
| ### `getLogs()` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TIL
| ``` | ||
|
|
||
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://developer.oracle.com/java/jdk-10-local-variable-type-inference.html), your code could be much more concise. To take advantage of it, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below. Also, configure the same on your IDE. | ||
| If you go with JDK 10+, thanks to [Local Variable Type Inference](https://docs.oracle.com/en/java/javase/21/language/local-variable-type-inference.html), you can write more concise code. To do so, install OpenJDK 11 and set the compatible Java versions in `build.gradle` as below, configuring the same on your IDE. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice 💯
| /** | ||
| * https://api.slack.com/methods/admin.conversations.whitelist.remove | ||
| */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fair this is deprecated 🚀
|
Wow, this is fantastic! 👍 |
Updates all necessary links from api.slack.com/x to their equivalent on docs.slack.dev. I also did some copy editing and applying guidelines from our style guide. (changes are docs only)
Category (place an
xin each of the[ ])Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you agree to those rules.