interface OrdersCollection {
        // Gets one order by ID.
        get(profileId: string, projectId: string, id: string): Dfareporting.Schema.Order;
        // Retrieves a list of orders, possibly filtered. This method supports paging.
        list(profileId: string, projectId: string): Dfareporting.Schema.OrdersListResponse;
        // Retrieves a list of orders, possibly filtered. This method supports paging.
        list(profileId: string, projectId: string, optionalArgs: object): Dfareporting.Schema.OrdersListResponse;
      }


interface PlacementGroupsCollection {
        // Gets one placement group by ID.
        get(profileId: string, id: string): Dfareporting.Schema.PlacementGroup;
        // Inserts a new placement group.
        insert(resource: Schema.PlacementGroup, profileId: string): Dfareporting.Schema.PlacementGroup;
        // Retrieves a list of placement groups, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.PlacementGroupsListResponse;
        // Retrieves a list of placement groups, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.PlacementGroupsListResponse;
        // Updates an existing placement group. This method supports patch semantics.
        patch(resource: Schema.PlacementGroup, profileId: string, id: string): Dfareporting.Schema.PlacementGroup;
        // Updates an existing placement group.
        update(resource: Schema.PlacementGroup, profileId: string): Dfareporting.Schema.PlacementGroup;
      }


interface PlacementStrategiesCollection {
        // Gets one placement strategy by ID.
        get(profileId: string, id: string): Dfareporting.Schema.PlacementStrategy;
        // Inserts a new placement strategy.
        insert(resource: Schema.PlacementStrategy, profileId: string): Dfareporting.Schema.PlacementStrategy;
        // Retrieves a list of placement strategies, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.PlacementStrategiesListResponse;
        // Retrieves a list of placement strategies, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.PlacementStrategiesListResponse;
        // Updates an existing placement strategy. This method supports patch semantics.
        patch(resource: Schema.PlacementStrategy, profileId: string, id: string): Dfareporting.Schema.PlacementStrategy;
        // Deletes an existing placement strategy.
        remove(profileId: string, id: string): void;
        // Updates an existing placement strategy.
        update(resource: Schema.PlacementStrategy, profileId: string): Dfareporting.Schema.PlacementStrategy;
      }


interface PlacementsCollection {
        // Generates tags for a placement.
        generatetags(profileId: string): Dfareporting.Schema.PlacementsGenerateTagsResponse;
        // Generates tags for a placement.
        generatetags(profileId: string, optionalArgs: object): Dfareporting.Schema.PlacementsGenerateTagsResponse;
        // Gets one placement by ID.
        get(profileId: string, id: string): Dfareporting.Schema.Placement;
        // Inserts a new placement.
        insert(resource: Schema.Placement, profileId: string): Dfareporting.Schema.Placement;
        // Retrieves a list of placements, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.PlacementsListResponse;
        // Retrieves a list of placements, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.PlacementsListResponse;
        // Updates an existing placement. This method supports patch semantics.
        patch(resource: Schema.Placement, profileId: string, id: string): Dfareporting.Schema.Placement;
        // Updates an existing placement.
        update(resource: Schema.Placement, profileId: string): Dfareporting.Schema.Placement;
      }


interface PlatformTypesCollection {
        // Gets one platform type by ID.
        get(profileId: string, id: string): Dfareporting.Schema.PlatformType;
        // Retrieves a list of platform types.
        list(profileId: string): Dfareporting.Schema.PlatformTypesListResponse;
      }


interface PostalCodesCollection {
        // Gets one postal code by ID.
        get(profileId: string, code: string): Dfareporting.Schema.PostalCode;
        // Retrieves a list of postal codes.
        list(profileId: string): Dfareporting.Schema.PostalCodesListResponse;
      }


interface ProjectsCollection {
        // Gets one project by ID.
        get(profileId: string, id: string): Dfareporting.Schema.Project;
        // Retrieves a list of projects, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.ProjectsListResponse;
        // Retrieves a list of projects, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.ProjectsListResponse;
      }


interface RegionsCollection {
        // Retrieves a list of regions.
        list(profileId: string): Dfareporting.Schema.RegionsListResponse;
      }


interface RemarketingListSharesCollection {
        // Gets one remarketing list share by remarketing list ID.
        get(profileId: string, remarketingListId: string): Dfareporting.Schema.RemarketingListShare;
        // Updates an existing remarketing list share. This method supports patch semantics.
        patch(resource: Schema.RemarketingListShare, profileId: string, remarketingListId: string): Dfareporting.Schema.RemarketingListShare;
        // Updates an existing remarketing list share.
        update(resource: Schema.RemarketingListShare, profileId: string): Dfareporting.Schema.RemarketingListShare;
      }


interface RemarketingListsCollection {
        // Gets one remarketing list by ID.
        get(profileId: string, id: string): Dfareporting.Schema.RemarketingList;
        // Inserts a new remarketing list.
        insert(resource: Schema.RemarketingList, profileId: string): Dfareporting.Schema.RemarketingList;
        // Retrieves a list of remarketing lists, possibly filtered. This method supports paging.
        list(profileId: string, advertiserId: string): Dfareporting.Schema.RemarketingListsListResponse;
        // Retrieves a list of remarketing lists, possibly filtered. This method supports paging.
        list(profileId: string, advertiserId: string, optionalArgs: object): Dfareporting.Schema.RemarketingListsListResponse;
        // Updates an existing remarketing list. This method supports patch semantics.
        patch(resource: Schema.RemarketingList, profileId: string, id: string): Dfareporting.Schema.RemarketingList;
        // Updates an existing remarketing list.
        update(resource: Schema.RemarketingList, profileId: string): Dfareporting.Schema.RemarketingList;
      }


interface ReportsCollection {
        CompatibleFields?: Dfareporting.Collection.Reports.CompatibleFieldsCollection;
        Files?: Dfareporting.Collection.Reports.FilesCollection;
        // Retrieves a report by its ID.
        get(profileId: string, reportId: string): Dfareporting.Schema.Report;
        // Creates a report.
        insert(resource: Schema.Report, profileId: string): Dfareporting.Schema.Report;
        // Retrieves list of reports.
        list(profileId: string): Dfareporting.Schema.ReportList;
        // Retrieves list of reports.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.ReportList;
        // Updates a report. This method supports patch semantics.
        patch(resource: Schema.Report, profileId: string, reportId: string): Dfareporting.Schema.Report;
        // Deletes a report by its ID.
        remove(profileId: string, reportId: string): void;
        // Runs a report.
        run(profileId: string, reportId: string): Dfareporting.Schema.File;
        // Runs a report.
        run(profileId: string, reportId: string, optionalArgs: object): Dfareporting.Schema.File;
        // Updates a report.
        update(resource: Schema.Report, profileId: string, reportId: string): Dfareporting.Schema.Report;
      }


interface SitesCollection {
        // Gets one site by ID.
        get(profileId: string, id: string): Dfareporting.Schema.Site;
        // Inserts a new site.
        insert(resource: Schema.Site, profileId: string): Dfareporting.Schema.Site;
        // Retrieves a list of sites, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.SitesListResponse;
        // Retrieves a list of sites, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.SitesListResponse;
        // Updates an existing site. This method supports patch semantics.
        patch(resource: Schema.Site, profileId: string, id: string): Dfareporting.Schema.Site;
        // Updates an existing site.
        update(resource: Schema.Site, profileId: string): Dfareporting.Schema.Site;
      }


interface SizesCollection {
        // Gets one size by ID.
        get(profileId: string, id: string): Dfareporting.Schema.Size;
        // Inserts a new size.
        insert(resource: Schema.Size, profileId: string): Dfareporting.Schema.Size;
        // Retrieves a list of sizes, possibly filtered. Retrieved sizes are globally unique and may include values not currently in use by your account. Due to this, the list of sizes returned by this method may differ from the list seen in the Trafficking UI.
        list(profileId: string): Dfareporting.Schema.SizesListResponse;
        // Retrieves a list of sizes, possibly filtered. Retrieved sizes are globally unique and may include values not currently in use by your account. Due to this, the list of sizes returned by this method may differ from the list seen in the Trafficking UI.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.SizesListResponse;
      }


interface SubaccountsCollection {
        // Gets one subaccount by ID.
        get(profileId: string, id: string): Dfareporting.Schema.Subaccount;
        // Inserts a new subaccount.
        insert(resource: Schema.Subaccount, profileId: string): Dfareporting.Schema.Subaccount;
        // Gets a list of subaccounts, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.SubaccountsListResponse;
        // Gets a list of subaccounts, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.SubaccountsListResponse;
        // Updates an existing subaccount. This method supports patch semantics.
        patch(resource: Schema.Subaccount, profileId: string, id: string): Dfareporting.Schema.Subaccount;
        // Updates an existing subaccount.
        update(resource: Schema.Subaccount, profileId: string): Dfareporting.Schema.Subaccount;
      }


interface TargetableRemarketingListsCollection {
        // Gets one remarketing list by ID.
        get(profileId: string, id: string): Dfareporting.Schema.TargetableRemarketingList;
        // Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.
        list(profileId: string, advertiserId: string): Dfareporting.Schema.TargetableRemarketingListsListResponse;
        // Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.
        list(profileId: string, advertiserId: string, optionalArgs: object): Dfareporting.Schema.TargetableRemarketingListsListResponse;
      }


interface TargetingTemplatesCollection {
        // Gets one targeting template by ID.
        get(profileId: string, id: string): Dfareporting.Schema.TargetingTemplate;
        // Inserts a new targeting template.
        insert(resource: Schema.TargetingTemplate, profileId: string): Dfareporting.Schema.TargetingTemplate;
        // Retrieves a list of targeting templates, optionally filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.TargetingTemplatesListResponse;
        // Retrieves a list of targeting templates, optionally filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.TargetingTemplatesListResponse;
        // Updates an existing targeting template. This method supports patch semantics.
        patch(resource: Schema.TargetingTemplate, profileId: string, id: string): Dfareporting.Schema.TargetingTemplate;
        // Updates an existing targeting template.
        update(resource: Schema.TargetingTemplate, profileId: string): Dfareporting.Schema.TargetingTemplate;
      }


interface UserProfilesCollection {
        // Gets one user profile by ID.
        get(profileId: string): Dfareporting.Schema.UserProfile;
        // Retrieves list of user profiles for a user.
        list(): Dfareporting.Schema.UserProfileList;
      }


interface UserRolePermissionGroupsCollection {
        // Gets one user role permission group by ID.
        get(profileId: string, id: string): Dfareporting.Schema.UserRolePermissionGroup;
        // Gets a list of all supported user role permission groups.
        list(profileId: string): Dfareporting.Schema.UserRolePermissionGroupsListResponse;
      }


