Skip to main content

Abstraction layer for the Notion API with declarative schema mapping

Project description

notion-api-utils

Abstraction layer for the Notion API. Define schemas declaratively and convert Python dicts to Notion's JSON format without writing boilerplate.

Install

pip install notion-api-utils

Usage

from notion_api_utils import Schema, Field, Title, RichText, Number, Select, Date, to_notion_properties

# Define a schema mapping your data to Notion properties
schema = Schema(fields={
    "name":   Field("Name", Title),
    "email":  Field("Email", Email),
    "age":    Field("Age", Number),
    "status": Field("Status", Select),
    "date":   Field("Created At", Date),
})

# Your data
data = {
    "name": "Lucas",
    "email": "lucas@example.com",
    "age": 25,
    "status": "Active",
    "date": "2026-03-25",
}

# Convert to Notion properties JSON
properties = to_notion_properties(data, schema)
# Use `properties` in your Notion API call body

Output:

{
  "Name": {"title": [{"text": {"content": "Lucas"}}]},
  "Email": {"email": "lucas@example.com"},
  "Age": {"number": 25},
  "Status": {"select": {"name": "Active"}},
  "Created At": {"date": {"start": "2026-03-25"}}
}

Supported Property Types

Type Input
Title str
RichText str
Number int | float
Select str
MultiSelect list[str]
Date str | date | datetime or {"start": ..., "end": ...}
Checkbox bool
Email str
Url str
PhoneNumber str
Status str
Relation list[str] (page IDs)
People list[str] (user IDs)
Files list[str] (URLs)

Custom Source Key

When your dict key differs from the schema key:

schema = Schema(fields={
    "nome": Field("Name", Title, source_key="nome_completo"),
})

data = {"nome_completo": "Lucas"}
properties = to_notion_properties(data, schema)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iaxys_notion_utils-0.1.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iaxys_notion_utils-0.1.0-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file iaxys_notion_utils-0.1.0.tar.gz.

File metadata

  • Download URL: iaxys_notion_utils-0.1.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iaxys_notion_utils-0.1.0.tar.gz
Algorithm Hash digest
SHA256 c5a0e01737c52695cc1962d0d21c728699afeaab44e12f97f65e08a5cf013b46
MD5 adff54da92f5bfcf0e256dfc7ddd2db9
BLAKE2b-256 1d5327714e5c3b4dafced1c3e9d1a5c1da7dec138c1ab364d5fd9835c15db4c6

See more details on using hashes here.

File details

Details for the file iaxys_notion_utils-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iaxys_notion_utils-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iaxys_notion_utils-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c466742e3ac15fc988c03cf2d5a0de04838a6c192e0a4d0aa06c74e8be8a5184
MD5 69ae7773f6f686904bede802a7de822a
BLAKE2b-256 2503fdbcc44460d65438f0137ff2ff8fb22fff2b4c64392d934807ed916be70c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page