متصلون الآن  

/v1/bidpool/

Private responses during collection, with a signed-in decision comparison after selection.
GET

/v1/bidpool/get_hold_access

#
Explain the acting seller's hold access for a visible, active bid. Does not reserve or mutate the bid. Returns title, message, missingHoldPermissions, permissionGroups (permissionName, label, medals with id/name/description/icon/statusURL), canFillDirectly, directFillAvailability (available, selection_pending, seller_ineligible or unavailable), note and emptyMedalsMessage. Medal lists are live permission metadata, not a guarantee that verification, fill rate, inventory or capacity checks pass. A buyer-selected Premium direct hire may be filled with complete confirmation without granting hold or response-round access.

المعلمات

الاسمالنوعمطلوبالافتراضيالوصف
bidID int نعم — Customer bid ID.
مثال طلب (cURL)
curl --get \
  'https://ar.appointmenttrader.com/v1/bidpool/get_hold_access' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}'

القيمة المُرجعة

JSON
See the shared response schema and synthetic example.
حقول الاستجابة
الحقلالنوعمطلوبالوصف
$bidpool_get_hold_access_Response نعم
$.oneOf[0] نعم
$.oneOf[0].allOf[0]object نعم
$.oneOf[0].allOf[0].RequestUserAliasstring نعم
$.oneOf[0].allOf[0].RequestPathstring | null نعم
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" نعم
$.oneOf[0].allOf[0].ResponseCodeinteger نعم
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring لا
$.oneOf[0].allOf[1]object نعم
$.oneOf[0].allOf[1].Payloadobject نعم
$.oneOf[0].allOf[1].Payload.bidIDinteger نعم
$.oneOf[0].allOf[1].Payload.titlestring نعم
$.oneOf[0].allOf[1].Payload.messagestring نعم
$.oneOf[0].allOf[1].Payload.missingHoldPermissionsarray نعم
$.oneOf[0].allOf[1].Payload.missingHoldPermissions[]string لا
$.oneOf[0].allOf[1].Payload.permissionGroupsarray نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[]object لا
$.oneOf[0].allOf[1].Payload.permissionGroups[].permissionNamestring نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].labelstring نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].medalsarray نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].medals[]object لا
$.oneOf[0].allOf[1].Payload.permissionGroups[].medals[].idinteger نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].medals[].namestring نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].medals[].descriptionstring نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].medals[].iconstring نعم
$.oneOf[0].allOf[1].Payload.permissionGroups[].medals[].statusURLstring نعم
$.oneOf[0].allOf[1].Payload.canFillDirectlyboolean نعم
$.oneOf[0].allOf[1].Payload.directFillAvailabilitystring ["available","selection_pending","seller_ineligible","unavailable"] نعم
$.oneOf[0].allOf[1].Payload.notestring نعم
$.oneOf[0].allOf[1].Payload.emptyMedalsMessagestring نعم
$.oneOf[0].allOf[1].Payload.actionsarray نعم
$.oneOf[0].allOf[1].Payload.actions[]string لا
$.oneOf[0].allOf[1].Payload.buyerIdentityHiddenboolean لاTrue when the viewer cannot see the buyer because that buyer has an open response race.
$.oneOf[0].allOf[1].Payload.buyerIdentityHiddenUntilinteger | null لاLatest saved ClosesAt among the buyer's open response races, as Unix seconds; null when visible. Reveal requires a fresh authoritative response.
$.oneOf[1]object نعم
$.oneOf[1].RequestUserAliasstring نعم
$.oneOf[1].RequestPathstring | null نعم
$.oneOf[1].RequestStatus = "Failed" نعم
$.oneOf[1].ResponseCodeinteger نعم
$.oneOf[1].ResponseMessageAPIResponseMessage نعم
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[1].ResponseMessage.oneOf[1]array نعم
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[1].ResponseMessage.oneOf[2]object نعم
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[1].RequestImpersonatedByUserAliasstring لا
مثال استجابة
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/bidpool/get_hold_access",
    "RequestUserAlias": "example-user",
    "Payload": {
        "bidID": 0,
        "title": "synthetic-example",
        "message": "synthetic-example",
        "missingHoldPermissions": [],
        "permissionGroups": [],
        "canFillDirectly": false,
        "directFillAvailability": "available",
        "note": "synthetic-example",
        "emptyMedalsMessage": "synthetic-example",
        "actions": []
    }
}
توثيق نقطة النهاية القابل للقراءة آليًا
GET

