Finaliza ajustes para iniciar Repositorio Git do SDK de Integração do Notion separado do meu projeto original

---

- Cria singleton de `client` com func `configure` para inicializar e `get_instance` para buscar instância do client;
- Ajusta clients para buscar headers vindo do pai `client` e fixa versão legacy no client de databases;
- Adiciona inicialização de `client` no init do projeto com api_token e api_version informados pelo usuário;
- Altera `NotionConfig` para inserir `database_id` no lugar de `database_name`;
- Altera sistema para receber `database_id` no lugar de `database_name`;
- Altera tipo de `properties` em `schemas.responses.pages.Page` de `Union[Dict[str, Any]], TDB` para `Union[Any, TDB]` para resolver reclamações de type hint;
- Adiciona param `generic_response` no init de `client` e nos clients e databases e pages para pular uso de mapping ao usar `.generic`;
- Adiciona param `raw_response` para pular parser e mappings e retornar resposta original da api;
- Finaliza `types` com subpastas para importações mas com init mãe vazio para evitar dependência circular e permitir uso de `notion.types.` pelo usuário;
- Remove importações do projeto original não relacionadas com o SDK;
- Adiciona param `timezone` na func `start_date` em `orm.common.SetProperty` que antes vinha do env, para posteriormente puxar da init da integração;
- Monta `LICENSE`, `README.md` e `pyproject.toml` base simples para commit inicial do projeto permitindo build de pacote;

---
This commit is contained in:
2026-01-20 22:26:39 -03:00
commit aff0446458
72 changed files with 2910 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
from .databases import Schemas as _databases
from .pages import Schemas as _pages
from .users import Schemas as _users
from .errors import Schemas as _errors
class Schemas:
databases = _databases
pages = _pages
users = _users
errors = _errors
__all__ = ["Schemas"]
+15
View File
@@ -0,0 +1,15 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
from typing import Optional, List, TypeVar, Generic
from ....orm.mapping.database import NotionDatabase as _NotionDatabase
from ..pages.Page import Page as _Page
TDB = TypeVar('TDB', bound = _NotionDatabase)
class Query(BaseModelSdk, Generic[TDB]):
model_config = ConfigDict(title="Notion_Responses_Databases_Query")
results: List[_Page[TDB]]
next_cursor: Optional[str] = None
has_more: bool = False
type: str = "page_or_database"
page_or_database: dict = {}
+7
View File
@@ -0,0 +1,7 @@
from .Query import Query as _Query
class Schemas:
Query = _Query
__all__ = ["Schemas"]
+8
View File
@@ -0,0 +1,8 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
class Error(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Errors_Error")
status: int
code: str
message: str
+7
View File
@@ -0,0 +1,7 @@
from .Error import Error as _Error
class Schemas:
Error = _Error
__all__ = ["Schemas"]
+24
View File
@@ -0,0 +1,24 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
from typing import Optional, Any, Dict, Generic, TypeVar, Union
from datetime import datetime
from ....orm.mapping.database import NotionDatabase as _NotionDatabase
from ..users.User import User as _User
from .Parent import Parent as _Parent
TDB = TypeVar('TDB', bound = _NotionDatabase)
class Page(BaseModelSdk, Generic[TDB]):
model_config = ConfigDict(title="Notion_Responses_Pages_Page")
id: str
created_time: datetime
last_edited_time: datetime
created_by: _User
last_edited_by: _User
cover: Optional[Dict[str, Any]]
icon: Optional[Dict[str, Any]]
parent: _Parent
archived: bool
properties: Union[Any, TDB]
url: str
public_url: Optional[str]
+9
View File
@@ -0,0 +1,9 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
from typing import Optional, Literal
class Parent(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Pages_Parent")
type: Literal ["page_id", "data_source_id", "database_id"]
data_source_id: Optional[str] = None
database_id: Optional[str] = None
+9
View File
@@ -0,0 +1,9 @@
from .Page import Page as _Page
from .Parent import Parent as _Parent
class Schemas:
Page = _Page
Parent = _Parent
__all__ = ["Schemas"]
+23
View File
@@ -0,0 +1,23 @@
from .....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
from typing import Dict, Any, Optional
class RichText(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Pages_Properties_RichText")
type: str
text: 'Text'
annotations: 'Annotations'
plain_text: Optional[str]
href: Optional[str]
class Text(BaseModelSdk):
content: Optional[str]
link: Optional[str]
class Annotations(BaseModelSdk):
bold: bool
italic: bool
strikethrough: bool
underline: bool
code: bool
color: str
+7
View File
@@ -0,0 +1,7 @@
from .RichText import RichText as _RichText
class Schemas:
RichText = _RichText
__all__ = ["Schemas"]
+11
View File
@@ -0,0 +1,11 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
from .type.Bot import Bot as _Bot
class Bot(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Users_Bot")
id: str
type: str = "bot"
bot: _Bot
name: str
avatar_url: str
+11
View File
@@ -0,0 +1,11 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
from .type.Person import Person as _Person
class Person(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Users_Person")
id: str
type: str = "person"
person: _Person
name: str
avatar_url: str
+6
View File
@@ -0,0 +1,6 @@
from ....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
class User(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Users_User")
id: str
+13
View File
@@ -0,0 +1,13 @@
from .type import Schemas as _type
from .User import User as _User
from .Person import Person as _Person
from .Bot import Bot as _Bot
class Schemas:
type = _type
User = _User
Person = _Person
Bot = _Bot
__all__ = ["Schemas"]
+6
View File
@@ -0,0 +1,6 @@
from .....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
class Bot(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Users_Type_Bot")
...
+6
View File
@@ -0,0 +1,6 @@
from .....schemas.dto import BaseModelSdk
from pydantic import ConfigDict
class Person(BaseModelSdk):
model_config = ConfigDict(title="Notion_Responses_Users_Type_Person")
email: str
+9
View File
@@ -0,0 +1,9 @@
from .Person import Person as _Person
from .Bot import Bot as _Bot
class Schemas:
Person = _Person
Bot = _Bot
__all__ = ["Schemas"]