interface UserRolePermissionsCollection {
        // Gets one user role permission by ID.
        get(profileId: string, id: string): Dfareporting.Schema.UserRolePermission;
        // Gets a list of user role permissions, possibly filtered.
        list(profileId: string): Dfareporting.Schema.UserRolePermissionsListResponse;
        // Gets a list of user role permissions, possibly filtered.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.UserRolePermissionsListResponse;
      }


interface UserRolesCollection {
        // Gets one user role by ID.
        get(profileId: string, id: string): Dfareporting.Schema.UserRole;
        // Inserts a new user role.
        insert(resource: Schema.UserRole, profileId: string): Dfareporting.Schema.UserRole;
        // Retrieves a list of user roles, possibly filtered. This method supports paging.
        list(profileId: string): Dfareporting.Schema.UserRolesListResponse;
        // Retrieves a list of user roles, possibly filtered. This method supports paging.
        list(profileId: string, optionalArgs: object): Dfareporting.Schema.UserRolesListResponse;
        // Updates an existing user role. This method supports patch semantics.
        patch(resource: Schema.UserRole, profileId: string, id: string): Dfareporting.Schema.UserRole;
        // Deletes an existing user role.
        remove(profileId: string, id: string): void;
        // Updates an existing user role.
        update(resource: Schema.UserRole, profileId: string): Dfareporting.Schema.UserRole;
      }


interface VideoFormatsCollection {
        // Gets one video format by ID.
        get(profileId: string, id: number): Dfareporting.Schema.VideoFormat;
        // Lists available video formats.
        list(profileId: string): Dfareporting.Schema.VideoFormatsListResponse;
      }


interface Account {
        accountPermissionIds?: string[];
        accountProfile?: string;
        active?: boolean;
        activeAdsLimitTier?: string;
        activeViewOptOut?: boolean;
        availablePermissionIds?: string[];
        countryId?: string;
        currencyId?: string;
        defaultCreativeSizeId?: string;
        description?: string;
        id?: string;
        kind?: string;
        locale?: string;
        maximumImageSize?: string;
        name?: string;
        nielsenOcrEnabled?: boolean;
        reportsConfiguration?: Dfareporting.Schema.ReportsConfiguration;
        shareReportsWithTwitter?: boolean;
        teaserSizeLimit?: string;
      }


interface AccountActiveAdSummary {
        accountId?: string;
        activeAds?: string;
        activeAdsLimitTier?: string;
        availableAds?: string;
        kind?: string;
      }


interface AccountPermission {
        accountProfiles?: string[];
        id?: string;
        kind?: string;
        level?: string;
        name?: string;
        permissionGroupId?: string;
      }


interface AccountPermissionGroup {
        id?: string;
        kind?: string;
        name?: string;
      }


interface AccountPermissionGroupsListResponse {
        accountPermissionGroups?: Dfareporting.Schema.AccountPermissionGroup[];
        kind?: string;
      }


interface AccountPermissionsListResponse {
        accountPermissions?: Dfareporting.Schema.AccountPermission[];
        kind?: string;
      }


interface AccountUserProfile {
        accountId?: string;
        active?: boolean;
        advertiserFilter?: Dfareporting.Schema.ObjectFilter;
        campaignFilter?: Dfareporting.Schema.ObjectFilter;
        comments?: string;
        email?: string;
        id?: string;
        kind?: string;
        locale?: string;
        name?: string;
        siteFilter?: Dfareporting.Schema.ObjectFilter;
        subaccountId?: string;
        traffickerType?: string;
        userAccessType?: string;
        userRoleFilter?: Dfareporting.Schema.ObjectFilter;
        userRoleId?: string;
      }


interface AccountUserProfilesListResponse {
        accountUserProfiles?: Dfareporting.Schema.AccountUserProfile[];
        kind?: string;
        nextPageToken?: string;
      }


interface AccountsListResponse {
        accounts?: Dfareporting.Schema.Account[];
        kind?: string;
        nextPageToken?: string;
      }


interface Activities {
        filters?: Dfareporting.Schema.DimensionValue[];
        kind?: string;
        metricNames?: string[];
      }


interface Ad {
        accountId?: string;
        active?: boolean;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        archived?: boolean;
        audienceSegmentId?: string;
        campaignId?: string;
        campaignIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        clickThroughUrl?: Dfareporting.Schema.ClickThroughUrl;
        clickThroughUrlSuffixProperties?: Dfareporting.Schema.ClickThroughUrlSuffixProperties;
        comments?: string;
        compatibility?: string;
        createInfo?: Dfareporting.Schema.LastModifiedInfo;
        creativeGroupAssignments?: Dfareporting.Schema.CreativeGroupAssignment[];
        creativeRotation?: Dfareporting.Schema.CreativeRotation;
        dayPartTargeting?: Dfareporting.Schema.DayPartTargeting;
        defaultClickThroughEventTagProperties?: Dfareporting.Schema.DefaultClickThroughEventTagProperties;
        deliverySchedule?: Dfareporting.Schema.DeliverySchedule;
        dynamicClickTracker?: boolean;
        endTime?: string;
        eventTagOverrides?: Dfareporting.Schema.EventTagOverride[];
        geoTargeting?: Dfareporting.Schema.GeoTargeting;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        keyValueTargetingExpression?: Dfareporting.Schema.KeyValueTargetingExpression;
        kind?: string;
        languageTargeting?: Dfareporting.Schema.LanguageTargeting;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        name?: string;
        placementAssignments?: Dfareporting.Schema.PlacementAssignment[];
        remarketingListExpression?: Dfareporting.Schema.ListTargetingExpression;
        size?: Dfareporting.Schema.Size;
        sslCompliant?: boolean;
        sslRequired?: boolean;
        startTime?: string;
        subaccountId?: string;
        targetingTemplateId?: string;
        technologyTargeting?: Dfareporting.Schema.TechnologyTargeting;
        type?: string;
      }


interface AdBlockingConfiguration {
        clickThroughUrl?: string;
        creativeBundleId?: string;
        enabled?: boolean;
        overrideClickThroughUrl?: boolean;
      }


interface AdSlot {
        comment?: string;
        compatibility?: string;
        height?: string;
        linkedPlacementId?: string;
        name?: string;
        paymentSourceType?: string;
        primary?: boolean;
        width?: string;
      }


interface AdsListResponse {
        ads?: Dfareporting.Schema.Ad[];
        kind?: string;
        nextPageToken?: string;
      }


interface Advertiser {
        accountId?: string;
        advertiserGroupId?: string;
        clickThroughUrlSuffix?: string;
        defaultClickThroughEventTagId?: string;
        defaultEmail?: string;
        floodlightConfigurationId?: string;
        floodlightConfigurationIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        name?: string;
        originalFloodlightConfigurationId?: string;
        status?: string;
        subaccountId?: string;
        suspended?: boolean;
      }


interface AdvertiserGroup {
        accountId?: string;
        id?: string;
        kind?: string;
        name?: string;
      }


interface AdvertiserGroupsListResponse {
        advertiserGroups?: Dfareporting.Schema.AdvertiserGroup[];
        kind?: string;
        nextPageToken?: string;
      }


interface AdvertiserLandingPagesListResponse {
        kind?: string;
        landingPages?: Dfareporting.Schema.LandingPage[];
        nextPageToken?: string;
      }


interface AdvertisersListResponse {
        advertisers?: Dfareporting.Schema.Advertiser[];
        kind?: string;
        nextPageToken?: string;
      }


interface AudienceSegment {
        allocation?: number;
        id?: string;
        name?: string;
      }


interface AudienceSegmentGroup {
        audienceSegments?: Dfareporting.Schema.AudienceSegment[];
        id?: string;
        name?: string;
      }


interface Browser {
        browserVersionId?: string;
        dartId?: string;
        kind?: string;
        majorVersion?: string;
        minorVersion?: string;
        name?: string;
      }


interface BrowsersListResponse {
        browsers?: Dfareporting.Schema.Browser[];
        kind?: string;
      }


interface Campaign {
        accountId?: string;
        adBlockingConfiguration?: Dfareporting.Schema.AdBlockingConfiguration;
        additionalCreativeOptimizationConfigurations?: Dfareporting.Schema.CreativeOptimizationConfiguration[];
        advertiserGroupId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        archived?: boolean;
        audienceSegmentGroups?: Dfareporting.Schema.AudienceSegmentGroup[];
        billingInvoiceCode?: string;
        clickThroughUrlSuffixProperties?: Dfareporting.Schema.ClickThroughUrlSuffixProperties;
        comment?: string;
        createInfo?: Dfareporting.Schema.LastModifiedInfo;
        creativeGroupIds?: string[];
        creativeOptimizationConfiguration?: Dfareporting.Schema.CreativeOptimizationConfiguration;
        defaultClickThroughEventTagProperties?: Dfareporting.Schema.DefaultClickThroughEventTagProperties;
        defaultLandingPageId?: string;
        endDate?: string;
        eventTagOverrides?: Dfareporting.Schema.EventTagOverride[];
        externalId?: string;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        name?: string;
        nielsenOcrEnabled?: boolean;
        startDate?: string;
        subaccountId?: string;
        traffickerEmails?: string[];
      }


interface CampaignCreativeAssociation {
        creativeId?: string;
        kind?: string;
      }


interface CampaignCreativeAssociationsListResponse {
        campaignCreativeAssociations?: Dfareporting.Schema.CampaignCreativeAssociation[];
        kind?: string;
        nextPageToken?: string;
      }


interface CampaignsListResponse {
        campaigns?: Dfareporting.Schema.Campaign[];
        kind?: string;
        nextPageToken?: string;
      }


interface ChangeLog {
        accountId?: string;
        action?: string;
        changeTime?: string;
        fieldName?: string;
        id?: string;
        kind?: string;
        newValue?: string;
        objectId?: string;
        objectType?: string;
        oldValue?: string;
        subaccountId?: string;
        transactionId?: string;
        userProfileId?: string;
        userProfileName?: string;
      }


interface ChangeLogsListResponse {
        changeLogs?: Dfareporting.Schema.ChangeLog[];
        kind?: string;
        nextPageToken?: string;
      }


interface CitiesListResponse {
        cities?: Dfareporting.Schema.City[];
        kind?: string;
      }


interface City {
        countryCode?: string;
        countryDartId?: string;
        dartId?: string;
        kind?: string;
        metroCode?: string;
        metroDmaId?: string;
        name?: string;
        regionCode?: string;
        regionDartId?: string;
      }


