Agentivity API

<back to all web services

GetBookingsCreated

The following routes are available for this service:
GET/BookingsCreated
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


// @DataContract(Name="Metadata", Namespace="schemas.agentivity.com/types")
class PagingMetadata implements JsonSerializable
{
    public function __construct(
        /** @description Starting Record */
        // @DataMember
        // @ApiMember(DataType="string", Description="Starting Record", Name="Offset", ParameterType="query")
        /** @var string|null */
        public ?string $Offset=null,

        /** @description Number of records to return (PageSize) */
        // @DataMember
        // @ApiMember(DataType="string", Description="Number of records to return (PageSize)", Name="Limit", ParameterType="query")
        /** @var string|null */
        public ?string $Limit=null,

        /** @description Total Number of Records in a Full Reponse (if no paging) */
        // @DataMember
        // @ApiMember(DataType="string", Description="Total Number of Records in a Full Reponse (if no paging)", Name="TotalRecords", ParameterType="query")
        /** @var int */
        public int $TotalRecords=0,

        /** @description Total Number of Records in this Reponse (on this page) */
        // @DataMember
        // @ApiMember(DataType="string", Description="Total Number of Records in this Reponse (on this page)", Name="ResponseRecords", ParameterType="query")
        /** @var int */
        public int $ResponseRecords=0
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Offset'])) $this->Offset = $o['Offset'];
        if (isset($o['Limit'])) $this->Limit = $o['Limit'];
        if (isset($o['TotalRecords'])) $this->TotalRecords = $o['TotalRecords'];
        if (isset($o['ResponseRecords'])) $this->ResponseRecords = $o['ResponseRecords'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Offset)) $o['Offset'] = $this->Offset;
        if (isset($this->Limit)) $o['Limit'] = $this->Limit;
        if (isset($this->TotalRecords)) $o['TotalRecords'] = $this->TotalRecords;
        if (isset($this->ResponseRecords)) $o['ResponseRecords'] = $this->ResponseRecords;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Namespace="schemas.agentivity.com/types")
class CompanyLevelRequestBase extends PagingMetadata implements IMemberUsername, IMemberOwningCompanyCode, JsonSerializable
{
    /**
     * @param string|null $Offset
     * @param string|null $Limit
     * @param int $TotalRecords
     * @param int $ResponseRecords
     */
    public function __construct(
        ?string $Offset=null,
        ?string $Limit=null,
        int $TotalRecords=0,
        int $ResponseRecords=0,
        /** @description Comma Delimited List of Owning Company Codes */
        // @DataMember
        /** @var string[]|null */
        public ?array $OwningCompanyCode=null,

        /** @description UserName in form of an email address */
        // @DataMember
        /** @var string|null */
        public ?string $UserName=null
    ) {
        parent::__construct($Offset,$Limit,$TotalRecords,$ResponseRecords);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['OwningCompanyCode'])) $this->OwningCompanyCode = JsonConverters::fromArray('string', $o['OwningCompanyCode']);
        if (isset($o['UserName'])) $this->UserName = $o['UserName'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->OwningCompanyCode)) $o['OwningCompanyCode'] = JsonConverters::toArray('string', $this->OwningCompanyCode);
        if (isset($this->UserName)) $o['UserName'] = $this->UserName;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="ItinerarySegment", Namespace="schemas.agentivity.com/types")
