A Notion SDK for Any JVM Language

Related tags

SDK notion-sdk-jvm
Overview

Notion SDK for Any JVM Language

A simple and easy to use client for the Notion API


Maven Central CI Build

Here is an Notion API SDK for any JVM language users 👋

This project aims to provide a Notion API client for any JVM language developers without hurdles. To realize the goal, its code is written in Kotlin with a nice consideration for Java compatibility.

This SDK works on Android runtime and any distributions based on OpenJDK. With regard to programming languages, this project provides out-of-the-box supports for Java (of course!), Kotlin, and the novel Scala 3! We don't have nice wrappers for some other JVM lanaguages such as Groovy and Clojure, but your code using this library should work in the lanaguges too.

Getting Started

You can start using this library just by adding notion-sdk-jvm-core dependency to your project.

For Gradle users:

ext.notionSdkVersion = "0.1.12"
dependencies {
  // This dependency is at least required
  implementation("com.github.seratch:notion-sdk-jvm-core:${notionSdkVersion}")
}

For Maven users:

<properties>
  <notion-sdk.version>0.1.12</notion-sdk.version>
</properties>

<dependencies>
  <dependency>
    <groupId>com.github.seratch</groupId>
    <artifactId>notion-sdk-jvm-core</artifactId>
    <version>${notion-sdk.version}</version>
  </dependency>
</dependencies>

As this library is in Kotlin, using in the same language is the smoothest :) Let's start with the following code, which manipulates Notion pages 👋

import notion.api.v1.NotionClient
import notion.api.v1.model.pages.PageParent
import notion.api.v1.model.pages.PageProperty as prop

fun main() {
    val client = NotionClient(token = System.getenv("NOTION_TOKEN"))
    client.use {

        // Look up all databases that this app can access
        val databases = client.listDatabases()
        // Find the "Test Database" from the list
        val database = databases.results.find { it.title.any { t -> t.plainText.contains("Test Database") } }
            ?: throw IllegalStateException("Create a database named 'Test Database' and invite this app's user!")

        // All the options for "Severity" property (select type)
        val severityOptions = database.properties?.get("Severity")?.select?.options
        // All the options for "Tags" property (multi_select type)
        val tagOptions = database.properties?.get("Tags")?.multiSelect?.options
        // The user object for "Assignee" property (people type)
        val assignee = client.listUsers().results[0] // just picking the first user up

        // Create a new page in the database
        val newPage = client.createPage(
            // Use the "Test Database" as this page's parent
            parent = PageParent.database(database.id),
            // Set values to the page's properties
            // (these must be pre-defined before this API call)
            properties = mapOf(
                "Title" to prop(title = listOf(prop.RichText(text = prop.RichText.Text(content = "Fix a bug")))),
                "Severity" to prop(select = severityOptions?.find { it.name == "High" }),
                "Tags" to prop(multiSelect = tagOptions),
                "Due" to prop(date = prop.Date(start = "2021-05-13", end = "2021-12-31")),
                "Velocity Points" to prop(number = 3),
                "Assignee" to prop(people = listOf(assignee)),
                "Done" to prop(checkbox = true),
                "Link" to prop(url = "https://www.example.com"),
                "Contact" to prop(email = "[email protected]"),
            )
        )

        // Update properties in the page
        val updatedPage =
            client.updatePageProperties(
                pageId = newPage.id,
                // Update only "Severity" property
                properties = mapOf(
                    "Severity" to prop(select = severityOptions?.find { it.name == "Medium" }),
                )
            )

        // Fetch the latest data of the page
        val retrievedPage = client.retrievePage(newPage.id)
    }
}

Using in Java

Even when you use this SDK in Java and other languages, all the classes/methods should be accessible. If you find issues, please let us know the issue in this project's issue tracker.

import notion.api.v1.NotionClient;
import notion.api.v1.model.databases.Databases;

public class Readme {
    public static void main(String[] args) {
        try (NotionClient client = new NotionClient(System.getenv("NOTION_TOKEN"))) {
            Databases databases = client.listDatabases();
        }
    }
}

Scala 3 Support

Although many classes are still Java/Kotlin objects, you can seamlessly use this SDK in Scala 3 too! Here is a simple build.sbt example:

val notionSdkVersion = "0.1.12"

