Skip to content

Releases: jsaabel/kotlin-notion-client

v0.2.0

04 Nov 13:50

Choose a tag to compare

✨ Added

Query Filters - New property type filters for advanced querying:

  • Relation filter: Filter by related pages with relation("Property").contains(pageId), doesNotContain(), isEmpty(), isNotEmpty()
  • People filter: Filter by users/assignees with people("Property").contains(userId), doesNotContain(), isEmpty(), isNotEmpty()
  • Status filter: Filter by workflow status with status("Property").equals("Status"), doesNotEqual(), isEmpty(), isNotEmpty()
  • Unique ID filter: Filter by auto-incrementing IDs with numeric comparisons (equals(), greaterThan(), lessThan(), etc.)
  • Files filter: Filter by attachment presence with files("Property").isEmpty(), isNotEmpty()

Property Types:

  • Place property: Full support for location data with PageProperty.Place including:
    • Structured access to latitude/longitude coordinates
    • Name and address fields
    • Convenience accessors: getPlaceProperty(), getPlaceAsString(), formattedLocation
  • Unique ID property: Enhanced with convenience accessors (getUniqueIdProperty(), properly integrated with getPlainTextForProperty())

🐛 Fixed

  • Unknown property types: Library now gracefully handles property types it doesn't recognize, returning PageProperty.Unsupported instead of failing deserialization

🔧 Changed

  • Dependencies: Updated to latest versions of Kotlin, Ktor, and other dependencies
  • Gradle: Updated Gradle wrapper to latest version

📊 Statistics

  • Test coverage: 514+ unit tests (up from 481)
  • New test suites: Integration tests for all new filter types

v0.1.0 - Initial Release

04 Nov 13:54

Choose a tag to compare

🎉 Initial Release

This is the first public release of the Kotlin Notion Client library.

✨ Features

Core API Support

  • Complete implementation of Notion API 2025-09-03
  • Full support for Pages, Blocks, Databases, Data Sources, Comments, Search, and Users APIs
  • Type-safe Kotlin models for all Notion objects
  • Coroutine-based async API using suspend functions

Developer Experience

  • Type-safe DSL builders for creating pages, databases, and queries
  • Rich Text DSL for formatting text with annotations
  • Pagination helpers with Kotlin Flow support
  • Rate limiting with automatic retry logic
  • Comprehensive error handling

Data Sources & Databases

  • Complete CRUD operations for databases and data sources
  • Advanced query capabilities with type-safe filter and sort builders
  • Relation properties with pagination support
  • All database property types supported

Content Management

  • Full block type support (paragraph, heading, list, code, etc.)
  • Block children operations (append, retrieve, delete)
  • Table blocks with row and cell management
  • File upload support (single and multipart)

Search & Users

  • Search by title with filtering
  • User retrieval and listing
  • Bot user information

Testing & Quality

  • 481+ unit tests with comprehensive coverage
  • Integration tests for real API verification
  • Test fixtures using official Notion API samples

📚 Documentation

  • Complete API documentation for all endpoints
  • Usage examples for common operations
  • Testing guide with unit and integration test patterns
  • Error handling guide
  • Rich Text DSL documentation
  • Pagination helpers documentation

🔧 Technical Details

  • Language: Kotlin 2.2+
  • HTTP Client: Ktor
  • Serialization: kotlinx.serialization
  • DateTime: kotlinx-datetime
  • Testing: Kotest

⚠️ Known Limitations

  • This library was developed with significant AI assistance (Claude Code)
  • Some edge cases may not be fully covered
  • Documentation examples should be verified against actual implementation
  • See README for full transparency notice

🙏 Acknowledgments

  • Built using official Notion API documentation
  • Developed with Claude Code assistance
  • Inspired by official Notion SDK implementations

Note: This is an early release (0.1.0). While comprehensive testing has been performed, users should expect potential issues and are encouraged to report them via GitHub Issues.