miro_api.models.board_export_task_export_link

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
 21from typing import Any, ClassVar, Dict, List, Optional
 22from typing import Optional, Set
 23from typing_extensions import Self
 24
 25
 26class BoardExportTaskExportLink(BaseModel):
 27    """
 28    Board export task results link.
 29    """  # noqa: E501
 30
 31    status: StrictStr = Field(
 32        description="Indicates the status of the individual board export task. Possible values: `SUCCESS`: the board export task was completed successfully and the results are available. `ERROR`: the board export task encountered an error and failed to complete. The `errorMessage` field provides more information on the error. `CANCELLED`: the board export task was cancelled. `SCHEDULED`: the board export task has been scheduled and is waiting to be processed. `CREATED`: the board export task was created."
 33    )
 34    export_link: Optional[StrictStr] = Field(
 35        default=None, description="URL of the S3 bucket that contains the exported files.", alias="exportLink"
 36    )
 37    artifact_expired_at: Optional[datetime] = Field(
 38        default=None,
 39        description="The date and time when the artifact will no longer be available in the S3 storage. After this time, the link will no longer be valid and the exported files will not be accessible. 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="artifactExpiredAt",
 41    )
 42    link_expired_at: Optional[datetime] = Field(
 43        default=None,
 44        description="The date and time when the export link will expire. After this time, the link will no longer be valid. 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)).",
 45        alias="linkExpiredAt",
 46    )
 47    error_message: Optional[StrictStr] = Field(
 48        default=None,
 49        description="Contains the description of the error that occurred during a board export task results link creation.",
 50        alias="errorMessage",
 51    )
 52    error_type: Optional[StrictStr] = Field(
 53        default=None,
 54        description="Indicates the type of error encountered during the board export task results link creation. Possible values: `TEMPORARY`: the board export task encountered a temporary error. Retry the board export task results link creation after some time. `FATAL`: the board export failed and cannot be retried. This export will never succeed due to issues such as board corruption, non-existence, or other unrecoverable errors. Please verify the board's state or contact support if assistance is needed. `UNKNOWN`: the board export task encountered an unexpected exception. Retry the board export task results link creation after some time.",
 55        alias="errorType",
 56    )
 57    additional_properties: Dict[str, Any] = {}
 58    __properties: ClassVar[List[str]] = [
 59        "status",
 60        "exportLink",
 61        "artifactExpiredAt",
 62        "linkExpiredAt",
 63        "errorMessage",
 64        "errorType",
 65    ]
 66
 67    model_config = {
 68        "populate_by_name": True,
 69        "validate_assignment": True,
 70        "protected_namespaces": (),
 71    }
 72
 73    def to_str(self) -> str:
 74        """Returns the string representation of the model using alias"""
 75        return pprint.pformat(self.model_dump(by_alias=True))
 76
 77    def to_json(self) -> str:
 78        """Returns the JSON representation of the model using alias"""
 79        # TODO: pydantic v2: use .model_dump_json(by_alias=True, exclude_unset=True) instead
 80        return json.dumps(self.to_dict())
 81
 82    @classmethod
 83    def from_json(cls, json_str: str) -> Optional[Self]:
 84        """Create an instance of BoardExportTaskExportLink from a JSON string"""
 85        return cls.from_dict(json.loads(json_str))
 86
 87    def to_dict(self) -> Dict[str, Any]:
 88        """Return the dictionary representation of the model using alias.
 89
 90        This has the following differences from calling pydantic's
 91        `self.model_dump(by_alias=True)`:
 92
 93        * `None` is only added to the output dict for nullable fields that
 94          were set at model initialization. Other fields with value `None`
 95          are ignored.
 96        * Fields in `self.additional_properties` are added to the output dict.
 97        """
 98        excluded_fields: Set[str] = set(
 99            [
100                "additional_properties",
101            ]
102        )
103
104        _dict = self.model_dump(
105            by_alias=True,
106            exclude=excluded_fields,
107            exclude_none=True,
108        )
109        # puts key-value pairs in additional_properties in the top level
110        if self.additional_properties is not None:
111            for _key, _value in self.additional_properties.items():
112                _dict[_key] = _value
113
114        return _dict
115
116    @classmethod
117    def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
118        """Create an instance of BoardExportTaskExportLink from a dict"""
119        if obj is None:
120            return None
121
122        if not isinstance(obj, dict):
123            return cls.model_validate(obj)
124
125        _obj = cls.model_validate(
126            {
127                "status": obj.get("status"),
128                "exportLink": obj.get("exportLink"),
129                "artifactExpiredAt": obj.get("artifactExpiredAt"),
130                "linkExpiredAt": obj.get("linkExpiredAt"),
131                "errorMessage": obj.get("errorMessage"),
132                "errorType": obj.get("errorType"),
133            }
134        )
135        # store additional fields in additional_properties
136        for _key in obj.keys():
137            if _key not in cls.__properties:
138                _obj.additional_properties[_key] = obj.get(_key)
139
140        return _obj