diff --git a/bandwidth.yml b/bandwidth.yml index 5927a5e8..5e2bc9b3 100644 --- a/bandwidth.yml +++ b/bandwidth.yml @@ -6034,12 +6034,30 @@ components: description: Reason code for denial. type: integer example: 511 + denialStatusCodeNullable: + description: Reason code for denial. + nullable: true + type: integer + example: 511 resubmitAllowed: description: >- Whether a Toll-Free Verification request qualifies for resubmission via PUT. example: true type: boolean + additionalDenialReason: + type: object + properties: + statusCode: + $ref: '#/components/schemas/denialStatusCode' + reason: + $ref: '#/components/schemas/declineReasonDescription' + resubmitAllowed: + $ref: '#/components/schemas/resubmitAllowed' + required: + - statusCode + - reason + - resubmitAllowed blocked: description: >- Whether a Toll-Free Verification is blocked. This attribute will only be @@ -6194,19 +6212,6 @@ components: type: boolean description: Indicates whether the content is age-gated. example: false - additionalDenialReason: - properties: - statusCode: - $ref: '#/components/schemas/denialStatusCode' - reason: - $ref: '#/components/schemas/declineReasonDescription' - resubmitAllowed: - $ref: '#/components/schemas/resubmitAllowed' - required: - - statusCode - - reason - - resubmitAllowed - type: object internalTicketNumber: type: string description: >- @@ -6402,6 +6407,7 @@ components: description: >- An optional list of denial reasons in addition to declineReasonDescription when multiple reasons apply. + type: array items: $ref: '#/components/schemas/additionalDenialReason' example: @@ -6411,7 +6417,6 @@ components: - statusCode: 513 reason: Reason B resubmitAllowed: true - type: array declineReasonDescription: $ref: '#/components/schemas/declineReasonDescription' denialStatusCode: @@ -6779,6 +6784,23 @@ components: $ref: '#/components/schemas/internalTicketNumber' declineReasonDescription: $ref: '#/components/schemas/declineReasonDescription' + denialStatusCode: + $ref: '#/components/schemas/denialStatusCodeNullable' + additionalDenialReasons: + description: >- + An optional list of denial reasons in addition to + declineReasonDescription when multiple reasons apply. + nullable: true + type: array + items: + $ref: '#/components/schemas/additionalDenialReason' + example: + - statusCode: 512 + reason: Reason A + resubmitAllowed: true + - statusCode: 513 + reason: Reason B + resubmitAllowed: true resubmitAllowed: $ref: '#/components/schemas/resubmitAllowed' createdDateTime: diff --git a/bandwidth/models/tfv_status.py b/bandwidth/models/tfv_status.py index 669c5f5b..883463df 100644 --- a/bandwidth/models/tfv_status.py +++ b/bandwidth/models/tfv_status.py @@ -19,9 +19,10 @@ import json from datetime import datetime -from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictStr, field_validator +from pydantic import BaseModel, ConfigDict, Field, StrictBool, StrictInt, StrictStr, field_validator from typing import Any, ClassVar, Dict, List, Optional from typing_extensions import Annotated +from bandwidth.models.additional_denial_reason import AdditionalDenialReason from bandwidth.models.tfv_status_enum import TfvStatusEnum from bandwidth.models.tfv_submission_info import TfvSubmissionInfo from typing import Optional, Set @@ -35,6 +36,8 @@ class TfvStatus(BaseModel): status: Optional[TfvStatusEnum] = None internal_ticket_number: Optional[StrictStr] = Field(default=None, description="Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number - included in all webhook payloads.", alias="internalTicketNumber") decline_reason_description: Optional[StrictStr] = Field(default=None, description="Explanation for why a verification request was declined.", alias="declineReasonDescription") + denial_status_code: Optional[StrictInt] = Field(default=None, description="Reason code for denial.", alias="denialStatusCode") + additional_denial_reasons: Optional[List[AdditionalDenialReason]] = Field(default=None, description="An optional list of denial reasons in addition to declineReasonDescription when multiple reasons apply.", alias="additionalDenialReasons") resubmit_allowed: Optional[StrictBool] = Field(default=None, description="Whether a Toll-Free Verification request qualifies for resubmission via PUT.", alias="resubmitAllowed") created_date_time: Optional[datetime] = Field(default=None, description="Date and time the verification request was created.", alias="createdDateTime") modified_date_time: Optional[datetime] = Field(default=None, description="Date and time the verification request was last modified.", alias="modifiedDateTime") @@ -43,7 +46,7 @@ class TfvStatus(BaseModel): blocked_reason: Optional[StrictStr] = Field(default=None, description="The reason why the Toll-Free Verification is blocked. This attribute will only be defined when the number is blocked.", alias="blockedReason") cv_token: Optional[Annotated[str, Field(min_length=0, strict=True, max_length=500)]] = Field(default=None, description="The token provided by Campaign Verify to validate your political use case. Only required for 527 political organizations. If you are not a 527 political organization, this field should be omitted. Supplying an empty string will likely result in rejection.", alias="cvToken") additional_properties: Dict[str, Any] = {} - __properties: ClassVar[List[str]] = ["phoneNumber", "status", "internalTicketNumber", "declineReasonDescription", "resubmitAllowed", "createdDateTime", "modifiedDateTime", "submission", "blocked", "blockedReason", "cvToken"] + __properties: ClassVar[List[str]] = ["phoneNumber", "status", "internalTicketNumber", "declineReasonDescription", "denialStatusCode", "additionalDenialReasons", "resubmitAllowed", "createdDateTime", "modifiedDateTime", "submission", "blocked", "blockedReason", "cvToken"] @field_validator('phone_number') def phone_number_validate_regular_expression(cls, value): @@ -96,6 +99,13 @@ def to_dict(self) -> Dict[str, Any]: exclude=excluded_fields, exclude_none=True, ) + # override the default output from pydantic by calling `to_dict()` of each item in additional_denial_reasons (list) + _items = [] + if self.additional_denial_reasons: + for _item_additional_denial_reasons in self.additional_denial_reasons: + if _item_additional_denial_reasons: + _items.append(_item_additional_denial_reasons.to_dict()) + _dict['additionalDenialReasons'] = _items # override the default output from pydantic by calling `to_dict()` of submission if self.submission: _dict['submission'] = self.submission.to_dict() @@ -104,6 +114,16 @@ def to_dict(self) -> Dict[str, Any]: for _key, _value in self.additional_properties.items(): _dict[_key] = _value + # set to None if denial_status_code (nullable) is None + # and model_fields_set contains the field + if self.denial_status_code is None and "denial_status_code" in self.model_fields_set: + _dict['denialStatusCode'] = None + + # set to None if additional_denial_reasons (nullable) is None + # and model_fields_set contains the field + if self.additional_denial_reasons is None and "additional_denial_reasons" in self.model_fields_set: + _dict['additionalDenialReasons'] = None + # set to None if cv_token (nullable) is None # and model_fields_set contains the field if self.cv_token is None and "cv_token" in self.model_fields_set: @@ -125,6 +145,8 @@ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]: "status": obj.get("status"), "internalTicketNumber": obj.get("internalTicketNumber"), "declineReasonDescription": obj.get("declineReasonDescription"), + "denialStatusCode": obj.get("denialStatusCode"), + "additionalDenialReasons": [AdditionalDenialReason.from_dict(_item) for _item in obj["additionalDenialReasons"]] if obj.get("additionalDenialReasons") is not None else None, "resubmitAllowed": obj.get("resubmitAllowed"), "createdDateTime": obj.get("createdDateTime"), "modifiedDateTime": obj.get("modifiedDateTime"), diff --git a/docs/TfvStatus.md b/docs/TfvStatus.md index d27db92b..59643fa7 100644 --- a/docs/TfvStatus.md +++ b/docs/TfvStatus.md @@ -9,6 +9,8 @@ Name | Type | Description | Notes **status** | [**TfvStatusEnum**](TfvStatusEnum.md) | | [optional] **internal_ticket_number** | **str** | Unique identifier (UUID) generated by Bandwidth to assist in tracking the verification status of a toll-free number - included in all webhook payloads. | [optional] **decline_reason_description** | **str** | Explanation for why a verification request was declined. | [optional] +**denial_status_code** | **int** | Reason code for denial. | [optional] +**additional_denial_reasons** | [**List[AdditionalDenialReason]**](AdditionalDenialReason.md) | An optional list of denial reasons in addition to declineReasonDescription when multiple reasons apply. | [optional] **resubmit_allowed** | **bool** | Whether a Toll-Free Verification request qualifies for resubmission via PUT. | [optional] **created_date_time** | **datetime** | Date and time the verification request was created. | [optional] **modified_date_time** | **datetime** | Date and time the verification request was last modified. | [optional]