lazy val root = project
  .in(file("."))
  .settings(
    scalaVersion := "3.0.0",
    libraryDependencies ++= Seq(
      "com.github.seratch" % "notion-sdk-jvm-scala3" % notionSdkVersion,
      "com.github.seratch" % "notion-sdk-jvm-httpclient" % notionSdkVersion,
    )
  )

Save the following source code as Main.scala. You can run the app by hitting sbt run.

import notion.api.v1.ScalaNotionClient
import notion.api.v1.http.JavaNetHttpClient
import notion.api.v1.model.common.PropertyType
import notion.api.v1.model.databases.query.filter.PropertyFilter
import notion.api.v1.model.databases.query.filter.condition.TextFilter

import scala.jdk.CollectionConverters._

@main def example: Unit = {

  val client = ScalaNotionClient(
    token = System.getenv("NOTION_TOKEN"),
    httpClient = new JavaNetHttpClient()
  )

  val users = client.listUsers(pageSize = 2)

  val databaseId = client
    .listDatabases()
    .getResults
    .asScala
    .find(_.getTitle.get(0).getPlainText == "Test Database")
    .get
    .getId

  val queryResult = client.queryDatabase(
    databaseId = databaseId,
    filter = {
      val filter = new PropertyFilter()
      filter.setProperty(PropertyType.Title)
      filter.setTitle {
        val title = new TextFilter()
        title.setContains("bug")
        title
      }
      filter
    },
    pageSize = 3
  )
}

Plugins

By default, the NotionClient utilizes only JDK's java.net.HttpURLConnection and Gson library for JSON serialization.

For HTTP communications and logging, you can easily switch to other implementations.

Pluggable HTTP Client

As some may know, java.net.HttpURLConnection does not support PATCH request method 😢 . Thus, the default httpClient has to make an "illegal reflective access" to overcome the limitation for perfoming PATCH method requests (see this class for details).

If you use PATH method API calls such as PATCH https://api.notion.com/v1/pages/{page_id}, we recommend other httpClient implementations listed below. If you don't use PATCH method APIs at all and don't want to add any extra dependencies, the default httpClient works fine for you.

// Add this if you use java.net.http.HttpClient in JDK 11+
// Please note that this module does not work on Android runtime
implementation("com.github.seratch:notion-sdk-jvm-httpclient:${notionSdkVersion}")

// Add this if you use OkHttp 5.x (still alpha)
// If you have other dependencies relying on okhttp 5.x (e.g., Retrofit)
implementation("com.github.seratch:notion-sdk-jvm-okhttp5:${notionSdkVersion}")

// Add this if you use OkHttp 4.x
// Although the package name is `okhttp3`, the latest version is 4.x
implementation("com.github.seratch:notion-sdk-jvm-okhttp4:${notionSdkVersion}")

// Add this if you use OkHttp 3.x
// If you have other dependencies relying on okhttp 3.x (e.g., Retrofit)
implementation("com.github.seratch:notion-sdk-jvm-okhttp3:${notionSdkVersion}")

You can switch the httpClient in either of the following ways:

import notion.api.v1.NotionClient
import notion.api.v1.http.JavaNetHttpClient

val client = NotionClient(
    token = System.getenv("NOTION_TOKEN"),
    httpClient = JavaNetHttpClient(),
)

or

import notion.api.v1.NotionClient
import notion.api.v1.http.OkHttp3Client

val client = NotionClient(token = System.getenv("NOTION_TOKEN"))
client.httpClient = OkHttp3Client()

Pluggable Logging

You can change the logger property of a NotionClient instances Currently, this libarary supports its own stdout logger (default), java.util.logging, and slf4j-api based ones. Here are the steps to switch to an slf4j-api logger. Add the following optional module along with your favorite implementation (e.g., logback-classic, slf4j-simple).

implementation("com.github.seratch:notion-sdk-jvm-slf4j:${notionSdkVersion}") // slf4j-api 1.7
implementation("org.slf4j:slf4j-simple:1.7.30")

Now you can switch to your slf4j logger. As with the httpClient example, you can use the setter method too.

import notion.api.v1.NotionClient
import notion.api.v1.http.JavaNetHttpClient
import notion.api.v1.logging.Slf4jLogger

// for slf4j-simple
System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug")

val client = NotionClient(
    token = System.getenv("NOTION_TOKEN"),
    httpClient = JavaNetHttpClient(),
    logger = Slf4jLogger(),
)

