Online Now  

/v1/infractions/

Private user-infraction reporting, staff adjudication and bounty administration.
GET

/v1/infractions/get_bounty_estimate

#
Estimate the maximum USD bounty for a signed-in reporter using the current type, reported user's penalty permission and reporter's bounty rate. Assumes a full contribution share; staff decides the actual outcome and may award no bounty. Does not create a report or financial entry.

Parameters

NameTypeRequiredDefaultDescription
typeID int Yes — Active infraction type.
userAlias string Yes — Reported user's alias. Self-reporting is not allowed.
incidentDate string No "" Incident date in YYYY-MM-DD format; empty uses today for the estimate until a date is selected.
subjectTransactionSource string No "" Required for transaction-based types: transaction or custom_article.
subjectTransactionID int No 0 Required canonical transaction ID for transaction-based types.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/infractions/get_bounty_estimate' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'typeID={{typeID}}' \
  --data-urlencode 'userAlias={{userAlias}}' \
  --data-urlencode 'incidentDate={{incidentDate}}' \
  --data-urlencode 'subjectTransactionSource={{subjectTransactionSource}}' \
  --data-urlencode 'subjectTransactionID={{subjectTransactionID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$infractions_get_bounty_estimate_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.currency = "USD" Yes
$.oneOf[0].allOf[1].Payload.formattedAmountstring Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/infractions/get_bounty_estimate",
    "RequestUserAlias": "example-user",
    "Payload": {
        "amountCents": 0,
        "currency": "USD",
        "formattedAmount": "synthetic-example"
    }
}
Machine-readable endpoint documentation
GET

/v1/infractions/get_my_reports

#
Get only reports submitted by the acting user, including when the caller is staff. Reports against the caller are excluded. Merged reports retain their private chat and use the current case status and classification.

Parameters

NameTypeRequiredDefaultDescription
start int No 0 Non-negative offset; negative values use zero.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/infractions/get_my_reports' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'start={{start}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$infractions_get_my_reports_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.reportsarray Yes
$.oneOf[0].allOf[1].Payload.reports[]object No
$.oneOf[0].allOf[1].Payload.reports[].reportIDinteger Yes
$.oneOf[0].allOf[1].Payload.reports[].caseIDinteger Yes
$.oneOf[0].allOf[1].Payload.reports[].reportedUserIDinteger Yes
$.oneOf[0].allOf[1].Payload.reports[].typeNamestring Yes
$.oneOf[0].allOf[1].Payload.reports[].createdDatestring Yes
$.oneOf[0].allOf[1].Payload.reports[].statusstring ["Open","Confirmed","Warning","Rejected","Merged"] Yes
$.oneOf[0].allOf[1].Payload.reports[].chatIDinteger Yes
$.oneOf[0].allOf[1].Payload.startinteger Yes
$.oneOf[0].allOf[1].Payload.hasMoreboolean Yes
$.oneOf[0].allOf[1].Payload.nextStart Yes
$.oneOf[0].allOf[1].Payload.nextStart.anyOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.nextStart.anyOf[1]null Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/infractions/get_my_reports",
    "RequestUserAlias": "example-user",
    "Payload": {
        "reports": [],
        "start": 0,
        "hasMore": false,
        "nextStart": 0
    }
}
Machine-readable endpoint documentation
GET

/v1/infractions/get_options

#
Get reportable types or staff configuration, numeric permissions and audit history.

Parameters

NameTypeRequiredDefaultDescription
admin bool No false Include inactive types and administration data; requires RefundAppointments.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/infractions/get_options' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'admin={{admin}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$infractions_get_options_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.typesarray Yes
$.oneOf[0].allOf[1].Payload.types[]object No
$.oneOf[0].allOf[1].Payload.types[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.types[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.types[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.types[].Slugstring Yes
$.oneOf[0].allOf[1].Payload.types[].Statusstring ["Draft","Active","Retired"] Yes
$.oneOf[0].allOf[1].Payload.types[].SortOrderDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.types[].SortOrder.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.types[].SortOrder.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.types[].CurrentVersionID Yes
$.oneOf[0].allOf[1].Payload.types[].CurrentVersionID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.types[].CurrentVersionID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.types[].CurrentVersionID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.types[].CurrentVersionID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.types[].CreatedDatestring Yes
$.oneOf[0].allOf[1].Payload.types[].VersionNumberDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.types[].VersionNumber.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.types[].VersionNumber.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.types[].configobject Yes
$.oneOf[0].allOf[1].Payload.types[].config.namestring Yes
$.oneOf[0].allOf[1].Payload.types[].config.descriptionstring Yes
$.oneOf[0].allOf[1].Payload.types[].config.evidenceGuidancestring Yes
$.oneOf[0].allOf[1].Payload.types[].config.subjectstring ["seller","transaction","listing"] Yes
$.oneOf[0].allOf[1].Payload.types[].config.referenceRequired Yes
$.oneOf[0].allOf[1].Payload.types[].config.referenceRequired.oneOf[0]boolean Yes
$.oneOf[0].allOf[1].Payload.types[].config.referenceRequired.oneOf[1]integer [0,1] Yes
$.oneOf[0].allOf[1].Payload.types[].config.penaltyModestring ["warning","fixed","annual_sales","transaction_amount"] Yes
$.oneOf[0].allOf[1].Payload.types[].config.penaltyPermissionstring Yes
$.oneOf[0].allOf[1].Payload.types[].config.bountyEnabled Yes
$.oneOf[0].allOf[1].Payload.types[].config.bountyEnabled.oneOf[0]boolean Yes
$.oneOf[0].allOf[1].Payload.types[].config.bountyEnabled.oneOf[1]integer [0,1] Yes
$.oneOf[0].allOf[1].Payload.types[].config.bountyBasisPointsinteger Yes
$.oneOf[0].allOf[1].Payload.types[].config.buyerPosingAllowed Yes
$.oneOf[0].allOf[1].Payload.types[].config.buyerPosingAllowed.oneOf[0]boolean Yes
$.oneOf[0].allOf[1].Payload.types[].config.buyerPosingAllowed.oneOf[1]integer [0,1] Yes
$.oneOf[0].allOf[1].Payload.types[].config.translations Yes
$.oneOf[0].allOf[1].Payload.types[].config.translations.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.types[].config.translations.anyOf[0].*object No
$.oneOf[0].allOf[1].Payload.types[].config.translations.anyOf[0].*.namestring Yes
$.oneOf[0].allOf[1].Payload.types[].config.translations.anyOf[0].*.descriptionstring Yes
$.oneOf[0].allOf[1].Payload.types[].config.translations.anyOf[0].*.evidenceGuidancestring Yes
$.oneOf[0].allOf[1].Payload.types[].config.translations.anyOf[1] = [] Yes
$.oneOf[0].allOf[1].Payload.types[].config.seedKeystring No
$.oneOf[0].allOf[1].Payload.types[].config.penaltyMultiplier = 3 No
$.oneOf[0].allOf[1].Payload.types[].defaultPenaltyValue Yes
$.oneOf[0].allOf[1].Payload.types[].defaultPenaltyValue.anyOf[0]DatabaseNumber YesNumeric value; MySQL reads can serialize numbers as numeric strings.
$.oneOf[0].allOf[1].Payload.types[].defaultPenaltyValue.anyOf[0].oneOf[0]number Yes
$.oneOf[0].allOf[1].Payload.types[].defaultPenaltyValue.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.types[].defaultPenaltyValue.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.types[].reporterBountyBasisPointsinteger Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfigobject No
$.oneOf[0].allOf[1].Payload.types[].rawConfig.namestring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.descriptionstring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.evidenceGuidancestring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.subjectstring ["seller","transaction","listing"] Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.referenceRequired Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.referenceRequired.oneOf[0]boolean Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.referenceRequired.oneOf[1]integer [0,1] Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.penaltyModestring ["warning","fixed","annual_sales","transaction_amount"] Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.penaltyPermissionstring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.bountyEnabled Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.bountyEnabled.oneOf[0]boolean Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.bountyEnabled.oneOf[1]integer [0,1] Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.bountyBasisPointsinteger Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.buyerPosingAllowed Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.buyerPosingAllowed.oneOf[0]boolean Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.buyerPosingAllowed.oneOf[1]integer [0,1] Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations.anyOf[0]object Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations.anyOf[0].*object No
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations.anyOf[0].*.namestring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations.anyOf[0].*.descriptionstring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations.anyOf[0].*.evidenceGuidancestring Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.translations.anyOf[1] = [] Yes
$.oneOf[0].allOf[1].Payload.types[].rawConfig.seedKeystring No
$.oneOf[0].allOf[1].Payload.types[].rawConfig.penaltyMultiplier = 3 No
$.oneOf[0].allOf[1].Payload.permissionsarray Yes
$.oneOf[0].allOf[1].Payload.permissions[]object No
$.oneOf[0].allOf[1].Payload.permissions[].Namestring Yes
$.oneOf[0].allOf[1].Payload.permissions[].Descriptionstring Yes
$.oneOf[0].allOf[1].Payload.permissions[].DefaultSettingPayloadstring Yes
$.oneOf[0].allOf[1].Payload.overridesarray Yes
$.oneOf[0].allOf[1].Payload.overrides[]object No
$.oneOf[0].allOf[1].Payload.overrides[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.overrides[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.overrides[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.overrides[].UserIDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.overrides[].UserID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.overrides[].UserID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.overrides[].TypeIDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.overrides[].TypeID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.overrides[].TypeID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.overrides[].BountyBasisPointsDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.overrides[].BountyBasisPoints.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.overrides[].BountyBasisPoints.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.overrides[].UpdatedByUserIDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.overrides[].UpdatedByUserID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.overrides[].UpdatedByUserID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.overrides[].LastUpdateDatestring Yes
$.oneOf[0].allOf[1].Payload.auditarray Yes
$.oneOf[0].allOf[1].Payload.audit[]object No
$.oneOf[0].allOf[1].Payload.audit[].IDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.audit[].ID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.audit[].ID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.audit[].CaseID = null Yes
$.oneOf[0].allOf[1].Payload.audit[].TypeID Yes
$.oneOf[0].allOf[1].Payload.audit[].TypeID.anyOf[0]DatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.audit[].TypeID.anyOf[0].oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.audit[].TypeID.anyOf[0].oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.audit[].TypeID.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.audit[].ActorUserIDDatabaseInteger YesInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.audit[].ActorUserID.oneOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.audit[].ActorUserID.oneOf[1]string Yes
$.oneOf[0].allOf[1].Payload.audit[].EventNamestring Yes
$.oneOf[0].allOf[1].Payload.audit[].Payloadstring (application/json) Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload (decoded JSON) Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[0]object Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[0].versionIDinteger Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[0].statusstring ["Draft","Active","Retired"] Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[0].sortOrderinteger Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[1]object Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[1].hunterIDinteger Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[1].basisPoints Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[1].basisPoints.anyOf[0]integer Yes
$.oneOf[0].allOf[1].Payload.audit[].Payload.oneOf[1].basisPoints.anyOf[1]null Yes
$.oneOf[0].allOf[1].Payload.audit[].CreatedDatestring Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/infractions/get_options",
    "RequestUserAlias": "example-user",
    "Payload": {
        "types": [],
        "permissions": [],
        "overrides": [],
        "audit": []
    }
}
Machine-readable endpoint documentation
GET

/v1/infractions/get_report_context

#
Resolve report context from a listing, participant-owned transaction, accessible chat or reported user. Chat targets use structured context or the sole other participant; ambiguous groups leave the user unselected.

Parameters

NameTypeRequiredDefaultDescription
listingID int No 0 Listing identifier, or zero.
transactionID int No 0 Transaction identifier, or zero.
chatID int No 0 Source chat accessible to the reporter, or zero.
userID int No 0 Reported user to preselect, or zero.
subjectTransactionSource string No "" Optional exact transaction source, transaction or custom_article; does not alter the reported user.
subjectTransactionID int No 0 Canonical transaction ID paired with its source.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/infractions/get_report_context' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'listingID={{listingID}}' \
  --data-urlencode 'transactionID={{transactionID}}' \
  --data-urlencode 'chatID={{chatID}}' \
  --data-urlencode 'userID={{userID}}' \
  --data-urlencode 'subjectTransactionSource={{subjectTransactionSource}}' \
  --data-urlencode 'subjectTransactionID={{subjectTransactionID}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$infractions_get_report_context_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].PayloadInfractionReportContext Yes
$.oneOf[0].allOf[1].Payload.oneOf[0]object Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].chatIDinteger No
$.oneOf[0].allOf[1].Payload.oneOf[0].chatNamestring No
$.oneOf[0].allOf[1].Payload.oneOf[0].listingID No
$.oneOf[0].allOf[1].Payload.oneOf[0].listingID.anyOf[0]DatabaseInteger NoInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.oneOf[0].listingID.anyOf[0].oneOf[0]integer No
$.oneOf[0].allOf[1].Payload.oneOf[0].listingID.anyOf[0].oneOf[1]string No
$.oneOf[0].allOf[1].Payload.oneOf[0].listingID.anyOf[1]null No
$.oneOf[0].allOf[1].Payload.oneOf[0].transactionIDDatabaseInteger NoInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.oneOf[0].transactionID.oneOf[0]integer No
$.oneOf[0].allOf[1].Payload.oneOf[0].transactionID.oneOf[1]string No
$.oneOf[0].allOf[1].Payload.oneOf[0].sellerIDDatabaseInteger NoInteger value; legacy MySQL reads may serialize it as a numeric string.
$.oneOf[0].allOf[1].Payload.oneOf[0].sellerID.oneOf[0]integer No
$.oneOf[0].allOf[1].Payload.oneOf[0].sellerID.oneOf[1]string No
$.oneOf[0].allOf[1].Payload.oneOf[0].sellerAliasstring No
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction No
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0]object No
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].sourcestring ["transaction","custom_article"] Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].idinteger Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].datestring Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].labelstring Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].statusstring ["PENDING","COMPLETED","RECORDED"] Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[0].formattedAmountstring Yes
$.oneOf[0].allOf[1].Payload.oneOf[0].subjectTransaction.anyOf[1]null No
$.oneOf[0].allOf[1].Payload.oneOf[1] = [] Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/infractions/get_report_context",
    "RequestUserAlias": "example-user",
    "Payload": []
}
Machine-readable endpoint documentation
GET

