# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.

from typing import Optional
from datetime import datetime

from ..._models import BaseModel

__all__ = ["Prefix"]


class Prefix(BaseModel):
    id: Optional[str] = None
    """Identifier of an IP Prefix."""

    account_id: Optional[str] = None
    """Identifier of a Cloudflare account."""

    advertised: Optional[bool] = None
    """Prefix advertisement status to the Internet.

    This field is only not 'null' if on demand is enabled.
    """

    advertised_modified_at: Optional[datetime] = None
    """Last time the advertisement status was changed.

    This field is only not 'null' if on demand is enabled.
    """

    approved: Optional[str] = None
    """Approval state of the prefix (P = pending, V = active)."""

    asn: Optional[int] = None
    """Autonomous System Number (ASN) the prefix will be advertised under."""

    cidr: Optional[str] = None
    """IP Prefix in Classless Inter-Domain Routing format."""

    created_at: Optional[datetime] = None

    delegate_loa_creation: Optional[bool] = None
    """
    Whether Cloudflare is allowed to generate the LOA document on behalf of the
    prefix owner.
    """

    description: Optional[str] = None
    """Description of the prefix."""

    irr_validation_state: Optional[str] = None
    """State of one kind of validation for an IP prefix."""

    loa_document_id: Optional[str] = None
    """Identifier for the uploaded LOA document."""

    modified_at: Optional[datetime] = None

    on_demand_enabled: Optional[bool] = None
    """
    Whether advertisement of the prefix to the Internet may be dynamically enabled
    or disabled.
    """

    on_demand_locked: Optional[bool] = None
    """
    Whether advertisement status of the prefix is locked, meaning it cannot be
    changed.
    """

    ownership_validation_state: Optional[str] = None
    """State of one kind of validation for an IP prefix."""

    ownership_validation_token: Optional[str] = None
    """Token provided to demonstrate ownership of the prefix."""

    rpki_validation_state: Optional[str] = None
    """State of one kind of validation for an IP prefix."""