/v1/bidpool/get_mine

#
The acting seller's responses on active bids, including pending responses, reopened rounds needing reconfirmation and awarded rounds they responded to. postURL links to the bid's post when available. ownSelected is true/false after selection, null while no seller has been selected. Up to 100 rounds, active collecting/immediate rounds first, then awarded rounds; each group sorts newest ownRespondedAt first (original submission Unix seconds, then round ID descending). Edits and ranking do not reorder them within a group. Reopened rounds use the latest previous participation time until reconfirmed. label uses Custom Concierge Request instead of the location name when location access is restricted. title is the same safe location/request name without the bid number; missing locations use Custom Concierge Request. requestPreview is a plain-text preview of the canonical seller-visible request or readable bid-post wording, at most 160 characters, or empty when no request text is available. postURL also powers the See post action, carrying a return destination to Bid Round Participations. participants is empty before selection; afterwards it includes sellerAlias, sellerAvatar, sellerDisplayHTML (shared profile mention), selected and withdrawn, winner first then saved comparison order. Promises and ranking audits are not included in participants. fillBidURL opens the existing seller bid dialog only for the selected seller of a current awarded round; otherwise null.

المعلمات

الاسمالنوعمطلوبالافتراضيالوصف
limit int لا 100 Maximum visible entries, 1-100, default 100. Smaller limits load only that prefix's previews and participants.
مثال طلب (cURL)
curl --get \
  'https://ar.appointmenttrader.com/v1/bidpool/get_mine' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'limit={{limit}}'

القيمة المُرجعة

JSON
See the shared response schema and synthetic example.
حقول الاستجابة
الحقلالنوعمطلوبالوصف
$bidpool_get_mine_Response نعم
$.oneOf[0] نعم
$.oneOf[0].allOf[0]object نعم
$.oneOf[0].allOf[0].RequestUserAliasstring نعم
$.oneOf[0].allOf[0].RequestPathstring | null نعم
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" نعم
$.oneOf[0].allOf[0].ResponseCodeinteger نعم
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring لا
$.oneOf[0].allOf[1]object نعم
$.oneOf[0].allOf[1].Payloadarray نعم
$.oneOf[0].allOf[1].Payload[]object لا
$.oneOf[0].allOf[1].Payload[].bidIDinteger نعم
$.oneOf[0].allOf[1].Payload[].closesAtinteger نعم
$.oneOf[0].allOf[1].Payload[].statestring نعم
$.oneOf[0].allOf[1].Payload[].labelstring نعم
$.oneOf[0].allOf[1].Payload[].titlestring نعم
$.oneOf[0].allOf[1].Payload[].requestPreviewstring نعم
$.oneOf[0].allOf[1].Payload[].ownRespondedAtinteger نعم
$.oneOf[0].allOf[1].Payload[].participantsarray نعم
$.oneOf[0].allOf[1].Payload[].participants[]object لا
$.oneOf[0].allOf[1].Payload[].participants[].sellerAliasstring نعم
$.oneOf[0].allOf[1].Payload[].participants[].sellerAvatarstring نعم
$.oneOf[0].allOf[1].Payload[].participants[].sellerDisplayHTMLstring نعم
$.oneOf[0].allOf[1].Payload[].participants[].selectedboolean نعم
$.oneOf[0].allOf[1].Payload[].participants[].withdrawnboolean نعم
$.oneOf[0].allOf[1].Payload[].fillBidURL نعم
$.oneOf[0].allOf[1].Payload[].fillBidURL.anyOf[0]string نعم
$.oneOf[0].allOf[1].Payload[].fillBidURL.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload[].postURL نعم
$.oneOf[0].allOf[1].Payload[].postURL.anyOf[0]string نعم
$.oneOf[0].allOf[1].Payload[].postURL.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload[].ownSelected نعم
$.oneOf[0].allOf[1].Payload[].ownSelected.anyOf[0]boolean نعم
$.oneOf[0].allOf[1].Payload[].ownSelected.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload[].ownDeadline نعم
$.oneOf[0].allOf[1].Payload[].ownDeadline.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload[].ownDeadline.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload[].needsConfirmationboolean نعم
$.oneOf[0].allOf[1].Payload[].buyerIdentityHiddenboolean لاTrue when the viewer cannot see the buyer because that buyer has an open response race.
$.oneOf[0].allOf[1].Payload[].buyerIdentityHiddenUntilinteger | null لاLatest saved ClosesAt among the buyer's open response races, as Unix seconds; null when visible. Reveal requires a fresh authoritative response.
$.oneOf[1]object نعم
$.oneOf[1].RequestUserAliasstring نعم
$.oneOf[1].RequestPathstring | null نعم
$.oneOf[1].RequestStatus = "Failed" نعم
$.oneOf[1].ResponseCodeinteger نعم
$.oneOf[1].ResponseMessageAPIResponseMessage نعم
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[1].ResponseMessage.oneOf[1]array نعم
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[1].ResponseMessage.oneOf[2]object نعم
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[1].RequestImpersonatedByUserAliasstring لا
مثال استجابة
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/bidpool/get_mine",
    "RequestUserAlias": "example-user",
    "Payload": []
}
توثيق نقطة النهاية القابل للقراءة آليًا
GET