Why isn't JSON serialization pluggable?

We don't support other JSON libraries yet. There are two reasons:

Necessity of polymorphic serializers for list objects

In the early development stage of this SDK, we started with kotlinx.serialization. It worked well except for the Search API responses. The results returned by the API requires polymorphic serializers for properties: List<DatabaseProperty | PageProperty> (this is a pseudo-code illustrating the property is a list of union type). We could not find a way to handle the pattern with the library at that time.

Easily enabling camelCased property names

We know a few novel Kotlin libraries do not support the conversions between snake_cased keys and camelCased keys. Although we do respect the opinion and see the benefit, we still prefer consistent field naming in the Java world. This is another major reason why we did not go with either of kotlinx.serialization and Moshi.

Supported Java Runtimes

  • OpenJDK 8 or higher
  • All Android runtime versions supported by Kotlin 1.5

As notion-sdk-jvm-httpclient utilizes java.net.http.HttpClient, the module works with JDK 11 and higher versions.

License

The MIT License

Comments
  • Change

    Change "Title" property in README to "title"

    The API seems to be case sensitive with respect to the "title" property and "Title" yields a response code of 400 for me, so I changed it in the README

    opened by J-MR-T 8
  • Improve example for first time users

    Improve example for first time users

    I started using Notion and this lib in the past two days. Both great productivity boosts, thanks! I wrote a few import scripts, including a CSV importer because the built-in one just says "Error" without any help. While doing so I noticed a few things in the example that would've made it easier to start off.

    • Use more kotlin-y functions and style (single, error, wrapping, [], first)
    • Minor updates to comments
    • Inline prop as it was confusing on first read (and this snipped should be optimized for a cold-read).
    • Bang!! a few things to make them non-null. They make no sense if they were null, so fail fast.
    • Extracted a small utility because almost every time a String is inserted, it has to be Rich.

    I recommend to squash this PR.

    documentation 
    opened by TWiStErRob 5
  • How to retrieve value when property is rollup?

    How to retrieve value when property is rollup?

    First of all thanks for creating this client, helping me a lot.

    I would need to retrieve the value of some rollup properties, but not sure how to do it.

    This is how I am accessing value for other properties type: List<Page> database = client.queryDatabase(new QueryDatabaseRequest(DatabaseList.REPERTOIRE_DATABASE)).getResults(); String title = database.get(0).getProperties().get("Order").getTitle().get(0).getPlainText()

    I don't seem to find a way to access to the rollup values using the same path: Rollup musicRollup = database.get(0).getProperties().get("Music Rollup").getRollup()

    The Rollup class contains only the 3 key related to the rollup itself but not the content of the rollup.

    Is there another way I should access the rollup values?

    Thank you for your help!

    enhancement question 
    opened by enrico-laboratory 5
  • No values in page properties

    No values in page properties

    All the properties of pages gotten via both NotionClient#queryDatabase and NotionClient#retrievePage have no values. I cannot understand why.

    Notion sdk v1.7.0 with httpclient.

    question 
    opened by SkytAsul 4
  • Added support for comments

    Added support for comments

    Please have a look at my changes for comment support. You will need to create a comment "Hello World!" on your test page. I've never used Kotlin before, so please let me know if there are any issues.

    image

    image

    enhancement 
    opened by eblanchette 4
  • How to unset a date in a database table

    How to unset a date in a database table

    Hi,

    I am using this sdk to manipulate some cells and I have a hard time to unset a date property. Basically, a date is set on the property and I want to delete it.

    I have tried setting a null object as date property and setting a null object for start, end, timezone on a date property.

    Both give me errors.

    With a null as data property, I got:

    Got an error from Notion (status: 400, code: validation_error, message: body failed validation. Fix one:
    body.properties.Date de Gain.title should be defined, instead was `undefined`.
    body.properties.Date de Gain.rich_text should be defined, instead was `undefined`.
    body.properties.Date de Gain.number should be defined, instead was `undefined`.
    body.properties.Date de Gain.url should be defined, instead was `undefined`.
    body.properties.Date de Gain.select should be defined, instead was `undefined`.
    body.properties.Date de Gain.multi_select should be defined, instead was `undefined`.
    body.properties.Date de Gain.people should be defined, instead was `undefined`.
    body.properties.Date de Gain.email should be defined, instead was `undefined`.
    body.properties.Date de Gain.phone_number should be defined, instead was `undefined`.
    body.properties.Date de Gain.date should be defined, instead was `undefined`.
    body.properties.Date de Gain.checkbox should be defined, instead was `undefined`.
    body.properties.Date de Gain.relation should be defined, instead was `undefined`.
    body.properties.Date de Gain.files should be defined, instead was `undefined`.
    

    With a null object for start, end, timezone on a date property, I got:

    Got an error from Notion (status: 400, code: validation_error, message: body failed validation: body.properties.Date de Gain.date.start should be defined, instead was `undefined`.)
    

    Using the empty constructor for date property, I got the same error.

    Is there another way to unset a date property ?

    question wontfix 
    opened by edaubert 4
  • Missing Checkbox PropertyFilter + can't set property name

    Missing Checkbox PropertyFilter + can't set property name

    Hi, I found that the checkbox entry was missing in notion.api.v1.model.common. Adding

    @SerializedName("checkbox") Checkbox("checkbox");
    

    should solve this part of the issue.

    Also I can't found how to set the name of the property : My checkbox is called Done in notion if i managed to make the following code where i can't set the property name

    println(notionClient.queryDatabase(databaseId = database_id, filter = PropertyFilter(PropertyType.Checkbox (Missing as of now), checkbox = CheckboxFilter("true"))))
    

    I end wit this error ; notion.api.v1.exception.NotionAPIError: Got an error from Notion (status: 400, code: validation_error, message: Could not find property with name or id: checkbox) I suppose it take the property type as name

    Additionnal thing but not important : CheckboxFilter equals take a String => Shouldn't it be a bool ?

    Thanks Denis

    bug 
    opened by DenisD3D 4
  • Create database with multi_select doesn't work

    Create database with multi_select doesn't work

    This is my code, and if I remove the Tags column then it works.

        client.createDatabase(
                parent = DatabaseParent.page(page.id),
                title = listOf(DatabaseProperty.RichText(text = DatabaseProperty.RichText.Text(content = folderName), plainText = folderName)),
                isInline = true,
                properties = mapOf(
                    "Name" to TitlePropertySchema(),
                    "isFolder" to CheckboxPropertySchema(),
                    "Tags" to MultiSelectPropertySchema(), // this cause the problem
                    "Mime" to RichTextPropertySchema(),
                    "File" to FilePropertySchema(),
                    "Size In Bytes" to NumberPropertySchema(),
                    "Upload Complete" to CheckboxPropertySchema(),
                    "Thumbnail" to FilePropertySchema(),
                )
            )
    

    The error response is:

    body.properties.Tags.people should be defined, instead was `undefined`.
        body.properties.Tags.files should be defined, instead was `undefined`.
        body.properties.Tags.email should be defined, instead was `undefined`.
        body.properties.Tags.phone_number should be defined, instead was `undefined`.
        body.properties.Tags.date should be defined, instead was `undefined`.
        body.properties.Tags.checkbox should be defined, instead was `undefined`.
        body.properties.Tags.created_by should be defined, instead was `undefined`.
        body.properties.Tags.created_time should be defined, instead was `undefined`.
        body.properties.Tags.last_edited_by should be defined, instead was `undefined`.
        body.properties.Tags.last_edited_time should be defined, instead was `undefined`.
    
    bug 
    opened by landicefu 3
  • Add Comments Support

    Add Comments Support

    Support for "Comments" would be nice to have. It gives us the ability to record events within a discussion. For example: Emailed the customer a reminder.

    References: https://developers.notion.com/reference/comment-object https://developers.notion.com/reference/retrieve-a-comment https://developers.notion.com/reference/create-a-comment

    enhancement 
    opened by eblanchette 3
  • Is it possible to create nested compound filter?

    Is it possible to create nested compound filter?

    Hi!

    Is it possible to create nested compound filters for QueryDatabase?

    Example:

    {
        "filter": {
            "or": [
                {
                    "property": "Description",
                    "rich_text": {
                        "contains": "fish"
                    }
                },
                {
                    "and": [
                        {
                            "property": "Food group",
                            "select": {
                                "equals": "🥦Vegetable"
                            }
                        },
                        {
                            "property": "Is protein rich?",
                            "checkbox": {
                                "equals": true
                            }
                        }
                    ]
                }
            ]
        }
    }
    

    I checked this for CompoundFilter: https://github.com/seratch/notion-sdk-jvm/blob/v0.2.0/core/src/test/kotlin/integration_tests/DatabasesTest.kt#L131-L155

    I managed to use the Compound Filter but could not find a way to have the nested compound.

    Thank you for your help!

    bug 
    opened by enrico-laboratory 3
  • Fix DatabasePropertySchema structure by wrapping with additional level

    Fix DatabasePropertySchema structure by wrapping with additional level

    Based on the document, we need to wrap the SelectOptionSchema list with an additional level named "options". https://developers.notion.com/reference/property-schema-object

    This change is tested, but I am not familiar with maven project, so I tested the change by moving the source code to my Android gradle project and ran the build in IDEA, and it seems fine. image

    This will solve bug https://github.com/seratch/notion-sdk-jvm/issues/67

    bug 
    opened by landicefu 2
  • Please make reused DatabaseProperties data classes

    Please make reused DatabaseProperties data classes

    This inconsistency is really strange:

    https://github.com/seratch/notion-sdk-jvm/blob/c9c70a9e7405444c609ada3b248c458e3c6ed7f0/core/src/main/kotlin/notion/api/v1/model/databases/DatabaseProperty.kt#L114-L128

    and bit me while trying to do some logic on List<DatabaseProperty.MultiSelect.Option> objects.

    I got this output:

    PageProperty(id=bfb4764a-e6f7-4ea8-b95c-5299223de91d, type=null, title=null, richText=null, select=null, status=null, multiSelect=[notion.api.v1.model.databases.DatabaseProperty$MultiSelect$Option@5d0e31f8], number=null, date=null, people=null, checkbox=null, url=null, phoneNumber=null, email=null, files=null, relation=null, formula=null, rollup=null, createdBy=null, lastEditedBy=null, createdTime=null, lastEditedTime=null, hasMore=null)

    half data class, half not. There is no external way of adding a toString onto multiSelect field to see the values (i.e no workaround), so have to do it in this codebase.

    opened by TWiStErRob 0
  • Missing

    Missing "status" database filter condition

    Hi,

    looks like there are some database filters in Notion which are missing in the library. For example, there is no status filter condition inside notion.api.v1.model.databases.query.filter.condition

    enhancement 
    opened by lukasimunec 4
  • Java code examples in readme

    Java code examples in readme

    Thanks for this great sdk!

    I'm wondering if you can add few Java examples. I'm stuck at working with the SDK API and like for example how to use the filters (PropertyFilter and CompoundFilter) and sorts in QueryDatabase. Unfortunately for people like me who isn't familiar with Kotlin, it isn't easy to fully understand the source code or the generated code in the decompiled files

    documentation good first issue 
    opened by ahmadio 1
  • Notion's API returns URL encoded PageProperty's ids

    Notion's API returns URL encoded PageProperty's ids

    When fetching a page from Notion's API (https://api.notion.com/v1/pages/:id), some property ids can contain special characters (https://developers.notion.com/reference/page).

    For example: t%7B%7Di, zl%7Da. Notion's documentation does not state if these values are URL encoded or not. However, this line re-encodes the property id: https://github.com/seratch/notion-sdk-jvm/blob/e46225782a369e4ee23c4e1a8ed6c7549d3aa524/core/src/main/kotlin/notion/api/v1/endpoint/PagesSupport.kt#L173

    This is particularly a problem since Notion's version 2022-06-28, which forces the use of https://api.notion.com/v1/pages/:id/properties/:propertyId.

    I am wondering whether the property id must be encoded when using retrievePagePropertyItem or not. Or, maybe PageProperty.id should be URL-decoded when deserializing. https://github.com/seratch/notion-sdk-jvm/blob/e46225782a369e4ee23c4e1a8ed6c7549d3aa524/core/src/main/kotlin/notion/api/v1/model/pages/PageProperty.kt#L12

    My current workaround is to URL-decode the property id before using retrievePagePropertyItem.

    enhancement 
    opened by looorent 4
  • NullPointerException in model.databases.Database.hashCode

    NullPointerException in model.databases.Database.hashCode

    Are Kotlin model data classes appropriate for use as keys in e.g. Maps? I am running into NullPointerException with

    Database database = client.retrieveDatabase(databaseId);
    MutableNetwork<Database, DatabaseProperty> network = NetworkBuilder.directed().build();
    network.addNode(database);
    
    java.lang.NullPointerException
    	at notion.api.v1.model.databases.Database.hashCode(Database.kt)
    	at java.base/java.util.HashMap.hash(HashMap.java:340)
    	at java.base/java.util.HashMap.containsKey(HashMap.java:592)
    	at com.google.common.graph.MapIteratorCache.containsKey(MapIteratorCache.java:104)
    	at com.google.common.graph.StandardNetwork.containsNode(StandardNetwork.java:198)
    	at com.google.common.graph.StandardMutableNetwork.addNode(StandardMutableNetwork.java:57)
    
    bug good first issue 
    opened by heuermh 3
Releases(v1.7.2)
  • v1.7.2(Oct 4, 2022)

    Changes

    This release adds a few newly added properties and also upgrades Kotlin version to the latest.

    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.7.1...v1.7.2
    Source code(tar.gz)
    Source code(zip)
  • v1.7.1(Sep 1, 2022)

    Changes

    This release updates the page search results to have properties again (the change was done on the Notion API server side). Also, @software-atelier thanks for your contribution!

    • All the issues and PRs: https://github.com/seratch/notion-sdk-jvm/milestone/18?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.7.0...v1.7.1
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Aug 30, 2022)

    Changes

    This release mainly adds slf4j-api v2.0 support.

    • All the issues and PRs: https://github.com/seratch/notion-sdk-jvm/milestone/8?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.6.0...v1.7.0
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(Aug 20, 2022)

    Changes

    This release adds Comments API support (shout out to @eblanchette) and fixes a few reported bugs on database creation and page property item retrieval use cases.

    • All the issues and PRs: https://github.com/seratch/notion-sdk-jvm/milestone/7?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.5.1...v1.6.0
    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Jul 8, 2022)

    Changes

    This release updates the search response data class to be more accurate. Refer to their announcement for details: https://developers.notion.com/changelog/releasing-notion-version-2022-06-28

    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.5.0...v1.5.1
    Source code(tar.gz)
    Source code(zip)
  • v1.5.0(Jul 8, 2022)

    Changes

    This release migrates to 2022-06-28 Notion API version. Refer to their announcement for details: https://developers.notion.com/changelog/releasing-notion-version-2022-06-28

    Also, @looorent thanks for your contribution!

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/16?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.4.2...v1.5.0
    Source code(tar.gz)
    Source code(zip)
  • v1.4.3(Jun 27, 2022)

    Changes

    This release adds status property support and a few improvements. Thanks @looorent for your contribution!

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/15?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.4.2...v1.4.3
    Source code(tar.gz)
    Source code(zip)
  • v1.4.2(Jun 23, 2022)

    Changes

    This release added the supports for the platform updates, which were announced at https://developers.notion.com/changelog/changes-for-june-6-june-20-2022

    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.4.1...v1.4.2
    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Jun 12, 2022)

    Changes

    This release resolves #48 by adding more properties to the block update request.

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/12?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.4.0...v1.4.1
    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Jun 2, 2022)

    Changes

    This release adds missing blocks and block properties.

    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.3.2...v1.4.0
    Source code(tar.gz)
    Source code(zip)
  • v1.3.2(May 2, 2022)

    Changes

    This release resolves an issue where developers were not able to update head1,2,3 blocks with their children blocks in past versions.

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/10?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.3.1...v1.3.2
    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(May 2, 2022)

    Changes

    This release resolves an issue where developers were not able to update table_row blocks in the past versions.

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/11?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.3.0...v1.3.1
    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Mar 18, 2022)

  • v1.2.1(Mar 17, 2022)

    Changes

    This release adds "id" property to property item objects in pages API responses.

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/9?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.2.0...v1.2.1
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Mar 11, 2022)

    Changes

    This release fixes a bug where nested compound filters are not supported in database query requests.

    • The full list of issues / PRs in the release: https://github.com/seratch/notion-sdk-jvm/milestone/2?closed=1
    • The code changes: https://github.com/seratch/notion-sdk-jvm/compare/v1.1.0...v1.2.0
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Mar 8, 2022)

  • v1.0.0(Mar 5, 2022)

