Agentivity API

<back to all web services

AgencyReviews

The following routes are available for this service:
GET/AgencyReviews
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class PagingMetadata:
    # @ApiMember(DataType="string", Description="Starting Record", Name="Offset", ParameterType="query")
    offset: Optional[str] = None
    """
    Starting Record
    """


    # @ApiMember(DataType="string", Description="Number of records to return (PageSize)", Name="Limit", ParameterType="query")
    limit: Optional[str] = None
    """
    Number of records to return (PageSize)
    """


    # @ApiMember(DataType="string", Description="Total Number of Records in a Full Reponse (if no paging)", Name="TotalRecords", ParameterType="query")
    total_records: int = 0
    """
    Total Number of Records in a Full Reponse (if no paging)
    """


    # @ApiMember(DataType="string", Description="Total Number of Records in this Reponse (on this page)", Name="ResponseRecords", ParameterType="query")
    response_records: int = 0
    """
    Total Number of Records in this Reponse (on this page)
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CompanyLevelRequestBase(PagingMetadata, IMemberUsername, IMemberOwningCompanyCode):
    owning_company_code: Optional[List[str]] = None
    """
    Comma Delimited List of Owning Company Codes
    """

    user_name: Optional[str] = None
    """
    UserName in form of an email address
    """


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AgencyReviewSummary(ICarbonTonnage, ICarbonEmissionDto):
    ticketed_bookings: int = 0
    lcc_tkt_bookings: int = 0
    assumed_ticketed_bookings: int = 0
    non_ticketed_bookings: int = 0
    ticketed_bookings_perc: int = 0
    non_ticketed_bookings_perc: int = 0
    online_bookings: int = 0
    offline_bookings: int = 0
    cxl_bookings: int = 0
    off_line_htl_bookings: int = 0
    bookings_with_hotel_segments: int = 0
    bookings_with_car_segments: int = 0
    non_air_bookings: int = 0
    total_bookings: int = 0
    aero_touches: Optional[int] = None
    aero_touches_auto: int = 0
    average_itinerary_changes: Decimal = decimal.Decimal(0)
    average_account_booking_to_travel_time: Decimal = decimal.Decimal(0)
    total_itinerary_changes_before_ticketing: Optional[int] = None
    total_itinerary_changes_after_ticketing: Optional[int] = None
    total_itinerary_changes: Decimal = decimal.Decimal(0)
    bookings_with_ndc_content: int = 0
    carbon_emission_value: Optional[float] = None
    carbon_emission_unit_id: Optional[int] = None
    carbon_tonnage: Optional[float] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AirlineStats:
    carrier_code: Optional[str] = None
    carrier: Optional[str] = None
    total_segments: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AirlineSupport:
    airlines_stats: Optional[List[AirlineStats]] = None
    total_segments: int = 0
    formatted_airline_support: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CarStats:
    vendor_code: Optional[str] = None
    vendor_name: Optional[str] = None
    total_segments: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CarSupport:
    stats: Optional[List[CarStats]] = None
    total_segments: int = 0
    formatted_car_support: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class HotelStats:
    vendor_code: Optional[str] = None
    vendor_name: Optional[str] = None
    total_segments: int = 0
    total_nights: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class HotelSupport:
    stats: Optional[List[HotelStats]] = None
    total_segments: int = 0
    formatted_hotel_support: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AgencyReview:
    summary: Optional[AgencyReviewSummary] = None
    airline_support: Optional[AirlineSupport] = None
    car_support: Optional[CarSupport] = None
    hotel_support: Optional[HotelSupport] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CacheMetadata:
    cached_at: datetime.datetime = datetime.datetime(1, 1, 1)
    cache_expires_at: datetime.datetime = datetime.datetime(1, 1, 1)
    is_from_cache: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ResponseMetadata:
    success: bool = False
    has_cache: bool = False
    has_paging: bool = False
    cache_metadata: Optional[CacheMetadata] = None
    paging_metadata: Optional[PagingMetadata] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ApiRequestPerHour:
    request_date: datetime.datetime = datetime.datetime(1, 1, 1)
    hour0: int = 0
    hour1: int = 0
    hour2: int = 0
    hour3: int = 0
    hour4: int = 0
    hour5: int = 0
    hour6: int = 0
    hour7: int = 0
    hour8: int = 0
    hour9: int = 0
    hour10: int = 0
    hour11: int = 0
    hour12: int = 0
    hour13: int = 0
    hour14: int = 0
    hour15: int = 0
    hour16: int = 0
    hour17: int = 0
    hour18: int = 0
    hour19: int = 0
    hour20: int = 0
    hour21: int = 0
    hour22: int = 0
    hour23: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AgentivityError:
    error_code: Optional[str] = None
    message: Optional[str] = None
    status_code: Optional[str] = None
    verbose_message: Optional[str] = None


TItem = TypeVar('TItem')


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CollectionResponse(Generic[TItem]):
    response_metadata: Optional[ResponseMetadata] = None
    response_report: Optional[List[ApiRequestPerHour]] = None
    response_error: Optional[AgentivityError] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AgencyReviewsResponse(CollectionResponse[AgencyReview]):
    pass


# @Flags()
class AgencyReviewOptions(IntEnum):
    NONE = 0
    SUMMARY = 1
    AIRLINE_SUPPORT = 2
    SUMMARY_AIRLINE_SUPPORT = 3
    CAR_SUPPORT = 4
    HOTEL_SUPPORT = 8
    ALL = 15


# @Flags()
class FormattingStyle(IntEnum):
    NONE = 0
    HTML = 1
    CHARTING = 2


# @Flags()
class AgencyReviewMode(IntEnum):
    ACCOUNT = 0
    PCC = 1


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AgencyReviews(CompanyLevelRequestBase, IRequestConsultantID):
    account: Optional[str] = None
    """
    Account
    """

    pnr_creation_date_start: Optional[str] = None
    """
    Date in format YYYYMMDD
    """

    pnr_creation_date_end: Optional[str] = None
    """
    Date in format YYYYMMDD
    """

    owning_agency_location_i_d: Optional[List[str]] = None
    """
    Comma Delimited List of PCCs
    """

    load_options: Optional[AgencyReviewOptions] = None
    """
    Load options
    """

    airline_support_format_style: Optional[FormattingStyle] = None
    """
    Airline support format style
    """

    car_support_format_style: Optional[FormattingStyle] = None
    """
    Car support format style
    """

    hotel_support_format_style: Optional[FormattingStyle] = None
    """
    Hotel support format style
    """

    excluded_carrier_code: Optional[str] = None
    """
    Excluded carrier code
    """

    mode: Optional[AgencyReviewMode] = None
    """
    Mode
    """

    top_car_items: Optional[int] = None
    """
    Top car items
    """

    top_hotel_items: Optional[int] = None
    """
    Top hotel items
    """

    include_after_hours_servicing_fields: bool = False
    """
    Includes AfterHours Servicing in results
    """

    request_consultant_i_d: Optional[str] = None
    """
    Request Consultant ID (sign on)
    """

Python AgencyReviews DTOs

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

HTTP + XML

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

GET /AgencyReviews HTTP/1.1 
Host: api.agentivity.com 
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<AgentivityResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="schemas.agentivity.com/types">
  <ResponseMetadata>
    <Success>false</Success>
    <HasCache>false</HasCache>
    <HasPaging>false</HasPaging>
    <CacheMetadata>
      <IsFromCache>false</IsFromCache>
      <CachedAt>0001-01-01T00:00:00</CachedAt>
      <CacheExpiresAt>0001-01-01T00:00:00</CacheExpiresAt>
    </CacheMetadata>
    <PagingMetadata>
      <Limit>String</Limit>
      <Offset>String</Offset>
      <ResponseRecords>0</ResponseRecords>
      <TotalRecords>0</TotalRecords>
    </PagingMetadata>
  </ResponseMetadata>
  <ResponseReport>
    <AgencyReview>
      <Summary>
        <TicketedBookings>0</TicketedBookings>
        <LCCTktBookings>0</LCCTktBookings>
        <AssumedTicketedBookings>0</AssumedTicketedBookings>
        <NonTicketedBookings>0</NonTicketedBookings>
        <TicketedBookingsPerc>0</TicketedBookingsPerc>
        <NonTicketedBookingsPerc>0</NonTicketedBookingsPerc>
        <OnlineBookings>0</OnlineBookings>
        <OfflineBookings>0</OfflineBookings>
        <CxlBookings>0</CxlBookings>
        <OffLineHtlBookings>0</OffLineHtlBookings>
        <BookingsWithHotelSegments>0</BookingsWithHotelSegments>
        <BookingsWithCarSegments>0</BookingsWithCarSegments>
        <NonAirBookings>0</NonAirBookings>
        <TotalBookings>0</TotalBookings>
        <AeroTouches>0</AeroTouches>
        <AeroTouchesAuto>0</AeroTouchesAuto>
        <AverageItineraryChanges>0</AverageItineraryChanges>
        <AverageAccountBookingToTravelTime>0</AverageAccountBookingToTravelTime>
        <TotalItineraryChangesBeforeTicketing>0</TotalItineraryChangesBeforeTicketing>
        <TotalItineraryChangesAfterTicketing>0</TotalItineraryChangesAfterTicketing>
        <TotalItineraryChanges>0</TotalItineraryChanges>
        <CarbonTonnage>0</CarbonTonnage>
        <CarbonEmissionValue>0</CarbonEmissionValue>
        <CarbonEmissionUnitId>0</CarbonEmissionUnitId>
        <BookingsWithNdcContent>0</BookingsWithNdcContent>
      </Summary>
      <AirlineSupport>
        <AirlinesStats>
          <AirlineStats>
            <CarrierCode>String</CarrierCode>
            <Carrier>String</Carrier>
            <TotalSegments>0</TotalSegments>
          </AirlineStats>
        </AirlinesStats>
        <TotalSegments>0</TotalSegments>
        <FormattedAirlineSupport>String</FormattedAirlineSupport>
      </AirlineSupport>
      <CarSupport>
        <Stats>
          <CarStats>
            <VendorCode>String</VendorCode>
            <VendorName>String</VendorName>
            <TotalSegments>0</TotalSegments>
          </CarStats>
        </Stats>
        <TotalSegments>0</TotalSegments>
        <FormattedCarSupport>String</FormattedCarSupport>
      </CarSupport>
      <HotelSupport>
        <Stats>
          <HotelStats>
            <VendorCode>String</VendorCode>
            <VendorName>String</VendorName>
            <TotalSegments>0</TotalSegments>
            <TotalNights>0</TotalNights>
          </HotelStats>
        </Stats>
        <TotalSegments>0</TotalSegments>
        <FormattedHotelSupport>String</FormattedHotelSupport>
      </HotelSupport>
    </AgencyReview>
  </ResponseReport>
  <ResponseError>
    <ErrorCode>String</ErrorCode>
    <Message>String</Message>
    <StatusCode>String</StatusCode>
    <VerboseMessage>String</VerboseMessage>
  </ResponseError>
</AgentivityResponse>