miro_api.models.generic_subscription

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 datetime import datetime
 20from pydantic import BaseModel, Field, StrictStr, field_validator
 21from typing import Any, ClassVar, Dict, List, Optional
 22from miro_api.models.subscription_data import SubscriptionData
 23from typing import Optional, Set
 24from typing_extensions import Self
 25
 26
 27class GenericSubscription(BaseModel):
 28    """
 29    GenericSubscription
 30    """  # noqa: E501
 31
 32    callback_url: Optional[StrictStr] = Field(
 33        default=None,
 34        description="Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.",
 35        alias="callbackUrl",
 36    )
 37    created_at: Optional[datetime] = Field(
 38        default=None,
 39        description="Date and time when the webhook subscription was created.<br>Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).",
 40        alias="createdAt",
 41    )
 42    data: Optional[SubscriptionData] = None
 43    id: Optional[StrictStr] = Field(default=None, description="Unique identifier (ID) of a webhook subscription.")
 44    modified_at: Optional[datetime] = Field(
 45        default=None,
 46        description="Date and time when the webhook subscription was last modified. <br>Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).",
 47        alias="modifiedAt",
 48    )
 49    status: Optional[StrictStr] = Field(
 50        default="enabled",
 51        description="Indicates whether the status of the webhook subscription. `enabled`: Miro sends a webhook when an event occurs in the associated board. `disabled`: Miro does not send a webhook even when an event occurs in the associated board. `lost_access`: The user with which the webhook subscription is associated has lost access to the board. The user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.",
 52    )
 53    type: Optional[StrictStr] = Field(
 54        default=None, description="The type of object associated with the webhook subscription."
 55    )
 56    additional_properties: Dict[str, Any] = {}
 57    __properties: ClassVar[List[str]] = ["callbackUrl", "createdAt", "data", "id", "modifiedAt", "status", "type"]
 58
 59    @field_validator("status")
 60    def status_validate_enum(cls, value):
 61        """Validates the enum"""
 62        if value is None:
 63            return value
 64
 65        if value not in set(["enabled", "disabled", "lost_access"]):
 66            raise ValueError("must be one of enum values ('enabled', 'disabled', 'lost_access')")
 67        return value
 68
 69    model_config = {
 70        "populate_by_name": True,
 71        "validate_assignment": True,
 72        "protected_namespaces": (),
 73    }
 74
 75    def to_str(self) -> str:
 76        """Returns the string representation of the model using alias"""
 77        return pprint.pformat(self.model_dump(by_alias=True))
 78
 79    def to_json(self) -> str:
 80        """Returns the JSON representation of the model using alias"""
 81        # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
 82        return json.dumps(self.to_dict())
 83
 84    @classmethod
 85    def from_json(cls, json_str: str) -> Optional[Self]:
 86        """Create an instance of GenericSubscription from a JSON string"""
 87        return cls.from_dict(json.loads(json_str))
 88
 89    def to_dict(self) -> Dict[str, Any]:
 90        """Return the dictionary representation of the model using alias.
 91
 92        This has the following differences from calling pydantic's
 93        `self.model_dump(by_alias=True)`:
 94
 95        * `None` is only added to the output dict for nullable fields that
 96          were set at model initialization. Other fields with value `None`
 97          are ignored.
 98        * Fields in `self.additional_properties` are added to the output dict.
 99        """