Owner
Kazuhiro Sera
Slack Bolt Framework / SDK Developer
Kazuhiro Sera
Sdk-android - SnapOdds Android SDK

Documentation For the full API documentation go to https://snapodds.github.io/sd

Snapodds 0 Jan 30, 2022
Segmenkt - The SegmenKT Kotlin SDK is a Kotlin-first SDK for Segment

SegmenKT Kotlin SDK The SegmenKT Kotlin SDK is a Kotlin-first SDK for Segment. I

UNiDAYS 0 Nov 25, 2022
Frogo SDK - SDK Core for Easy Development

SDK for anything your problem to make easier developing android apps

Frogobox 10 Dec 15, 2022
HubSpot Kotlin SDK 🧺 Implementation of HubSpot API for Java/Kotlin in tiny SDK

HubSpot Kotlin SDK ?? Implementation of HubSpot API for Java/Kotlin in tiny SDK

BOOM 3 Oct 27, 2022
KScript - Convenient kotlin script wrapper for JVM.

KScript Convenient kotlin script wrapper for JVM. How it works Base class open class Test(val test: String) // this class will be super class of scrip

null 16 Nov 8, 2022
AWS SDK for Android. For more information, see our web site:

AWS SDK for Android For new projects, we recommend interacting with AWS using the Amplify Framework. The AWS SDK for Android is a collection of low-le