interface ClickTag {
        clickThroughUrl?: Dfareporting.Schema.CreativeClickThroughUrl;
        eventName?: string;
        name?: string;
      }


interface ClickThroughUrl {
        computedClickThroughUrl?: string;
        customClickThroughUrl?: string;
        defaultLandingPage?: boolean;
        landingPageId?: string;
      }


interface ClickThroughUrlSuffixProperties {
        clickThroughUrlSuffix?: string;
        overrideInheritedSuffix?: boolean;
      }


interface CompanionClickThroughOverride {
        clickThroughUrl?: Dfareporting.Schema.ClickThroughUrl;
        creativeId?: string;
      }


interface CompanionSetting {
        companionsDisabled?: boolean;
        enabledSizes?: Dfareporting.Schema.Size[];
        imageOnly?: boolean;
        kind?: string;
      }


interface CompatibleFields {
        crossDimensionReachReportCompatibleFields?: Dfareporting.Schema.CrossDimensionReachReportCompatibleFields;
        floodlightReportCompatibleFields?: Dfareporting.Schema.FloodlightReportCompatibleFields;
        kind?: string;
        pathToConversionReportCompatibleFields?: Dfareporting.Schema.PathToConversionReportCompatibleFields;
        reachReportCompatibleFields?: Dfareporting.Schema.ReachReportCompatibleFields;
        reportCompatibleFields?: Dfareporting.Schema.ReportCompatibleFields;
      }


interface ConnectionType {
        id?: string;
        kind?: string;
        name?: string;
      }


interface ConnectionTypesListResponse {
        connectionTypes?: Dfareporting.Schema.ConnectionType[];
        kind?: string;
      }


interface ContentCategoriesListResponse {
        contentCategories?: Dfareporting.Schema.ContentCategory[];
        kind?: string;
        nextPageToken?: string;
      }


interface ContentCategory {
        accountId?: string;
        id?: string;
        kind?: string;
        name?: string;
      }


interface Conversion {
        childDirectedTreatment?: boolean;
        customVariables?: Dfareporting.Schema.CustomFloodlightVariable[];
        encryptedUserId?: string;
        encryptedUserIdCandidates?: string[];
        floodlightActivityId?: string;
        floodlightConfigurationId?: string;
        gclid?: string;
        kind?: string;
        limitAdTracking?: boolean;
        mobileDeviceId?: string;
        nonPersonalizedAd?: boolean;
        ordinal?: string;
        quantity?: string;
        timestampMicros?: string;
        treatmentForUnderage?: boolean;
        value?: number;
      }


interface ConversionError {
        code?: string;
        kind?: string;
        message?: string;
      }


interface ConversionStatus {
        conversion?: Dfareporting.Schema.Conversion;
        errors?: Dfareporting.Schema.ConversionError[];
        kind?: string;
      }


interface ConversionsBatchInsertRequest {
        conversions?: Dfareporting.Schema.Conversion[];
        encryptionInfo?: Dfareporting.Schema.EncryptionInfo;
        kind?: string;
      }


interface ConversionsBatchInsertResponse {
        hasFailures?: boolean;
        kind?: string;
        status?: Dfareporting.Schema.ConversionStatus[];
      }


interface ConversionsBatchUpdateRequest {
        conversions?: Dfareporting.Schema.Conversion[];
        encryptionInfo?: Dfareporting.Schema.EncryptionInfo;
        kind?: string;
      }


interface ConversionsBatchUpdateResponse {
        hasFailures?: boolean;
        kind?: string;
        status?: Dfareporting.Schema.ConversionStatus[];
      }


interface CountriesListResponse {
        countries?: Dfareporting.Schema.Country[];
        kind?: string;
      }


interface Country {
        countryCode?: string;
        dartId?: string;
        kind?: string;
        name?: string;
        sslEnabled?: boolean;
      }


interface Creative {
        accountId?: string;
        active?: boolean;
        adParameters?: string;
        adTagKeys?: string[];
        additionalSizes?: Dfareporting.Schema.Size[];
        advertiserId?: string;
        allowScriptAccess?: boolean;
        archived?: boolean;
        artworkType?: string;
        authoringSource?: string;
        authoringTool?: string;
        autoAdvanceImages?: boolean;
        backgroundColor?: string;
        backupImageClickThroughUrl?: Dfareporting.Schema.CreativeClickThroughUrl;
        backupImageFeatures?: string[];
        backupImageReportingLabel?: string;
        backupImageTargetWindow?: Dfareporting.Schema.TargetWindow;
        clickTags?: Dfareporting.Schema.ClickTag[];
        commercialId?: string;
        companionCreatives?: string[];
        compatibility?: string[];
        convertFlashToHtml5?: boolean;
        counterCustomEvents?: Dfareporting.Schema.CreativeCustomEvent[];
        creativeAssetSelection?: Dfareporting.Schema.CreativeAssetSelection;
        creativeAssets?: Dfareporting.Schema.CreativeAsset[];
        creativeFieldAssignments?: Dfareporting.Schema.CreativeFieldAssignment[];
        customKeyValues?: string[];
        dynamicAssetSelection?: boolean;
        exitCustomEvents?: Dfareporting.Schema.CreativeCustomEvent[];
        fsCommand?: Dfareporting.Schema.FsCommand;
        htmlCode?: string;
        htmlCodeLocked?: boolean;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        latestTraffickedCreativeId?: string;
        mediaDescription?: string;
        mediaDuration?: number;
        name?: string;
        overrideCss?: string;
        progressOffset?: Dfareporting.Schema.VideoOffset;
        redirectUrl?: string;
        renderingId?: string;
        renderingIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        requiredFlashPluginVersion?: string;
        requiredFlashVersion?: number;
        size?: Dfareporting.Schema.Size;
        skipOffset?: Dfareporting.Schema.VideoOffset;
        skippable?: boolean;
        sslCompliant?: boolean;
        sslOverride?: boolean;
        studioAdvertiserId?: string;
        studioCreativeId?: string;
        studioTraffickedCreativeId?: string;
        subaccountId?: string;
        thirdPartyBackupImageImpressionsUrl?: string;
        thirdPartyRichMediaImpressionsUrl?: string;
        thirdPartyUrls?: Dfareporting.Schema.ThirdPartyTrackingUrl[];
        timerCustomEvents?: Dfareporting.Schema.CreativeCustomEvent[];
        totalFileSize?: string;
        type?: string;
        universalAdId?: Dfareporting.Schema.UniversalAdId;
        version?: number;
      }


interface CreativeAsset {
        actionScript3?: boolean;
        active?: boolean;
        additionalSizes?: Dfareporting.Schema.Size[];
        alignment?: string;
        artworkType?: string;
        assetIdentifier?: Dfareporting.Schema.CreativeAssetId;
        audioBitRate?: number;
        audioSampleRate?: number;
        backupImageExit?: Dfareporting.Schema.CreativeCustomEvent;
        bitRate?: number;
        childAssetType?: string;
        collapsedSize?: Dfareporting.Schema.Size;
        companionCreativeIds?: string[];
        customStartTimeValue?: number;
        detectedFeatures?: string[];
        displayType?: string;
        duration?: number;
        durationType?: string;
        expandedDimension?: Dfareporting.Schema.Size;
        fileSize?: string;
        flashVersion?: number;
        frameRate?: number;
        hideFlashObjects?: boolean;
        hideSelectionBoxes?: boolean;
        horizontallyLocked?: boolean;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        mediaDuration?: number;
        mimeType?: string;
        offset?: Dfareporting.Schema.OffsetPosition;
        orientation?: string;
        originalBackup?: boolean;
        politeLoad?: boolean;
        position?: Dfareporting.Schema.OffsetPosition;
        positionLeftUnit?: string;
        positionTopUnit?: string;
        progressiveServingUrl?: string;
        pushdown?: boolean;
        pushdownDuration?: number;
        role?: string;
        size?: Dfareporting.Schema.Size;
        sslCompliant?: boolean;
        startTimeType?: string;
        streamingServingUrl?: string;
        transparency?: boolean;
        verticallyLocked?: boolean;
        windowMode?: string;
        zIndex?: number;
        zipFilename?: string;
        zipFilesize?: string;
      }


interface CreativeAssetId {
        name?: string;
        type?: string;
      }


interface CreativeAssetMetadata {
        assetIdentifier?: Dfareporting.Schema.CreativeAssetId;
        clickTags?: Dfareporting.Schema.ClickTag[];
        detectedFeatures?: string[];
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        warnedValidationRules?: string[];
      }


interface CreativeAssetSelection {
        defaultAssetId?: string;
        rules?: Dfareporting.Schema.Rule[];
      }


interface CreativeAssignment {
        active?: boolean;
        applyEventTags?: boolean;
        clickThroughUrl?: Dfareporting.Schema.ClickThroughUrl;
        companionCreativeOverrides?: Dfareporting.Schema.CompanionClickThroughOverride[];
        creativeGroupAssignments?: Dfareporting.Schema.CreativeGroupAssignment[];
        creativeId?: string;
        creativeIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        endTime?: string;
        richMediaExitOverrides?: Dfareporting.Schema.RichMediaExitOverride[];
        sequence?: number;
        sslCompliant?: boolean;
        startTime?: string;
        weight?: number;
      }


interface CreativeClickThroughUrl {
        computedClickThroughUrl?: string;
        customClickThroughUrl?: string;
        landingPageId?: string;
      }


interface CreativeCustomEvent {
        advertiserCustomEventId?: string;
        advertiserCustomEventName?: string;
        advertiserCustomEventType?: string;
        artworkLabel?: string;
        artworkType?: string;
        exitClickThroughUrl?: Dfareporting.Schema.CreativeClickThroughUrl;
        id?: string;
        popupWindowProperties?: Dfareporting.Schema.PopupWindowProperties;
        targetType?: string;
        videoReportingId?: string;
      }


interface CreativeField {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        id?: string;
        kind?: string;
        name?: string;
        subaccountId?: string;
      }


interface CreativeFieldAssignment {
        creativeFieldId?: string;
        creativeFieldValueId?: string;
      }


interface CreativeFieldValue {
        id?: string;
        kind?: string;
        value?: string;
      }


interface CreativeFieldValuesListResponse {
        creativeFieldValues?: Dfareporting.Schema.CreativeFieldValue[];
        kind?: string;
        nextPageToken?: string;
      }


interface CreativeFieldsListResponse {
        creativeFields?: Dfareporting.Schema.CreativeField[];
        kind?: string;
        nextPageToken?: string;
      }


interface CreativeGroup {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        groupNumber?: number;
        id?: string;
        kind?: string;
        name?: string;
        subaccountId?: string;
      }


