The Notion API allows developers to integrate with Notion workspaces programmatically. Build integrations that connect Notion with other tools, automate workflows, and manage workspace content including pages, databases, blocks, users, comments, and search. Notion is an all-in-one workspace that combines notes, tasks, wikis, and databases into a flexible, collaborative platform.
Supported Java version is 8+.
The generated code uses a few Maven dependencies e.g., Jackson, OkHttp, and Apache HttpClient. The reference to these dependencies is already added in the pom.xml file will be installed automatically. Therefore, you will need internet access for a successful build.
- In order to open the client library in Eclipse click on
File -> Import.
- In the import dialog, select
Existing Java Projectand clickNext.
- Browse to locate the folder containing the source code. Select the detected location of the project and click
Finish.
- Upon successful import, the project will be automatically built by Eclipse after automatically resolving the dependencies.
- After successfully building the project, the client library needs to be installed as a Maven package in your local cache. Right-click on the project, select
Show in Local Terminal -> Terminalor useCtrl + Alt + Tto open Terminal.
- In the terminal dialog, run the following command to install client library.
mvn install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true
The following section explains how to use the NotionLib library in a new project.
For starting a new project, click the menu command File > New > Project.
Next, choose Maven > Maven Project and click Next.
Here, make sure to use the current workspace by choosing Use default Workspace location, as shown in the picture below and click Next.
Following this, select the quick start project type to create a simple project with an existing class and a main method. To do this, choose maven-archetype-quickstart item from the list and click Next.
In the last step, provide a Group Id and Artifact Id as shown in the picture below and click Finish.
The created Maven project manages its dependencies using its pom.xml file. In order to add a dependency on the NotionLib client library, double click on the pom.xml file in the Package Explorer. Opening the pom.xml file will render a graphical view on the canvas. Here, switch to the Dependencies tab and click the Add button as shown in the picture below.
Clicking the Add button will open a dialog where you need to specify NotionLib in Group Id, notion-lib in Artifact Id and 1.0.0 in the Version fields. Once added click OK. Save the pom.xml file.
Once the SimpleConsoleApp is created, a file named App.java will be visible in the Package Explorer with a main method. This is the entry point for the execution of the created project.
Here, you can add code to initialize the client library and instantiate a Controller class. Sample code to initialize the client library and using controller methods is given in the subsequent sections.
Note: Documentation for the client can be found here.
The following parameters are configurable for the API Client:
| Parameter | Type | Description |
|---|---|---|
| httpClientConfig | Consumer<HttpClientConfiguration.Builder> |
Set up Http Client Configuration instance. |
| loggingConfig | Consumer<ApiLoggingConfiguration.Builder> |
Set up Logging Configuration instance. |
| bearerAuthCredentials | BearerAuthCredentials |
The Credentials Setter for OAuth 2 Bearer token |
The API client can be initialized as follows:
import com.notion.api.NotionClient;
import com.notion.api.authentication.BearerAuthModel;
import com.notion.api.exceptions.ApiException;
import com.notion.api.http.response.ApiResponse;
import org.slf4j.event.Level;
public class Program {
public static void main(String[] args) {
NotionClient client = new NotionClient.Builder()
.loggingConfig(builder -> builder
.level(Level.DEBUG)
.requestConfig(logConfigBuilder -> logConfigBuilder.body(true))
.responseConfig(logConfigBuilder -> logConfigBuilder.headers(true)))
.httpClientConfig(configBuilder -> configBuilder
.timeout(0))
.bearerAuthCredentials(new BearerAuthModel.Builder(
"AccessToken"
)
.build())
.build();
}
}This API uses the following authentication schemes.
- ApiLoggingConfiguration
- ApiLoggingConfiguration.Builder
- ApiRequestLoggingConfiguration.Builder
- ApiResponseLoggingConfiguration.Builder
- Configuration Interface
- HttpClientConfiguration
- HttpClientConfiguration.Builder
- HttpProxyConfiguration
- HttpProxyConfiguration.Builder