100        excluded_fields: Set[str] = set(
101            [
102                "additional_properties",
103            ]
104        )
105
106        _dict = self.model_dump(
107            by_alias=True,
108            exclude=excluded_fields,
109            exclude_none=True,
110        )
111        # override the default output from pydantic by calling `to_dict()` of data
112        if self.data:
113            _dict["data"] = self.data.to_dict()
114        # puts key-value pairs in additional_properties in the top level
115        if self.additional_properties is not None:
116            for _key, _value in self.additional_properties.items():
117                _dict[_key] = _value
118
119        return _dict
120
121    @classmethod
122    def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
123        """Create an instance of GenericSubscription from a dict"""
124        if obj is None:
125            return None
126
127        if not isinstance(obj, dict):
128            return cls.model_validate(obj)
129
130        _obj = cls.model_validate(
131            {
132                "callbackUrl": obj.get("callbackUrl"),
133                "createdAt": obj.get("createdAt"),
134                "data": SubscriptionData.from_dict(obj["data"]) if obj.get("data") is not None else None,
135                "id": obj.get("id"),
136                "modifiedAt": obj.get("modifiedAt"),
137                "status": obj.get("status") if obj.get("status") is not None else "enabled",
138                "type": obj.get("type"),
139            }
140        )
141        # store additional fields in additional_properties
142        for _key in obj.keys():
143            if _key not in cls.__properties:
144                _obj.additional_properties[_key] = obj.get(_key)
145
146        return _obj
class GenericSubscription(pydantic.main.BaseModel):
 28class GenericSubscription(BaseModel):
 29    """
 30    GenericSubscription
 31    """  # noqa: E501
 32
 33    callback_url: Optional[StrictStr] = Field(
 34        default=None,
 35        description="Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.",
 36        alias="callbackUrl",
 37    )
 38    created_at: Optional[datetime] = Field(
 39        default=None,
 40        description="Date and time when the webhook subscription was created.<br>Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).",
 41        alias="createdAt",
 42    )
 43    data: Optional[SubscriptionData] = None
 44    id: Optional[StrictStr] = Field(default=None, description="Unique identifier (ID) of a webhook subscription.")
 45    modified_at: Optional[datetime] = Field(
 46        default=None,
 47        description="Date and time when the webhook subscription was last modified. <br>Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).",
 48        alias="modifiedAt",
 49    )
 50    status: Optional[StrictStr] = Field(
 51        default="enabled",
 52        description="Indicates whether the status of the webhook subscription. `enabled`: Miro sends a webhook when an event occurs in the associated board. `disabled`: Miro does not send a webhook even when an event occurs in the associated board. `lost_access`: The user with which the webhook subscription is associated has lost access to the board. The user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.",
 53    )
 54    type: Optional[StrictStr] = Field(
 55        default=None, description="The type of object associated with the webhook subscription."
 56    )
 57    additional_properties: Dict[str, Any] = {}
 58    __properties: ClassVar[List[str]] = ["callbackUrl", "createdAt", "data", "id", "modifiedAt", "status", "type"]
 59
 60    @field_validator("status")
 61    def status_validate_enum(cls, value):
 62        """Validates the enum"""
 63        if value is None:
 64            return value
 65
 66        if value not in set(["enabled", "disabled", "lost_access"]):
 67            raise ValueError("must be one of enum values ('enabled', 'disabled', 'lost_access')")
 68        return value
 69
 70    model_config = {
 71        "populate_by_name": True,
 72        "validate_assignment": True,
 73        "protected_namespaces": (),
 74    }
 75
 76    def to_str(self) -> str:
 77        """Returns the string representation of the model using alias"""
 78        return pprint.pformat(self.model_dump(by_alias=True))
 79
 80    def to_json(self) -> str:
 81        """Returns the JSON representation of the model using alias"""
 82        # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
 83        return json.dumps(self.to_dict())
 84
 85    @classmethod
 86    def from_json(cls, json_str: str) -> Optional[Self]:
 87        """Create an instance of GenericSubscription from a JSON string"""
 88        return cls.from_dict(json.loads(json_str))
 89
 90    def to_dict(self) -> Dict[str, Any]:
 91        """Return the dictionary representation of the model using alias.
 92
 93        This has the following differences from calling pydantic's
 94        `self.model_dump(by_alias=True)`:
 95
 96        * `None` is only added to the output dict for nullable fields that
 97          were set at model initialization. Other fields with value `None`
 98          are ignored.
 99        * Fields in `self.additional_properties` are added to the output dict.
100        """
101        excluded_fields: Set[str] = set(
102            [
103                "additional_properties",
104            ]
105        )
106
107        _dict = self.model_dump(
108            by_alias=True,
109            exclude=excluded_fields,
110            exclude_none=True,
111        )
112        # override the default output from pydantic by calling `to_dict()` of data
113        if self.data:
114            _dict["data"] = self.data.to_dict()
115        # puts key-value pairs in additional_properties in the top level
116        if self.additional_properties is not None:
117            for _key, _value in self.additional_properties.items():
118                _dict[_key] = _value
119
120        return _dict
121
122    @classmethod
123    def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
124        """Create an instance of GenericSubscription from a dict"""
125        if obj is None:
126            return None
127
128        if not isinstance(obj, dict):
129            return cls.model_validate(obj)
130
131        _obj = cls.model_validate(
132            {
133                "callbackUrl": obj.get("callbackUrl"),
134                "createdAt": obj.get("createdAt"),
135                "data": SubscriptionData.from_dict(obj["data"]) if obj.get("data") is not None else None,
136                "id": obj.get("id"),
137                "modifiedAt": obj.get("modifiedAt"),
138                "status": obj.get("status") if obj.get("status") is not None else "enabled",
139                "type": obj.get("type"),
140            }
141        )
142        # store additional fields in additional_properties
143        for _key in obj.keys():
144            if _key not in cls.__properties:
145                _obj.additional_properties[_key] = obj.get(_key)
146
147        return _obj

GenericSubscription

callback_url: Optional[Annotated[str, Strict(strict=True)]]
created_at: Optional[datetime.datetime]
id: Optional[Annotated[str, Strict(strict=True)]]
modified_at: Optional[datetime.datetime]
status: Optional[Annotated[str, Strict(strict=True)]]
type: Optional[Annotated[str, Strict(strict=True)]]
additional_properties: Dict[str, Any]
@field_validator('status')
def status_validate_enum(cls, value):
60    @field_validator("status")
61    def status_validate_enum(cls, value):
62        """Validates the enum"""
63        if value is None:
64            return value
65
66        if value not in set(["enabled", "disabled", "lost_access"]):
67            raise ValueError("must be one of enum values ('enabled', 'disabled', 'lost_access')")
68        return value