interface CreativeGroupAssignment {
        creativeGroupId?: string;
        creativeGroupNumber?: string;
      }


interface CreativeGroupsListResponse {
        creativeGroups?: Dfareporting.Schema.CreativeGroup[];
        kind?: string;
        nextPageToken?: string;
      }


interface CreativeOptimizationConfiguration {
        id?: string;
        name?: string;
        optimizationActivitys?: Dfareporting.Schema.OptimizationActivity[];
        optimizationModel?: string;
      }


interface CreativeRotation {
        creativeAssignments?: Dfareporting.Schema.CreativeAssignment[];
        creativeOptimizationConfigurationId?: string;
        type?: string;
        weightCalculationStrategy?: string;
      }


interface CreativesListResponse {
        creatives?: Dfareporting.Schema.Creative[];
        kind?: string;
        nextPageToken?: string;
      }


interface CrossDimensionReachReportCompatibleFields {
        breakdown?: Dfareporting.Schema.Dimension[];
        dimensionFilters?: Dfareporting.Schema.Dimension[];
        kind?: string;
        metrics?: Dfareporting.Schema.Metric[];
        overlapMetrics?: Dfareporting.Schema.Metric[];
      }


interface CustomFloodlightVariable {
        kind?: string;
        type?: string;
        value?: string;
      }


interface CustomRichMediaEvents {
        filteredEventIds?: Dfareporting.Schema.DimensionValue[];
        kind?: string;
      }


interface CustomViewabilityMetric {
        configuration?: Dfareporting.Schema.CustomViewabilityMetricConfiguration;
        id?: string;
        name?: string;
      }


interface CustomViewabilityMetricConfiguration {
        audible?: boolean;
        timeMillis?: number;
        timePercent?: number;
        viewabilityPercent?: number;
      }


interface DateRange {
        endDate?: string;
        kind?: string;
        relativeDateRange?: string;
        startDate?: string;
      }


interface DayPartTargeting {
        daysOfWeek?: string[];
        hoursOfDay?: number[];
        userLocalTime?: boolean;
      }


interface DeepLink {
        appUrl?: string;
        fallbackUrl?: string;
        kind?: string;
        mobileApp?: Dfareporting.Schema.MobileApp;
        remarketingListIds?: string[];
      }


interface DefaultClickThroughEventTagProperties {
        defaultClickThroughEventTagId?: string;
        overrideInheritedEventTag?: boolean;
      }


interface DeliverySchedule {
        frequencyCap?: Dfareporting.Schema.FrequencyCap;
        hardCutoff?: boolean;
        impressionRatio?: string;
        priority?: string;
      }


interface DfpSettings {
        dfpNetworkCode?: string;
        dfpNetworkName?: string;
        programmaticPlacementAccepted?: boolean;
        pubPaidPlacementAccepted?: boolean;
        publisherPortalOnly?: boolean;
      }


interface Dimension {
        kind?: string;
        name?: string;
      }


interface DimensionFilter {
        dimensionName?: string;
        kind?: string;
        value?: string;
      }


interface DimensionValue {
        dimensionName?: string;
        etag?: string;
        id?: string;
        kind?: string;
        matchType?: string;
        value?: string;
      }


interface DimensionValueList {
        etag?: string;
        items?: Dfareporting.Schema.DimensionValue[];
        kind?: string;
        nextPageToken?: string;
      }


interface DimensionValueRequest {
        dimensionName?: string;
        endDate?: string;
        filters?: Dfareporting.Schema.DimensionFilter[];
        kind?: string;
        startDate?: string;
      }


interface DirectorySite {
        active?: boolean;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        inpageTagFormats?: string[];
        interstitialTagFormats?: string[];
        kind?: string;
        name?: string;
        settings?: Dfareporting.Schema.DirectorySiteSettings;
        url?: string;
      }


interface DirectorySiteSettings {
        activeViewOptOut?: boolean;
        dfpSettings?: Dfareporting.Schema.DfpSettings;
        instreamVideoPlacementAccepted?: boolean;
        interstitialPlacementAccepted?: boolean;
      }


interface DirectorySitesListResponse {
        directorySites?: Dfareporting.Schema.DirectorySite[];
        kind?: string;
        nextPageToken?: string;
      }


interface DynamicTargetingKey {
        kind?: string;
        name?: string;
        objectId?: string;
        objectType?: string;
      }


interface DynamicTargetingKeysListResponse {
        dynamicTargetingKeys?: Dfareporting.Schema.DynamicTargetingKey[];
        kind?: string;
      }


interface EncryptionInfo {
        encryptionEntityId?: string;
        encryptionEntityType?: string;
        encryptionSource?: string;
        kind?: string;
      }


interface EventTag {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        campaignId?: string;
        campaignIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        enabledByDefault?: boolean;
        excludeFromAdxRequests?: boolean;
        id?: string;
        kind?: string;
        name?: string;
        siteFilterType?: string;
        siteIds?: string[];
        sslCompliant?: boolean;
        status?: string;
        subaccountId?: string;
        type?: string;
        url?: string;
        urlEscapeLevels?: number;
      }


interface EventTagOverride {
        enabled?: boolean;
        id?: string;
      }


interface EventTagsListResponse {
        eventTags?: Dfareporting.Schema.EventTag[];
        kind?: string;
      }


interface File {
        dateRange?: Dfareporting.Schema.DateRange;
        etag?: string;
        fileName?: string;
        format?: string;
        id?: string;
        kind?: string;
        lastModifiedTime?: string;
        reportId?: string;
        status?: string;
        urls?: Dfareporting.Schema.FileUrls;
      }


interface FileList {
        etag?: string;
        items?: Dfareporting.Schema.File[];
        kind?: string;
        nextPageToken?: string;
      }


interface FileUrls {
        apiUrl?: string;
        browserUrl?: string;
      }


interface Flight {
        endDate?: string;
        rateOrCost?: string;
        startDate?: string;
        units?: string;
      }


interface FloodlightActivitiesGenerateTagResponse {
        floodlightActivityTag?: string;
        globalSiteTagGlobalSnippet?: string;
        kind?: string;
      }


interface FloodlightActivitiesListResponse {
        floodlightActivities?: Dfareporting.Schema.FloodlightActivity[];
        kind?: string;
        nextPageToken?: string;
      }


interface FloodlightActivity {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        cacheBustingType?: string;
        countingMethod?: string;
        defaultTags?: Dfareporting.Schema.FloodlightActivityDynamicTag[];
        expectedUrl?: string;
        floodlightActivityGroupId?: string;
        floodlightActivityGroupName?: string;
        floodlightActivityGroupTagString?: string;
        floodlightActivityGroupType?: string;
        floodlightConfigurationId?: string;
        floodlightConfigurationIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        floodlightTagType?: string;
        hidden?: boolean;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        name?: string;
        notes?: string;
        publisherTags?: Dfareporting.Schema.FloodlightActivityPublisherDynamicTag[];
        secure?: boolean;
        sslCompliant?: boolean;
        sslRequired?: boolean;
        subaccountId?: string;
        tagFormat?: string;
        tagString?: string;
        userDefinedVariableTypes?: string[];
      }


interface FloodlightActivityDynamicTag {
        id?: string;
        name?: string;
        tag?: string;
      }


interface FloodlightActivityGroup {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        floodlightConfigurationId?: string;
        floodlightConfigurationIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        name?: string;
        subaccountId?: string;
        tagString?: string;
        type?: string;
      }


interface FloodlightActivityGroupsListResponse {
        floodlightActivityGroups?: Dfareporting.Schema.FloodlightActivityGroup[];
        kind?: string;
        nextPageToken?: string;
      }


interface FloodlightActivityPublisherDynamicTag {
        clickThrough?: boolean;
        directorySiteId?: string;
        dynamicTag?: Dfareporting.Schema.FloodlightActivityDynamicTag;
        siteId?: string;
        siteIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        viewThrough?: boolean;
      }


interface FloodlightConfiguration {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        analyticsDataSharingEnabled?: boolean;
        customViewabilityMetric?: Dfareporting.Schema.CustomViewabilityMetric;
        exposureToConversionEnabled?: boolean;
        firstDayOfWeek?: string;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        inAppAttributionTrackingEnabled?: boolean;
        kind?: string;
        lookbackConfiguration?: Dfareporting.Schema.LookbackConfiguration;
        naturalSearchConversionAttributionOption?: string;
        omnitureSettings?: Dfareporting.Schema.OmnitureSettings;
        subaccountId?: string;
        tagSettings?: Dfareporting.Schema.TagSettings;
        thirdPartyAuthenticationTokens?: Dfareporting.Schema.ThirdPartyAuthenticationToken[];
        userDefinedVariableConfigurations?: Dfareporting.Schema.UserDefinedVariableConfiguration[];
      }


interface FloodlightConfigurationsListResponse {
        floodlightConfigurations?: Dfareporting.Schema.FloodlightConfiguration[];
        kind?: string;
      }


interface FloodlightReportCompatibleFields {
        dimensionFilters?: Dfareporting.Schema.Dimension[];
        dimensions?: Dfareporting.Schema.Dimension[];
        kind?: string;
        metrics?: Dfareporting.Schema.Metric[];
      }


interface FrequencyCap {
        duration?: string;
        impressions?: string;
      }


interface FsCommand {
        left?: number;
        positionOption?: string;
        top?: number;
        windowHeight?: number;
        windowWidth?: number;
      }


interface GeoTargeting {
        cities?: Dfareporting.Schema.City[];
        countries?: Dfareporting.Schema.Country[];
        excludeCountries?: boolean;
        metros?: Dfareporting.Schema.Metro[];
        postalCodes?: Dfareporting.Schema.PostalCode[];
        regions?: Dfareporting.Schema.Region[];
      }


interface InventoryItem {
        accountId?: string;
        adSlots?: Dfareporting.Schema.AdSlot[];
        advertiserId?: string;
        contentCategoryId?: string;
        estimatedClickThroughRate?: string;
        estimatedConversionRate?: string;
        id?: string;
        inPlan?: boolean;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        name?: string;
        negotiationChannelId?: string;
        orderId?: string;
        placementStrategyId?: string;
        pricing?: Dfareporting.Schema.Pricing;
        projectId?: string;
        rfpId?: string;
        siteId?: string;
        subaccountId?: string;
        type?: string;
      }


interface InventoryItemsListResponse {
        inventoryItems?: Dfareporting.Schema.InventoryItem[];
        kind?: string;
        nextPageToken?: string;
      }


interface KeyValueTargetingExpression {
        expression?: string;
      }