/v1/bidpool/get_selection_explanation

#
Explain the most recent response-pool selection to any signed-in user, including buyers and nonparticipants. Returns localized summary/rules and, only after selection, candidates with public sellerAlias, selected/withdrawn status, sellerDisplayHTML (the shared profile chip with avatar, badges and profile link; empty for unavailable sellers), saved rank, deadlineAt (Unix seconds), durationMinutes, assignmentCount, assignmentAmountCents (gross USD cents), scoreSeconds, promisedSeconds and fairnessSeconds. Totals cover the preceding 24 hours at ranking/immediate pickup. scoringVersion is 1 for legacy rankings, 2 for count-based repeat-customer rankings, 3 for linear dollar rankings, 4 for square-root workload with fixed repeat credit, or null for unranked responses. Version 2 adds the saved repeatCustomerRateBasisPoints (100 basis points = 1%) and repeatCustomerBonusSeconds. scoreSeconds = promisedSeconds + fairnessSeconds - repeatCustomerBonusSeconds; the promised deadline is unchanged. In versions 2 and 3 the bonus discounts time by half the existing cached repeat rate. A missing rate earns zero bonus in every version. Legacy/unranked repeat fields are null; historical decisions never use today's cached user metrics. Version 3 fairnessSeconds is saved gross USD cents * 60 / 1000, floored to whole seconds, without a cap. Version 4 fairnessSeconds = floor(60 * 12 * sqrt(saved gross USD cents / 100)); repeatCustomerBonusSeconds = floor(saved rate basis points * 10 * 60 / 100). Version 4 gives 10 minutes per percentage point (17% earns 170 minutes), independent of promised time or workload. Negative scoreSeconds are valid and sort first. Version 4 retains dollar tie-breaks and saves both coefficients with the decision; prior versions are never recalculated. New version-4 rankings measure promisedSeconds from the accepted opening-adjusted fillStartsAt, excluding the initial opening wait. Later closures do not pause elapsed time. candidates.fillStartsAt (Unix seconds) and openingWaitSeconds expose this saved baseline; both are null for historical rankings that counted from round close. Preset responses submitted before baseline capture derive their start from the saved deadline and duration; older custom responses use the shared opening-hours policy at first ranking. Version 3 counts are informational; ties use deadline, assigned dollars, then saved randomness. Versions 1 and 2 retain their count-based rules. New selection counts, amounts and audit rows include only ranked awards with at least two non-withdrawn ranked contestants. Single-contestant awards, normal/immediate pickups, direct fills and direct hires are excluded, including pickup after an exhausted ranking. Existing saved decisions retain their original inputs. Missing qualifying amounts prevent ranking until repaired. candidates.assignments lists the same saved inputs used by allocation, with bidReference/bidURL, assignedAt, amountCents and directHire. assignmentAuditStatus is saved, reconstructed (older history matching the saved count), or unavailable. historicalDirectHires flags an older decision that counted direct hires; its original score is never rewritten. Null dollar totals mean historical amounts were not saved, never zero. No random tie-break tokens are exposed. Older, direct-hire and paid-auction bids without a pool record are explicitly identified as unrecorded.