class ItinerarySegment implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var string|null */
        public ?string $SegmentType=null,

        // @DataMember
        /** @var int */
        public int $SegmentNbr=0,

        // @DataMember
        /** @var string|null */
        public ?string $BoardPoint=null,

        // @DataMember
        /** @var string|null */
        public ?string $OffPoint=null,

        // @DataMember
        /** @var string|null */
        public ?string $OperatorCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $OperatorService=null,

        // @DataMember
        /** @var string|null */
        public ?string $SegmentStatus=null,

        // @DataMember
        /** @var string|null */
        public ?string $DepartureTimeFormatted=null,

        // @DataMember
        /** @var string|null */
        public ?string $ArrivalTimeFormatted=null,

        // @DataMember
        /** @var string|null */
        public ?string $ChangeOfDayFormatted=null,

        // @DataMember
        /** @var string|null */
        public ?string $ServiceCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $StartDate=null,

        // @DataMember
        /** @var string|null */
        public ?string $EndDate=null,

        // @DataMember
        /** @var string|null */
        public ?string $TicketNumber=null,

        /** @description Comma separated list of vendor locators */
        // @DataMember
        /** @var string|null */
        public ?string $VendorLocators=null,

        // @DataMember
        /** @var string|null */
        public ?string $EquipmentCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $Equipment=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['SegmentType'])) $this->SegmentType = $o['SegmentType'];
        if (isset($o['SegmentNbr'])) $this->SegmentNbr = $o['SegmentNbr'];
        if (isset($o['BoardPoint'])) $this->BoardPoint = $o['BoardPoint'];
        if (isset($o['OffPoint'])) $this->OffPoint = $o['OffPoint'];
        if (isset($o['OperatorCode'])) $this->OperatorCode = $o['OperatorCode'];
        if (isset($o['OperatorService'])) $this->OperatorService = $o['OperatorService'];
        if (isset($o['SegmentStatus'])) $this->SegmentStatus = $o['SegmentStatus'];
        if (isset($o['DepartureTimeFormatted'])) $this->DepartureTimeFormatted = $o['DepartureTimeFormatted'];
        if (isset($o['ArrivalTimeFormatted'])) $this->ArrivalTimeFormatted = $o['ArrivalTimeFormatted'];
        if (isset($o['ChangeOfDayFormatted'])) $this->ChangeOfDayFormatted = $o['ChangeOfDayFormatted'];
        if (isset($o['ServiceCode'])) $this->ServiceCode = $o['ServiceCode'];
        if (isset($o['StartDate'])) $this->StartDate = $o['StartDate'];
        if (isset($o['EndDate'])) $this->EndDate = $o['EndDate'];
        if (isset($o['TicketNumber'])) $this->TicketNumber = $o['TicketNumber'];
        if (isset($o['VendorLocators'])) $this->VendorLocators = $o['VendorLocators'];
        if (isset($o['EquipmentCode'])) $this->EquipmentCode = $o['EquipmentCode'];
        if (isset($o['Equipment'])) $this->Equipment = $o['Equipment'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->SegmentType)) $o['SegmentType'] = $this->SegmentType;
        if (isset($this->SegmentNbr)) $o['SegmentNbr'] = $this->SegmentNbr;
        if (isset($this->BoardPoint)) $o['BoardPoint'] = $this->BoardPoint;
        if (isset($this->OffPoint)) $o['OffPoint'] = $this->OffPoint;
        if (isset($this->OperatorCode)) $o['OperatorCode'] = $this->OperatorCode;
        if (isset($this->OperatorService)) $o['OperatorService'] = $this->OperatorService;
        if (isset($this->SegmentStatus)) $o['SegmentStatus'] = $this->SegmentStatus;
        if (isset($this->DepartureTimeFormatted)) $o['DepartureTimeFormatted'] = $this->DepartureTimeFormatted;
        if (isset($this->ArrivalTimeFormatted)) $o['ArrivalTimeFormatted'] = $this->ArrivalTimeFormatted;
        if (isset($this->ChangeOfDayFormatted)) $o['ChangeOfDayFormatted'] = $this->ChangeOfDayFormatted;
        if (isset($this->ServiceCode)) $o['ServiceCode'] = $this->ServiceCode;
        if (isset($this->StartDate)) $o['StartDate'] = $this->StartDate;
        if (isset($this->EndDate)) $o['EndDate'] = $this->EndDate;
        if (isset($this->TicketNumber)) $o['TicketNumber'] = $this->TicketNumber;
        if (isset($this->VendorLocators)) $o['VendorLocators'] = $this->VendorLocators;
        if (isset($this->EquipmentCode)) $o['EquipmentCode'] = $this->EquipmentCode;
        if (isset($this->Equipment)) $o['Equipment'] = $this->Equipment;
        return empty($o) ? new class(){} : $o;
    }
}

/**
 * @template array of ItinerarySegment
 */
class ItinerarySegmentsCollection extends \ArrayObject implements JsonSerializable
{
    public function __construct(ItinerarySegment ...$items) {
        parent::__construct($items, \ArrayObject::STD_PROP_LIST);
    }
    
    /** @throws \Exception */
    public function append($value): void {
        if ($value instanceof ItinerarySegment)
            parent::append($value);
        else
            throw new \Exception("Can only append a ItinerarySegment to " . __CLASS__);
    }
    
    /** @throws Exception */
    public function fromMap($o): void {
        foreach ($o as $item) {
            $el = new ItinerarySegment();
            $el->fromMap($item);
            $this->append($el);
        }
    }
    