interface LandingPage {
        advertiserId?: string;
        archived?: boolean;
        deepLinks?: Dfareporting.Schema.DeepLink[];
        id?: string;
        kind?: string;
        name?: string;
        url?: string;
      }


interface Language {
        id?: string;
        kind?: string;
        languageCode?: string;
        name?: string;
      }


interface LanguageTargeting {
        languages?: Dfareporting.Schema.Language[];
      }


interface LanguagesListResponse {
        kind?: string;
        languages?: Dfareporting.Schema.Language[];
      }


interface LastModifiedInfo {
        time?: string;
      }


interface ListPopulationClause {
        terms?: Dfareporting.Schema.ListPopulationTerm[];
      }


interface ListPopulationRule {
        floodlightActivityId?: string;
        floodlightActivityName?: string;
        listPopulationClauses?: Dfareporting.Schema.ListPopulationClause[];
      }


interface ListPopulationTerm {
        contains?: boolean;
        negation?: boolean;
        operator?: string;
        remarketingListId?: string;
        type?: string;
        value?: string;
        variableFriendlyName?: string;
        variableName?: string;
      }


interface ListTargetingExpression {
        expression?: string;
      }


interface LookbackConfiguration {
        clickDuration?: number;
        postImpressionActivitiesDuration?: number;
      }


interface Metric {
        kind?: string;
        name?: string;
      }


interface Metro {
        countryCode?: string;
        countryDartId?: string;
        dartId?: string;
        dmaId?: string;
        kind?: string;
        metroCode?: string;
        name?: string;
      }


interface MetrosListResponse {
        kind?: string;
        metros?: Dfareporting.Schema.Metro[];
      }


interface MobileApp {
        directory?: string;
        id?: string;
        kind?: string;
        publisherName?: string;
        title?: string;
      }


interface MobileAppsListResponse {
        kind?: string;
        mobileApps?: Dfareporting.Schema.MobileApp[];
        nextPageToken?: string;
      }


interface MobileCarrier {
        countryCode?: string;
        countryDartId?: string;
        id?: string;
        kind?: string;
        name?: string;
      }


interface MobileCarriersListResponse {
        kind?: string;
        mobileCarriers?: Dfareporting.Schema.MobileCarrier[];
      }


interface ObjectFilter {
        kind?: string;
        objectIds?: string[];
        status?: string;
      }


interface OffsetPosition {
        left?: number;
        top?: number;
      }


interface OmnitureSettings {
        omnitureCostDataEnabled?: boolean;
        omnitureIntegrationEnabled?: boolean;
      }


interface OperatingSystem {
        dartId?: string;
        desktop?: boolean;
        kind?: string;
        mobile?: boolean;
        name?: string;
      }


interface OperatingSystemVersion {
        id?: string;
        kind?: string;
        majorVersion?: string;
        minorVersion?: string;
        name?: string;
        operatingSystem?: Dfareporting.Schema.OperatingSystem;
      }


interface OperatingSystemVersionsListResponse {
        kind?: string;
        operatingSystemVersions?: Dfareporting.Schema.OperatingSystemVersion[];
      }


interface OperatingSystemsListResponse {
        kind?: string;
        operatingSystems?: Dfareporting.Schema.OperatingSystem[];
      }


interface OptimizationActivity {
        floodlightActivityId?: string;
        floodlightActivityIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        weight?: number;
      }


interface Order {
        accountId?: string;
        advertiserId?: string;
        approverUserProfileIds?: string[];
        buyerInvoiceId?: string;
        buyerOrganizationName?: string;
        comments?: string;
        contacts?: Dfareporting.Schema.OrderContact[];
        id?: string;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        name?: string;
        notes?: string;
        planningTermId?: string;
        projectId?: string;
        sellerOrderId?: string;
        sellerOrganizationName?: string;
        siteId?: string[];
        siteNames?: string[];
        subaccountId?: string;
        termsAndConditions?: string;
      }


interface OrderContact {
        contactInfo?: string;
        contactName?: string;
        contactTitle?: string;
        contactType?: string;
        signatureUserProfileId?: string;
      }


interface OrderDocument {
        accountId?: string;
        advertiserId?: string;
        amendedOrderDocumentId?: string;
        approvedByUserProfileIds?: string[];
        cancelled?: boolean;
        createdInfo?: Dfareporting.Schema.LastModifiedInfo;
        effectiveDate?: string;
        id?: string;
        kind?: string;
        lastSentRecipients?: string[];
        lastSentTime?: string;
        orderId?: string;
        projectId?: string;
        signed?: boolean;
        subaccountId?: string;
        title?: string;
        type?: string;
      }


interface OrderDocumentsListResponse {
        kind?: string;
        nextPageToken?: string;
        orderDocuments?: Dfareporting.Schema.OrderDocument[];
      }


interface OrdersListResponse {
        kind?: string;
        nextPageToken?: string;
        orders?: Dfareporting.Schema.Order[];
      }


interface PathToConversionReportCompatibleFields {
        conversionDimensions?: Dfareporting.Schema.Dimension[];
        customFloodlightVariables?: Dfareporting.Schema.Dimension[];
        kind?: string;
        metrics?: Dfareporting.Schema.Metric[];
        perInteractionDimensions?: Dfareporting.Schema.Dimension[];
      }


interface Placement {
        accountId?: string;
        adBlockingOptOut?: boolean;
        additionalSizes?: Dfareporting.Schema.Size[];
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        archived?: boolean;
        campaignId?: string;
        campaignIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        comment?: string;
        compatibility?: string;
        contentCategoryId?: string;
        createInfo?: Dfareporting.Schema.LastModifiedInfo;
        directorySiteId?: string;
        directorySiteIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        externalId?: string;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        keyName?: string;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        lookbackConfiguration?: Dfareporting.Schema.LookbackConfiguration;
        name?: string;
        paymentApproved?: boolean;
        paymentSource?: string;
        placementGroupId?: string;
        placementGroupIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        placementStrategyId?: string;
        pricingSchedule?: Dfareporting.Schema.PricingSchedule;
        primary?: boolean;
        publisherUpdateInfo?: Dfareporting.Schema.LastModifiedInfo;
        siteId?: string;
        siteIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        size?: Dfareporting.Schema.Size;
        sslRequired?: boolean;
        status?: string;
        subaccountId?: string;
        tagFormats?: string[];
        tagSetting?: Dfareporting.Schema.TagSetting;
        videoActiveViewOptOut?: boolean;
        videoSettings?: Dfareporting.Schema.VideoSettings;
        vpaidAdapterChoice?: string;
      }


interface PlacementAssignment {
        active?: boolean;
        placementId?: string;
        placementIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        sslRequired?: boolean;
      }


interface PlacementGroup {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        archived?: boolean;
        campaignId?: string;
        campaignIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        childPlacementIds?: string[];
        comment?: string;
        contentCategoryId?: string;
        createInfo?: Dfareporting.Schema.LastModifiedInfo;
        directorySiteId?: string;
        directorySiteIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        externalId?: string;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        name?: string;
        placementGroupType?: string;
        placementStrategyId?: string;
        pricingSchedule?: Dfareporting.Schema.PricingSchedule;
        primaryPlacementId?: string;
        primaryPlacementIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        siteId?: string;
        siteIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        subaccountId?: string;
      }


interface PlacementGroupsListResponse {
        kind?: string;
        nextPageToken?: string;
        placementGroups?: Dfareporting.Schema.PlacementGroup[];
      }


interface PlacementStrategiesListResponse {
        kind?: string;
        nextPageToken?: string;
        placementStrategies?: Dfareporting.Schema.PlacementStrategy[];
      }


interface PlacementStrategy {
        accountId?: string;
        id?: string;
        kind?: string;
        name?: string;
      }


interface PlacementTag {
        placementId?: string;
        tagDatas?: Dfareporting.Schema.TagData[];
      }


interface PlacementsGenerateTagsResponse {
        kind?: string;
        placementTags?: Dfareporting.Schema.PlacementTag[];
      }


interface PlacementsListResponse {
        kind?: string;
        nextPageToken?: string;
        placements?: Dfareporting.Schema.Placement[];
      }


interface PlatformType {
        id?: string;
        kind?: string;
        name?: string;
      }


interface PlatformTypesListResponse {
        kind?: string;
        platformTypes?: Dfareporting.Schema.PlatformType[];
      }


interface PopupWindowProperties {
        dimension?: Dfareporting.Schema.Size;
        offset?: Dfareporting.Schema.OffsetPosition;
        positionType?: string;
        showAddressBar?: boolean;
        showMenuBar?: boolean;
        showScrollBar?: boolean;
        showStatusBar?: boolean;
        showToolBar?: boolean;
        title?: string;
      }


interface PostalCode {
        code?: string;
        countryCode?: string;
        countryDartId?: string;
        id?: string;
        kind?: string;
      }


interface PostalCodesListResponse {
        kind?: string;
        postalCodes?: Dfareporting.Schema.PostalCode[];
      }


interface Pricing {
        capCostType?: string;
        endDate?: string;
        flights?: Dfareporting.Schema.Flight[];
        groupType?: string;
        pricingType?: string;
        startDate?: string;
      }


interface PricingSchedule {
        capCostOption?: string;
        disregardOverdelivery?: boolean;
        endDate?: string;
        flighted?: boolean;
        floodlightActivityId?: string;
        pricingPeriods?: Dfareporting.Schema.PricingSchedulePricingPeriod[];
        pricingType?: string;
        startDate?: string;
        testingStartDate?: string;
      }


interface PricingSchedulePricingPeriod {
        endDate?: string;
        pricingComment?: string;
        rateOrCostNanos?: string;
        startDate?: string;
        units?: string;
      }


interface Project {
        accountId?: string;
        advertiserId?: string;
        audienceAgeGroup?: string;
        audienceGender?: string;
        budget?: string;
        clientBillingCode?: string;
        clientName?: string;
        endDate?: string;
        id?: string;
        kind?: string;
        lastModifiedInfo?: Dfareporting.Schema.LastModifiedInfo;
        name?: string;
        overview?: string;
        startDate?: string;
        subaccountId?: string;
        targetClicks?: string;
        targetConversions?: string;
        targetCpaNanos?: string;
        targetCpcNanos?: string;
        targetCpmActiveViewNanos?: string;
        targetCpmNanos?: string;
        targetImpressions?: string;
      }


interface ProjectsListResponse {
        kind?: string;
        nextPageToken?: string;
        projects?: Dfareporting.Schema.Project[];
      }