المعلمات

الاسمالنوعمطلوبالافتراضيالوصف
bidID int نعم — Customer bid ID.
مثال طلب (cURL)
curl --get \
  'https://ar.appointmenttrader.com/v1/bidpool/get_selection_explanation' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}'

القيمة المُرجعة

JSON
See the shared response schema and synthetic example.
حقول الاستجابة
الحقلالنوعمطلوبالوصف
$bidpool_get_selection_explanation_Response نعم
$.oneOf[0] نعم
$.oneOf[0].allOf[0]object نعم
$.oneOf[0].allOf[0].RequestUserAliasstring نعم
$.oneOf[0].allOf[0].RequestPathstring | null نعم
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" نعم
$.oneOf[0].allOf[0].ResponseCodeinteger نعم
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring لا
$.oneOf[0].allOf[1]object نعم
$.oneOf[0].allOf[1].Payloadobject نعم
$.oneOf[0].allOf[1].Payload.titlestring نعم
$.oneOf[0].allOf[1].Payload.reasonstring ["public_change_proposal","balanced","deadline","recent","random","eligible","immediate_selected","collecting","immediate","closed","no_record"] نعم
$.oneOf[0].allOf[1].Payload.summarystring نعم
$.oneOf[0].allOf[1].Payload.contextstring نعم
$.oneOf[0].allOf[1].Payload.selectedAt نعم
$.oneOf[0].allOf[1].Payload.selectedAt.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.selectedAt.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidatesarray نعم
$.oneOf[0].allOf[1].Payload.candidates[]object لا
$.oneOf[0].allOf[1].Payload.candidates[].sellerAliasstring نعم
$.oneOf[0].allOf[1].Payload.candidates[].sellerDisplayHTMLstring نعم
$.oneOf[0].allOf[1].Payload.candidates[].selectedboolean نعم
$.oneOf[0].allOf[1].Payload.candidates[].withdrawnboolean نعم
$.oneOf[0].allOf[1].Payload.candidates[].rank نعم
$.oneOf[0].allOf[1].Payload.candidates[].rank.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].rank.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].deadlineAtinteger نعم
$.oneOf[0].allOf[1].Payload.candidates[].durationMinutesinteger نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentCount نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentCount.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentCount.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentAmountCents نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentAmountCents.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentAmountCents.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].scoreSeconds نعم
$.oneOf[0].allOf[1].Payload.candidates[].scoreSeconds.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].scoreSeconds.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].promisedSeconds نعم
$.oneOf[0].allOf[1].Payload.candidates[].promisedSeconds.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].promisedSeconds.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].fairnessSeconds نعم
$.oneOf[0].allOf[1].Payload.candidates[].fairnessSeconds.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].fairnessSeconds.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].scoringVersion نعم
$.oneOf[0].allOf[1].Payload.candidates[].scoringVersion.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].scoringVersion.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].repeatCustomerRateBasisPoints نعم
$.oneOf[0].allOf[1].Payload.candidates[].repeatCustomerRateBasisPoints.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].repeatCustomerRateBasisPoints.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].repeatCustomerBonusSeconds نعم
$.oneOf[0].allOf[1].Payload.candidates[].repeatCustomerBonusSeconds.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].repeatCustomerBonusSeconds.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].fillStartsAt نعم
$.oneOf[0].allOf[1].Payload.candidates[].fillStartsAt.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].fillStartsAt.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].openingWaitSeconds نعم
$.oneOf[0].allOf[1].Payload.candidates[].openingWaitSeconds.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].openingWaitSeconds.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentsarray نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[]object لا
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].bidReference نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].bidReference.anyOf[0]string نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].bidReference.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].bidURL نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].bidURL.anyOf[0]string نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].bidURL.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].assignedAtinteger نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].amountCents نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].amountCents.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].amountCents.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignments[].directHireboolean نعم
$.oneOf[0].allOf[1].Payload.candidates[].assignmentAuditStatusstring ["saved","reconstructed","unavailable"] نعم
$.oneOf[0].allOf[1].Payload.candidates[].historicalDirectHiresboolean نعم
$.oneOf[0].allOf[1].Payload.dataNotestring نعم
$.oneOf[0].allOf[1].Payload.rulesarray نعم
$.oneOf[0].allOf[1].Payload.rules[]string لا
$.oneOf[0].allOf[1].Payload.privacystring نعم
$.oneOf[1]object نعم
$.oneOf[1].RequestUserAliasstring نعم
$.oneOf[1].RequestPathstring | null نعم
$.oneOf[1].RequestStatus = "Failed" نعم
$.oneOf[1].ResponseCodeinteger نعم
$.oneOf[1].ResponseMessageAPIResponseMessage نعم
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[1].ResponseMessage.oneOf[1]array نعم
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[1].ResponseMessage.oneOf[2]object نعم
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[1].RequestImpersonatedByUserAliasstring لا
مثال استجابة
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/bidpool/get_selection_explanation",
    "RequestUserAlias": "example-user",
    "Payload": {
        "title": "synthetic-example",
        "reason": "public_change_proposal",
        "summary": "synthetic-example",
        "context": "synthetic-example",
        "selectedAt": 0,
        "candidates": [],
        "dataNote": "synthetic-example",
        "rules": [],
        "privacy": "synthetic-example"
    }
}
توثيق نقطة النهاية القابل للقراءة آليًا
GET