/v1/infractions/get_report_transactions

#
Resolve an exact transaction reference for a signed-in reporter, regardless of ownership. Staff verifies the connection to the reported user. Only pending/completed marketplace transactions and non-deleted recorded custom articles with valid amounts are returned.

Parameters

NameTypeRequiredDefaultDescription
referenceType string Yes — post_link, bid, appointment, transaction, or custom_article.
referenceID int No 0 Exact identifier in the selected namespace; positive except for post_link, which uses postLink.
postLink string No "" AppointmentTrader post URL or root-relative post path, required for post_link. Resolves the viewable post's stored bid association without fetching the URL. Supports /posts/{id} and the v2 newsfeed postId route.
Request example (cURL)
curl --get \
  'https://ca.appointmenttrader.com/v1/infractions/get_report_transactions' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'referenceType={{referenceType}}' \
  --data-urlencode 'referenceID={{referenceID}}' \
  --data-urlencode 'postLink={{postLink}}'

Returns

JSON
See the shared response schema and synthetic example.
Response fields
FieldTypeRequiredDescription
$infractions_get_report_transactions_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.transactionsarray Yes
$.oneOf[0].allOf[1].Payload.transactions[]object No
$.oneOf[0].allOf[1].Payload.transactions[].sourcestring ["transaction","custom_article"] Yes
$.oneOf[0].allOf[1].Payload.transactions[].idinteger Yes
$.oneOf[0].allOf[1].Payload.transactions[].amountCentsinteger Yes
$.oneOf[0].allOf[1].Payload.transactions[].datestring Yes
$.oneOf[0].allOf[1].Payload.transactions[].labelstring Yes
$.oneOf[0].allOf[1].Payload.transactions[].statusstring ["PENDING","COMPLETED","RECORDED"] Yes
$.oneOf[0].allOf[1].Payload.transactions[].formattedAmountstring Yes
$.oneOf[0].allOf[1].Payload.hasMoreboolean Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/infractions/get_report_transactions",
    "RequestUserAlias": "example-user",
    "Payload": {
        "transactions": [],
        "hasMore": false
    }
}
Machine-readable endpoint documentation
POST