interface ReachReportCompatibleFields {
        dimensionFilters?: Dfareporting.Schema.Dimension[];
        dimensions?: Dfareporting.Schema.Dimension[];
        kind?: string;
        metrics?: Dfareporting.Schema.Metric[];
        pivotedActivityMetrics?: Dfareporting.Schema.Metric[];
        reachByFrequencyMetrics?: Dfareporting.Schema.Metric[];
      }


interface Recipient {
        deliveryType?: string;
        email?: string;
        kind?: string;
      }


interface Region {
        countryCode?: string;
        countryDartId?: string;
        dartId?: string;
        kind?: string;
        name?: string;
        regionCode?: string;
      }


interface RegionsListResponse {
        kind?: string;
        regions?: Dfareporting.Schema.Region[];
      }


interface RemarketingList {
        accountId?: string;
        active?: boolean;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        description?: string;
        id?: string;
        kind?: string;
        lifeSpan?: string;
        listPopulationRule?: Dfareporting.Schema.ListPopulationRule;
        listSize?: string;
        listSource?: string;
        name?: string;
        subaccountId?: string;
      }


interface RemarketingListShare {
        kind?: string;
        remarketingListId?: string;
        sharedAccountIds?: string[];
        sharedAdvertiserIds?: string[];
      }


interface RemarketingListsListResponse {
        kind?: string;
        nextPageToken?: string;
        remarketingLists?: Dfareporting.Schema.RemarketingList[];
      }


interface Report {
        accountId?: string;
        criteria?: Dfareporting.Schema.ReportCriteria;
        crossDimensionReachCriteria?: Dfareporting.Schema.ReportCrossDimensionReachCriteria;
        delivery?: Dfareporting.Schema.ReportDelivery;
        etag?: string;
        fileName?: string;
        floodlightCriteria?: Dfareporting.Schema.ReportFloodlightCriteria;
        format?: string;
        id?: string;
        kind?: string;
        lastModifiedTime?: string;
        name?: string;
        ownerProfileId?: string;
        pathToConversionCriteria?: Dfareporting.Schema.ReportPathToConversionCriteria;
        reachCriteria?: Dfareporting.Schema.ReportReachCriteria;
        schedule?: Dfareporting.Schema.ReportSchedule;
        subAccountId?: string;
        type?: string;
      }


interface ReportCompatibleFields {
        dimensionFilters?: Dfareporting.Schema.Dimension[];
        dimensions?: Dfareporting.Schema.Dimension[];
        kind?: string;
        metrics?: Dfareporting.Schema.Metric[];
        pivotedActivityMetrics?: Dfareporting.Schema.Metric[];
      }


interface ReportCriteria {
        activities?: Dfareporting.Schema.Activities;
        customRichMediaEvents?: Dfareporting.Schema.CustomRichMediaEvents;
        dateRange?: Dfareporting.Schema.DateRange;
        dimensionFilters?: Dfareporting.Schema.DimensionValue[];
        dimensions?: Dfareporting.Schema.SortedDimension[];
        metricNames?: string[];
      }


interface ReportCrossDimensionReachCriteria {
        breakdown?: Dfareporting.Schema.SortedDimension[];
        dateRange?: Dfareporting.Schema.DateRange;
        dimension?: string;
        dimensionFilters?: Dfareporting.Schema.DimensionValue[];
        metricNames?: string[];
        overlapMetricNames?: string[];
        pivoted?: boolean;
      }


interface ReportDelivery {
        emailOwner?: boolean;
        emailOwnerDeliveryType?: string;
        message?: string;
        recipients?: Dfareporting.Schema.Recipient[];
      }


interface ReportFloodlightCriteria {
        customRichMediaEvents?: Dfareporting.Schema.DimensionValue[];
        dateRange?: Dfareporting.Schema.DateRange;
        dimensionFilters?: Dfareporting.Schema.DimensionValue[];
        dimensions?: Dfareporting.Schema.SortedDimension[];
        floodlightConfigId?: Dfareporting.Schema.DimensionValue;
        metricNames?: string[];
        reportProperties?: Dfareporting.Schema.ReportFloodlightCriteriaReportProperties;
      }


interface ReportFloodlightCriteriaReportProperties {
        includeAttributedIPConversions?: boolean;
        includeUnattributedCookieConversions?: boolean;
        includeUnattributedIPConversions?: boolean;
      }


interface ReportList {
        etag?: string;
        items?: Dfareporting.Schema.Report[];
        kind?: string;
        nextPageToken?: string;
      }


interface ReportPathToConversionCriteria {
        activityFilters?: Dfareporting.Schema.DimensionValue[];
        conversionDimensions?: Dfareporting.Schema.SortedDimension[];
        customFloodlightVariables?: Dfareporting.Schema.SortedDimension[];
        customRichMediaEvents?: Dfareporting.Schema.DimensionValue[];
        dateRange?: Dfareporting.Schema.DateRange;
        floodlightConfigId?: Dfareporting.Schema.DimensionValue;
        metricNames?: string[];
        perInteractionDimensions?: Dfareporting.Schema.SortedDimension[];
        reportProperties?: Dfareporting.Schema.ReportPathToConversionCriteriaReportProperties;
      }


interface ReportPathToConversionCriteriaReportProperties {
        clicksLookbackWindow?: number;
        impressionsLookbackWindow?: number;
        includeAttributedIPConversions?: boolean;
        includeUnattributedCookieConversions?: boolean;
        includeUnattributedIPConversions?: boolean;
        maximumClickInteractions?: number;
        maximumImpressionInteractions?: number;
        maximumInteractionGap?: number;
        pivotOnInteractionPath?: boolean;
      }


interface ReportReachCriteria {
        activities?: Dfareporting.Schema.Activities;
        customRichMediaEvents?: Dfareporting.Schema.CustomRichMediaEvents;
        dateRange?: Dfareporting.Schema.DateRange;
        dimensionFilters?: Dfareporting.Schema.DimensionValue[];
        dimensions?: Dfareporting.Schema.SortedDimension[];
        enableAllDimensionCombinations?: boolean;
        metricNames?: string[];
        reachByFrequencyMetricNames?: string[];
      }


interface ReportSchedule {
        active?: boolean;
        every?: number;
        expirationDate?: string;
        repeats?: string;
        repeatsOnWeekDays?: string[];
        runsOnDayOfMonth?: string;
        startDate?: string;
      }


interface ReportsConfiguration {
        exposureToConversionEnabled?: boolean;
        lookbackConfiguration?: Dfareporting.Schema.LookbackConfiguration;
        reportGenerationTimeZoneId?: string;
      }


interface RichMediaExitOverride {
        clickThroughUrl?: Dfareporting.Schema.ClickThroughUrl;
        enabled?: boolean;
        exitId?: string;
      }


interface Rule {
        assetId?: string;
        name?: string;
        targetingTemplateId?: string;
      }


interface Site {
        accountId?: string;
        approved?: boolean;
        directorySiteId?: string;
        directorySiteIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        id?: string;
        idDimensionValue?: Dfareporting.Schema.DimensionValue;
        keyName?: string;
        kind?: string;
        name?: string;
        siteContacts?: Dfareporting.Schema.SiteContact[];
        siteSettings?: Dfareporting.Schema.SiteSettings;
        subaccountId?: string;
        videoSettings?: Dfareporting.Schema.SiteVideoSettings;
      }


interface SiteCompanionSetting {
        companionsDisabled?: boolean;
        enabledSizes?: Dfareporting.Schema.Size[];
        imageOnly?: boolean;
        kind?: string;
      }


interface SiteContact {
        address?: string;
        contactType?: string;
        email?: string;
        firstName?: string;
        id?: string;
        lastName?: string;
        phone?: string;
        title?: string;
      }


interface SiteSettings {
        activeViewOptOut?: boolean;
        adBlockingOptOut?: boolean;
        disableNewCookie?: boolean;
        tagSetting?: Dfareporting.Schema.TagSetting;
        videoActiveViewOptOutTemplate?: boolean;
        vpaidAdapterChoiceTemplate?: string;
      }


interface SiteSkippableSetting {
        kind?: string;
        progressOffset?: Dfareporting.Schema.VideoOffset;
        skipOffset?: Dfareporting.Schema.VideoOffset;
        skippable?: boolean;
      }


interface SiteTranscodeSetting {
        enabledVideoFormats?: number[];
        kind?: string;
      }


interface SiteVideoSettings {
        companionSettings?: Dfareporting.Schema.SiteCompanionSetting;
        kind?: string;
        orientation?: string;
        skippableSettings?: Dfareporting.Schema.SiteSkippableSetting;
        transcodeSettings?: Dfareporting.Schema.SiteTranscodeSetting;
      }


interface SitesListResponse {
        kind?: string;
        nextPageToken?: string;
        sites?: Dfareporting.Schema.Site[];
      }


interface Size {
        height?: number;
        iab?: boolean;
        id?: string;
        kind?: string;
        width?: number;
      }


interface SizesListResponse {
        kind?: string;
        sizes?: Dfareporting.Schema.Size[];
      }


interface SkippableSetting {
        kind?: string;
        progressOffset?: Dfareporting.Schema.VideoOffset;
        skipOffset?: Dfareporting.Schema.VideoOffset;
        skippable?: boolean;
      }


interface SortedDimension {
        kind?: string;
        name?: string;
        sortOrder?: string;
      }


interface Subaccount {
        accountId?: string;
        availablePermissionIds?: string[];
        id?: string;
        kind?: string;
        name?: string;
      }


interface SubaccountsListResponse {
        kind?: string;
        nextPageToken?: string;
        subaccounts?: Dfareporting.Schema.Subaccount[];
      }


interface TagData {
        adId?: string;
        clickTag?: string;
        creativeId?: string;
        format?: string;
        impressionTag?: string;
      }


interface TagSetting {
        additionalKeyValues?: string;
        includeClickThroughUrls?: boolean;
        includeClickTracking?: boolean;
        keywordOption?: string;
      }


interface TagSettings {
        dynamicTagEnabled?: boolean;
        imageTagEnabled?: boolean;
      }


interface TargetWindow {
        customHtml?: string;
        targetWindowOption?: string;
      }


interface TargetableRemarketingList {
        accountId?: string;
        active?: boolean;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        description?: string;
        id?: string;
        kind?: string;
        lifeSpan?: string;
        listSize?: string;
        listSource?: string;
        name?: string;
        subaccountId?: string;
      }


interface TargetableRemarketingListsListResponse {
        kind?: string;
        nextPageToken?: string;
        targetableRemarketingLists?: Dfareporting.Schema.TargetableRemarketingList[];
      }