/v1/bidpool/get_state

#
Response window, opening-hours-adjusted fillOptions with exact deadlines, timingBaseAt, timingVersion, openingHours status/timezone, and only the acting seller's response. Times are Unix seconds. scoringVersion describes the currently built ranking policy (1 through 4) for new selections; it is not a recomputation of a saved decision. All eligible sellers share the same bid-relative window: maximumDeadline is cutoffAt, independent of their legacy maximum hold allowance. With the built dollar-workload capability, fixed choices are 1, 2, 4, 8, 12, 24, 48, 72 and 96 elapsed hours from fillStartsAt, filtered to cutoffAt. fillOptions[].deadlineAt includes any opening-time wait. customMinimumDeadline is the first whole minute strictly after the longest offered deadline, or null when custom is unavailable. Custom deadlines must be whole minutes from customMinimumDeadline through maximumDeadline. Positive durations must match an offered choice. Urgent windows retain the offered instant-fill option. Before capability activation, customMinimumDeadline is absent and the previous percentage-based choices and custom rules remain available. Existing commitments remain valid. A previous response is never automatic participation; edits and reconfirmations must obey current choices. When canRespond is false, message explains why. After closesAt, refresh this read-only state until selection finishes; an empty round becomes immediate pickup, requiring a fresh preview and confirmation. A recorded missed fill deadline prevents entering later selection windows for the same bid. Immediate pickup remains available subject to normal eligibility, including when existing entrants become ineligible at selection.

المعلمات

الاسمالنوعمطلوبالافتراضيالوصف
bidID int نعم — Customer bid ID.
مثال طلب (cURL)
curl --get \
  'https://ar.appointmenttrader.com/v1/bidpool/get_state' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}'

القيمة المُرجعة

