miro_api.models.board_changes
Miro Developer Platform
### Miro Developer Platform concepts - New to the Miro Developer Platform? Interested in learning more about platform concepts?? Read our introduction page and familiarize yourself with the Miro Developer Platform capabilities in a few minutes. ### Getting started with the Miro REST API - Quickstart (video): try the REST API in less than 3 minutes. - Quickstart (article): get started and try the REST API in less than 3 minutes. ### Miro REST API tutorials Check out our how-to articles with step-by-step instructions and code examples so you can: - Get started with OAuth 2.0 and Miro ### Miro App Examples Clone our Miro App Examples repository to get inspiration, customize, and explore apps built on top of Miro's Developer Platform 2.0.
The version of the OpenAPI document: v2.0 Generated by OpenAPI Generator (https://openapi-generator.tech)
Do not edit the class manually.
1# coding: utf-8 2 3""" 4Miro Developer Platform 5 6<img src=\"https://content.pstmn.io/47449ea6-0ef7-4af2-bac1-e58a70e61c58/aW1hZ2UucG5n\" width=\"1685\" height=\"593\"> ### Miro Developer Platform concepts - New to the Miro Developer Platform? Interested in learning more about platform concepts?? [Read our introduction page](https://beta.developers.miro.com/docs/introduction) and familiarize yourself with the Miro Developer Platform capabilities in a few minutes. ### Getting started with the Miro REST API - [Quickstart (video):](https://beta.developers.miro.com/docs/try-out-the-rest-api-in-less-than-3-minutes) try the REST API in less than 3 minutes. - [Quickstart (article):](https://beta.developers.miro.com/docs/build-your-first-hello-world-app-1) get started and try the REST API in less than 3 minutes. ### Miro REST API tutorials Check out our how-to articles with step-by-step instructions and code examples so you can: - [Get started with OAuth 2.0 and Miro](https://beta.developers.miro.com/docs/getting-started-with-oauth) ### Miro App Examples Clone our [Miro App Examples repository](https://github.com/miroapp/app-examples) to get inspiration, customize, and explore apps built on top of Miro's Developer Platform 2.0. 7 8The version of the OpenAPI document: v2.0 9Generated by OpenAPI Generator (https://openapi-generator.tech) 10 11Do not edit the class manually. 12""" # noqa: E501 13 14from __future__ import annotations 15import pprint 16import re # noqa: F401 17import json 18 19from pydantic import BaseModel, Field, StrictStr 20from typing import Any, ClassVar, Dict, List, Optional 21from typing_extensions import Annotated 22from miro_api.models.board_policy_change import BoardPolicyChange 23from typing import Optional, Set 24from typing_extensions import Self 25 26 27class BoardChanges(BaseModel): 28 """ 29 BoardChanges 30 """ # noqa: E501 31 32 description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=300)]] = Field( 33 default=None, description="Description of the board." 34 ) 35 name: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=60)]] = Field( 36 default="Untitled", description="Name for the board." 37 ) 38 policy: Optional[BoardPolicyChange] = None 39 team_id: Optional[StrictStr] = Field( 40 default=None, 41 description="Unique identifier (ID) of the team where the board must be placed. **Note**: On Enterprise plan, boards can be moved via API by Board Owners, Co-Owners, and Content Admins. This behavior differs from the Miro UI, where only Board Owners can move boards. This difference is **intentional** and works as designed. On non-Enterprise plans, only Board Owners can move boards between teams—both via the API and the Miro UI.", 42 alias="teamId", 43 ) 44 project_id: Optional[StrictStr] = Field( 45 default=None, 46 description="Unique identifier (ID) of the project to which the board must be added. **Note**: Projects have been renamed to Spaces. Use this parameter to update the space. For Starter and Edu plans, Team Admins looking to move boards between Spaces/Projects of the same team would need to be direct Board Editors on the boards to move.", 47 alias="projectId", 48 ) 49 additional_properties: Dict[str, Any] = {} 50 __properties: ClassVar[List[str]] = ["description", "name", "policy", "teamId", "projectId"] 51 52 model_config = { 53 "populate_by_name": True, 54 "validate_assignment": True, 55 "protected_namespaces": (), 56 } 57 58 def to_str(self) -> str: 59 """Returns the string representation of the model using alias""" 60 return pprint.pformat(self.model_dump(by_alias=True)) 61 62 def to_json(self) -> str: 63 """Returns the JSON representation of the model using alias""" 64 # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead 65 return json.dumps(self.to_dict()) 66 67 @classmethod 68 def from_json(cls, json_str: str) -> Optional[Self]: 69 """Create an instance of BoardChanges from a JSON string""" 70 return cls.from_dict(json.loads(json_str)) 71 72 def to_dict(self) -> Dict[str, Any]: 73 """Return the dictionary representation of the model using alias. 74 75 This has the following differences from calling pydantic's 76 `self.model_dump(by_alias=True)`: 77 78 * `None` is only added to the output dict for nullable fields that 79 were set at model initialization. Other fields with value `None` 80 are ignored. 81 * Fields in `self.additional_properties` are added to the output dict. 82 """ 83 excluded_fields: Set[str] = set( 84 [ 85 "additional_properties", 86 ] 87 ) 88 89 _dict = self.model_dump( 90 by_alias=True, 91 exclude=excluded_fields, 92 exclude_none=True, 93 ) 94 # override the default output from pydantic by calling `to_dict()` of policy 95 if self.policy: 96 _dict["policy"] = self.policy.to_dict() 97 # puts key-value pairs in additional_properties in the top level 98 if self.additional_properties is not None: 99 for _key, _value in self.additional_properties.items(): 100 _dict[_key] = _value 101 102 return _dict 103 104 @classmethod 105 def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 106 """Create an instance of BoardChanges from a dict""" 107 if obj is None: 108 return None 109 110 if not isinstance(obj, dict): 111 return cls.model_validate(obj) 112 113 _obj = cls.model_validate( 114 { 115 "description": obj.get("description"), 116 "name": obj.get("name") if obj.get("name") is not None else "Untitled", 117 "policy": BoardPolicyChange.from_dict(obj["policy"]) if obj.get("policy") is not None else None, 118 "teamId": obj.get("teamId"), 119 "projectId": obj.get("projectId"), 120 } 121 ) 122 # store additional fields in additional_properties 123 for _key in obj.keys(): 124 if _key not in cls.__properties: 125 _obj.additional_properties[_key] = obj.get(_key) 126 127 return _obj
28class BoardChanges(BaseModel): 29 """ 30 BoardChanges 31 """ # noqa: E501 32 33 description: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=300)]] = Field( 34 default=None, description="Description of the board." 35 ) 36 name: Optional[Annotated[str, Field(min_length=1, strict=True, max_length=60)]] = Field( 37 default="Untitled", description="Name for the board." 38 ) 39 policy: Optional[BoardPolicyChange] = None 40 team_id: Optional[StrictStr] = Field( 41 default=None, 42 description="Unique identifier (ID) of the team where the board must be placed. **Note**: On Enterprise plan, boards can be moved via API by Board Owners, Co-Owners, and Content Admins. This behavior differs from the Miro UI, where only Board Owners can move boards. This difference is **intentional** and works as designed. On non-Enterprise plans, only Board Owners can move boards between teams—both via the API and the Miro UI.", 43 alias="teamId", 44 ) 45 project_id: Optional[StrictStr] = Field( 46 default=None, 47 description="Unique identifier (ID) of the project to which the board must be added. **Note**: Projects have been renamed to Spaces. Use this parameter to update the space. For Starter and Edu plans, Team Admins looking to move boards between Spaces/Projects of the same team would need to be direct Board Editors on the boards to move.", 48 alias="projectId", 49 ) 50 additional_properties: Dict[str, Any] = {} 51 __properties: ClassVar[List[str]] = ["description", "name", "policy", "teamId", "projectId"] 52 53 model_config = { 54 "populate_by_name": True, 55 "validate_assignment": True, 56 "protected_namespaces": (), 57 } 58 59 def to_str(self) -> str: 60 """Returns the string representation of the model using alias""" 61 return pprint.pformat(self.model_dump(by_alias=True)) 62 63 def to_json(self) -> str: 64 """Returns the JSON representation of the model using alias""" 65 # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead 66 return json.dumps(self.to_dict()) 67 68 @classmethod 69 def from_json(cls, json_str: str) -> Optional[Self]: 70 """Create an instance of BoardChanges from a JSON string""" 71 return cls.from_dict(json.loads(json_str)) 72 73 def to_dict(self) -> Dict[str, Any]: 74 """Return the dictionary representation of the model using alias. 75 76 This has the following differences from calling pydantic's 77 `self.model_dump(by_alias=True)`: 78 79 * `None` is only added to the output dict for nullable fields that 80 were set at model initialization. Other fields with value `None` 81 are ignored. 82 * Fields in `self.additional_properties` are added to the output dict. 83 """ 84 excluded_fields: Set[str] = set( 85 [ 86 "additional_properties", 87 ] 88 ) 89 90 _dict = self.model_dump( 91 by_alias=True, 92 exclude=excluded_fields, 93 exclude_none=True, 94 ) 95 # override the default output from pydantic by calling `to_dict()` of policy 96 if self.policy: 97 _dict["policy"] = self.policy.to_dict() 98 # puts key-value pairs in additional_properties in the top level 99 if self.additional_properties is not None: 100 for _key, _value in self.additional_properties.items(): 101 _dict[_key] = _value 102 103 return _dict 104 105 @classmethod 106 def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 107 """Create an instance of BoardChanges from a dict""" 108 if obj is None: 109 return None 110 111 if not isinstance(obj, dict): 112 return cls.model_validate(obj) 113 114 _obj = cls.model_validate( 115 { 116 "description": obj.get("description"), 117 "name": obj.get("name") if obj.get("name") is not None else "Untitled", 118 "policy": BoardPolicyChange.from_dict(obj["policy"]) if obj.get("policy") is not None else None, 119 "teamId": obj.get("teamId"), 120 "projectId": obj.get("projectId"), 121 } 122 ) 123 # store additional fields in additional_properties 124 for _key in obj.keys(): 125 if _key not in cls.__properties: 126 _obj.additional_properties[_key] = obj.get(_key) 127 128 return _obj
BoardChanges
59 def to_str(self) -> str: 60 """Returns the string representation of the model using alias""" 61 return pprint.pformat(self.model_dump(by_alias=True))
Returns the string representation of the model using alias
63 def to_json(self) -> str: 64 """Returns the JSON representation of the model using alias""" 65 # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead 66 return json.dumps(self.to_dict())
Returns the JSON representation of the model using alias
68 @classmethod 69 def from_json(cls, json_str: str) -> Optional[Self]: 70 """Create an instance of BoardChanges from a JSON string""" 71 return cls.from_dict(json.loads(json_str))
Create an instance of BoardChanges from a JSON string
73 def to_dict(self) -> Dict[str, Any]: 74 """Return the dictionary representation of the model using alias. 75 76 This has the following differences from calling pydantic's 77 `self.model_dump(by_alias=True)`: 78 79 * `None` is only added to the output dict for nullable fields that 80 were set at model initialization. Other fields with value `None` 81 are ignored. 82 * Fields in `self.additional_properties` are added to the output dict. 83 """ 84 excluded_fields: Set[str] = set( 85 [ 86 "additional_properties", 87 ] 88 ) 89 90 _dict = self.model_dump( 91 by_alias=True, 92 exclude=excluded_fields, 93 exclude_none=True, 94 ) 95 # override the default output from pydantic by calling `to_dict()` of policy 96 if self.policy: 97 _dict["policy"] = self.policy.to_dict() 98 # puts key-value pairs in additional_properties in the top level 99 if self.additional_properties is not None: 100 for _key, _value in self.additional_properties.items(): 101 _dict[_key] = _value 102 103 return _dict
Return the dictionary representation of the model using alias.
This has the following differences from calling pydantic's
self.model_dump(by_alias=True):
Noneis only added to the output dict for nullable fields that were set at model initialization. Other fields with valueNoneare ignored.- Fields in
self.additional_propertiesare added to the output dict.
105 @classmethod 106 def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: 107 """Create an instance of BoardChanges from a dict""" 108 if obj is None: 109 return None 110 111 if not isinstance(obj, dict): 112 return cls.model_validate(obj) 113 114 _obj = cls.model_validate( 115 { 116 "description": obj.get("description"), 117 "name": obj.get("name") if obj.get("name") is not None else "Untitled", 118 "policy": BoardPolicyChange.from_dict(obj["policy"]) if obj.get("policy") is not None else None, 119 "teamId": obj.get("teamId"), 120 "projectId": obj.get("projectId"), 121 } 122 ) 123 # store additional fields in additional_properties 124 for _key in obj.keys(): 125 if _key not in cls.__properties: 126 _obj.additional_properties[_key] = obj.get(_key) 127 128 return _obj
Create an instance of BoardChanges from a dict
265def init_private_attributes(self: BaseModel, __context: Any) -> None: 266 """This function is meant to behave like a BaseModel method to initialise private attributes. 267 268 It takes context as an argument since that's what pydantic-core passes when calling it. 269 270 Args: 271 self: The BaseModel instance. 272 __context: The context. 273 """ 274 if getattr(self, '__pydantic_private__', None) is None: 275 pydantic_private = {} 276 for name, private_attr in self.__private_attributes__.items(): 277 default = private_attr.get_default() 278 if default is not PydanticUndefined: 279 pydantic_private[name] = default 280 object_setattr(self, '__pydantic_private__', pydantic_private)
This function is meant to behave like a BaseModel method to initialise private attributes.
It takes context as an argument since that's what pydantic-core passes when calling it.
Args: self: The BaseModel instance. __context: The context.
Inherited Members
- pydantic.main.BaseModel
- BaseModel
- model_extra
- model_fields_set
- model_construct
- model_copy
- model_dump
- model_dump_json
- model_json_schema
- model_parametrized_name
- model_rebuild
- model_validate
- model_validate_json
- model_validate_strings
- dict
- json
- parse_obj
- parse_raw
- parse_file
- from_orm
- construct
- copy
- schema
- schema_json
- validate
- update_forward_refs