/v1/infractions/set_report

#
Submit a private infraction report with optional uploaded images, videos or PDFs. Attachments and later evidence-chat uploads are linked to the report and visible only to its reporter and authorized reviewers.

Parameters

NameTypeRequiredDefaultDescription
submissionKey string Yes — Stable unique retry identifier, 16-80 alphanumeric, underscore or hyphen characters.
reportJson string Yes — JSON containing typeID, userID or userAlias, incidentDate (YYYY-MM-DD), required description, optional legacy evidence text, mediaIDs [owned ATMedia IDs], references [{type: seller|transaction|listing|chat|custom_article,id}], and subjectTransactionSource/subjectTransactionID. Transaction-based types require exactly one canonical source/ID pair at submission; other internal references are optional; staff must verify configured required references before approving an adverse finding. Chat references require the reporter's current access and remain private to the reporter and case reviewers. Legacy sellerID/sellerAlias are accepted when neither canonical user field is supplied.
isWritingRequest bool No false Must be true to submit.
Request example (cURL)
curl --request POST \
  'https://ca.appointmenttrader.com/v1/infractions/set_report' \
  --data-urlencode 'key={{API_KEY}}' \
  --data-urlencode 'submissionKey={{submissionKey}}' \
  --data-urlencode 'reportJson={{reportJson}}' \
  --data-urlencode 'isWritingRequest={{isWritingRequest}}'