JSON
See the shared response schema and synthetic example.
حقول الاستجابة
الحقلالنوعمطلوبالوصف
$bidpool_get_state_Response نعم
$.oneOf[0] نعم
$.oneOf[0].allOf[0]object نعم
$.oneOf[0].allOf[0].RequestUserAliasstring نعم
$.oneOf[0].allOf[0].RequestPathstring | null نعم
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" نعم
$.oneOf[0].allOf[0].ResponseCodeinteger نعم
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring لا
$.oneOf[0].allOf[1]object نعم
$.oneOf[0].allOf[1].PayloadBidPoolState نعم
$.oneOf[0].allOf[1].Payload.oneOf[0]object نعم
$.oneOf[0].allOf[1].Payload.oneOf[0].managed = false نعم
$.oneOf[0].allOf[1].Payload.oneOf[0].auctionURL نعم
$.oneOf[0].allOf[1].Payload.oneOf[0].auctionURL.anyOf[0]string نعم
$.oneOf[0].allOf[1].Payload.oneOf[0].auctionURL.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.oneOf[1]object نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].managed = true نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].bidIDinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].roundIDinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].statestring نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].serverTimeinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].closesAtinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].cutoffAtinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].minimumDeadline نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].minimumDeadline.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].minimumDeadline.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].maximumDeadlineinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].durationsarray نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].durations[]integer لا
$.oneOf[0].allOf[1].Payload.oneOf[1].scoringVersioninteger [1,2,3,4] نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].timingBaseAtinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillStartsAt نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillStartsAt.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillStartsAt.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].timingVersionstring نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillOptionsarray نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillOptions[]object لا
$.oneOf[0].allOf[1].Payload.oneOf[1].fillOptions[].kindstring ["instant","duration"] نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillOptions[].durationMinutesinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].fillOptions[].deadlineAtinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].openingHoursobject نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].openingHours.statusstring ["unavailable","open","shifted","no_window"] نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].openingHours.timezonestring نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].instantFillboolean نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].ownResponse نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].ownResponse.anyOf[0]object نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].ownResponse.anyOf[0].DurationMinutesinteger | string نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].ownResponse.anyOf[0].DeadlineAtinteger | string نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].ownResponse.anyOf[0].Statestring نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].ownResponse.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].previousResponse نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].previousResponse.anyOf[0]object نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].previousResponse.anyOf[0].durationMinutesinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].previousResponse.anyOf[0].deadlineAtinteger نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].previousResponse.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].canRespondboolean نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].messagestring نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].isWinnerboolean نعم
$.oneOf[0].allOf[1].Payload.oneOf[1].customMinimumDeadline لا
$.oneOf[0].allOf[1].Payload.oneOf[1].customMinimumDeadline.anyOf[0]integer لا
$.oneOf[0].allOf[1].Payload.oneOf[1].customMinimumDeadline.anyOf[1]null لا
$.oneOf[0].allOf[1].Payload.oneOf[1].buyerIdentityHiddenboolean لاTrue when the viewer cannot see the buyer because that buyer has an open response race.
$.oneOf[0].allOf[1].Payload.oneOf[1].buyerIdentityHiddenUntilinteger | null لاLatest saved ClosesAt among the buyer's open response races, as Unix seconds; null when visible. Reveal requires a fresh authoritative response.
$.oneOf[1]object نعم
$.oneOf[1].RequestUserAliasstring نعم
$.oneOf[1].RequestPathstring | null نعم
$.oneOf[1].RequestStatus = "Failed" نعم
$.oneOf[1].ResponseCodeinteger نعم
$.oneOf[1].ResponseMessageAPIResponseMessage نعم
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[1].ResponseMessage.oneOf[1]array نعم
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[1].ResponseMessage.oneOf[2]object نعم
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[1].RequestImpersonatedByUserAliasstring لا
مثال استجابة
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/bidpool/get_state",
    "RequestUserAlias": "example-user",
    "Payload": {
        "managed": false,
        "auctionURL": "synthetic-example"
    }
}
توثيق نقطة النهاية القابل للقراءة آليًا
POST

/v1/bidpool/set_response