    /** @throws Exception */
    public function jsonSerialize(): array {
        return parent::getArrayCopy();
    }
}

// @DataContract(Name="BookingCreated", Namespace="schemas.agentivity.com/types")
class BookingCreated implements IBookingItinerary, ICarbonTonnage, JsonSerializable
{
    public function __construct(
        // @DataMember(Order=10)
        /** @var int */
        public int $AgentivityRef=0,

        // @DataMember(Order=20)
        /** @var string|null */
        public ?string $RecordLocator=null,

        // @DataMember(Order=30)
        /** @var DateTime|null */
        public ?DateTime $PNRCreationDate=null,

        // @DataMember(Order=40)
        /** @var string|null */
        public ?string $OwningAgencyLocationID=null,

        // @DataMember(Order=50)
        /** @var string|null */
        public ?string $Account=null,

        // @DataMember(Order=60)
        /** @var string|null */
        public ?string $OwningConsultantID=null,

        // @DataMember(Order=70)
        /** @var string|null */
        public ?string $OwningConsultant=null,

        // @DataMember(Order=80)
        /** @var string|null */
        public ?string $PNRTicketed=null,

        // @DataMember(Order=90)
        /** @var DateTime|null */
        public ?DateTime $PNRTicketedDate=null,

        // @DataMember(Order=100)
        /** @var string|null */
        public ?string $PNRCancelled=null,

        // @DataMember(Order=110)
        /** @var DateTime|null */
        public ?DateTime $TravelDate=null,

        // @DataMember(Order=120)
        /** @var DateTime|null */
        public ?DateTime $CancelledTravelDate=null,

        // @DataMember(Order=130)
        /** @var string|null */
        public ?string $Passengers=null,

        // @DataMember(Order=140)
        /** @var string|null */
        public ?string $Mobile=null,

        // @DataMember(Order=150)
        /** @var string|null */
        public ?string $Emails=null,

        // @DataMember(Order=160)
        /** @var int */
        public int $DestinationCount=0,

        // @DataMember(Order=170)
        /** @var bool|null */
        public ?bool $IsVip=null,

        // @DataMember(Order=180)
        /** @var string|null */
        public ?string $CTCM=null,

        // @DataMember(Order=190)
        /** @var string|null */
        public ?string $CTCE=null,

        // @DataMember(Order=200)
        /** @var ItinerarySegmentsCollection|null */
        public ?ItinerarySegmentsCollection $Itinerary=null,

        // @DataMember(Order=210)
        /** @var string|null */
        public ?string $ItineraryFormatted=null,

        // @DataMember(Order=220)
        /** @var float|null */
        public ?float $CarbonTonnage=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['AgentivityRef'])) $this->AgentivityRef = $o['AgentivityRef'];
        if (isset($o['RecordLocator'])) $this->RecordLocator = $o['RecordLocator'];
        if (isset($o['PNRCreationDate'])) $this->PNRCreationDate = JsonConverters::from('DateTime', $o['PNRCreationDate']);
        if (isset($o['OwningAgencyLocationID'])) $this->OwningAgencyLocationID = $o['OwningAgencyLocationID'];
        if (isset($o['Account'])) $this->Account = $o['Account'];
        if (isset($o['OwningConsultantID'])) $this->OwningConsultantID = $o['OwningConsultantID'];
        if (isset($o['OwningConsultant'])) $this->OwningConsultant = $o['OwningConsultant'];
        if (isset($o['PNRTicketed'])) $this->PNRTicketed = $o['PNRTicketed'];
        if (isset($o['PNRTicketedDate'])) $this->PNRTicketedDate = JsonConverters::from('DateTime', $o['PNRTicketedDate']);
        if (isset($o['PNRCancelled'])) $this->PNRCancelled = $o['PNRCancelled'];
        if (isset($o['TravelDate'])) $this->TravelDate = JsonConverters::from('DateTime', $o['TravelDate']);
        if (isset($o['CancelledTravelDate'])) $this->CancelledTravelDate = JsonConverters::from('DateTime', $o['CancelledTravelDate']);
        if (isset($o['Passengers'])) $this->Passengers = $o['Passengers'];
        if (isset($o['Mobile'])) $this->Mobile = $o['Mobile'];
        if (isset($o['Emails'])) $this->Emails = $o['Emails'];
        if (isset($o['DestinationCount'])) $this->DestinationCount = $o['DestinationCount'];
        if (isset($o['IsVip'])) $this->IsVip = $o['IsVip'];
        if (isset($o['CTCM'])) $this->CTCM = $o['CTCM'];
        if (isset($o['CTCE'])) $this->CTCE = $o['CTCE'];
        if (isset($o['Itinerary'])) $this->Itinerary = JsonConverters::from('ItinerarySegmentsCollection', $o['Itinerary']);
        if (isset($o['ItineraryFormatted'])) $this->ItineraryFormatted = $o['ItineraryFormatted'];
        if (isset($o['CarbonTonnage'])) $this->CarbonTonnage = $o['CarbonTonnage'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->AgentivityRef)) $o['AgentivityRef'] = $this->AgentivityRef;
        if (isset($this->RecordLocator)) $o['RecordLocator'] = $this->RecordLocator;
        if (isset($this->PNRCreationDate)) $o['PNRCreationDate'] = JsonConverters::to('DateTime', $this->PNRCreationDate);
        if (isset($this->OwningAgencyLocationID)) $o['OwningAgencyLocationID'] = $this->OwningAgencyLocationID;
        if (isset($this->Account)) $o['Account'] = $this->Account;
        if (isset($this->OwningConsultantID)) $o['OwningConsultantID'] = $this->OwningConsultantID;
        if (isset($this->OwningConsultant)) $o['OwningConsultant'] = $this->OwningConsultant;
        if (isset($this->PNRTicketed)) $o['PNRTicketed'] = $this->PNRTicketed;
        if (isset($this->PNRTicketedDate)) $o['PNRTicketedDate'] = JsonConverters::to('DateTime', $this->PNRTicketedDate);
        if (isset($this->PNRCancelled)) $o['PNRCancelled'] = $this->PNRCancelled;
        if (isset($this->TravelDate)) $o['TravelDate'] = JsonConverters::to('DateTime', $this->TravelDate);
        if (isset($this->CancelledTravelDate)) $o['CancelledTravelDate'] = JsonConverters::to('DateTime', $this->CancelledTravelDate);
        if (isset($this->Passengers)) $o['Passengers'] = $this->Passengers;
        if (isset($this->Mobile)) $o['Mobile'] = $this->Mobile;
        if (isset($this->Emails)) $o['Emails'] = $this->Emails;
        if (isset($this->DestinationCount)) $o['DestinationCount'] = $this->DestinationCount;
        if (isset($this->IsVip)) $o['IsVip'] = $this->IsVip;
        if (isset($this->CTCM)) $o['CTCM'] = $this->CTCM;
        if (isset($this->CTCE)) $o['CTCE'] = $this->CTCE;
        if (isset($this->Itinerary)) $o['Itinerary'] = JsonConverters::to('ItinerarySegmentsCollection', $this->Itinerary);
        if (isset($this->ItineraryFormatted)) $o['ItineraryFormatted'] = $this->ItineraryFormatted;
        if (isset($this->CarbonTonnage)) $o['CarbonTonnage'] = $this->CarbonTonnage;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="CacheMetadata", Namespace="schemas.agentivity.com/types")