Returns

JSON
See the shared response schema and synthetic example.
Parameters: reportJson
FieldTypeRequiredDescription
reportJsonstring (application/json) Yes
reportJsonobject (decoded JSON) Yes
reportJson.userIDinteger No
reportJson.userAliasstring No
reportJson.sellerIDinteger No
reportJson.sellerAliasstring No
reportJson.incidentDatestring Yes
reportJson.descriptionstring Yes
reportJson.evidencestring No
reportJson.referencesarray No
reportJson.references[]object No
reportJson.references[].typestring ["seller","transaction","listing","chat","custom_article"] Yes
reportJson.references[].idinteger Yes
reportJson.mediaIDsarray No
reportJson.mediaIDs[]DatabaseInteger NoInteger value; legacy MySQL reads may serialize it as a numeric string.
reportJson.mediaIDs[].oneOf[0]integer No
reportJson.mediaIDs[].oneOf[1]string No
reportJson.typeIDinteger Yes
reportJson.subjectTransactionSourcestring ["transaction","custom_article"] No
reportJson.subjectTransactionIDinteger No
Response fields
FieldTypeRequiredDescription
$infractions_set_report_Response Yes
$.oneOf[0] Yes
$.oneOf[0].allOf[0]object Yes
$.oneOf[0].allOf[0].RequestUserAliasstring Yes
$.oneOf[0].allOf[0].RequestPathstring | null Yes
$.oneOf[0].allOf[0].RequestStatus = "Succeeded" Yes
$.oneOf[0].allOf[0].ResponseCodeinteger Yes
$.oneOf[0].allOf[0].ResponseMessageAPIResponseMessage Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1]array Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2]object Yes
$.oneOf[0].allOf[0].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[0].allOf[0].RequestImpersonatedByUserAliasstring No
$.oneOf[0].allOf[1]object Yes
$.oneOf[0].allOf[1].Payloadobject Yes
$.oneOf[0].allOf[1].Payload.caseIDinteger Yes
$.oneOf[0].allOf[1].Payload.chatIDinteger Yes
$.oneOf[1]object Yes
$.oneOf[1].RequestUserAliasstring Yes
$.oneOf[1].RequestPathstring | null Yes
$.oneOf[1].RequestStatus = "Failed" Yes
$.oneOf[1].ResponseCodeinteger Yes
$.oneOf[1].ResponseMessageAPIResponseMessage Yes
$.oneOf[1].ResponseMessage.oneOf[0]string | number | boolean | null Yes
$.oneOf[1].ResponseMessage.oneOf[1]array Yes
$.oneOf[1].ResponseMessage.oneOf[1][]APIResponseMessage No
$.oneOf[1].ResponseMessage.oneOf[2]object Yes
$.oneOf[1].ResponseMessage.oneOf[2].*APIResponseMessage No
$.oneOf[1].RequestImpersonatedByUserAliasstring No
Response example
{
    "RequestStatus": "Succeeded",
    "ResponseCode": 100,
    "ResponseMessage": "Synthetic success example.",
    "RequestPath": "/v1/infractions/set_report",
    "RequestUserAlias": "example-user",
    "Payload": {
        "caseID": 0,
        "chatID": 0
    }
}
Machine-readable endpoint documentation