#
Submit or edit a private response, or immediately pick up when the pool is in immediate mode. Use the preview from get_state. Durations start at round close (or preview time for immediate pickup), shifted to the next venue opening if closed. Custom deadlines are absolute. A 409 requires a refreshed preview and explicit reconfirmation. The server saves the accepted fill start alongside the response so later opening-hours edits cannot change its scoring duration. Actual completion deadlines are unchanged. Responses and assignment use the bid cutoff, not the seller's legacy hold duration limit. Seller eligibility and simultaneous-hold capacity still apply. Buyers can cancel while an unfilled promise is more than 48 hours away. Sellers who previously missed a fill deadline for this bid cannot enter collecting rounds. This restriction lifts in immediate mode; all other pickup checks still apply and eligibility is rechecked at assignment.

المعلمات

الاسمالنوعمطلوبالافتراضيالوصف
bidID int نعم — Customer bid ID.
roundID int نعم — Current round from /v1/bidpool/get_state. Stale rounds are rejected.
durationMinutes int نعم — Positive duration from get_state; zero selects customDeadline; -1 selects the offered instant-fill deadline.
customDeadline int لا 0 Absolute Unix seconds for a custom completion time, otherwise zero. With customMinimumDeadline present, must be a whole minute in that range; null minimum disallows custom.
isWritingRequest bool لا false Must be true to save a response or take an immediate hold.
timingBaseAt int لا 0 Preview timingBaseAt from get_state. Immediate previews expire after five minutes.
timingVersion string لا "" Preview timingVersion from get_state.
expectedDeadline int لا 0 Exact fill-by timestamp displayed and confirmed by the seller.
مثال طلب (cURL)
curl --request POST \
  'https://ar.appointmenttrader.com/v1/bidpool/set_response' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'roundID={{roundID}}' \
  --data-urlencode 'durationMinutes={{durationMinutes}}' \
  --data-urlencode 'customDeadline={{customDeadline}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}' \
  --data-urlencode 'timingBaseAt={{timingBaseAt}}' \
  --data-urlencode 'timingVersion={{timingVersion}}' \
  --data-urlencode 'expectedDeadline={{expectedDeadline}}'

القيمة المُرجعة

JSON
See the shared response schema and synthetic example.
حقول الاستجابة
الحقلالنوعمطلوبالوصف
$bidpool_set_response_Response نعم
$.oneOf[0] نعم
$.oneOf[0].allOf[0]object نعم
$.oneOf[0].allOf[0].RequestUserAliasstring نعم
$.oneOf[0].allOf[0].RequestPathstring | null نعم
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" نعم
$.oneOf[0].allOf[0].ResponseCodeinteger نعم
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring لا
$.oneOf[0].allOf[1]object نعم
$.oneOf[0].allOf[1].Payloadobject نعم
$.oneOf[0].allOf[1].Payload.success = true نعم
$.oneOf[0].allOf[1].Payload.assignedboolean نعم
$.oneOf[0].allOf[1].Payload.stateBidPoolState نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[0]object نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[0].managed = false نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[0].auctionURL نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[0].auctionURL.anyOf[0]string نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[0].auctionURL.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1]object نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].managed = true نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].bidIDinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].roundIDinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].statestring نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].serverTimeinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].closesAtinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].cutoffAtinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].minimumDeadline نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].minimumDeadline.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].minimumDeadline.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].maximumDeadlineinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].durationsarray نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].durations[]integer لا
$.oneOf[0].allOf[1].Payload.state.oneOf[1].scoringVersioninteger [1,2,3,4] نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].timingBaseAtinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillStartsAt نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillStartsAt.anyOf[0]integer نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillStartsAt.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].timingVersionstring نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillOptionsarray نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillOptions[]object لا
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillOptions[].kindstring ["instant","duration"] نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillOptions[].durationMinutesinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].fillOptions[].deadlineAtinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].openingHoursobject نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].openingHours.statusstring ["unavailable","open","shifted","no_window"] نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].openingHours.timezonestring نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].instantFillboolean نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].ownResponse نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].ownResponse.anyOf[0]object نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].ownResponse.anyOf[0].DurationMinutesinteger | string نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].ownResponse.anyOf[0].DeadlineAtinteger | string نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].ownResponse.anyOf[0].Statestring نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].ownResponse.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].previousResponse نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].previousResponse.anyOf[0]object نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].previousResponse.anyOf[0].durationMinutesinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].previousResponse.anyOf[0].deadlineAtinteger نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].previousResponse.anyOf[1]null نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].canRespondboolean نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].messagestring نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].isWinnerboolean نعم
$.oneOf[0].allOf[1].Payload.state.oneOf[1].customMinimumDeadline لا
$.oneOf[0].allOf[1].Payload.state.oneOf[1].customMinimumDeadline.anyOf[0]integer لا
$.oneOf[0].allOf[1].Payload.state.oneOf[1].customMinimumDeadline.anyOf[1]null لا
$.oneOf[0].allOf[1].Payload.state.oneOf[1].buyerIdentityHiddenboolean لاTrue when the viewer cannot see the buyer because that buyer has an open response race.
$.oneOf[0].allOf[1].Payload.state.oneOf[1].buyerIdentityHiddenUntilinteger | null لاLatest saved ClosesAt among the buyer's open response races, as Unix seconds; null when visible. Reveal requires a fresh authoritative response.
$.oneOf[1]object نعم
$.oneOf[1].RequestUserAliasstring نعم
$.oneOf[1].RequestPathstring | null نعم
$.oneOf[1].RequestStatus = "Failed" نعم
$.oneOf[1].ResponseCodeinteger نعم
$.oneOf[1].ResponseMessageAPIResponseMessage نعم
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[1].ResponseMessage.oneOf[1]array نعم
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[1].ResponseMessage.oneOf[2]object نعم
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[1].RequestImpersonatedByUserAliasstring لا
مثال استجابة
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/bidpool/set_response",
    "RequestUserAlias": "example-user",
    "Payload": {
        "success": true,
        "assigned": false,
        "state": {
            "managed": false,
            "auctionURL": "synthetic-example"
        }
    }
}
توثيق نقطة النهاية القابل للقراءة آليًا
POST