class CacheMetadata implements JsonSerializable
{
    public function __construct(
        // @DataMember(Order=1)
        /** @var DateTime */
        public DateTime $CachedAt=new DateTime(),

        // @DataMember(Order=2)
        /** @var DateTime */
        public DateTime $CacheExpiresAt=new DateTime(),

        // @DataMember(Order=0)
        /** @var bool|null */
        public ?bool $IsFromCache=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['CachedAt'])) $this->CachedAt = JsonConverters::from('DateTime', $o['CachedAt']);
        if (isset($o['CacheExpiresAt'])) $this->CacheExpiresAt = JsonConverters::from('DateTime', $o['CacheExpiresAt']);
        if (isset($o['IsFromCache'])) $this->IsFromCache = $o['IsFromCache'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->CachedAt)) $o['CachedAt'] = JsonConverters::to('DateTime', $this->CachedAt);
        if (isset($this->CacheExpiresAt)) $o['CacheExpiresAt'] = JsonConverters::to('DateTime', $this->CacheExpiresAt);
        if (isset($this->IsFromCache)) $o['IsFromCache'] = $this->IsFromCache;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="ResponseMetadata", Namespace="schemas.agentivity.com/types")
class ResponseMetadata implements JsonSerializable
{
    public function __construct(
        // @DataMember(Order=0)
        /** @var bool|null */
        public ?bool $Success=null,

        // @DataMember(Order=1)
        /** @var bool|null */
        public ?bool $HasCache=null,

        // @DataMember(Order=2)
        /** @var bool|null */
        public ?bool $HasPaging=null,

        // @DataMember(Order=3, EmitDefaultValue=false)
        /** @var CacheMetadata|null */
        public ?CacheMetadata $CacheMetadata=null,

        // @DataMember(Order=4, EmitDefaultValue=false)
        /** @var PagingMetadata|null */
        public ?PagingMetadata $PagingMetadata=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Success'])) $this->Success = $o['Success'];
        if (isset($o['HasCache'])) $this->HasCache = $o['HasCache'];
        if (isset($o['HasPaging'])) $this->HasPaging = $o['HasPaging'];
        if (isset($o['CacheMetadata'])) $this->CacheMetadata = JsonConverters::from('CacheMetadata', $o['CacheMetadata']);
        if (isset($o['PagingMetadata'])) $this->PagingMetadata = JsonConverters::from('PagingMetadata', $o['PagingMetadata']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Success)) $o['Success'] = $this->Success;
        if (isset($this->HasCache)) $o['HasCache'] = $this->HasCache;
        if (isset($this->HasPaging)) $o['HasPaging'] = $this->HasPaging;
        if (isset($this->CacheMetadata)) $o['CacheMetadata'] = JsonConverters::to('CacheMetadata', $this->CacheMetadata);
        if (isset($this->PagingMetadata)) $o['PagingMetadata'] = JsonConverters::to('PagingMetadata', $this->PagingMetadata);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="TicketsIssuedByNumber", Namespace="schemas.agentivity.com/types")
