UNPKG

data-and-reporting-sdk

Version:

Data And Reporting product consists of API's which provides details of transaction and invoice informations about shell cards. The Shell Card Transaction and Invoice API is REST-based and employs Basic authentication in Version 1 and Oauth authentication

1,217 lines (1,202 loc) 43.2 kB
/** * Shell Data & Reporting APIsLib * * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ). */ import { ApiResponse, RequestOptions } from '../core'; import { CardUsageSummaryRequest, cardUsageSummaryRequestSchema, } from '../models/cardUsageSummaryRequest'; import { CardUsageSummaryResponse, cardUsageSummaryResponseSchema, } from '../models/cardUsageSummaryResponse'; import { FeeSummaryResponse, feeSummaryResponseSchema, } from '../models/feeSummaryResponse'; import { FuelConsumptionRequest, fuelConsumptionRequestSchema, } from '../models/fuelConsumptionRequest'; import { FuelConsumptionResponse, fuelConsumptionResponseSchema, } from '../models/fuelConsumptionResponse'; import { MultiPricedTransactionRequest, multiPricedTransactionRequestSchema, } from '../models/multiPricedTransactionRequest'; import { MultiPricedTransactionResponse, multiPricedTransactionResponseSchema, } from '../models/multiPricedTransactionResponse'; import { PricedTransactionRequestV2, pricedTransactionRequestV2Schema, } from '../models/pricedTransactionRequestV2'; import { PricedTransactionResponse, pricedTransactionResponseSchema, } from '../models/pricedTransactionResponse'; import { PricedTransactionResponseV2, pricedTransactionResponseV2Schema, } from '../models/pricedTransactionResponseV2'; import { PricedTransSummaryResponse, pricedTransSummaryResponseSchema, } from '../models/pricedTransSummaryResponse'; import { PriceTransactionRequest, priceTransactionRequestSchema, } from '../models/priceTransactionRequest'; import { PriceTransSummaryRequest, priceTransSummaryRequestSchema, } from '../models/priceTransSummaryRequest'; import { RecentTransactionRequest, recentTransactionRequestSchema, } from '../models/recentTransactionRequest'; import { RecentTransactionsResponse, recentTransactionsResponseSchema, } from '../models/recentTransactionsResponse'; import { TransactionExceptionsRequest, transactionExceptionsRequestSchema, } from '../models/transactionExceptionsRequest'; import { TransactionExceptionsResponse, transactionExceptionsResponseSchema, } from '../models/transactionExceptionsResponse'; import { TransactionFeesRequest, transactionFeesRequestSchema, } from '../models/transactionFeesRequest'; import { TransactionFeesResponse, transactionFeesResponseSchema, } from '../models/transactionFeesResponse'; import { UpdateOdometerRequest, updateOdometerRequestSchema, } from '../models/updateOdometerRequest'; import { UpdateOdometerResponse, updateOdometerResponseSchema, } from '../models/updateOdometerResponse'; import { VolumeBasedBonusRequest, volumeBasedBonusRequestSchema, } from '../models/volumeBasedBonusRequest'; import { VolumeBasedBonusResponse, volumeBasedBonusResponseSchema, } from '../models/volumeBasedBonusResponse'; import { VolumeBasedPricingRequest, volumeBasedPricingRequestSchema, } from '../models/volumeBasedPricingRequest'; import { VolumeBasedPricingResponse, volumeBasedPricingResponseSchema, } from '../models/volumeBasedPricingResponse'; import { optional, string } from '../schema'; import { BaseController } from './baseController'; import { DefaultError } from '../errors/defaultError'; import { ErrorObjectError } from '../errors/errorObjectError'; import { ErrorUserAccessError1Error } from '../errors/errorUserAccessError1Error'; export class TransactionController extends BaseController { /** * This API allows querying transaction data (i.e. Priced, Billed and Unbilled sales items). It * provides a flexible search criteria and supports paging. * * * * Transactions that are posted but not yet priced, billed or that are in error will not be returned by * this API. The API also supports returning Fee Items. * * * * #### Supported operations * * * Get sales items and fee transactions * * * Search by invoice status * * * Search by fixed date period * * * Search by date range * * * Search by account * * * Search by card * * * Get sales items only * * * Search by transaction Id or location * * * Search by transaction posting date * * * Search by invoice number or date * * * Search by driver name or vehicle registration number * * * Search by card group * * * Search by fuel only transactions * * * Search by product * * * * This API fetches transactions for a period based on the below parameters and priority order: * * 1. InvoiceNumber * * 2. InvoiceDate * * 3. FromDate, ToDate * * 4. PostingFromDate, PostingToDate (Can be used only when IncludeFees = false) * * 5. InvoiceDateFrom, InvoiceDateTo * * 6. Period * * * * This API considers only one of the above set of parameters at a time. For example, if InvoiceNumber * and Period are provided in the input then Period is ignored and transactions associated to the given * invoice number are returned. * * * * If none of the above parameters are provided then last 7 days transactions will be fetched. * * * * This operation can fetch transactions that are old up to 24 (configurable) months. However, the date * range between any of the ‘From’ and ‘To’ dates in the above combination cannot be more than 210 * (configurable) days. * * * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body Priced Transaction Request Body * @return Response from the API call */ async pricedTransactions( apikey: string, requestId: string, body?: PriceTransactionRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<PricedTransactionResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/pricedtransactions' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(priceTransactionRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(pricedTransactionResponseSchema, requestOptions); } /** * This API returns the transaction summary data (i.e. Priced, Billed and Unbilled sales items). It * provides a flexible search criteria. * * The API also supports returning Fee Items. Transactions posted for fee items that are in error are * not included in the summary. * * * * The endpoint supports the exact same search criteria as the endpoint * *transaction/prciedtransactions*. * * * * #### Supported operations * * * Get sales items and fee transactions * * * Search by invoice status * * * Search by fixed date period * * * Search by date range * * * Search by account * * * Search by card * * * Get sales items only * * * Search by transaction Id or location * * * Search by transaction posting date * * * Search by invoice number or date * * * Search by driver name or vehicle registration number * * * Search by card group * * * Search by fuel only transactions * * * Search by product * * * * This API fetches transactions for a period based on the below parameters and priority order: * * 1. InvoiceNumber * * 2. InvoiceDate * * 3. FromDate, ToDate * * 4. PostingFromDate, PostingToDate (Can be used only when IncludeFees = false) * * 5. InvoiceDateFrom, InvoiceDateTo * * 6. Period * * * * This API considers only one of the above set of parameters at a time. For example, if InvoiceNumber * and Period are provided in the input then Period is ignored and transactions associated to the given * invoice number are returned. * * * * If none of the above parameters are provided then last 7 days transactions will be fetched. * * @param apikey This is the API key of the specific environment which * needs to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body PricedSummary RequestBody * @return Response from the API call */ async pricedTransactionsSummary( apikey: string, requestId: string, body?: PriceTransSummaryRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<PricedTransSummaryResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/pricedtransactionssummary' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(priceTransSummaryRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(pricedTransSummaryResponseSchema, requestOptions); } /** * This API allows querying transaction data (i.e. Priced, Billed and Unbilled sales items) for * multiple payers. It provides a flexible search criteria and supports paging. * * * * Transactions that are posted but not yet priced, billed or that are in error will not be returned by * this API. The API also supports returning Fee Items. * * * * At least one payer should be provided. Multiple payers must belong to the same payer group. * * * * #### Supported operations * * * Get sales items and fee transactions for multiple payers * * * Search by invoice status * * * Search by fixed date period * * * Search by date range * * * Get sales items only for multiple payers * * * Search by transaction location * * * Search by transaction posting date * * * Search by invoice number or date * * * Search by fuel only transactions * * * * This API fetches transactions for a period based on the below parameters and priority order: * * 1. InvoiceNumber * * 2. InvoiceDate * * 3. FromDate, ToDate * * 4. PostingFromDate, PostingToDate (Can be used only when IncludeFees = false) * * 5. InvoiceDateFrom, InvoiceDateTo * * 6. Period * * * * This API considers only one of the above set of parameters at a time. For example, if InvoiceNumber * and Period are provided in the input then Period is ignored and transactions associated to the given * invoice number are returned. * * * * If none of the above parameters are provided then last 7 days transactions will be fetched. * * @param apikey This is the API key of the specific environment which * needs to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in * the response from the request. * @param body MultiPayer RequestBody * @return Response from the API call */ async multipricedTransactions( apikey: string, requestId: string, body?: MultiPricedTransactionRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<MultiPricedTransactionResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/multipayerspricedtransactions' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(multiPricedTransactionRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(multiPricedTransactionResponseSchema, requestOptions); } /** * This operation is to provide the expenditure analysis for a card for the past 7 months. * The response contains a daily summary of the transactions (billed & unbilled) from 1st of the last 7 * months for the requested card grouped by card, site-group and product. * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body Card Usage Summary RequestBody * @return Response from the API call */ async cardUsageSummary( apikey: string, requestId: string, body?: CardUsageSummaryRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<CardUsageSummaryResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/cardusagesummary' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(cardUsageSummaryRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(cardUsageSummaryResponseSchema, requestOptions); } /** * - This API provides the details of the bonus and/or association bonus rules setup for the given * payer and that are active on the current date. * - This API also returns the details of the monthly breakup of current period consumption as well as * the details of the previously calculated bonus and consumption of the applicable payers. * * * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body VolumeBasedBonus RequestBody * @return Response from the API call */ async volumeBasedBonus( apikey: string, requestId: string, body?: VolumeBasedBonusRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<VolumeBasedBonusResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/volumebasedbonus' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(volumeBasedBonusRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(volumeBasedBonusResponseSchema, requestOptions); } /** * - This API will return the details of the in arrear fee rule applied to the payer along with details * of locations, products, tiers as applied. * * - It will also show historical and current volume consumption and related tier applied for the * following month. * * * * @param apikey This is the API key of the specific environment which * needs to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body VolumeBasedPricing RequestBody * @return Response from the API call */ async volumeBasedPricing( apikey: string, requestId: string, body?: VolumeBasedPricingRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<VolumeBasedPricingResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/volumebasedpricing' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(volumeBasedPricingRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(volumeBasedPricingResponseSchema, requestOptions); } /** * This API returns the fee/charges levied from a customer's account in a billing period or date range. * The API returns both billed and unbilled fee items. * * * * To get the summary of charges, the endpoint *transaction/feessummary* should be called with the same * input criteria. * * * * #### Supported operations * * * Get fees by invoice status * * * Get fees by date period * * * Get fees by account * * * Get fees by card Id or PAN * * * Get fees by fee type charges * * * Get fees including cancelled items * * * Get fees by line item description * * * Get fees by product * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body Transaction Fees RequestBody * @return Response from the API call */ async fees( apikey: string, requestId: string, body?: TransactionFeesRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<TransactionFeesResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/fees' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(transactionFeesRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(transactionFeesResponseSchema, requestOptions); } /** * This API returns the summary data of the fee/charges levied from a customer's account in a billing * period or date range. The API returns both billed and unbilled fee items. * * * * The endpoint supports the exact same search criteria as the endpoint *transaction/feessummary*. * * * * #### Supported operations * * * Get fees by invoice status * * * Get fees by date period * * * Get fees by account * * * Get fees by card Id or PAN * * * Get fees by fee type charges * * * Get fees including cancelled items * * * Get fees by line item description * * * Get fees by product * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body FeeSummary RequestBody * @return Response from the API call */ async feeSummaryResponse( apikey: string, requestId: string, body?: TransactionFeesRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<FeeSummaryResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/feessummary' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(transactionFeesRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(feeSummaryResponseSchema, requestOptions); } /** * - This API returns the customer an overview of how many transactions, how much fuel volume used over * a given period and the total volume used by a card * * - This operation response will contains card & transaction details for given period aggregated by * payer, account, cardGroup, PAN, DriverName and VRN * * * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body FuelConsumption RequestBody * @return Response from the API call */ async fuelConsumption( apikey: string, requestId: string, body?: FuelConsumptionRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<FuelConsumptionResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/fuelconsumption' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(fuelConsumptionRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(fuelConsumptionResponseSchema, requestOptions); } /** * - This API allows the users to update the odometer readings on the sales items (transaction data) * * - This is an asynchronous operation. If opted, the user will be notified on completion of processing. * * @param apikey This is the API key of the specific environment which needs * to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for requests * and responses. This will be played back in the response from * the request. * @param body updateOdometer RequestBody * @return Response from the API call */ async updateOdometer( apikey: string, requestId: string, body?: UpdateOdometerRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<UpdateOdometerResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/updateodometer' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(updateOdometerRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(updateOdometerResponseSchema, requestOptions); } /** * - This API provides the details of the Cards or Transaction related exceptions based on the given * conditions for the Requested period. * - This API will return the Transactions related exceptions when the OutputType input parameter is * passed as ‘Transaction’ else will return the Cards related exceptions. * * * * @param apikey This is the API key of the specific environment which * needs to be passed by the client. * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body Transaction Exceptions RequestBody * @return Response from the API call */ async transactionExceptions( apikey: string, requestId: string, body?: TransactionExceptionsRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<TransactionExceptionsResponse>> { const req = this.createRequest( 'POST', '/fleetmanagement/v1/transaction/exceptions' ); const mapped = req.prepareArgs({ apikey: [apikey, string()], requestId: [requestId, string()], body: [body, optional(transactionExceptionsRequestSchema)], }); req.header('apikey', mapped.apikey); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, DefaultError, 'The server cannot or will not process the request due to something that is perceived to be a client\r\n error (e.g., malformed request syntax, invalid \r\n request message framing, or deceptive request routing).' ); req.throwOn( 401, DefaultError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn( 403, ErrorUserAccessError1Error, 'The server understood the request but refuses to authorize it.' ); req.throwOn( 404, DefaultError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, DefaultError, 'The server encountered an unexpected condition the prevented it from fulfilling the request.' ); req.authenticate([{ basicAuth: true }]); return req.callAsJson(transactionExceptionsResponseSchema, requestOptions); } /** * This endpoint allows querying last 48 hours of transaction data of Shell Card (i.e. Priced, Billed, * Unbilled etc. sales items). It provides a flexible search criteria and supports pagination. E.g., if * the request is made at 08:30 AM on 18 Aug 2022 then transactions until 16 Aug 2022 08:30 AM * (including) can be retrieved. * * * #### Supported operations * * * Search by Date and Time range (within the last 48 hours only) * * * Search by Payer and/or Account number * * * Search by Card * * * Search by Purchased Country * * * Search by Transaction posting date * * * Search by Driver Name or Vehicle registration number * * * Search by Fuel only transactions * * * Search by Product and/or Product group * * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body New Recent Transaction RequestBody * @return Response from the API call */ async recentTransactionsNew( requestId: string, body?: RecentTransactionRequest, requestOptions?: RequestOptions ): Promise<ApiResponse<RecentTransactionsResponse>> { const req = this.createRequest('POST', '/transaction-data/v1/recent'); const mapped = req.prepareArgs({ requestId: [requestId, string()], body: [body, optional(recentTransactionRequestSchema)], }); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, ErrorObjectError, 'The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).' ); req.throwOn( 401, ErrorObjectError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn(403, ErrorObjectError, 'Forbidden'); req.throwOn( 404, ErrorObjectError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, ErrorObjectError, 'The server encountered an unexpected condition that prevented it from fulfilling the request.' ); req.authenticate([{ bearerToken: true }]); return req.callAsJson(recentTransactionsResponseSchema, requestOptions); } /** * This API allows querying transaction data (i.e. Priced, Billed and Unbilled sales items). It * provides a flexible search criteria and supports paging. * * The version 2 is an enhancement to the version 1 where EV transactions and their details are added * in the response. * * * * Transactions that are posted but not yet priced, billed or that are in error will not be returned by * this API. The API also supports returning Fee Items. * * * * #### Supported operations * * * Get sales items and fee transactions * * * Search by invoice status * * * Search by fixed date period * * * Search by date range * * * Search by account * * * Search by card * * * Get sales items only * * * Search by transaction Id or location * * * Search by transaction posting date * * * Search by invoice number or date * * * Search by driver name or vehicle registration number * * * Search by card group * * * Search by fuel only transactions * * * Search by product * * * EV transaction details - Below are EV specific parameters * * * EVOperator * * * EVSerialId * * * EVChargePointSerial * * * EVChargePointConnectorType * * * EVChargePointConnectorTypeDescription * * * EVChargeDuration * * * EVChargeStartDate * * * EVChargeStartTime * * * EVChargeEndDate * * * EVChargeEndTime * * @param requestId Mandatory UUID (according to RFC 4122 standards) for * requests and responses. This will be played back in the * response from the request. * @param body Priced TransactionV2 RequestBody * @return Response from the API call */ async pricedTransactionsV2( requestId: string, body?: PricedTransactionRequestV2, requestOptions?: RequestOptions ): Promise<ApiResponse<PricedTransactionResponseV2>> { const req = this.createRequest('POST', '/transaction-data/v1/priced'); const mapped = req.prepareArgs({ requestId: [requestId, string()], body: [body, optional(pricedTransactionRequestV2Schema)], }); req.header('RequestId', mapped.requestId); req.header('Content-Type', 'application/json'); req.json(mapped.body); req.throwOn( 400, ErrorObjectError, 'The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).' ); req.throwOn( 401, ErrorObjectError, 'The request has not been applied because it lacks valid authentication credentials for the target resource.' ); req.throwOn(403, ErrorObjectError, 'Forbidden'); req.throwOn( 404, ErrorObjectError, 'The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.' ); req.throwOn( 500, ErrorObjectError, 'The server encountered an unexpected condition that prevented it from fulfilling the request.' ); req.authenticate([{ bearerToken: true }]); return req.callAsJson(pricedTransactionResponseV2Schema, requestOptions); } }