/v1/bidpool/set_withdraw

#
Withdraw only the acting seller's response before the round closes. Does not release a fulfillment hold.

المعلمات

الاسمالنوعمطلوبالافتراضيالوصف
bidID int نعم — Customer bid ID.
roundID int نعم — Current response round.
isWritingRequest bool لا false Must be true to withdraw.
مثال طلب (cURL)
curl --request POST \
  'https://ar.appointmenttrader.com/v1/bidpool/set_withdraw' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'bidID={{bidID}}' \
  --data-urlencode 'roundID={{roundID}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

القيمة المُرجعة

JSON
See the shared response schema and synthetic example.
حقول الاستجابة
الحقلالنوعمطلوبالوصف
$bidpool_set_withdraw_Response نعم
$.oneOf[0] نعم
$.oneOf[0].allOf[0]object نعم
$.oneOf[0].allOf[0].RequestUserAliasstring نعم
$.oneOf[0].allOf[0].RequestPathstring | null نعم
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" نعم
$.oneOf[0].allOf[0].ResponseCodeinteger نعم
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object نعم
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring لا
$.oneOf[0].allOf[1]object نعم
$.oneOf[0].allOf[1].Payloadobject نعم
$.oneOf[0].allOf[1].Payload.success = true نعم
$.oneOf[1]object نعم
$.oneOf[1].RequestUserAliasstring نعم
$.oneOf[1].RequestPathstring | null نعم
$.oneOf[1].RequestStatus = "Failed" نعم
$.oneOf[1].ResponseCodeinteger نعم
$.oneOf[1].ResponseMessageAPIResponseMessage نعم
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null نعم
$.oneOf[1].ResponseMessage.oneOf[1]array نعم
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage لا
$.oneOf[1].ResponseMessage.oneOf[2]object نعم
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage لا
$.oneOf[1].RequestImpersonatedByUserAliasstring لا
مثال استجابة
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/bidpool/set_withdraw",
    "RequestUserAlias": "example-user",
    "Payload": {
        "success": true
    }
}
توثيق نقطة النهاية القابل للقراءة آليًا