class TicketsIssuedByNumber implements JsonSerializable
{
    public function __construct(
        // @DataMember(Order=10)
        /** @var string|null */
        public ?string $RecordLocator=null,

        // @DataMember(Order=20)
        /** @var string|null */
        public ?string $TktNumber=null,

        // @DataMember(Order=30)
        /** @var string|null */
        public ?string $PlatingCarrier=null,

        // @DataMember(Order=40)
        /** @var string|null */
        public ?string $Passenger=null,

        // @DataMember(Order=50)
        /** @var string|null */
        public ?string $IATA=null,

        // @DataMember(Order=60)
        /** @var string|null */
        public ?string $OwningAgencyLocationID=null,

        // @DataMember(Order=70)
        /** @var DateTime|null */
        public ?DateTime $IssueDate=null,

        // @DataMember(Order=80)
        /** @var DateTime|null */
        public ?DateTime $ExpirationDate=null,

        // @DataMember(Order=90)
        /** @var string|null */
        public ?string $FOPFare=null,

        // @DataMember(Order=100)
        /** @var string|null */
        public ?string $PrintedCurrency=null,

        // @DataMember(Order=110)
        /** @var string|null */
        public ?string $TicketingAgentID=null,

        // @DataMember(Order=120)
        /** @var string|null */
        public ?string $TicketingAgent=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['RecordLocator'])) $this->RecordLocator = $o['RecordLocator'];
        if (isset($o['TktNumber'])) $this->TktNumber = $o['TktNumber'];
        if (isset($o['PlatingCarrier'])) $this->PlatingCarrier = $o['PlatingCarrier'];
        if (isset($o['Passenger'])) $this->Passenger = $o['Passenger'];
        if (isset($o['IATA'])) $this->IATA = $o['IATA'];
        if (isset($o['OwningAgencyLocationID'])) $this->OwningAgencyLocationID = $o['OwningAgencyLocationID'];
        if (isset($o['IssueDate'])) $this->IssueDate = JsonConverters::from('DateTime', $o['IssueDate']);
        if (isset($o['ExpirationDate'])) $this->ExpirationDate = JsonConverters::from('DateTime', $o['ExpirationDate']);
        if (isset($o['FOPFare'])) $this->FOPFare = $o['FOPFare'];
        if (isset($o['PrintedCurrency'])) $this->PrintedCurrency = $o['PrintedCurrency'];
        if (isset($o['TicketingAgentID'])) $this->TicketingAgentID = $o['TicketingAgentID'];
        if (isset($o['TicketingAgent'])) $this->TicketingAgent = $o['TicketingAgent'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->RecordLocator)) $o['RecordLocator'] = $this->RecordLocator;
        if (isset($this->TktNumber)) $o['TktNumber'] = $this->TktNumber;
        if (isset($this->PlatingCarrier)) $o['PlatingCarrier'] = $this->PlatingCarrier;
        if (isset($this->Passenger)) $o['Passenger'] = $this->Passenger;
        if (isset($this->IATA)) $o['IATA'] = $this->IATA;
        if (isset($this->OwningAgencyLocationID)) $o['OwningAgencyLocationID'] = $this->OwningAgencyLocationID;
        if (isset($this->IssueDate)) $o['IssueDate'] = JsonConverters::to('DateTime', $this->IssueDate);
        if (isset($this->ExpirationDate)) $o['ExpirationDate'] = JsonConverters::to('DateTime', $this->ExpirationDate);
        if (isset($this->FOPFare)) $o['FOPFare'] = $this->FOPFare;
        if (isset($this->PrintedCurrency)) $o['PrintedCurrency'] = $this->PrintedCurrency;
        if (isset($this->TicketingAgentID)) $o['TicketingAgentID'] = $this->TicketingAgentID;
        if (isset($this->TicketingAgent)) $o['TicketingAgent'] = $this->TicketingAgent;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="ResponseMetadata", Namespace="schemas.agentivity.com/types")