AWS Amplify 976 Dec 29, 2022
Countly Product Analytics Android SDK

Countly Android SDK We're hiring: Countly is looking for Android SDK developers, full stack devs, devops and growth hackers (remote work). Click this

Countly Team 648 Dec 23, 2022
Android Real Time Chat & Messaging SDK

Android Chat SDK Overview Applozic brings real-time engagement with chat, video, and voice to your web, mobile, and conversational apps. We power emer

Applozic 659 May 14, 2022
Evernote SDK for Android

Evernote SDK for Android version 2.0.0-RC4 Evernote API version 1.25 Overview This SDK wraps the Evernote Cloud API and provides OAuth authentication

Evernote 424 Dec 9, 2022
Air Native Extension (iOS and Android) for the Facebook mobile SDK

Air Native Extension for Facebook (iOS + Android) This is an AIR Native Extension for the Facebook SDK on iOS and Android. It has been developed by Fr

Freshplanet 219 Nov 25, 2022
Android Chat SDK built on Firebase

Chat21 is the core of the open source live chat platform Tiledesk.com. Chat21 SDK Documentation Features With Chat21 Android SDK you can: Send a direc

Chat21 235 Dec 2, 2022
Liquid SDK (Android)

Liquid Android SDK Quick Start to Liquid SDK for Android This document is just a quick start introduction to Liquid SDK for Android. We recommend you