Validates the enum

model_config = {'populate_by_name': True, 'validate_assignment': True, 'protected_namespaces': ()}
def to_str(self) -> str:
76    def to_str(self) -> str:
77        """Returns the string representation of the model using alias"""
78        return pprint.pformat(self.model_dump(by_alias=True))

Returns the string representation of the model using alias

def to_json(self) -> str:
80    def to_json(self) -> str:
81        """Returns the JSON representation of the model using alias"""
82        # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
83        return json.dumps(self.to_dict())

Returns the JSON representation of the model using alias

@classmethod
def from_json(cls, json_str: str) -> Optional[typing_extensions.Self]:
85    @classmethod
86    def from_json(cls, json_str: str) -> Optional[Self]:
87        """Create an instance of GenericSubscription from a JSON string"""
88        return cls.from_dict(json.loads(json_str))

Create an instance of GenericSubscription from a JSON string

def to_dict(self) -> Dict[str, Any]:
 90    def to_dict(self) -> Dict[str, Any]:
 91        """Return the dictionary representation of the model using alias.
 92
 93        This has the following differences from calling pydantic's
 94        `self.model_dump(by_alias=True)`:
 95
 96        * `None` is only added to the output dict for nullable fields that
 97          were set at model initialization. Other fields with value `None`
 98          are ignored.
 99        * Fields in `self.additional_properties` are added to the output dict.
100        """
101        excluded_fields: Set[str] = set(
102            [
103                "additional_properties",
104            ]
105        )
106
107        _dict = self.model_dump(
108            by_alias=True,
109            exclude=excluded_fields,
110            exclude_none=True,
111        )
112        # override the default output from pydantic by calling `to_dict()` of data
113        if self.data:
114            _dict["data"] = self.data.to_dict()
115        # puts key-value pairs in additional_properties in the top level
116        if self.additional_properties is not None:
117            for _key, _value in self.additional_properties.items():
118                _dict[_key] = _value
119
120        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):

  • None is only added to the output dict for nullable fields that were set at model initialization. Other fields with value None are ignored.
  • Fields in self.additional_properties are added to the output dict.
@classmethod
def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[typing_extensions.Self]:
122    @classmethod
123    def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
124        """Create an instance of GenericSubscription from a dict"""
125        if obj is None:
126            return None
127
128        if not isinstance(obj, dict):
129            return cls.model_validate(obj)
130
131        _obj = cls.model_validate(
132            {
133                "callbackUrl": obj.get("callbackUrl"),
134                "createdAt": obj.get("createdAt"),
135                "data": SubscriptionData.from_dict(obj["data"]) if obj.get("data") is not None else None,
136                "id": obj.get("id"),
137                "modifiedAt": obj.get("modifiedAt"),
138                "status": obj.get("status") if obj.get("status") is not None else "enabled",
139                "type": obj.get("type"),
140            }
141        )
142        # store additional fields in additional_properties
143        for _key in obj.keys():
144            if _key not in cls.__properties:
145                _obj.additional_properties[_key] = obj.get(_key)
146
147        return _obj

Create an instance of GenericSubscription from a dict

def model_post_init(self: pydantic.main.BaseModel, __context: Any) -> None:
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.

model_fields = {'callback_url': FieldInfo(annotation=Union[Annotated[str, Strict(strict=True)], NoneType], required=False, alias='callbackUrl', alias_priority=2, description='Indicates the HTTPS URL to which Miro sends a webhook when an event occurs.'), 'created_at': FieldInfo(annotation=Union[datetime, NoneType], required=False, alias='createdAt', alias_priority=2, description='Date and time when the webhook subscription was created.<br>Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).'), 'data': FieldInfo(annotation=Union[SubscriptionData, NoneType], required=False), 'id': FieldInfo(annotation=Union[Annotated[str, Strict(strict=True)], NoneType], required=False, description='Unique identifier (ID) of a webhook subscription.'), 'modified_at': FieldInfo(annotation=Union[datetime, NoneType], required=False, alias='modifiedAt', alias_priority=2, description='Date and time when the webhook subscription was last modified. <br>Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).'), 'status': FieldInfo(annotation=Union[Annotated[str, Strict(strict=True)], NoneType], required=False, default='enabled', description='Indicates whether the status of the webhook subscription. `enabled`: Miro sends a webhook when an event occurs in the associated board. `disabled`: Miro does not send a webhook even when an event occurs in the associated board. `lost_access`: The user with which the webhook subscription is associated has lost access to the board. The user needs to regain access to the board, and then reenable the webhook subscription by updating the webhook subscription status to `enabled` by using the update webhook endpoint.'), 'type': FieldInfo(annotation=Union[Annotated[str, Strict(strict=True)], NoneType], required=False, description='The type of object associated with the webhook subscription.'), 'additional_properties': FieldInfo(annotation=Dict[str, Any], required=False, default={})}
model_computed_fields = {}
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