class AgentivityError implements JsonSerializable
{
    public function __construct(
        // @DataMember
        /** @var string|null */
        public ?string $ErrorCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $Message=null,

        // @DataMember
        /** @var string|null */
        public ?string $StatusCode=null,

        // @DataMember
        /** @var string|null */
        public ?string $VerboseMessage=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ErrorCode'])) $this->ErrorCode = $o['ErrorCode'];
        if (isset($o['Message'])) $this->Message = $o['Message'];
        if (isset($o['StatusCode'])) $this->StatusCode = $o['StatusCode'];
        if (isset($o['VerboseMessage'])) $this->VerboseMessage = $o['VerboseMessage'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ErrorCode)) $o['ErrorCode'] = $this->ErrorCode;
        if (isset($this->Message)) $o['Message'] = $this->Message;
        if (isset($this->StatusCode)) $o['StatusCode'] = $this->StatusCode;
        if (isset($this->VerboseMessage)) $o['VerboseMessage'] = $this->VerboseMessage;
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="AgentivityResponse", Namespace="schemas.agentivity.com/types")
/**
 * @template TItem
 */
class CollectionResponse implements JsonSerializable
{
    public array $genericArgs = [];
    public static function create(array $genericArgs=[]): CollectionResponse {
        $to = new CollectionResponse();
        $to->genericArgs = $genericArgs;
        return $to;
    }

    public function __construct(
        // @DataMember(Order=1)
        /** @var ResponseMetadata|null */
        public mixed $ResponseMetadata=null,

        // @DataMember(Order=2, EmitDefaultValue=false)
        /** @var array<TicketsIssuedByNumber>|null */
        public mixed $ResponseReport=null,

        // @DataMember(Order=3, EmitDefaultValue=false)
        /** @var AgentivityError|null */
        public mixed $ResponseError=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ResponseMetadata'])) $this->ResponseMetadata = JsonConverters::from('ResponseMetadata', $o['ResponseMetadata']);
        if (isset($o['ResponseReport'])) $this->ResponseReport = JsonConverters::fromArray('TicketsIssuedByNumber', $o['ResponseReport']);
        if (isset($o['ResponseError'])) $this->ResponseError = JsonConverters::from('AgentivityError', $o['ResponseError']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ResponseMetadata)) $o['ResponseMetadata'] = JsonConverters::to('ResponseMetadata', $this->ResponseMetadata);
        if (isset($this->ResponseReport)) $o['ResponseReport'] = JsonConverters::toArray('TicketsIssuedByNumber', $this->ResponseReport);
        if (isset($this->ResponseError)) $o['ResponseError'] = JsonConverters::to('AgentivityError', $this->ResponseError);
        return empty($o) ? new class(){} : $o;
    }
}

// @DataContract(Name="AgentivityResponse", Namespace="schemas.agentivity.com/types")
/**
 * @template CollectionResponse of BookingCreated
 */
class BookingsCreatedResponse extends CollectionResponse implements JsonSerializable
{
    /**
     * @param ResponseMetadata|null $ResponseMetadata
     * @param array<TicketsIssuedByNumber>|null $ResponseReport
     * @param AgentivityError|null $ResponseError
     */
    public function __construct(
        ?ResponseMetadata $ResponseMetadata=null,
        ?array $ResponseReport=null,
        ?AgentivityError $ResponseError=null
    ) {
        parent::__construct($ResponseMetadata,$ResponseReport,$ResponseError);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        return empty($o) ? new class(){} : $o;
    }
}