interface TargetingTemplate {
        accountId?: string;
        advertiserId?: string;
        advertiserIdDimensionValue?: Dfareporting.Schema.DimensionValue;
        dayPartTargeting?: Dfareporting.Schema.DayPartTargeting;
        geoTargeting?: Dfareporting.Schema.GeoTargeting;
        id?: string;
        keyValueTargetingExpression?: Dfareporting.Schema.KeyValueTargetingExpression;
        kind?: string;
        languageTargeting?: Dfareporting.Schema.LanguageTargeting;
        listTargetingExpression?: Dfareporting.Schema.ListTargetingExpression;
        name?: string;
        subaccountId?: string;
        technologyTargeting?: Dfareporting.Schema.TechnologyTargeting;
      }


interface TargetingTemplatesListResponse {
        kind?: string;
        nextPageToken?: string;
        targetingTemplates?: Dfareporting.Schema.TargetingTemplate[];
      }


interface TechnologyTargeting {
        browsers?: Dfareporting.Schema.Browser[];
        connectionTypes?: Dfareporting.Schema.ConnectionType[];
        mobileCarriers?: Dfareporting.Schema.MobileCarrier[];
        operatingSystemVersions?: Dfareporting.Schema.OperatingSystemVersion[];
        operatingSystems?: Dfareporting.Schema.OperatingSystem[];
        platformTypes?: Dfareporting.Schema.PlatformType[];
      }


interface ThirdPartyAuthenticationToken {
        name?: string;
        value?: string;
      }


interface ThirdPartyTrackingUrl {
        thirdPartyUrlType?: string;
        url?: string;
      }


interface TranscodeSetting {
        enabledVideoFormats?: number[];
        kind?: string;
      }


interface UniversalAdId {
        registry?: string;
        value?: string;
      }


interface UserDefinedVariableConfiguration {
        dataType?: string;
        reportName?: string;
        variableType?: string;
      }


interface UserProfile {
        accountId?: string;
        accountName?: string;
        etag?: string;
        kind?: string;
        profileId?: string;
        subAccountId?: string;
        subAccountName?: string;
        userName?: string;
      }


interface UserProfileList {
        etag?: string;
        items?: Dfareporting.Schema.UserProfile[];
        kind?: string;
      }


interface UserRole {
        accountId?: string;
        defaultUserRole?: boolean;
        id?: string;
        kind?: string;
        name?: string;
        parentUserRoleId?: string;
        permissions?: Dfareporting.Schema.UserRolePermission[];
        subaccountId?: string;
      }


interface UserRolePermission {
        availability?: string;
        id?: string;
        kind?: string;
        name?: string;
        permissionGroupId?: string;
      }


interface UserRolePermissionGroup {
        id?: string;
        kind?: string;
        name?: string;
      }


interface UserRolePermissionGroupsListResponse {
        kind?: string;
        userRolePermissionGroups?: Dfareporting.Schema.UserRolePermissionGroup[];
      }


interface UserRolePermissionsListResponse {
        kind?: string;
        userRolePermissions?: Dfareporting.Schema.UserRolePermission[];
      }


interface UserRolesListResponse {
        kind?: string;
        nextPageToken?: string;
        userRoles?: Dfareporting.Schema.UserRole[];
      }


interface VideoFormat {
        fileType?: string;
        id?: number;
        kind?: string;
        resolution?: Dfareporting.Schema.Size;
        targetBitRate?: number;
      }


interface VideoFormatsListResponse {
        kind?: string;
        videoFormats?: Dfareporting.Schema.VideoFormat[];
      }


interface VideoOffset {
        offsetPercentage?: number;
        offsetSeconds?: number;
      }


interface VideoSettings {
        companionSettings?: Dfareporting.Schema.CompanionSetting;
        kind?: string;
        orientation?: string;
        skippableSettings?: Dfareporting.Schema.SkippableSetting;
        transcodeSettings?: Dfareporting.Schema.TranscodeSetting;
      }


function capitalize(str: string) {
  // eslint-disable-next-line @typescript-eslint/restrict-plus-operands
  return str.charAt(0).toUpperCase() + str.slice(1);
}


({ size }: any) => `${size}px`


