/** * @param IApiConnection $connection * @param SecurityDefinition $definition * * @return IToken */ public function getToken(IApiConnection $connection, SecurityDefinition $definition) { if ($definition->getType() !== 'oauth2') { throw new \InvalidArgumentException('The security definition provided is not a valid oAuth2 definition'); } $params = []; $params['grant_type'] = $this->getGrantType(); $params['api_user'] = $this->getApiUser(); $params['api_key'] = $this->getApiSecret(); $request = new ApiRequest(); $request->setConnection($connection); $detail = new ApiRequestDetail(); $detail->setMethod('POST'); $detail->setUrl($definition->getTokenUrl()); $detail->setPostFields($params); $request->setRequestDetail($detail); $connection->load($request); $tokenResponse = $request->getDecodedResponse(); $token = new AccessToken(); $token->setToken(Objects::property($tokenResponse, 'access_token')); $token->setType(Objects::property($tokenResponse, 'token_type', 'Bearer')); $token->setExpirySeconds(Objects::property($tokenResponse, 'expires_in')); $token->setExpiryTime(Objects::property($tokenResponse, 'expiry_time')); $token->setUserId(Objects::property($tokenResponse, 'uid')); $token->setSessionSecret(Objects::property($tokenResponse, 'session_secret')); return $token; }
/** * @summary List customers card payment methods * * @return PaymentCardsRequest */ public function all() { $request = new PaymentCardsRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'customers/{customerFid}/paymentMethods/cards'))); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Remove a product from an order * * @return ApiRequest */ public function delete() { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'orders/{orderFid}/products/{orderProductFid}'))); $detail->setMethod('DELETE'); $request->setRequestDetail($detail); return $request; }
/** * @summary Retreive a specific itemised invoice * * @return InvoiceRequest */ public function retrieve() { $request = new InvoiceRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'customers/{customerFid}/invoices/{invoiceFid}'))); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Retrieve a config item * * @return ConfigItemRequest */ public function retrieve() { $request = new ConfigItemRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'entities/{entityFid}/config/{sectionName}/items/{itemName}'))); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Retrieve pending pixels for this visitor * * This call will release pixels from the pending queue on read * * @return ApiRequest */ public function pixels() { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'visitors/{visitorId}/pixels'))); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Retrieve all offers * * @return ProductOffersRequest */ public function offers() { $request = new ProductOffersRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl('products/offers')); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Retrieve Product Prices * * @return ProductPricesRequest */ public function prices() { $request = new ProductPricesRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'products/{productFid}/prices'))); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Trigger a new event * * @param TriggerActionPayload $payload * * @return ApiRequest */ public function createEvent(TriggerActionPayload $payload) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'entities/{entityFid}/events'))); $detail->setBody(json_encode($payload)); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary Reverse a previously tracked action * * When an action has been reversed, e.g. cancelled, refunded * * @param ReverseActionPayload $payload * * @return VisitorReversalActionRequest */ public function createReverse(ReverseActionPayload $payload) { $request = new VisitorReversalActionRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'visitors/{visitorId}/actions/{actionKey}/reverse'))); $detail->setBody(json_encode($payload)); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary Update a card * * @param CardUpdatePayload $payload * * @return ApiRequest */ public function update(CardUpdatePayload $payload) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'customers/{customerFid}/paymentMethods/cards/{cardFid}'))); $detail->setBody(json_encode($payload)); $detail->setMethod('PUT'); $request->setRequestDetail($detail); return $request; }
/** * @summary Unsubscribe an email address * * @param $brandFid * * @return ApiRequest */ public function setUnsubscribe($brandFid = null) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'contacts/emails/{emailAddress}/unsubscribe'))); $detail->addPostField('brandFid', $brandFid); $detail->setMethod('PUT'); $request->setRequestDetail($detail); return $request; }
/** * @summary Add a product to an order * * @param AddOrderProductsPayload $payload * * @return OrderAddProductsRequest */ public function create(AddOrderProductsPayload $payload) { $request = new OrderAddProductsRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'orders/{orderFid}/products'))); $detail->setBody(json_encode($payload)); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary Get a new checkout ID * * @param $orderFID * * @return CoinbaseCheckoutRequest */ public function coinbase($orderFID = null) { $request = new CoinbaseCheckoutRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl('pay/coinbase')); $detail->addQueryField('orderFID', $orderFID); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Find a customer by your reference * * @param $reference * * @return CustomerRequest */ public function findByReference($reference = null) { $request = new CustomerRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl('customers/findByReference')); $detail->addQueryField('reference', $reference); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Decrement an entity counter * * @param PropertyCounterPayload $payload * * @return ApiRequest */ public function decrement(PropertyCounterPayload $payload) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'entities/{entityFid}/properties/counters/{propertyName}/decrement'))); $detail->setBody(json_encode($payload)); $detail->setMethod('PUT'); $request->setRequestDetail($detail); return $request; }
/** * @summary Retrieve A Licence * * @param $key * * @return LicenceRequest */ public function check($key = null) { $request = new LicenceRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl('licence/check')); $detail->addQueryField('key', $key); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Create a new order * * @param CreateOrderPayload $payload * * @return FidRequest */ public function create(CreateOrderPayload $payload) { $request = new FidRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl('orders')); $detail->setBody(json_encode($payload)); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary List of invoice summaries for given customer * * @param $limit * @param $page * * @return InvoicesRequest */ public function all($limit = null, $page = null) { $request = new InvoicesRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'customers/{customerFid}/invoices'))); $detail->addQueryField('limit', $limit); $detail->addQueryField('page', $page); $detail->setMethod('GET'); $request->setRequestDetail($detail); return $request; }
/** * @summary Write a config item * * @param $itemName * @param $value * * @return ApiRequest */ public function create($itemName, $value) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'entities/{entityFid}/config/{sectionName}'))); $detail->addPostField('itemName', $itemName); $detail->addPostField('value', $value); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary Add an offer to an order * * @param $offerFid * @param $productFid * @param $orderItemFid * @param $replace * * @return ApiRequest */ public function create($offerFid, $productFid = null, $orderItemFid = null, $replace = null) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'orders/{orderFid}/offers'))); $detail->addPostField('offerFid', $offerFid); $detail->addPostField('productFid', $productFid); $detail->addPostField('orderItemFid', $orderItemFid); $detail->addPostField('replace', $replace); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary Unsubscribe an email based on the delivery fid * * @param $userAgent * @param $encoding * @param $language * @param $clientIp * * @return ApiRequest */ public function setUnsubscribe($userAgent = null, $encoding = null, $language = null, $clientIp = null) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'messenger/deliveries/{deliveryFid}/unsubscribe'))); $detail->addPostField('userAgent', $userAgent); $detail->addPostField('encoding', $encoding); $detail->addPostField('language', $language); $detail->addPostField('clientIp', $clientIp); $detail->setMethod('PUT'); $request->setRequestDetail($detail); return $request; }
/** * @summary Confirm an order, await payment * * @return OrderConfirmationRequest */ public function confirmCoinbase() { $request = new OrderConfirmationRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'orders/{orderFid}/confirmCoinbase'))); $detail->setMethod('PUT'); $request->setRequestDetail($detail); return $request; }
/** * @summary Add a phone number to a customer * * @param $phoneNumber * @param $displayName * * @return ApiRequest */ public function createPhone($phoneNumber, $displayName = null) { $request = new ApiRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'customers/{customerFid}/phones'))); $detail->addPostField('phoneNumber', $phoneNumber); $detail->addPostField('displayName', $displayName); $detail->setMethod('POST'); $request->setRequestDetail($detail); return $request; }
/** * @summary Modify an existing subscription with a new price. Returns new open order to * be completed * * @param ModifySubscriptionPayload $payload * * @return FidRequest */ public function setModify(ModifySubscriptionPayload $payload) { $request = new FidRequest(); $request->setConnection($this->_getConnection()); $request->setEndpoint($this); $detail = new ApiRequestDetail(); $detail->setRequireAuth(true); $detail->setUrl($this->_buildUrl(str_replace(array_keys($this->_replacements), array_values($this->_replacements), 'customers/{customerFid}/subscriptions/{subscriptionFid}/modify'))); $detail->setBody(json_encode($payload)); $detail->setMethod('PUT'); $request->setRequestDetail($detail); return $request; }