// @Flags()
enum FormattingStyle : int
{
    case None = 0;
    case Html = 1;
    case Charting = 2;
}

// @DataContract(Namespace="schemas.agentivity.com/types")
class GetBookingsCreated extends CompanyLevelRequestBase implements IMemberAccount, IMemberPNRCreationDateStart, IMemberPNRCreationDateEnd, IMemberPNRCancelled, IMemberHasMobile, IMemberHasEmail, IMemberMissingEmailOrPhone, IMemberHasHotel, IMemberHasAccount, IMemberIncludeItinerary, IMemberMinSegments, IMemberIsVip, IMemberItineraryFormatting, JsonSerializable
{
    /**
     * @param string|null $Offset
     * @param string|null $Limit
     * @param int $TotalRecords
     * @param int $ResponseRecords
     * @param string[]|null $OwningCompanyCode
     * @param string|null $UserName
     */
    public function __construct(
        ?string $Offset=null,
        ?string $Limit=null,
        int $TotalRecords=0,
        int $ResponseRecords=0,
        ?array $OwningCompanyCode=null,
        ?string $UserName=null,
        /** @description Includes CTCM and CTCE in results */
        // @DataMember
        /** @var bool|null */
        public ?bool $IncludeCTFields=null,

        /** @description Comma Delimited List of Accounts */
        // @DataMember
        /** @var string[]|null */
        public ?array $Account=null,

        /** @description Return only PNRs with/without an account */
        // @DataMember
        /** @var bool|null */
        public ?bool $HasAccount=null,

        /** @description Return only PNRs with/without an email address */
        // @DataMember
        /** @var bool|null */
        public ?bool $HasEmail=null,

        /** @description Return only PNRs with/without a hotel */
        // @DataMember
        /** @var bool|null */
        public ?bool $HasHotel=null,

        /** @description Return only PNRs with/without a mobile number */
        // @DataMember
        /** @var bool|null */
        public ?bool $HasMobile=null,

        /** @description Include Itinerary in the response */
        // @DataMember
        /** @var bool|null */
        public ?bool $IncludeItinerary=null,

        /** @description Return only PNRs that are or are not flagged as VIP bookings */
        // @DataMember
        /** @var bool|null */
        public ?bool $IsVip=null,

        /** @description Indicates the required formatting: 0=None(Default); 1= Html; 2 = Chart */
        // @DataMember
        /** @var FormattingStyle|null */
        public ?FormattingStyle $ItineraryFormatting=null,

        /** @description Return only PNRs that equal or exceed a certain number of segments */
        // @DataMember
        /** @var int|null */
        public ?int $MinSegments=null,

        /** @description Return only PNRs with/without an email address OR a mobile number */
        // @DataMember
        /** @var bool|null */
        public ?bool $MissingEmailOrPhone=null,

        /** @description Date in format YYYYMMDD */
        // @DataMember
        /** @var string */
        public string $PNRCreationDateEnd='',

        /** @description Date in format YYYYMMDD */
        // @DataMember
        /** @var string */
        public string $PNRCreationDateStart='',

        /** @description Return only PNRs that are cancelled(Y)/not cancelled(N)/all */
        // @DataMember
        /** @var string|null */
        public ?string $PNRCancelled=null,

        /** @description Comma Delimited List of PCCs */
        // @DataMember
        /** @var string[]|null */
        public ?array $OwningAgencyLocationID=null
    ) {
        parent::__construct($Offset,$Limit,$TotalRecords,$ResponseRecords,$OwningCompanyCode,$UserName);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['IncludeCTFields'])) $this->IncludeCTFields = $o['IncludeCTFields'];
        if (isset($o['Account'])) $this->Account = JsonConverters::fromArray('string', $o['Account']);
        if (isset($o['HasAccount'])) $this->HasAccount = $o['HasAccount'];
        if (isset($o['HasEmail'])) $this->HasEmail = $o['HasEmail'];
        if (isset($o['HasHotel'])) $this->HasHotel = $o['HasHotel'];
        if (isset($o['HasMobile'])) $this->HasMobile = $o['HasMobile'];
        if (isset($o['IncludeItinerary'])) $this->IncludeItinerary = $o['IncludeItinerary'];
        if (isset($o['IsVip'])) $this->IsVip = $o['IsVip'];
        if (isset($o['ItineraryFormatting'])) $this->ItineraryFormatting = JsonConverters::from('FormattingStyle', $o['ItineraryFormatting']);
        if (isset($o['MinSegments'])) $this->MinSegments = $o['MinSegments'];
        if (isset($o['MissingEmailOrPhone'])) $this->MissingEmailOrPhone = $o['MissingEmailOrPhone'];
        if (isset($o['PNRCreationDateEnd'])) $this->PNRCreationDateEnd = $o['PNRCreationDateEnd'];
        if (isset($o['PNRCreationDateStart'])) $this->PNRCreationDateStart = $o['PNRCreationDateStart'];
        if (isset($o['PNRCancelled'])) $this->PNRCancelled = $o['PNRCancelled'];
        if (isset($o['OwningAgencyLocationID'])) $this->OwningAgencyLocationID = JsonConverters::fromArray('string', $o['OwningAgencyLocationID']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->IncludeCTFields)) $o['IncludeCTFields'] = $this->IncludeCTFields;
        if (isset($this->Account)) $o['Account'] = JsonConverters::toArray('string', $this->Account);
        if (isset($this->HasAccount)) $o['HasAccount'] = $this->HasAccount;
        if (isset($this->HasEmail)) $o['HasEmail'] = $this->HasEmail;
        if (isset($this->HasHotel)) $o['HasHotel'] = $this->HasHotel;
        if (isset($this->HasMobile)) $o['HasMobile'] = $this->HasMobile;
        if (isset($this->IncludeItinerary)) $o['IncludeItinerary'] = $this->IncludeItinerary;
        if (isset($this->IsVip)) $o['IsVip'] = $this->IsVip;
        if (isset($this->ItineraryFormatting)) $o['ItineraryFormatting'] = JsonConverters::to('FormattingStyle', $this->ItineraryFormatting);
        if (isset($this->MinSegments)) $o['MinSegments'] = $this->MinSegments;
        if (isset($this->MissingEmailOrPhone)) $o['MissingEmailOrPhone'] = $this->MissingEmailOrPhone;
        if (isset($this->PNRCreationDateEnd)) $o['PNRCreationDateEnd'] = $this->PNRCreationDateEnd;
        if (isset($this->PNRCreationDateStart)) $o['PNRCreationDateStart'] = $this->PNRCreationDateStart;
        if (isset($this->PNRCancelled)) $o['PNRCancelled'] = $this->PNRCancelled;
        if (isset($this->OwningAgencyLocationID)) $o['OwningAgencyLocationID'] = JsonConverters::toArray('string', $this->OwningAgencyLocationID);
        return empty($o) ? new class(){} : $o;
    }
}

