FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
vendor
/
square
/
square
/
src
/
Apis
Edit File: BookingsApi.php
<?php declare(strict_types=1); namespace Square\Apis; use Core\Request\Parameters\BodyParam; use Core\Request\Parameters\HeaderParam; use Core\Request\Parameters\QueryParam; use Core\Request\Parameters\TemplateParam; use CoreInterfaces\Core\Request\RequestMethod; use Square\Http\ApiResponse; use Square\Models\BulkRetrieveBookingsRequest; use Square\Models\BulkRetrieveBookingsResponse; use Square\Models\BulkRetrieveTeamMemberBookingProfilesRequest; use Square\Models\BulkRetrieveTeamMemberBookingProfilesResponse; use Square\Models\CancelBookingRequest; use Square\Models\CancelBookingResponse; use Square\Models\CreateBookingRequest; use Square\Models\CreateBookingResponse; use Square\Models\ListBookingsResponse; use Square\Models\ListLocationBookingProfilesResponse; use Square\Models\ListTeamMemberBookingProfilesResponse; use Square\Models\RetrieveBookingResponse; use Square\Models\RetrieveBusinessBookingProfileResponse; use Square\Models\RetrieveLocationBookingProfileResponse; use Square\Models\RetrieveTeamMemberBookingProfileResponse; use Square\Models\SearchAvailabilityRequest; use Square\Models\SearchAvailabilityResponse; use Square\Models\UpdateBookingRequest; use Square\Models\UpdateBookingResponse; class BookingsApi extends BaseApi { /** * Retrieve a collection of bookings. * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_READ` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_READ` and * `APPOINTMENTS_READ` for the OAuth scope. * * @param int|null $limit The maximum number of results per page to return in a paged response. * @param string|null $cursor The pagination cursor from the preceding response to return the * next page of the results. Do not set this when retrieving the first page of the * results. * @param string|null $customerId The [customer](entity:Customer) for whom to retrieve bookings. * If this is not set, bookings for all customers are retrieved. * @param string|null $teamMemberId The team member for whom to retrieve bookings. If this is * not set, bookings of all members are retrieved. * @param string|null $locationId The location for which to retrieve bookings. If this is not * set, all locations' bookings are retrieved. * @param string|null $startAtMin The RFC 3339 timestamp specifying the earliest of the start * time. If this is not set, the current time is used. * @param string|null $startAtMax The RFC 3339 timestamp specifying the latest of the start * time. If this is not set, the time of 31 days after `start_at_min` is used. * * @return ApiResponse Response from the API call */ public function listBookings( ?int $limit = null, ?string $cursor = null, ?string $customerId = null, ?string $teamMemberId = null, ?string $locationId = null, ?string $startAtMin = null, ?string $startAtMax = null ): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::GET, '/v2/bookings') ->auth('global') ->parameters( QueryParam::init('limit', $limit), QueryParam::init('cursor', $cursor), QueryParam::init('customer_id', $customerId), QueryParam::init('team_member_id', $teamMemberId), QueryParam::init('location_id', $locationId), QueryParam::init('start_at_min', $startAtMin), QueryParam::init('start_at_max', $startAtMax) ); $_resHandler = $this->responseHandler()->type(ListBookingsResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Creates a booking. * * The required input must include the following: * - `Booking.location_id` * - `Booking.start_at` * - `Booking.AppointmentSegment.team_member_id` * - `Booking.AppointmentSegment.service_variation_id` * - `Booking.AppointmentSegment.service_variation_version` * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_WRITE` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_WRITE` and * `APPOINTMENTS_WRITE` for the OAuth scope. * * For calls to this endpoint with seller-level permissions to succeed, the seller must have subscribed * to *Appointments Plus* * or *Appointments Premium*. * * @param CreateBookingRequest $body An object containing the fields to POST for the request. * See the corresponding object definition for field details. * * @return ApiResponse Response from the API call */ public function createBooking(CreateBookingRequest $body): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::POST, '/v2/bookings') ->auth('global') ->parameters(HeaderParam::init('Content-Type', 'application/json'), BodyParam::init($body)); $_resHandler = $this->responseHandler()->type(CreateBookingResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Searches for availabilities for booking. * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_READ` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_READ` and * `APPOINTMENTS_READ` for the OAuth scope. * * @param SearchAvailabilityRequest $body An object containing the fields to POST for the * request. * * See the corresponding object definition for field details. * * @return ApiResponse Response from the API call */ public function searchAvailability(SearchAvailabilityRequest $body): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::POST, '/v2/bookings/availability/search') ->auth('global') ->parameters(HeaderParam::init('Content-Type', 'application/json'), BodyParam::init($body)); $_resHandler = $this->responseHandler()->type(SearchAvailabilityResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Bulk-Retrieves a list of bookings by booking IDs. * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_READ` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_READ` and * `APPOINTMENTS_READ` for the OAuth scope. * * @param BulkRetrieveBookingsRequest $body An object containing the fields to POST for the * request. * * See the corresponding object definition for field details. * * @return ApiResponse Response from the API call */ public function bulkRetrieveBookings(BulkRetrieveBookingsRequest $body): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::POST, '/v2/bookings/bulk-retrieve') ->auth('global') ->parameters(HeaderParam::init('Content-Type', 'application/json'), BodyParam::init($body)); $_resHandler = $this->responseHandler()->type(BulkRetrieveBookingsResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Retrieves a seller's booking profile. * * @return ApiResponse Response from the API call */ public function retrieveBusinessBookingProfile(): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::GET, '/v2/bookings/business-booking-profile') ->auth('global'); $_resHandler = $this->responseHandler() ->type(RetrieveBusinessBookingProfileResponse::class) ->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Lists location booking profiles of a seller. * * @param int|null $limit The maximum number of results to return in a paged response. * @param string|null $cursor The pagination cursor from the preceding response to return the * next page of the results. Do not set this when retrieving the first page of the * results. * * @return ApiResponse Response from the API call */ public function listLocationBookingProfiles(?int $limit = null, ?string $cursor = null): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::GET, '/v2/bookings/location-booking-profiles') ->auth('global') ->parameters(QueryParam::init('limit', $limit), QueryParam::init('cursor', $cursor)); $_resHandler = $this->responseHandler()->type(ListLocationBookingProfilesResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Retrieves a seller's location booking profile. * * @param string $locationId The ID of the location to retrieve the booking profile. * * @return ApiResponse Response from the API call */ public function retrieveLocationBookingProfile(string $locationId): ApiResponse { $_reqBuilder = $this->requestBuilder( RequestMethod::GET, '/v2/bookings/location-booking-profiles/{location_id}' )->auth('global')->parameters(TemplateParam::init('location_id', $locationId)); $_resHandler = $this->responseHandler() ->type(RetrieveLocationBookingProfileResponse::class) ->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Lists booking profiles for team members. * * @param bool|null $bookableOnly Indicates whether to include only bookable team members in the * returned result (`true`) or not (`false`). * @param int|null $limit The maximum number of results to return in a paged response. * @param string|null $cursor The pagination cursor from the preceding response to return the * next page of the results. Do not set this when retrieving the first page of the * results. * @param string|null $locationId Indicates whether to include only team members enabled at the * given location in the returned result. * * @return ApiResponse Response from the API call */ public function listTeamMemberBookingProfiles( ?bool $bookableOnly = false, ?int $limit = null, ?string $cursor = null, ?string $locationId = null ): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::GET, '/v2/bookings/team-member-booking-profiles') ->auth('global') ->parameters( QueryParam::init('bookable_only', $bookableOnly), QueryParam::init('limit', $limit), QueryParam::init('cursor', $cursor), QueryParam::init('location_id', $locationId) ); $_resHandler = $this->responseHandler() ->type(ListTeamMemberBookingProfilesResponse::class) ->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Retrieves one or more team members' booking profiles. * * @param BulkRetrieveTeamMemberBookingProfilesRequest $body An object containing the fields to * POST for the request. * * See the corresponding object definition for field details. * * @return ApiResponse Response from the API call */ public function bulkRetrieveTeamMemberBookingProfiles( BulkRetrieveTeamMemberBookingProfilesRequest $body ): ApiResponse { $_reqBuilder = $this->requestBuilder( RequestMethod::POST, '/v2/bookings/team-member-booking-profiles/bulk-retrieve' )->auth('global')->parameters(HeaderParam::init('Content-Type', 'application/json'), BodyParam::init($body)); $_resHandler = $this->responseHandler() ->type(BulkRetrieveTeamMemberBookingProfilesResponse::class) ->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Retrieves a team member's booking profile. * * @param string $teamMemberId The ID of the team member to retrieve. * * @return ApiResponse Response from the API call */ public function retrieveTeamMemberBookingProfile(string $teamMemberId): ApiResponse { $_reqBuilder = $this->requestBuilder( RequestMethod::GET, '/v2/bookings/team-member-booking-profiles/{team_member_id}' )->auth('global')->parameters(TemplateParam::init('team_member_id', $teamMemberId)); $_resHandler = $this->responseHandler() ->type(RetrieveTeamMemberBookingProfileResponse::class) ->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Retrieves a booking. * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_READ` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_READ` and * `APPOINTMENTS_READ` for the OAuth scope. * * @param string $bookingId The ID of the [Booking](entity:Booking) object representing the * to-be-retrieved booking. * * @return ApiResponse Response from the API call */ public function retrieveBooking(string $bookingId): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::GET, '/v2/bookings/{booking_id}') ->auth('global') ->parameters(TemplateParam::init('booking_id', $bookingId)); $_resHandler = $this->responseHandler()->type(RetrieveBookingResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Updates a booking. * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_WRITE` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_WRITE` and * `APPOINTMENTS_WRITE` for the OAuth scope. * * For calls to this endpoint with seller-level permissions to succeed, the seller must have subscribed * to *Appointments Plus* * or *Appointments Premium*. * * @param string $bookingId The ID of the [Booking](entity:Booking) object representing the * to-be-updated booking. * @param UpdateBookingRequest $body An object containing the fields to POST for the request. * See the corresponding object definition for field details. * * @return ApiResponse Response from the API call */ public function updateBooking(string $bookingId, UpdateBookingRequest $body): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::PUT, '/v2/bookings/{booking_id}') ->auth('global') ->parameters( TemplateParam::init('booking_id', $bookingId), HeaderParam::init('Content-Type', 'application/json'), BodyParam::init($body) ); $_resHandler = $this->responseHandler()->type(UpdateBookingResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } /** * Cancels an existing booking. * * To call this endpoint with buyer-level permissions, set `APPOINTMENTS_WRITE` for the OAuth scope. * To call this endpoint with seller-level permissions, set `APPOINTMENTS_ALL_WRITE` and * `APPOINTMENTS_WRITE` for the OAuth scope. * * For calls to this endpoint with seller-level permissions to succeed, the seller must have subscribed * to *Appointments Plus* * or *Appointments Premium*. * * @param string $bookingId The ID of the [Booking](entity:Booking) object representing the * to-be-cancelled booking. * @param CancelBookingRequest $body An object containing the fields to POST for the request. * See the corresponding object definition for field details. * * @return ApiResponse Response from the API call */ public function cancelBooking(string $bookingId, CancelBookingRequest $body): ApiResponse { $_reqBuilder = $this->requestBuilder(RequestMethod::POST, '/v2/bookings/{booking_id}/cancel') ->auth('global') ->parameters( TemplateParam::init('booking_id', $bookingId), HeaderParam::init('Content-Type', 'application/json'), BodyParam::init($body) ); $_resHandler = $this->responseHandler()->type(CancelBookingResponse::class)->returnApiResponse(); return $this->execute($_reqBuilder, $_resHandler); } }
Save
Back