(props: any) => (
  <div style={


() => (
    <>
      A


() => (
    <Table>
      { appearances.map((a) => (
        <Row key={ a }>
          <Cell>
            <Badge appearance={ a } key={ `${a}` }>
              { capitalize(a) }
            </Badge>
          </Cell>
          <Cell>
            <Badge appearance={ a }


(a) => (
        <Row key={ a }>
          <Cell>
            <Badge appearance


() => (
    <ThemeProvider theme={ theme }>
      <Table>
        { appearances.map((a) => (
          <Row key={ a }>
            <Cell>
              <Badge appearance={ a } key={ `${a}` }>
                { capitalize(a) }
              </Badge>
            </Cell>
            <Cell>
              <Badge appearance


(a) => (
          <Row key={ a }>
            <Cell>
              <Badge appearance


capitalize(a)


(name: string, type: string, urn: string): pulumi.Resource => {
        switch (type) {
            case "google-native:appengine/v1beta:App":
                return new App(name, <any>undefined, { urn })
            case "google-native:appengine/v1beta:AuthorizedCertificate":
                return new AuthorizedCertificate(name, <any>undefined, { urn })
            case "google-native:appengine/v1beta:DomainMapping":
                return new DomainMapping(name, <any>undefined, { urn })
            case "google-native:appengine/v1beta:IngressRule":
                return new IngressRule(name, <any>undefined, { urn })
            case "google-native:appengine/v1beta:Version":
                return new Version(name, <any>undefined, { urn })
            default:
                throw new Error(`unknown resource type ${type}`);
        }
    }


class Application {

    public static main(): void {
        const canvas: Canvas = new Canvas(320, 200, new FeedbackRadialBlur());
        canvas.init();
    }

}


public static main(): void {
        const canvas: Canvas = new Canvas(320, 200, new FeedbackRadialBlur());
        canvas.init();
    }


async (): Promise<Book[]> => Object.values(books)


async (id: number): Promise<Book> => books[id]


async (newBook: BaseBook): Promise<Book> => {
    const id = new Date().valueOf();
    Logger.debug(`Adding new Book with id ${id}: ${JSON.stringify(newBook)}`);
    newBook.releaseDate = newBook.releaseDate ? new Date(newBook.releaseDate).toDateString() : "";
    books[id] = { id, ...newBook };
    return books[id];
}


async (id: number, bookUpdate: BaseBook): Promise<Book | null> => {
    const book = await find(id);

    if (!book) {
        return null;
    }
    Logger.debug(`Updating Book for id ${id}: ${JSON.stringify(bookUpdate)}`);
    bookUpdate.releaseDate = bookUpdate.releaseDate ? new Date(bookUpdate.releaseDate).toDateString() : "";

    books[id] = { id, ...bookUpdate };

    return books[id];
}


async (id: number): Promise<null | void> => {
    const book = await find(id);

    if (!book) {
        return null;
    }

    Logger.debug(`Deleting Book for id ${id}`);

    delete books[id];
}


class LongTap extends Control {
   _template: TemplateFunction = template;

   _longTapCount: number = 0;
   _swipeCount: number = 0;
   _tapCount: number = 0;

   _beforeMount() {
      this._longTapCount = 0;
      this._swipeCount = 0;
      this._tapCount = 0;
   }

   _longClick() {
      this._longTapCount += 1;
   }

   _simpleClick() {
      this._tapCount += 1;
   }
   _swipe() {
      this._swipeCount += 1;
   }
}


_beforeMount() {
      this._longTapCount = 0;
      this._swipeCount = 0;
      this._tapCount = 0;
   }


_longClick() {
      this._longTapCount += 1;
   }


_simpleClick() {
      this._tapCount += 1;
   }


_swipe() {
      this._swipeCount += 1;
   }


export default function (conn: PoolClient) {
  return {
    async createLocation(token: string, name: string, description: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const id = uuid()
      const createLocationResponse = await conn.query({
        text: `INSERT INTO "locations" ("id", "name", "description") VALUES ($1, $2, $3) RETURNING *;`,
        values: [
          id,
          name,
          description
        ]
      })
        .then((res) => {
          console.log(res.rows[0])
          return {
            code: 201,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: '',
          }
        })
      return createLocationResponse
    },
    async getLocations(token: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          locations: []
        }
      }
      const dbResponse = await conn.query({
        text: 'SELECT * FROM locations',
        values: []
      })
        .then((res) => {
          console.log(res.rows)
          return {
            code: 200,
            success: true,
            locations: res.rows
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            locations: []
          }
        })
      return dbResponse
    },
    async getLocation(id: string, token: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const dbResponse = await conn.query({
        text: 'SELECT * FROM locations WHERE id=$1',
        values: [
          id
        ]
      })
        .then((res) => {
          console.log(res.rows[0])
          return {
            code: 200,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: ''
          }
        })
      return dbResponse
    },
    async updateLocation(id: string, token: string, name: string, description: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const dbResponse = await conn.query({
        text: 'UPDATE locations SET name=$2, description=$3 WHERE "id"=$1 RETURNING *;',
        values: [
          id,
          name,
          description
        ]
      })
        .then((res) => {
          console.log(res.rows[0])
          return {
            code: 200,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: ''
          }
        })
      return dbResponse
    },
    async deleteLocation(id: string, token: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const dbResponse = await conn.query({
        text: 'DELETE FROM locations WHERE id=$1',
        values: [
          id
        ]
      })
        .then((res) => {
          return {
            code: 204,
            success: true
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
          }
        })
      return dbResponse
    },
    async getUserIdFromToken(token: string) {
      const dbResponse = conn.query({
        text: `SELECT * FROM auth WHERE token=$1`,
        values: [
          token
        ]
      })
        .then((res) => {
          if (res && res.rows.length > 0) {
            return {
              code: 200,
              success: true,
              userId: res.rows[0].userid
            }
          }
          throw Error('Invalid token')
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 403,
            success: false,
            userId: undefined
          }
        })
      return dbResponse
    }
  }
}


(res) => {
          console.log(res.rows[0])
          return {
            code: 201,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        }


(err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: '',
          }
        }


(res) => {
          console.log(res.rows)
          return {
            code: 200,
            success: true,
            locations: res.rows
          }
        }


(err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            locations: []
          }
        }


(res) => {
          console.log(res.rows[0])
          return {
            code: 200,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        }


(err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: ''
          }
        }


(res) => {
          return {
            code: 204,
            success: true
          }
        }


(err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
          }
        }


(res) => {
          if (res && res.rows.length > 0) {
            return {
              code: 200,
              success: true,
              userId: res.rows[0].userid
            }
          }
          throw Error('Invalid token')
        }


(err) => {
          console.error(err)
          return {
            code: 403,
            success: false,
            userId: undefined
          }
        }


async createLocation(token: string, name: string, description: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const id = uuid()
      const createLocationResponse = await conn.query({
        text: `INSERT INTO "locations" ("id", "name", "description") VALUES ($1, $2, $3) RETURNING *;`,
        values: [
          id,
          name,
          description
        ]
      })
        .then((res) => {
          console.log(res.rows[0])
          return {
            code: 201,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: '',
          }
        })
      return createLocationResponse
    }


async getLocations(token: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          locations: []
        }
      }
      const dbResponse = await conn.query({
        text: 'SELECT * FROM locations',
        values: []
      })
        .then((res) => {
          console.log(res.rows)
          return {
            code: 200,
            success: true,
            locations: res.rows
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            locations: []
          }
        })
      return dbResponse
    }


async getLocation(id: string, token: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const dbResponse = await conn.query({
        text: 'SELECT * FROM locations WHERE id=$1',
        values: [
          id
        ]
      })
        .then((res) => {
          console.log(res.rows[0])
          return {
            code: 200,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: ''
          }
        })
      return dbResponse
    }


async updateLocation(id: string, token: string, name: string, description: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const dbResponse = await conn.query({
        text: 'UPDATE locations SET name=$2, description=$3 WHERE "id"=$1 RETURNING *;',
        values: [
          id,
          name,
          description
        ]
      })
        .then((res) => {
          console.log(res.rows[0])
          return {
            code: 200,
            success: true,
            id: res.rows[0].id,
            name: res.rows[0].name,
            description: res.rows[0].description
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
            id: '',
            name: '',
            description: ''
          }
        })
      return dbResponse
    }


async deleteLocation(id: string, token: string) {
      const authenticatedUser = await this.getUserIdFromToken(token)
      if (!authenticatedUser.success) {
        return {
          code: 403,
          success: false,
          id: '',
          name: '',
          description: ''
        }
      }
      const dbResponse = await conn.query({
        text: 'DELETE FROM locations WHERE id=$1',
        values: [
          id
        ]
      })
        .then((res) => {
          return {
            code: 204,
            success: true
          }
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 500,
            success: false,
          }
        })
      return dbResponse
    }


async getUserIdFromToken(token: string) {
      const dbResponse = conn.query({
        text: `SELECT * FROM auth WHERE token=$1`,
        values: [
          token
        ]
      })
        .then((res) => {
          if (res && res.rows.length > 0) {
            return {
              code: 200,
              success: true,
              userId: res.rows[0].userid
            }
          }
          throw Error('Invalid token')
        })
        .catch((err) => {
          console.error(err)
          return {
            code: 403,
            success: false,
            userId: undefined
          }
        })
      return dbResponse
    }


export default function ClockPointer({
  rotateDeg,
  isHourView,
  isTransition,
  onTransitionChange,
  ...rest
}: {
  rotateDeg: number;
  isHourView: boolean;
  isTransition: boolean;
  onTransitionChange: (transitionValue: boolean) => void;
}) {
  const hourViewRef = useRef(isHourView);

  useEffect(() => {
    // 时分视图切换时 增加指针旋转动画
    if (hourViewRef.current !== isHourView) {
      onTransitionChange(true);
    }
    hourViewRef.current = isHourView;
  }, [isHourView, onTransitionChange]);

  return (
    <Wrapper $rotateDeg={rotateDeg} $isTransition={isTransition} {...rest}>
      <MinuteDot
        className="sinoui-clock__pointer-minute-dot"
        $selected={!isHourView && rotateDeg % 5 !== 0}


({ theme }) => theme.palette.primary.main


(props) =>
    props.$isTransition &&
    `transition: ${props.theme.transitions.create('transform')}`


({ $rotateDeg = 0 }) => `rotate3d(0,0,1,${$rotateDeg}deg)`


({ theme, $selected }) =>
    $selected ? '#fff' : theme.palette.primary.main


() => {
    // 时分视图切换时 增加指针旋转动画
    if (hourViewRef.current !== isHourView) {
      onTransitionChange(true);
    }
    hourViewRef.current = isHourView;
  }


/**
 * @deprecated
 *
 *

 *             DescribeExportConfigurations is deprecated. Use DescribeImportTasks, instead.

 */
export class DescribeExportConfigurationsCommand extends $Command<
  DescribeExportConfigurationsCommandInput,
  DescribeExportConfigurationsCommandOutput,
  ApplicationDiscoveryServiceClientResolvedConfig
> {
  // Start section: command_properties
  // End section: command_properties

  constructor(readonly input: DescribeExportConfigurationsCommandInput) {
    // Start section: command_constructor
    super();
    // End section: command_constructor
  }

  /**
   * @internal
   */
  resolveMiddleware(
    clientStack: MiddlewareStack<ServiceInputTypes, ServiceOutputTypes>,
    configuration: ApplicationDiscoveryServiceClientResolvedConfig,
    options?: __HttpHandlerOptions
  ): Handler<DescribeExportConfigurationsCommandInput, DescribeExportConfigurationsCommandOutput> {
    this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));

    const stack = clientStack.concat(this.middlewareStack);

    const { logger } = configuration;
    const clientName = "ApplicationDiscoveryServiceClient";
    const commandName = "DescribeExportConfigurationsCommand";
    const handlerExecutionContext: HandlerExecutionContext = {
      logger,
      clientName,
      commandName,
      inputFilterSensitiveLog: DescribeExportConfigurationsRequest.filterSensitiveLog,
      outputFilterSensitiveLog: DescribeExportConfigurationsResponse.filterSensitiveLog,
    };
    const { requestHandler } = configuration;
    return stack.resolve(
      (request: FinalizeHandlerArguments<any>) =>
        requestHandler.handle(request.request as __HttpRequest, options || {}),
      handlerExecutionContext
    );
  }

  private serialize(input: DescribeExportConfigurationsCommandInput, context: __SerdeContext): Promise<__HttpRequest> {
    return serializeAws_json1_1DescribeExportConfigurationsCommand(input, context);
  }

  private deserialize(
    output: __HttpResponse,
    context: __SerdeContext
  ): Promise<DescribeExportConfigurationsCommandOutput> {
    return deserializeAws_json1_1DescribeExportConfigurationsCommand(output, context);
  }

  // Start section: command_body_extra
  // End section: command_body_extra
}


export interface DescribeExportConfigurationsCommandInput extends DescribeExportConfigurationsRequest {}


export interface DescribeExportConfigurationsCommandOutput
  extends DescribeExportConfigurationsResponse,
    __MetadataBearer {}


/**
   * @internal
   */
resolveMiddleware(
    clientStack: MiddlewareStack<ServiceInputTypes, ServiceOutputTypes>,
    configuration: ApplicationDiscoveryServiceClientResolvedConfig,
    options?: __HttpHandlerOptions
  ): Handler<DescribeExportConfigurationsCommandInput, DescribeExportConfigurationsCommandOutput> {
    this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));

    const stack = clientStack.concat(this.middlewareStack);

    const { logger } = configuration;
    const clientName = "ApplicationDiscoveryServiceClient";
    const commandName = "DescribeExportConfigurationsCommand";
    const handlerExecutionContext: HandlerExecutionContext = {
      logger,
      clientName,
      commandName,
      inputFilterSensitiveLog: DescribeExportConfigurationsRequest.filterSensitiveLog,
      outputFilterSensitiveLog: DescribeExportConfigurationsResponse.filterSensitiveLog,
    };
    const { requestHandler } = configuration;
    return stack.resolve(
      (request: FinalizeHandlerArguments<any>) =>
        requestHandler.handle(request.request as __HttpRequest, options || {}),
      handlerExecutionContext
    );
  }


private serialize(input: DescribeExportConfigurationsCommandInput, context: __SerdeContext): Promise<__HttpRequest> {
    return serializeAws_json1_1DescribeExportConfigurationsCommand(input, context);
  }


private deserialize(
    output: __HttpResponse,
    context: __SerdeContext
  ): Promise<DescribeExportConfigurationsCommandOutput> {
    return deserializeAws_json1_1DescribeExportConfigurationsCommand(output, context);
  }


export interface AjaxRequestConfig {
  url?: string
  method?: Method
  data?: any
  params?: any
  headers?: any
  responseType?: XMLHttpRequestResponseType
  timeout?: number
  transformRequest?: AjaxTransformer | AjaxTransformer[]
  transformResponse?: AjaxTransformer | AjaxTransformer[]
  cancelToken?: CancelToken
  withCredentials?: boolean
  xsrfCookieName?: string
  xsrfHeaderName?: string
  onDownloadProgress?: (e: ProgressEvent) => void
  onUploadProgress?: (e: ProgressEvent) => void
  auth?: AjaxBasicCredentials
  validateStatus?: (status: number) => boolean
  paramsSerializer?: (params: any) => string
  baseURL?: string

  [propName: string]: any
}


export interface AjaxResponse<T = any> {
  data: T
  status: number
  statusText: string
  headers: any
  config: AjaxRequestConfig
  request: any
}


export interface AjaxPromise<T = any> extends Promise<AjaxResponse<T>> {}


export interface AjaxError extends Error {
  config: AjaxRequestConfig
  code?: string
  request?: any
  response?: AjaxResponse
  isAjaxError: boolean
}


export interface Ajax {
  defaults: AjaxRequestConfig
  interceptors: {
    request: AjaxInterceptorManager<AjaxRequestConfig>
    response: AjaxInterceptorManager<AjaxResponse>
  }

  request<T = any>(config: AjaxRequestConfig): AjaxPromise<T>

  get<T = any>(url: string, config?: AjaxRequestConfig): AjaxPromise<T>

  delete<T = any>(url: string, config?: AjaxRequestConfig): AjaxPromise<T>

  head<T = any>(url: string, config?: AjaxRequestConfig): AjaxPromise<T>

  options<T = any>(url: string, config?: AjaxRequestConfig): AjaxPromise<T>

  post<T = any>(url: string, data?: any, config?: AjaxRequestConfig): AjaxPromise<T>

  put<T = any>(url: string, data?: any, config?: AjaxRequestConfig): AjaxPromise<T>

  patch<T = any>(url: string, data?: any, config?: AjaxRequestConfig): AjaxPromise<T>

  getUri(config?: AjaxRequestConfig): string
}


export interface AjaxInstance extends Ajax {
  <T = any>(config: AjaxRequestConfig): AjaxPromise<T>

  <T = any>(url: string, config?: AjaxRequestConfig): AjaxPromise<T>
}


export interface AjaxClassStatic {
  new (config: AjaxRequestConfig): Ajax
}