Liquid 17 Nov 12, 2021
AWS SDK for Android. For more information, see our web site:

AWS SDK for Android For new projects, we recommend interacting with AWS using the Amplify Framework. The AWS SDK for Android is a collection of low-le

AWS Amplify 975 Dec 24, 2022
新浪微博 Android SDK

ReadMe 公告: 鉴于线上服务器出现问题,推荐下载本地aar后上传到自己公司的服务器,保证后续服务稳定, 我们也将尽快重新提供一个稳定的地址供大家使用。 新包地址:https://github.com/sinaweibosdk/weibo_android_sdk/tree/master/2019

SinaWeiboSDK 1.8k Dec 30, 2022
Free forever Marketing SDK with a dashboard for in-app SplashScreen banners with built-in analytics

AdaptivePlus Android SDK AdaptivePlus is the control center for marketing campaigns in mobile applications Requirements minSdkVersion 16 Examples prov

Adaptive.Plus 16 Dec 14, 2021
Official Appwrite Android SDK 💚 🤖

Appwrite Android SDK This SDK is compatible with Appwrite server version 0.8.x. For older versions, please check previous releases. Appwrite is an ope

Appwrite 62 Dec 18, 2022
This App is sending Face capture data over network, built around the latest Android Arcore SDK.

AndroidArcoreFacesStreaming From any Android phone ArCore compatible, using this app will send over TCP 5680 bytes messages: The first 5616 bytes is a

Maxime Dupart 30 Nov 16, 2022
Its measurement app made using kotlin with sceneform sdk by google

ARCORE MEASUREMENT This app is build using sceneform sdk for android using kotlin language It helps you measure the distance between multiple points i

Kashif Mehmood 39 Dec 9, 2022
Trackingplan for Android SDK

With Trackingplan for Android you can make sure that your tracking is going as you planned without changing your current analytics stack or code.

Trackingplan 3 Oct 26, 2021