PHP GetBookingsCreated DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /BookingsCreated HTTP/1.1 
Host: api.agentivity.com 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"ResponseMetadata":{"Success":false,"HasCache":false,"HasPaging":false,"CacheMetadata":{"IsFromCache":false,"CachedAt":"\/Date(-62135596800000-0000)\/","CacheExpiresAt":"\/Date(-62135596800000-0000)\/"},"PagingMetadata":{"Offset":"String","Limit":"String","TotalRecords":0,"ResponseRecords":0}},"ResponseReport":[{"AgentivityRef":0,"RecordLocator":"String","PNRCreationDate":"\/Date(-62135596800000-0000)\/","OwningAgencyLocationID":"String","Account":"String","OwningConsultantID":"String","OwningConsultant":"String","PNRTicketed":"String","PNRTicketedDate":"\/Date(-62135596800000-0000)\/","PNRCancelled":"String","TravelDate":"\/Date(-62135596800000-0000)\/","CancelledTravelDate":"\/Date(-62135596800000-0000)\/","Passengers":"String","Mobile":"String","Emails":"String","DestinationCount":0,"IsVip":false,"CTCM":"String","CTCE":"String","Itinerary":[{"SegmentType":"String","SegmentNbr":0,"BoardPoint":"String","OffPoint":"String","OperatorCode":"String","OperatorService":"String","SegmentStatus":"String","DepartureTimeFormatted":"String","ArrivalTimeFormatted":"String","ChangeOfDayFormatted":"String","ServiceCode":"String","StartDate":"String","EndDate":"String","TicketNumber":"String","VendorLocators":"String","EquipmentCode":"String","Equipment":"String"}],"ItineraryFormatted":"String","CarbonTonnage":0}],"ResponseError":{"ErrorCode":"String","Message":"String","StatusCode":"String","VerboseMessage":"String"}}