
Reference API URL : Create a page
block arrays through children. By the way, what does block mean?
children, then when the page creates, block also create together.block, use the Retrieve block children method.# input page_id with as above page id
# Refer to Notion API master series 08, 09 - Analysis - Search if you need the way to find page_id
page_id = '1f217cc1-225f-4580-8e22-cd7eb8db3c5e'
blocks = notion.blocks.children.list(block_id=page_id)
pprint(blocks)Block information is as below.
{'block': {},
 'has_more': False,
 'next_cursor': None,
 'object': 'list',
 'results': [{'archived': False,
              'created_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
                             'object': 'user'},
              'created_time': '2022-04-02T11:59:00.000Z',
              'has_children': False,
              'id': '27b0ad2f-5698-4f7c-ab07-00f174042264',
              'last_edited_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
                                 'object': 'user'},
              'last_edited_time': '2022-07-07T00:43:00.000Z',
              'object': 'block', ...'results' contain arrays with block information. Put these arrays into children, then when the block creates, block create together.
Run pprint(blocks['results'][0]) and find out the block info details which contains 페페로니가 취향저격(Pepperoni is my taste).
...
 'object': 'block',
 'paragraph': {'color': 'default',
               'rich_text': [{'annotations': {'bold': False,
                                              'code': False,
                                              'color': 'default',
                                              'italic': False,
                                              'strikethrough': False,
                                              'underline': False},
                              'href': None,
                              'plain_text': '페퍼로니가',
                              'text': {'content': '페퍼로니가', 'link': None},
                              'type': 'text'},
                             {'annotations': {'bold': False,
                                              'code': False,
                                              'color': 'default',
                                              'italic': False,
                                              'strikethrough': False,
                                              'underline': False},
                              'href': None,
                              'plain_text': ' 취향저격',
                              'text': {'content': ' 취향저격', 'link': None},
                              'type': 'text'}]}, ...Refer to paragraph key value. We can process forms for children.
paragraph_value = blocks['results'][0]['paragraph']
children_block = {}
children_block['paragraph'] = paragraph_valueEvery time we cover with {} that's inconvenient. Let's make def function.
def dict_wrap(type, object):
    wrapped = {}
    wrapped[type] = object
    return wrapped
children_block = dict_wrap(type='paragraph', object=blocks['results'][0]['paragraph'])We prepared with this information, and then we can create but it is not the end.
Can you remember children's type? An array of mixed types means array, so its type is the list.
Then API will recognize with a list type variable.
I had trouble inputting with dictionary type, but body.parent.database_id should be defined, instead was 'undefined'. error occurred continuously. First time if the warning message mentioned you put dictionary type so bind with list type, it would be better. If we need to create many blocks, then try to append children_block.
children_blocks = []
children_blocks.append(children_block)
Now children are set as a form for adding. Add parameters with essential value, parent, and properties, and then you can create without any problem.
parent_object = {'type': 'database_id', 'database_id': '021eb424-7a41-47ae-9252-f67d4f6e6b05'}
notion.pages.create(parent=parent_object,
                    properties=properties_new,
                    children=children_blocks)
- icon (json)
 Page icon for the new page.
 The icon means Emoji Icon before the page name.
icon_value = {'emoji': '🍕', 'type': 'emoji'}
notion.pages.create(parent=parent_object, properties=properties_new, icon=icon_value)
- cover (json)
 Page cover for the new page
 Example for adding cover
url = 'https://images.unsplash.com/photo-1566843972142-a7fcb70de55a?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjYzOTIxfQ'
cover_value = {'external': {'url': url},'type': 'external'}
notion.pages.create(parent=parent_object, properties=properties_new, cover=cover_value)